Files
AbelBirdNest-Stock/docs/codex-handoff-2026-05-19.md

244 lines
8.6 KiB
Markdown

# Codex Handoff - 2026-05-19
Dokumen ini menyimpan konteks kerja terbaru agar pengerjaan bisa langsung dilanjutkan tanpa menggali ulang repo.
## Status Umum
- App aktif dikembangkan di `Next.js + Prisma + PostgreSQL`.
- Fitur operasional inti sudah cukup lengkap: pembelian, penerimaan, lot, aktivitas stok, penjualan, analisis pembelian, dan realisasi pembelian.
- Scope mobile API untuk fase operasional utama juga sudah disiapkan.
- Repo sudah dipush ke:
`https://git.iptek.co/wirabasalamah/AbelBirdNest-Stock.git`
- Branch aktif:
`main`
## Commit Penting Terakhir
- `14bb9bf` `Initial import of AbelBirdNest Stock`
- `9141f99` `Fix grade seed path for production deploy`
- `1274f2b` `Harden login and refresh production deploy guide`
- `8e8912e` `Allow negative purchase moisture percentages`
## Perubahan Besar yang Sudah Selesai
### 1. Purchase Analysis
- Snapshot analisis pembelian sudah dipersist agar saat edit nilainya kembali sama persis.
- Field seperti:
- `modal_barang`
- `modal_beli`
- `modal_masuk`
- `modal_jual`
- `total_modal_beli`
- `total_modal_mal`
- `average_price`
- `kadar akhir`
sudah tersimpan dan bisa dipakai ulang.
- Banyak rumus dashboard/analisis sudah disesuaikan:
- `kadar akhir`
- `laba total / kg`
- `laba/rugi agen`
- basis berat gram vs kg
### 2. Purchase Realization
- Modul realization sudah didesain dan diimplementasikan bertahap.
- Prisma model baru sudah ada:
- `LotPurchaseAllocation`
- `PurchaseRealizationEntry`
- `PurchaseRealizationSummary`
- Event yang sudah tersambung ke realization:
- purchase submit
- office buyout
- washing complete
- lot transformation / regrade / mix
- regular sale close
- consignment close
- Endpoint list/detail dan halaman UI `Purchase Realization` sudah ada.
- Filter/search dan drill-down dasar ke dokumen asal juga sudah ditambahkan.
### 3. Mobile API
- Namespace `/api/v1/mobile/**` sudah disiapkan untuk role:
- `WAREHOUSE`
- `QC`
- `SALES`
- `PURCHASING`
- `OWNER`
- Endpoint mobile yang sudah ada mencakup:
- bootstrap
- dashboard
- lots
- receipts
- stock adjustments
- washing
- lot transformations
- regular sales
- JIT sales
- consignments
- purchases
- fund requests
- purchase analyses
- purchase realizations
- Dokumen pendukung:
- [mobile-api-blueprint.md](/Users/wirabasalamah/Documents/Codex/abelbirdnest-web/docs/mobile-api-blueprint.md)
- [abelbirdnest-mobile-api.postman_collection.json](/Users/wirabasalamah/Documents/Codex/abelbirdnest-web/docs/postman/abelbirdnest-mobile-api.postman_collection.json)
### 4. Bilingual UI dan Terminologi
- Banyak area UI sudah dibersihkan dari campuran istilah Indonesia/Inggris.
- Sidebar, mobile nav, halaman transaksi utama, master data, dan modul analitis sudah jauh lebih konsisten.
- Banyak label dropdown dan placeholder sudah dibuat locale-aware.
- Istilah bisnis Indonesia sudah dirapikan, misalnya:
- `Agent``Agen`
- `Courier``Jasa Pengiriman`
- `Warehouse``Gudang`
- `Warehouse Location``Lokasi Gudang`
- `Contact Person``Kontak PIC`
### 5. Dashboard
- Dashboard atas sudah diubah:
- `Nilai Inventory` menjadi basis `Nilai Pembelian Bulan Ini`
- `Receipt Bulan Ini` menjadi `Pembelian Bulan Ini`
- grafik menjadi `Tren Pembelian vs Penjualan`
- kartu kanan menjadi `Tingkat Serap Penjualan`
- Widget lot kritis diperjelas menjadi `Lot Perlu Perhatian`
dengan alasan:
- `Stok Rendah`
- `Usia Tinggi`
- `Ditahan`
### 6. Users
- User sekarang sudah bisa diedit dari UI.
- Jika email diubah:
- `email_verified_at` di-reset
- token verifikasi lama dibuang
- email verifikasi dikirim ulang
### 7. Regular Purchase Moisture Validation
- Validasi pembelian reguler sekarang mengizinkan:
- `kadar beli`
- `kadar masuk`
- `kadar akhir`
bernilai negatif sampai `-100`.
- Alasan bisnis:
nilai minus dipakai untuk kasus penyusutan / penurunan berat pada alur pembelian dan analisis.
- Patch ini ada di commit:
- `8e8912e` `Allow negative purchase moisture percentages`
- File yang berubah:
- [src/features/purchases/schemas/purchase.schema.ts](/Users/wirabasalamah/Documents/Codex/abelbirdnest-web/src/features/purchases/schemas/purchase.schema.ts)
- Tidak perlu migration database untuk patch ini.
- Update server cukup:
- `git pull origin main`
- `npm run build`
- restart service `abelbirdnest-web`
## Hardening Production yang Sudah Dilakukan
- Bootstrap akun default sekarang dimatikan di production lewat:
- `AUTH_BOOTSTRAP=false`
- `AUTH_SECRET` dan `APP_URL` dipaksa aman via helper runtime.
- Health endpoint tersedia di:
- `/api/v1/health`
- Security header dasar ditambahkan di `next.config.ts`.
- Workflow Prisma production-ready sudah disiapkan:
- `npm run prisma:migrate:deploy`
- File deploy yang sudah ada:
- [deploy/nginx/abelbirdnest.id.conf](/Users/wirabasalamah/Documents/Codex/abelbirdnest-web/deploy/nginx/abelbirdnest.id.conf)
- [deploy/nginx/abelbirdnest.id.http.conf](/Users/wirabasalamah/Documents/Codex/abelbirdnest-web/deploy/nginx/abelbirdnest.id.http.conf)
- [deploy/systemd/abelbirdnest-web.service](/Users/wirabasalamah/Documents/Codex/abelbirdnest-web/deploy/systemd/abelbirdnest-web.service)
- [deploy-production.md](/Users/wirabasalamah/Documents/Codex/abelbirdnest-web/docs/deploy-production.md)
## Kondisi Deploy Server yang Perlu Diingat
- Domain target production:
- `abelbirdnest.id`
- App dijalankan di:
- `127.0.0.1:3007`
- Reverse proxy:
- `nginx`
- Struktur repo aktual di server diasumsikan:
- `/var/www/abelbirdnest-web/AbelBirdNest-Stock`
- `systemd` service file repo sudah diarahkan ke struktur subfolder ini.
- Nginx sekarang disiapkan 2 tahap:
1. HTTP-only dulu dengan `abelbirdnest.id.http.conf`
2. setelah sertifikat ada, ganti ke `abelbirdnest.id.conf`
## Catatan Produksi Penting yang Masih Relevan
- `roles` tidak dibuat otomatis jika `AUTH_BOOTSTRAP=false`.
Jadi sebelum membuat user pertama di production, tabel `roles` harus diisi dulu secara manual.
- User pertama production sebaiknya dibuat langsung di PostgreSQL sebagai `SYSTEM_ADMIN`.
- Seed:
- `banks` dan `currencies` bisa langsung
- `grades` butuh file `Grade.xls`
- Script `seed:grades` sudah tidak lagi hardcoded ke path Mac lokal.
Default path sekarang:
- `scripts/data/Grade.xls`
## Perubahan Login dan Footer
- Halaman login sudah dibersihkan:
- tidak ada lagi autofill email/password default
- panel daftar akun dev dihapus
- Footer copyright sudah dipasang:
- `© 2026 AbelBirdnest`
- Copyright sudah muncul di:
- halaman login
- seluruh halaman app utama via `AppShell`
## Dokumentasi User yang Sudah Dibuat
Sudah ada dokumen manual Word di folder `docs/`:
- [manual-dashboard-abelbirdnest.docx](/Users/wirabasalamah/Documents/Codex/abelbirdnest-web/docs/manual-dashboard-abelbirdnest.docx)
- [manual-operasional-abelbirdnest-lengkap.docx](/Users/wirabasalamah/Documents/Codex/abelbirdnest-web/docs/manual-operasional-abelbirdnest-lengkap.docx)
- [manual-operasional-abelbirdnest-formal-screenshot.docx](/Users/wirabasalamah/Documents/Codex/abelbirdnest-web/docs/manual-operasional-abelbirdnest-formal-screenshot.docx)
Dan asset screenshot pendukung:
- [docs/manual-assets](/Users/wirabasalamah/Documents/Codex/abelbirdnest-web/docs/manual-assets)
Catatan:
- file manual dan asset screenshot saat ini masih `untracked` di git
- belum dipush ke remote
## Status Git Saat Handoff Ini Dibuat
Untracked:
- `docs/manual-assets/`
- `docs/manual-dashboard-abelbirdnest.docx`
- `docs/manual-operasional-abelbirdnest-lengkap.docx`
- `docs/manual-operasional-abelbirdnest-formal-screenshot.docx`
## Hal yang Masih Belum Ideal
- Belum ada rate limiting auth/API sensitif.
- `SMTP_PASSWORD` masih bisa tersimpan di DB settings.
- `npm run lint` belum dijadikan gate CI non-interaktif yang rapi.
- Belum ada test suite otomatis yang matang.
- Sebagian validasi/error backend mungkin masih belum sepenuhnya locale-aware walaupun UI utama sudah jauh lebih bersih.
## Langkah Lanjutan Paling Masuk Akal
1. Putuskan apakah dokumen manual Word + screenshot perlu masuk repo dan dipush.
2. Jika iya, `git add` file manual dan asset screenshot lalu commit terpisah.
3. Tambahkan script/helper resmi untuk membuat `roles` dan user production pertama agar tidak lagi manual SQL.
4. Lanjut hardening production:
- rate limit
- cleanup SMTP secret strategy
- CI/lint/test
5. Jika mobile app mulai dikerjakan, pakai:
- `docs/mobile-api-blueprint.md`
- Postman collection mobile
## Catatan Penutup
- File handoff lama `docs/codex-handoff-2026-05-10.md` sudah tidak relevan lagi karena banyak perubahan besar setelah tanggal itu.
- Handoff terbaru ini menjadi sumber konteks utama sampai ada update berikutnya.