# Implementasi Operasional Harian & Gudang (Milestone 2)

Fokus pada Milestone 2 ini adalah mentransformasi logika pencatatan pelaporan dari kandang ke dalam arsitektur API Backend. Di dalam fase ini, kita akan menangani "Jantung" dari rekam data peternakan: yaitu **Manajemen Siklus Ternak (Batch), Manajemen Mutasi Gudang, dan Transaksi Input Harian Pekerja Kandang.**

## User Review Required

> [!IMPORTANT]
> Karena di Milestone 2 ini modul API mulai membutuhkan interaksi simulasi nyata (Contoh: "Input Laporan Pakan" tidak akan berhasil jika belum ada entitas "Batches" dan tidak ada Saldo "Inventory Pakan"), **Apakah Anda setuju jika di fase ini saya juga membuatkan dan menjalankan barisan *Database Seeder* (Pembuat Data Dummy Otomatis)?** 
> 
> *Seeder* akan otomatis memasukkan data Farm pusat, 2 gudang standar, spesifikasi pakan inti, dan akun Pekerja. Ini krusial agar kita bisa mengetes Endpoint API langsung melalui Postman tanpa harus `INSERT` Master Data manual ke db Mysql.

## Proposed Changes

### 1. Struktur Database & Model Pendukung Tahap 2 (Operasional)
Kita akan memperbarui skema Database untuk Siklus Hidup Ternak dan Gudang Logistik.

#### [NEW] Model `app/models/Warehouse.php` & `app/models/Inventory.php`
- Model untuk tabel `warehouses` dan relasinya.
- Model untuk tabel `items`, `inventory_stocks` & `inventory_movements` (pembukuan mutasi fisik persediaan barang / Stock cards).

#### [NEW] Model `app/models/Batch.php` & `app/models/DailyRecord.php`
- Model untuk entitas `batches` (mulainya penerimaan anak ayam/DOC).
- Model untuk form `daily_records` pekerja kandang.

### 2. Implementasi Database Seeder (Mockup Master Data)
Pembuatan skrip penyuntik data dasar agar sistem siap pakai.

#### [MODIFY] Konfigurasi Database `database+seed.sql`
Akan memuat statement SQL dasar untuk:
- Parameter dasar (Role, Tipe Kandang, Kategori Barang).
- 1 Farm simulasi, 1 Kandang simulasi, 1 Gudang Pusat.
- Minimal 3 Item Inventori (Contoh: Pakan Pre-Starter BR-1, Vaksin ND, Karung).

### 3. Eksekusi API Controller Logika Kompleks
Setup titik kumpul (Endpoints) untuk Frontend/Aplikasi Mobile pekerja.

#### [NEW] `app/controllers/BatchController.php` & `app/controllers/DailyRecordController.php`
- Pembuatan API handler untuk POST dari pekerja kandang.
- **Logika Internal (Automation)**: Dalam controller ini, sistem akan memanggil PDO DB Transaction. Ketika Record Harian di-submit (misal: "Konsumsi Pakan 50 kg"), Sistem otomatis memotong saldo "50 kg" dari logistik gudang.

#### [NEW] Routing API `api/index.php` (Routing Native)
- Penataan router Native PHP untuk mengarahkan path CRUD terkait Batches, Inventory, dan form Harian ke controller terkait.

---

## Open Questions

> [!WARNING]
> 1. Pada sistem gudang, apakah Anda setuju dengan alur: **Distributor → Gudang Sentral Farm → (Mutasi/Transfer) → Gudang Kandang (Habis Dimakan via Input Harian)?**
> 2. Kita berfokus membangun REST API dengan PHP Native MVC. Apakah UI interaksinya akan dikembangkan langsung menggunakan views di PHP, atau API ini murni untuk dikonsumsi frontend SPA terpisah nantinya?

## Verification Plan

### Simulasi Automated Logic Validation
- Setelah skema terbentuk, saya akan menulis Endpoint uji coba untuk melakukan *Post Record Pakan Harian*, dan memverifikasi (lewat log sistem) apakah jumlah *Mortality* ter-update di `batches`, serta stok pakan berkurang di tabel Gudang.
