# 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; path dokumen ini: `FE/docs/BE_HANDOFF_ORG_DIVISIONS_AND_MEMBERS.md` (salinan narasi dapat direplikasi ke repo BE).

---

## 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 — 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 (detail)

- [`BE_SPEC_EMPLOYEE_ORG_MANAGEMENT.md`](./BE_SPEC_EMPLOYEE_ORG_MANAGEMENT.md) — konteks halaman Employees, endpoint baca + mutasi.
- [`BE_SPEC_ORG_DIVISIONS_MASTER_AND_CRUD.md`](./BE_SPEC_ORG_DIVISIONS_MASTER_AND_CRUD.md) — model, kontrak CRUD, laporan, analytics.
- [`BE_SPEC_TEAM_MONITORING_DIVISIONS.md`](./BE_SPEC_TEAM_MONITORING_DIVISIONS.md) — `by-division` / `reporters-by-division` (data dari laporan).

---

## Riwayat (pra‑implementasi)

Sebelum endpoint org ada, FE memakai pratinjau / analytics saja. Itu sudah digantikan oleh panggilan API master di superadmin; bagian riwayat ini mempertahankan konteks keputusan produk saat MVP dirancang.
