Files
lti-api/docs/qa_farm_stock_test_cases.csv
2026-04-01 16:14:07 +07:00

15 KiB

1IDKategoriAreaJudulTipePrioritasSetup/PreconditionLangkah UjiHasil yang Diharapkan
2TC-A01Migrasi dan Keamanan DataDatabaseMigrasi aman pada DB tidak kosongIntegrationHighGunakan 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.
3TC-A02Migrasi dan Keamanan DataDatabaseBackfill deterministik berjalanIntegrationHighAda 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.
4TC-A03Migrasi dan Keamanan DataReportingReport historis kandang-only tidak berubahRegressionHighGunakan 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.
5TC-B01Purchase dan WarehousePurchasePurchase pakan langsung ke gudang farmUATHighTersedia 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.
6TC-B02Purchase dan WarehousePurchasePurchase pakan langsung ke gudang kandangRegressionHighTersedia 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.
7TC-B03Purchase dan WarehousePurchasePurchase OVK langsung ke gudang farmUATHighTersedia 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.
8TC-B04Purchase dan WarehouseProduct WarehouseGudang farm shared tidak diubah diam-diam menjadi milik kandangRegressionHighSudah 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.
9TC-C01Recording Stock ConsumptionRecordingRecording kandang memakai pakan dari gudang kandangRegressionHighStok 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.
10TC-C02Recording Stock ConsumptionRecordingRecording kandang memakai pakan dari gudang farmUATHighStok 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.
11TC-C03Recording Stock ConsumptionRecordingRecording kandang memakai OVK dari gudang farmUATHighStok 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.
12TC-C04Recording Stock ConsumptionFrontend RecordingSelector recording menampilkan opsi stok farm dan kandang dengan jelasUI RegressionMediumProduk 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.
13TC-C05Recording Stock ConsumptionRecordingRecording A1 tidak boleh memakai stok kandang A2NegativeHighPakan 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.
14TC-C06Recording Stock ConsumptionRecordingPerilaku pending stock dan usage lama tetap berjalanRegressionMediumTidak 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.
15TC-D01Recording Telur dan AtribusiRecordingRecording telur ke gudang kandang tetap berjalanRegressionHighKandang 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.
16TC-D02Recording Telur dan AtribusiRecordingRecording telur di kandang menyimpan stok ke gudang farmUATHighEgg 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.
17TC-D03Recording Telur dan AtribusiReportingStok telur pooled di farm tetap punya jejak asal kandangIntegrationHighA1 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.
18TC-D04Recording Telur dan AtribusiRecording DetailKnown gap pada detail recording dipahamiKnown LimitationLowSudah 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.
19TC-E01Depletion dan Atribusi PopulasiRecordingDepletion dari gudang ayam milik kandang normalRegressionHighA1 memiliki populasi ayam di gudang kandang.1. Buat depletion. 2. Approve.Depletion berhasil, alokasi populasi ter-resolve ke A1, HPP atau usage tetap benar.
20TC-E02Depletion dan Atribusi PopulasiRecordingDepletion dari sumber ayam fisik farm-level dengan source kandang A1UATHighStok 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.
21TC-E03Depletion dan Atribusi PopulasiRecordingDepletion gagal bila sumber populasi tidak dapat diatribusikanNegativeHighBuat 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.
22TC-F01Marketing dan PenjualanSales OrderSales order dari gudang kandang tetap berjalanRegressionHighStok produk tersedia di Gudang Kandang A1.1. Buat SO dari Gudang Kandang A1. 2. Lakukan delivery.Perilaku lama tetap berjalan normal.
23TC-F02Marketing dan PenjualanSales OrderSales order dari gudang farm untuk telurUATHighStok 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.
24TC-F03Marketing dan PenjualanSales OrderSales order dari gudang farm untuk telur pooled A1 dan A2IntegrationHighStok 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.
25TC-F04Marketing dan PenjualanSales OrderSales order dari gudang farm untuk ayam atau cullingUATHighStok 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.
26TC-F05Marketing dan PenjualanFrontend MarketingUI sales menampilkan semantik Gudang FisikUI RegressionMediumTidak 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.
27TC-F06Marketing dan PenjualanDelivery OrderLayar delivery order tetap kompatibelRegressionMediumSudah 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.
28TC-G01Report, Closing, dan HPPDaily Marketing ReportDaily marketing report untuk penjualan telur farm-levelUATMediumSudah 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.
29TC-G02Report, Closing, dan HPPClosing SalesClosing sales untuk penjualan pooled farm-levelUATHighAda 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.
30TC-G03Report, Closing, dan HPPHPP per KandangHPP per kandang mencakup konsumsi pakan atau OVK dari gudang farmUATHighA1 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.
31TC-G04Report, Closing, dan HPPClosing SapronakOutgoing sapronak menampilkan gudang fisik dengan benarUI RegressionMediumAda data outgoing sapronak yang valid.1. Buka tabel closing outgoing sapronak.Header jelas menunjukkan Gudang Asal (Fisik) dan Gudang Tujuan (Fisik).
32TC-G05Report, Closing, dan HPPCompatibilityData historis kandang-owned dan pooled data baru dapat coexistRegressionHighDalam 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.
33TC-H01FIFO-v2 dan Integritas AllocationFIFO-v2Kontrak FIFO-v2 tidak berubahIntegrationHighGunakan 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.
34TC-H02FIFO-v2 dan Integritas AllocationStock AllocationStock allocation tetap konsisten untuk pakan dari gudang farmIntegrationHighSudah menjalankan TC-C02.1. Inspect stock_allocations setelah transaksi.Allocation consume terbentuk dengan benar dan tidak ada row allocation yatim atau rusak.
35TC-H03FIFO-v2 dan Integritas AllocationStock AllocationStock allocation tetap konsisten untuk penjualan telur pooledIntegrationHighSudah menjalankan TC-F03.1. Inspect stock_allocations. 2. Inspect row atribusi turunannya.Allocation mendukung atribusi HPP kembali ke kandang sumber.
36TC-H04FIFO-v2 dan Integritas AllocationPopulation AllocationPopulation allocation tetap konsisten untuk penjualan ayam pooledIntegrationHighSudah menjalankan TC-F04.1. Inspect population allocations.Penggunaan kandang sumber teralokasi dengan benar dan tidak fallback ke atribusi null saat source tersedia.
37TC-I01Negative dan Guard CasesRecordingRecording dari stok farm-level dengan qty tidak cukupNegativeHighStok 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.
38TC-I02Negative dan Guard CasesMarketingMarketing dari stok farm-level dengan qty tidak cukupNegativeHighStok 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.
39TC-I03Negative dan Guard CasesFrontend SelectorOpsi produk sama di gudang berbeda tidak salah terpilihUI RegressionMediumProduk 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.
40TC-I04Negative dan Guard CasesProduct WarehouseRow gudang shared tidak diatribusikan ulang oleh flow maintenanceRegressionHighAda 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.
41TC-J01Regression Frontend dan UXRecording FormForm recording menampilkan opsi stok farm dan kandang hanya dalam scope farm yang samaUI RegressionMediumAda 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.
42TC-J02Regression Frontend dan UXRecording FormSelector recording telur mengizinkan gudang farmUI RegressionMediumEgg warehouse tersedia di gudang farm.1. Buka form recording telur. 2. Buka selector tujuan telur.Gudang farm terlihat sebagai opsi tujuan telur.
43TC-J03Regression Frontend dan UXSales FormForm sales memakai semantik gudang secara konsistenUI RegressionMediumAkses 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.
44TC-J04Regression Frontend dan UXMarketing ModalModal list marketing menampilkan label gudang fisikUI RegressionLowAkses ke modal product list tersedia.1. Buka modal product list di marketing.Kolom menampilkan label Gudang Fisik.
45TC-K01Known LimitationRecording DetailDetail recording belum menampilkan source atau origin attribution baruKnown LimitationLowSudah 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