|
|
|
|
@ -91,6 +91,38 @@ Untuk temuan di sekitar kode, baca file utuhnya, jangan hanya potongan diff.
|
|
|
|
|
- Batas panjang zod sama dengan panjang kolom di `db/amigo/schema.ts`.
|
|
|
|
|
- Aturan bisnis dicocokkan dengan kode lama di `old-source/` (mis. format kode pelanggan).
|
|
|
|
|
|
|
|
|
|
### Struktur dan maintainability
|
|
|
|
|
|
|
|
|
|
Bagian ini butuh konteks di luar diff. Kalau diff menambah atau mengubah fitur, baca juga fitur
|
|
|
|
|
lain yang sejenis.
|
|
|
|
|
|
|
|
|
|
- Fitur baru mengikuti pola fitur acuan `app/(dashboard)/master/pelanggan/`: `page.tsx`,
|
|
|
|
|
`actions.ts`, `_components/`, dan satu file `data/<fitur>.ts` per domain. Penyimpangan dari
|
|
|
|
|
pola itu harus punya alasan yang jelas.
|
|
|
|
|
- Nama fungsi `data/` seragam antar fitur: `list<Fitur>`, `get<Fitur>`, `insert<Fitur>`,
|
|
|
|
|
`update<Fitur>`, `delete<Fitur>`. Istilah domain konsisten (mis. `pelanggan`, bukan campur
|
|
|
|
|
`customer`), kecuali nama kolom/tabel lama di `db/amigo/schema.ts`.
|
|
|
|
|
- Arah dependency:
|
|
|
|
|
- `app/` boleh import `data/`, `components/`, `lib/`; `data/` boleh import `db/` dan `lib/`.
|
|
|
|
|
Tidak boleh sebaliknya (`data/` atau `lib/` import dari `app/`).
|
|
|
|
|
- Fitur A tidak import `_components/` atau `actions.ts` milik fitur B. Kalau dibutuhkan
|
|
|
|
|
bersama, pindahkan komponen ke `components/` atau logika ke `lib/`/`data/`.
|
|
|
|
|
- `components/` (lintas fitur) tidak import dari `app/`.
|
|
|
|
|
- Duplikasi lintas fitur: kode yang sama muncul di fitur kedua dipindah ke satu tempat
|
|
|
|
|
bersama, bukan disalin. Kandidat umum: escape `LIKE`, tipe hasil action
|
|
|
|
|
(`{ ok, error, fieldErrors, values }`), pola log error action, pagination, kotak pencarian,
|
|
|
|
|
skema zod yang berulang. Jangan memindahkan saat baru dipakai satu fitur.
|
|
|
|
|
- Aturan bisnis lama (kode huruf harga `convHrgP`/`convProfit`, format tanggal `dd-mm-yyyy`,
|
|
|
|
|
tanggal "hari ini" `Asia/Jakarta`) punya satu implementasi di `lib/`, tidak ditulis ulang per
|
|
|
|
|
fitur.
|
|
|
|
|
- `data/` tidak berisi logika tampilan (format rupiah, format tanggal untuk UI, teks label).
|
|
|
|
|
- File di atas sekitar 250 baris, atau komponen yang mengerjakan beberapa hal sekaligus (form,
|
|
|
|
|
daftar, dan dialog dalam satu file), ditandai untuk dipecah.
|
|
|
|
|
- Navigasi: setiap `href` di `app/(dashboard)/_components/nav-items.ts` punya `page.tsx`, dan
|
|
|
|
|
setiap page baru di `(dashboard)` terdaftar di nav (kecuali halaman detail/turunan).
|
|
|
|
|
- Kalau perubahan memperkenalkan konvensi baru (folder, helper bersama, pola action), cek
|
|
|
|
|
apakah `CLAUDE.md` ikut diperbarui supaya fitur berikutnya mengikuti pola yang sama.
|
|
|
|
|
|
|
|
|
|
### Kerapian
|
|
|
|
|
|
|
|
|
|
- Format sesuai Prettier (titik koma, baris tidak terlalu panjang, newline di akhir file).
|
|
|
|
|
@ -104,7 +136,9 @@ Lalu temuan dikelompokkan dan diberi nomor berurutan lintas kelompok:
|
|
|
|
|
|
|
|
|
|
1. **Bug**: perilaku salah yang bisa dialami user. Sertakan skenario konkretnya.
|
|
|
|
|
2. **Tidak sesuai aturan proyek**: pelanggaran CLAUDE.md.
|
|
|
|
|
3. **Kerapian**: format, kode mati, duplikasi.
|
|
|
|
|
3. **Struktur dan maintainability**: menyimpang dari pola fitur acuan, arah dependency salah,
|
|
|
|
|
duplikasi lintas fitur, file terlalu besar, nav tidak sinkron.
|
|
|
|
|
4. **Kerapian**: format, kode mati, duplikasi kecil di dalam satu file.
|
|
|
|
|
|
|
|
|
|
Setiap temuan menyebut `file:baris`, apa yang salah, dan arah perbaikannya dalam satu atau
|
|
|
|
|
dua kalimat. Tutup dengan daftar singkat hal yang sudah benar, lalu saran urutan perbaikan.
|
|
|
|
|
|