# Handoff: penyimpanan divisi & anggota (Employees / organisasi)

> **404 pada `GET /api/v1/org/divisions`?** Itu hampir selalu **deploy / proxy / binary lama** — bukan bug kontrak FE. Ikuti [`BE_DEPLOY_ORG_DIVISIONS_API_404_RESOLUSI.md`](./BE_DEPLOY_ORG_DIVISIONS_API_404_RESOLUSI.md).

Ringkasan untuk tim FE dan QA; sumber diskusi di repo FE: `FE/docs/BE_HANDOFF_ORG_DIVISIONS_AND_MEMBERS.md` (salinan narasi; rujukan teknis di repo BE di bawah).

---

## Status BE (MVP mutasi)

| Kriteria handoff | Status |
|------------------|--------|
| `POST /org/divisions` membuat baris; `GET` mengembalikan divisi baru | **Ya** — termasuk **`description`** opsional. |
| Menambahkan user ke divisi **dengan peran** | **Ya** — tabel **`org_division_members`**, field **`org_role`** (default `staff`, max 64 karakter). |
| Tidak ada duplikat `code` yang melanggar constraint | **Ya** — indeks unik `LOWER(TRIM(code))`. |
| FE memanggil API organisasi (`/org/divisions`, members) | **Kontrak siap** — jika masih **404**, lihat dokumen **404** di atas (bukan ubah URL). |

---

## Ringkasan API

- **Divisi:** `GET/POST /api/v1/org/divisions`, `PATCH/DELETE /api/v1/org/divisions/:id` — lihat [`BE_SPEC_ORG_DIVISIONS_MASTER_AND_CRUD.md`](./BE_SPEC_ORG_DIVISIONS_MASTER_AND_CRUD.md).
- **Anggota:** `GET/PUT/POST /api/v1/org/divisions/:id/members`, `DELETE .../:id/members/:userId` — respons `GET` memuat **`orgRole`**.

**Laporan vs master:** bila ada minimal satu **`org_divisions` aktif**, `reports.division` harus kosong atau **`code` master** (case-insensitive); lihat spesifikasi org di atas.

---

## Deploy (ringkas)

1. Migrasi hingga **`000005`** (`WORKPULSE_AUTO_MIGRATE` atau `migrate`).
2. Build & restart API (`go build`, PM2, dll.).
3. Verifikasi dengan `curl` ke Gin — lihat checklist lengkap di [`BE_DEPLOY_ORG_DIVISIONS_API_404_RESOLUSI.md`](./BE_DEPLOY_ORG_DIVISIONS_API_404_RESOLUSI.md).
4. Kabari FE: tangani sukses/error (`400` / `401` / `403` / `500`).

---

## Kriteria QA (bersama FE)

- [x] `POST /org/divisions` membuat baris; `GET` mengembalikan divisi baru (setelah deploy + migrasi).
- [x] `POST` / `PUT` anggota menetapkan user dengan **`orgRole`**.
- [ ] Di lingkungan target: FE memanggil API **tanpa 404** (verifikasi proxy + binary).
- [x] Duplikat `code` ditolak oleh constraint DB.

---

## Dokumen turunan (repo FE — detail)

- [`../../FE/docs/BE_SPEC_EMPLOYEE_ORG_MANAGEMENT.md`](../../FE/docs/BE_SPEC_EMPLOYEE_ORG_MANAGEMENT.md)
- [`../../FE/docs/BE_SPEC_ORG_DIVISIONS_MASTER_AND_CRUD.md`](../../FE/docs/BE_SPEC_ORG_DIVISIONS_MASTER_AND_CRUD.md)
- [`../../FE/docs/BE_SPEC_TEAM_MONITORING_DIVISIONS.md`](../../FE/docs/BE_SPEC_TEAM_MONITORING_DIVISIONS.md)

---

## Riwayat (pra‑implementasi)

Sebelum endpoint org ada, FE memakai pratinjau / analytics saja. Superadmin kini memakai panggilan API master; bagian ini mempertahankan konteks keputusan produk saat MVP dirancang.
