mirror of
https://gitlab.com/mbugroup/lti-api.git
synced 2026-05-20 13:31:56 +00:00
15 KiB
15 KiB
| 1 | ID | Kategori | Area | Judul | Tipe | Prioritas | Setup/Precondition | Langkah Uji | Hasil yang Diharapkan |
|---|---|---|---|---|---|---|---|---|---|
| 2 | TC-A01 | Migrasi dan Keamanan Data | Database | Migrasi aman pada DB tidak kosong | Integration | High | Gunakan snapshot DB staging yang sudah berisi recording, depletion, telur, penjualan, dan closing. | 1. Jalankan migrasi 20260330110000_add_recording_attribution_fields_for_farm_stock.up.sql. 2. Inspect schema hasil migrasi. | Kolom recording_depletions.source_project_flock_kandang_id dan recording_eggs.project_flock_kandang_id tersedia dan nullable, index dan FK tersedia, tidak ada data historis yang terhapus atau berubah destruktif. |
| 3 | TC-A02 | Migrasi dan Keamanan Data | Database | Backfill deterministik berjalan | Integration | High | Ada data historis recording dengan recordings.project_flock_kandangs_id yang valid. | 1. Query recording_depletions dan recording_eggs yang lama. 2. Bandingkan dengan kandang pada parent recording. | source_project_flock_kandang_id dan project_flock_kandang_id terisi sama dengan kandang parent recording untuk row yang sebelumnya null. |
| 4 | TC-A03 | Migrasi dan Keamanan Data | Reporting | Report historis kandang-only tidak berubah | Regression | High | Gunakan snapshot yang hanya memiliki data stok historis milik kandang, tanpa pooled stock farm-level. | 1. Jalankan closing/report/HPP sebelum deploy. 2. Jalankan lagi sesudah deploy pada snapshot yang sama. 3. Bandingkan hasil. | Total dan hasil report tetap sama untuk skenario historis kandang-only. |
| 5 | TC-B01 | Purchase dan Warehouse | Purchase | Purchase pakan langsung ke gudang farm | UAT | High | Tersedia PO atau purchase request untuk produk Pakan Starter. | 1. Buat purchase ke Gudang Farm A. 2. Approve dan receive purchase. | Stok masuk ke product_warehouse level farm, tidak perlu transfer paksa ke kandang, FIFO/HPP purchase tetap benar. |
| 6 | TC-B02 | Purchase dan Warehouse | Purchase | Purchase pakan langsung ke gudang kandang | Regression | High | Tersedia PO atau purchase request untuk produk Pakan Starter. | 1. Buat purchase ke Gudang Kandang A1. 2. Approve dan receive purchase. | Stok masuk ke gudang kandang dan perilaku tetap sama seperti flow lama. |
| 7 | TC-B03 | Purchase dan Warehouse | Purchase | Purchase OVK langsung ke gudang farm | UAT | High | Tersedia PO atau purchase request untuk produk OVK A. | 1. Buat purchase ke Gudang Farm A. 2. Approve dan receive purchase. | Stok OVK masuk ke gudang farm dan bisa dipakai kemudian pada recording. |
| 8 | TC-B04 | Purchase dan Warehouse | Product Warehouse | Gudang farm shared tidak diubah diam-diam menjadi milik kandang | Regression | High | Sudah ada row product_warehouse level farm untuk Pakan Starter di Gudang Farm A. | 1. Trigger flow yang memanggil ensure/find product warehouse untuk produk yang sama. 2. Inspect row existing. | Row farm-level tetap farm-level, project_flock_kandang_id tidak dibackfill diam-diam, row khusus kandang dibuat terpisah bila memang diperlukan. |
| 9 | TC-C01 | Recording Stock Consumption | Recording | Recording kandang memakai pakan dari gudang kandang | Regression | High | Stok pakan tersedia di Gudang Kandang A1. | 1. Buka recording untuk Kandang A1. 2. Pilih pakan dari gudang kandang. 3. Submit dan approve. | Recording berhasil, stok keluar dari product_warehouse kandang, atribusi kandang tetap A1, HPP pemakaian muncul di closing/HPP A1. |
| 10 | TC-C02 | Recording Stock Consumption | Recording | Recording kandang memakai pakan dari gudang farm | UAT | High | Stok pakan hanya tersedia di Gudang Farm A. | 1. Buka recording untuk Kandang A1. 2. Pilih stok pakan farm-level. 3. Submit dan approve. | Recording berhasil tanpa transfer ke kandang, stok fisik berkurang dari gudang farm, usage/HPP tetap teratribusi ke Kandang A1, closing farm dan kandang tetap bisa dihitung. |
| 11 | TC-C03 | Recording Stock Consumption | Recording | Recording kandang memakai OVK dari gudang farm | UAT | High | Stok OVK hanya tersedia di Gudang Farm A. | 1. Buka recording untuk Kandang A1. 2. Pilih stok OVK farm-level. 3. Submit dan approve. | Stok OVK keluar dari gudang farm dan biaya pemakaian teratribusi ke kandang yang dipilih. |
| 12 | TC-C04 | Recording Stock Consumption | Frontend Recording | Selector recording menampilkan opsi stok farm dan kandang dengan jelas | UI Regression | Medium | Produk yang sama tersedia di Gudang Farm A dan Gudang Kandang A1. | 1. Buka form recording untuk A1. 2. Buka selector pakan. | Kedua opsi terlihat, label membedakan gudang atau scope dengan jelas, farm stock tidak tersembunyi secara salah. |
| 13 | TC-C05 | Recording Stock Consumption | Recording | Recording A1 tidak boleh memakai stok kandang A2 | Negative | High | Pakan Starter tersedia di Gudang Kandang A2. | 1. Buka recording untuk A1. 2. Periksa opsi stok yang bisa dipilih. | Opsi Gudang Kandang A2 tidak bisa dipilih, stok farm tetap bisa dipilih. |
| 14 | TC-C06 | Recording Stock Consumption | Recording | Perilaku pending stock dan usage lama tetap berjalan | Regression | Medium | Tidak ada setup khusus selain data recording yang valid. | 1. Buat usage stock. 2. Buka kembali halaman edit dan detail. | Tampilan dan perhitungan pending atau usage tetap benar, tidak ada regresi pada route FIFO-v2. |
| 15 | TC-D01 | Recording Telur dan Atribusi | Recording | Recording telur ke gudang kandang tetap berjalan | Regression | High | Kandang A1 aktif dan gudang telur kandang tersedia. | 1. Record telur untuk A1 ke Gudang Kandang A1. 2. Approve. | Stok telur di gudang kandang bertambah dan asal kandang tetap A1. |
| 16 | TC-D02 | Recording Telur dan Atribusi | Recording | Recording telur di kandang menyimpan stok ke gudang farm | UAT | High | Egg product warehouse tersedia di Gudang Farm A. | 1. Record telur untuk A1. 2. Pilih Gudang Farm A sebagai gudang telur. 3. Submit dan approve. | Stok telur fisik masuk ke gudang farm, recording_eggs.project_flock_kandang_id bernilai A1, tidak ada transfer paksa ke kandang. |
| 17 | TC-D03 | Recording Telur dan Atribusi | Reporting | Stok telur pooled di farm tetap punya jejak asal kandang | Integration | High | A1 record 100 telur ke gudang farm dan A2 record 150 telur ke gudang farm yang sama. | 1. Inspect row telur yang tersimpan. 2. Inspect hasil costing atau report setelahnya. | Stok fisik pooled di gudang farm, tetapi asal kandang tetap bisa dibedakan per row atau allocation, HPP per kandang tetap dapat dihitung. |
| 18 | TC-D04 | Recording Telur dan Atribusi | Recording Detail | Known gap pada detail recording dipahami | Known Limitation | Low | Sudah menjalankan TC-D02. | 1. Buka detail recording setelah transaksi telur ke gudang farm. | Logika bisnis tetap berjalan, tetapi detail API atau UI mungkin belum menampilkan egg-origin secara eksplisit karena detail DTO belum diperluas. |
| 19 | TC-E01 | Depletion dan Atribusi Populasi | Recording | Depletion dari gudang ayam milik kandang normal | Regression | High | A1 memiliki populasi ayam di gudang kandang. | 1. Buat depletion. 2. Approve. | Depletion berhasil, alokasi populasi ter-resolve ke A1, HPP atau usage tetap benar. |
| 20 | TC-E02 | Depletion dan Atribusi Populasi | Recording | Depletion dari sumber ayam fisik farm-level dengan source kandang A1 | UAT | High | Stok ayam secara fisik ada di gudang farm dan punya jejak sumber ke A1. | 1. Buat depletion untuk A1. 2. Gunakan path source atau farm-level yang didukung backend. 3. Approve. | source_product_warehouse_id menunjuk ke sumber fisik yang benar, source_project_flock_kandang_id bernilai A1, alokasi populasi berhasil tanpa mengasumsikan gudang fisik milik A1. |
| 21 | TC-E03 | Depletion dan Atribusi Populasi | Recording | Depletion gagal bila sumber populasi tidak dapat diatribusikan | Negative | High | Buat kasus stok ayam farm-level tanpa source kandang yang valid. | 1. Coba approve depletion. | Backend menolak dengan error yang jelas dan tidak ada silent misattribution. |
| 22 | TC-F01 | Marketing dan Penjualan | Sales Order | Sales order dari gudang kandang tetap berjalan | Regression | High | Stok produk tersedia di Gudang Kandang A1. | 1. Buat SO dari Gudang Kandang A1. 2. Lakukan delivery. | Perilaku lama tetap berjalan normal. |
| 23 | TC-F02 | Marketing dan Penjualan | Sales Order | Sales order dari gudang farm untuk telur | UAT | High | Stok telur farm-level tersedia dan berasal dari A1. | 1. Buat SO menggunakan Gudang Farm A. 2. Lakukan delivery. | SO dan DO berhasil, stok fisik berkurang dari gudang farm, HPP dan COGS telur tetap teratribusi ke kandang penghasil melalui allocation. |
| 24 | TC-F03 | Marketing dan Penjualan | Sales Order | Sales order dari gudang farm untuk telur pooled A1 dan A2 | Integration | High | Stok telur pooled tersedia di gudang farm dari A1 dan A2. | 1. Buat penjualan. 2. Lakukan delivery. 3. Inspect closing atau report. | Stok fisik berkurang sekali dari gudang farm, revenue dan HPP terbagi benar ke A1 dan A2, tidak bergantung pada pw.project_flock_kandang_id. |
| 25 | TC-F04 | Marketing dan Penjualan | Sales Order | Sales order dari gudang farm untuk ayam atau culling | UAT | High | Stok ayam atau culling farm-level tersedia dengan jejak sumber dari A1 dan A2. | 1. Buat SO dari gudang farm. 2. Buat DO dan approve. | allocatePopulationForMarketingDelivery menurunkan atribusi kandang dari source groups atau allocation, tidak gagal karena gudang jual tidak punya project_flock_kandang_id, HPP dan COGS teratribusi ke kandang sumber. |
| 26 | TC-F05 | Marketing dan Penjualan | Frontend Marketing | UI sales menampilkan semantik Gudang Fisik | UI Regression | Medium | Tidak ada setup khusus selain akses ke form SO. | 1. Buka form SO. 2. Periksa label selector gudang dan label tabel produk. | UI menggunakan label Gudang Fisik, bukan Kandang yang menyesatkan, dan label produk memuat detail produk serta gudang atau scope. |
| 27 | TC-F06 | Marketing dan Penjualan | Delivery Order | Layar delivery order tetap kompatibel | Regression | Medium | Sudah ada SO dari gudang farm. | 1. Lakukan delivery untuk SO farm-level. 2. Periksa tabel dan detail DO. | Tidak ada masalah payload, gudang fisik tampil dengan benar, dan tidak ada kebingungan akibat wording lama berbasis kandang. |
| 28 | TC-G01 | Report, Closing, dan HPP | Daily Marketing Report | Daily marketing report untuk penjualan telur farm-level | UAT | Medium | Sudah menjalankan TC-F02. | 1. Jalankan daily marketing report. 2. Uji export. | Row muncul pada gudang fisik yang benar, report tidak menyiratkan gudang sama dengan kandang, export berjalan. |
| 29 | TC-G02 | Report, Closing, dan HPP | Closing Sales | Closing sales untuk penjualan pooled farm-level | UAT | High | Ada penjualan pooled telur atau ayam dari gudang farm. | 1. Buka closing sales. | Penjualan bisa tampil teratribusi per kandang, label menunjukkan Kandang Atribusi, HPP dan revenue tetap benar secara matematis. |
| 30 | TC-G03 | Report, Closing, dan HPP | HPP per Kandang | HPP per kandang mencakup konsumsi pakan atau OVK dari gudang farm | UAT | High | A1 sudah memakai pakan atau OVK dari gudang farm. | 1. Jalankan report HPP per kandang. | Biaya usage muncul di A1 dan tidak hilang walaupun gudang fisiknya level farm. |
| 31 | TC-G04 | Report, Closing, dan HPP | Closing Sapronak | Outgoing sapronak menampilkan gudang fisik dengan benar | UI Regression | Medium | Ada data outgoing sapronak yang valid. | 1. Buka tabel closing outgoing sapronak. | Header jelas menunjukkan Gudang Asal (Fisik) dan Gudang Tujuan (Fisik). |
| 32 | TC-G05 | Report, Closing, dan HPP | Compatibility | Data historis kandang-owned dan pooled data baru dapat coexist | Regression | High | Dalam satu date range ada transaksi lama kandang-owned dan transaksi baru pooled farm-level. | 1. Jalankan closing. 2. Jalankan report. 3. Jalankan HPP. | Kedua jenis data diproses dengan benar, tidak ada double count dan tidak ada atribusi yang hilang. |
| 33 | TC-H01 | FIFO-v2 dan Integritas Allocation | FIFO-v2 | Kontrak FIFO-v2 tidak berubah | Integration | High | Gunakan data uji yang mencakup recording stock, depletion, egg, dan marketing. | 1. Verifikasi route FIFO untuk RECORDING_STOCK_OUT, RECORDING_DEPLETION_OUT, RECORDING_DEPLETION_IN, RECORDING_EGG_IN, dan MARKETING_OUT. 2. Bandingkan dengan RFC.md dan seed config FIFO-v2. | Tidak ada perubahan semantik route yang tidak disengaja. |
| 34 | TC-H02 | FIFO-v2 dan Integritas Allocation | Stock Allocation | Stock allocation tetap konsisten untuk pakan dari gudang farm | Integration | High | Sudah menjalankan TC-C02. | 1. Inspect stock_allocations setelah transaksi. | Allocation consume terbentuk dengan benar dan tidak ada row allocation yatim atau rusak. |
| 35 | TC-H03 | FIFO-v2 dan Integritas Allocation | Stock Allocation | Stock allocation tetap konsisten untuk penjualan telur pooled | Integration | High | Sudah menjalankan TC-F03. | 1. Inspect stock_allocations. 2. Inspect row atribusi turunannya. | Allocation mendukung atribusi HPP kembali ke kandang sumber. |
| 36 | TC-H04 | FIFO-v2 dan Integritas Allocation | Population Allocation | Population allocation tetap konsisten untuk penjualan ayam pooled | Integration | High | Sudah menjalankan TC-F04. | 1. Inspect population allocations. | Penggunaan kandang sumber teralokasi dengan benar dan tidak fallback ke atribusi null saat source tersedia. |
| 37 | TC-I01 | Negative dan Guard Cases | Recording | Recording dari stok farm-level dengan qty tidak cukup | Negative | High | Stok farm-level tersedia tetapi qty lebih kecil dari pemakaian yang diinput. | 1. Buat recording dengan qty melebihi stok. 2. Submit atau approve. | Muncul validation atau business error dan tidak ada korupsi parsial. |
| 38 | TC-I02 | Negative dan Guard Cases | Marketing | Marketing dari stok farm-level dengan qty tidak cukup | Negative | High | Stok farm-level tersedia tetapi qty lebih kecil dari qty penjualan. | 1. Buat SO atau DO dengan qty melebihi stok. 2. Submit atau approve. | Delivery atau approval diblok dan stok tetap konsisten. |
| 39 | TC-I03 | Negative dan Guard Cases | Frontend Selector | Opsi produk sama di gudang berbeda tidak salah terpilih | UI Regression | Medium | Produk yang sama tersedia di gudang farm dan gudang kandang. | 1. Pilih masing-masing opsi secara eksplisit di UI. 2. Save. 3. Buka kembali edit atau detail. | Opsi yang terpilih jelas dan tetap stabil setelah save atau edit. |
| 40 | TC-I04 | Negative dan Guard Cases | Product Warehouse | Row gudang shared tidak diatribusikan ulang oleh flow maintenance | Regression | High | Ada row shared farm warehouse yang sudah aktif. | 1. Jalankan flow yang menyentuh logic ensure/find product warehouse. 2. Cek ulang row farm shared. | Tidak ada mutasi diam-diam pada project_flock_kandang_id. |
| 41 | TC-J01 | Regression Frontend dan UX | Recording Form | Form recording menampilkan opsi stok farm dan kandang hanya dalam scope farm yang sama | UI Regression | Medium | Ada stok di gudang farm, gudang kandang saat ini, dan gudang kandang lain. | 1. Buka form recording untuk kandang tertentu. 2. Periksa opsi stock selector. | Gudang farm dan gudang kandang saat ini terlihat, gudang kandang lain tersembunyi. |
| 42 | TC-J02 | Regression Frontend dan UX | Recording Form | Selector recording telur mengizinkan gudang farm | UI Regression | Medium | Egg warehouse tersedia di gudang farm. | 1. Buka form recording telur. 2. Buka selector tujuan telur. | Gudang farm terlihat sebagai opsi tujuan telur. |
| 43 | TC-J03 | Regression Frontend dan UX | Sales Form | Form sales memakai semantik gudang secara konsisten | UI Regression | Medium | Akses ke halaman marketing tersedia. | 1. Buka form sales. 2. Periksa label selector dan summary table. | Label menggunakan Gudang Fisik secara konsisten dan tidak ada wording Kandang yang menyesatkan untuk stok fisik. |
| 44 | TC-J04 | Regression Frontend dan UX | Marketing Modal | Modal list marketing menampilkan label gudang fisik | UI Regression | Low | Akses ke modal product list tersedia. | 1. Buka modal product list di marketing. | Kolom menampilkan label Gudang Fisik. |
| 45 | TC-K01 | Known Limitation | Recording Detail | Detail recording belum menampilkan source atau origin attribution baru | Known Limitation | Low | Sudah ada recording telur farm-level dan depletion dengan source attribution. | 1. Buat transaksi. 2. Buka detail recording. | Transaksi berjalan dan atribusi tersimpan di DB, tetapi detail API atau UI mungkin belum menampilkan field source atau origin tersebut |