10 KiB
10 KiB
Codex Handoff - 2026-05-21
Dokumen ini menyimpan konteks kerja terbaru setelah rangkaian patch mobile, login publik, global search, locking satuan, dan workflow deploy artifact Linux.
Status Umum
- App aktif dikembangkan di
Next.js + Prisma + PostgreSQL. - Branch aktif:
main - Repo remote utama:
https://git.iptek.co/wirabasalamah/AbelBirdNest-Stock.git - Server target production saat ini:
/var/www/abelbirdnest-web/AbelBirdNest-Stock
Ringkasan Perubahan Terbaru
1. Flow Mobile Purchase
- Menu
Receiptdi mobile sudah dikeluarkan dari bootstrap mobile. - Submit purchase sekarang langsung:
- membuat
receipt - membuat
receipt_lines - membuat
lot - membuat alokasi realization terkait
- membuat
- Endpoint utama:
- Dokumen mobile sudah disesuaikan:
2. Formatting Qty dan Currency
- Formatting
kgsekarang locale-aware. - Angka hasil konversi gram ke kilogram tampil dengan format Indonesia yang benar, misalnya
10,5 kg. - Currency di beberapa modul tidak lagi hardcoded dan mengikuti
currency_codesistem. - File sentral:
3. Dashboard Qty Fix
- Dashboard sebelumnya salah menampilkan angka seperti
94.290 kguntuk data gram yang seharusnya dibaca sebagai94,29 kg. - Perbaikan dilakukan dengan konversi qty berbasis
unit.codesebelum agregasi. - File utama:
4. Login Publik, Contact Admin, dan Halaman Legal
- Login sekarang punya link publik yang benar-benar aktif:
Hubungi AdminBantuanKebijakan PrivasiSyarat & Ketentuan
Hubungi Adminsekarang menuju halaman publik dengan form kirim email.- Form ini memakai:
- CAPTCHA aritmatika server-side
- honeypot anti-spam
- Halaman publik legal/help tersedia tanpa login:
/contact-admin/help-public/privacy-policy/terms-and-conditions
- Semua halaman publik ini sudah dua bahasa
ID/EN. - Email admin tidak lagi ditampilkan langsung di halaman publik; user diarahkan memakai form kontak admin.
- File utama:
5. Global Search Header
- Search di topbar sebelumnya hanya placeholder.
- Sekarang search desktop:
- full width sampai mendekati switch bahasa
- real-time
- menampilkan dropdown hasil
- bisa klik hasil
- bisa Enter untuk fallback ke halaman lot
- Search lintas:
lotpurchase- supplier/agent terkait
- Endpoint baru:
- Komponen utama:
- Halaman lot sudah membaca query URL
?search=agar fallback search juga benar-benar terpakai.
6. Master Satuan Dikunci
- Master
Satuansekarang dibuat fixed dan tidak lagi editable. - Hanya dua satuan yang diizinkan:
grkg
GET /api/v1/unitsakan memastikan dua unit itu selalu ada.POST,PUT, danDELETEunit sekarang ditolak403.- Submenu
Satuandisembunyikan dari sidebar. - Kalau halaman
/unitsdibuka langsung, tampilannya read-only. - File utama:
Prisma dan Build Cross-Platform
- Local Mac sempat rusak karena build Linux menimpa hasil
prisma generate. - Generator Prisma sekarang mencakup:
nativedarwin-arm64debian-openssl-3.0.xlinux-musl-openssl-3.0.x
- File:
Workflow Deploy Artifact Linux
- Build di server sempat berat dan tidak stabil.
- Sekarang ada workflow artifact standalone Linux.
- Script:
- Karakteristik workflow ini:
- build di Docker Alpine Linux agar cocok dengan server Alpine
- install
openssldi container - pakai
NODE_OPTIONS=--max-old-space-size=4096 - copy source ke
/workagar tidak menimpanode_moduleslokal Mac - artifact final memakai timestamp:
abelbirdnest-release-YYYYMMDD-HHMMSS.tar.gz
- Artifact final tidak membawa
.env.productionlokal.
Catatan Tambahan 2026-05-26
- Server production memakai Alpine Linux dengan RAM sekitar 1 GB.
- Jangan compile/build di server.
- Artifact harus dibuat dari container Alpine, default script sekarang memakai
node:20-alpine. - Runtime server Alpine perlu
nodejsdanopenssl. - Ukuran artifact runtime-only yang normal sekitar
43 MB. - Jika artifact membengkak sekitar
120 MB+, kemungkinan Prisma CLI ataunode_moduleslengkap ikut terbawa. Jangan pakai varian besar itu untuk server 1 GB kecuali memang sengaja. - Artifact runtime-only tidak dipakai untuk menjalankan
prisma migrate deploydi server. Untuk update UI/app tanpa perubahan schema DB, cukup extract release baru lalu restart service. - Jika nanti ada migration database, jalankan migration dari mesin build/admin yang punya dependency lengkap dan akses DB production, bukan dari server kecil.
Catatan Deploy Server Saat Ini
- Path app aktif di server production saat ini:
/opt/abelbirdnest-web - Struktur release yang dipakai sekarang diasumsikan:
- upload artifact ke root app server:
/opt/abelbirdnest-web - extract ke
releases/<timestamp> - symlink
currentdiarahkan ke release aktif
- upload artifact ke root app server:
- Folder aktif runtime:
/opt/abelbirdnest-web/current - Service server memakai OpenRC, bukan systemd.
- Service OpenRC production yang ditemukan:
directory="/opt/abelbirdnest-web/current"command="/usr/bin/node"command_args="/opt/abelbirdnest-web/current/server.js"- env yang dicek service:
/opt/abelbirdnest-web/current/.env
- Karena service mencari
.envdi foldercurrent, setiap release baru perlu copy.envdari release/current lama ke folder release baru sebelumcurrentdiarahkan ke release baru. - Jangan gunakan path lama
/var/www/abelbirdnest-web/AbelBirdNest-Stockuntuk server ini kecuali service production memang sudah diubah.
Command Manual Deploy Yang Dipakai
Di lokal:
scp abelbirdnest-release-YYYYMMDD-HHMMSS.tar.gz abelbirdnest@SERVER_IP:/opt/abelbirdnest-web/
Di server:
cd /opt/abelbirdnest-web
RELEASE_NAME=YYYYMMDD-HHMMSS
mkdir -p /opt/abelbirdnest-web/releases/$RELEASE_NAME
tar -xzf /opt/abelbirdnest-web/abelbirdnest-release-$RELEASE_NAME.tar.gz -C /opt/abelbirdnest-web/releases/$RELEASE_NAME
cp /opt/abelbirdnest-web/current/.env /opt/abelbirdnest-web/releases/$RELEASE_NAME/.env
mv /opt/abelbirdnest-web/current /opt/abelbirdnest-web/current-backup-$(date +%Y%m%d-%H%M%S) 2>/dev/null || true
ln -sfn /opt/abelbirdnest-web/releases/$RELEASE_NAME /opt/abelbirdnest-web/current
sudo chown -R abelbirdnest:abelbirdnest /opt/abelbirdnest-web
sudo rc-service abelbirdnest-web restart
sudo rc-service abelbirdnest-web status
curl -I http://127.0.0.1:3007/login
Jika ln -sfn ... current gagal dengan pesan File exists, berarti current masih folder biasa. Backup/rename folder itu dulu, lalu ulangi ln -sfn.
Verifikasi yang Sudah Dilakukan
npx tsc --noEmitlolos setelah patch terbaru.- Global search endpoint mengembalikan hasil yang benar untuk sample data lokal.
GET /api/v1/unitssekarang hanya mengembalikangrdankg.POST /api/v1/unitssekarang ditolak dengan pesan lock master.
Risiko / Catatan yang Masih Relevan
- Build standalone lokal tetap menampilkan warning Prisma saat static generation jika DB lokal tidak aktif; warning ini tidak menggagalkan artifact.
- Production deploy sekarang punya dua mode historis:
- mode lama
repo root + npm run start - mode baru
artifact standalone + node server.jsJangan campur keduanya pada instruksi deploy.
- mode lama
- Beberapa endpoint
mobile/receipts/**masih ada untuk kompatibilitas lama, walaupun flow mobile baru tidak lagi menampilkan menu receipt.
Langkah Lanjutan Paling Masuk Akal
- Deploy artifact terbaru ke server production.
- Verifikasi:
- search header aktif
- halaman publik login aktif
Satuantidak muncul di menuGET /api/v1/unitshanyagrdankg
- Jika perlu, lanjut bersihkan endpoint legacy yang sudah tidak dipakai lagi, terutama sekitar receipt mobile lama.
Catatan Penutup
- Handoff sebelumnya:
- Handoff
2026-05-21ini adalah snapshot terbaru dan seharusnya dipakai sebagai konteks utama lanjutan.