# BE — Field `workDescription` di `reports.body` (workpulse.report.v1)

## Ringkasan produk

Laporan harian memakai **satu** kolom teks **Deskripsi pekerjaan** (apa yang dikerjakan). Field lama `blockers` dan `tomorrow` tidak lagi ditulis dari FE untuk laporan baru.

## Kontrak JSON (`reports.body`)

Skema tetap `workpulse.report.v1`. Field relevan:

| Field | Tipe | Keterangan |
|-------|------|------------|
| `workDescription` | string | **Baru** — deskripsi pekerjaan utama. |
| `blockers` | string | Legacy — FE baru mengosongkan; baca untuk laporan lama. |
| `tomorrow` | string | Legacy — sama seperti `blockers`. |
| `tasks` | array | Kanban todo / doing / done (tidak berubah). |

Contoh minimal:

```json
{
  "schema": "workpulse.report.v1",
  "workHours": "08:00 - 17:00",
  "workStart": "08:00",
  "workEnd": "17:00",
  "workDescription": "Maintenance jaringan & Mikrotik kantor Bestari Jaya",
  "blockers": "",
  "tomorrow": "",
  "tasks": []
}
```

## Perubahan BE yang disarankan (sudah / opsional)

| Area | Status |
|------|--------|
| `GET/PATCH /reports` — simpan `body` apa adanya | Tidak perlu migrasi SQL; `body` tetap TEXT/JSON. |
| `orgReportBodyListSummary` — preview teks | **Sudah** membaca `workDescription` dulu, fallback gabungan `blockers` + `tomorrow`. File: `BE/internal/api/org_report_body_summary.go`. |
| Analytics / ekspor yang hanya baca `blockers` | Perlu disesuaikan jika ada; cek grep `blockers` di BE. |

Tidak ada migrasi database.

## FE

- `FE/utils/report-kanban-payload.ts` — `readWorkDescription()`, parse/stringify.
- `FE/pages/report.vue` — satu textarea.
- `FE/pages/team.vue` — modal pemantauan menampilkan **Deskripsi pekerjaan**.

## Deploy

- **FE:** `npm run build` + `pm2 restart workpulse-fe`
- **BE:** `go build` + `pm2 restart workpulse-api` (jika `org_report_body_summary.go` di-deploy)
