# Changelog - print.kaystudio.id

Semua perubahan penting dalam proyek ini akan dicatat dalam file ini.

---

## [Milestone 1] - 2026-07-06

### Added
* **Arsitektur MVC Native (PHP OOP)**:
  * `api/index.php` – Front Controller sebagai entrypoint utama dengan Autoloader PSR-4 otomatis.
  * `api/routes/api.php` – Konfigurasi pemetaan rute API yang reusable.
  * `api/core/` – Kelas dasar framework MVC buatan sendiri: `Router`, `Request`, `Response`, dan `Controller`.
  * `api/config/` – Kelas utilitas koneksi database: `Database` (Singleton PDO), `Env` (pembaca file `.env`), `Config` (konstanta konfigurasi path/prefix), dan `Cors` (penanganan cross-origin header).
  * `api/models/Product.php` – Representasi data objek produk (DTO).
  * `api/services/ProductService.php` – Logika bisnis dan pemrosesan SQL data relasional prepared statements (menyatukan data dari 5 tabel produk).
  * `api/controllers/ProductController.php` – Mengendalikan permintaan RESTful endpoint produk.
  * `api/.htaccess` – URL rewrite rule Apache agar rute dinamis `/api/v1/...` mengarah ke `index.php`.
* **Database & Migrasi Otomatis (`api/tools/`)**:
  * `api/config/schema_products.sql` – Skema DDL tabel database MySQL ternormalisasi (`admins`, `products`, `product_materials`, `product_sizes`, `product_images`, `product_faqs`, `activity_logs`).
  * `api/tools/setup_db.php` – Skrip pembuat database, mengeksekusi skema DDL, dan membuat administrator default.
  * `api/tools/migrate.php` – Skrip migrator transaksional untuk memindahkan data dari berkas statis `products.json` ke MySQL.
* **Berkas Konfigurasi & Folder Baru**:
  * `.env` – Berkas konfigurasi koneksi database MySQL lokal (diabaikan secara otomatis di `.gitignore`).
  * Pembuatan folder `/uploads/products/`, `/uploads/reviews/`, `/uploads/payments/`, `/logs/`, dan `/storage/cache/` di root proyek.
  * `README_MILESTONE1.md` – Dokumentasi detail instruksi instalasi dan cara pengujian REST API & Integrasi secara lokal.

### Changed
* **Integrasi Frontend dengan API & Fallback**:
  * `src/contexts/AppContext.tsx` – Menginisialisasi pemanggilan asinkron fetch ke `/api/v1/products`. Ditambahkan mekanisme fallback otomatis ke file lokal `products.json` jika koneksi database/API gagal.
  * Penyelarasan components: Mengganti import data static JSON menjadi dinamis dari `useApp().products` pada file `App.tsx`, `ProductSection.tsx`, `ProductDetailPage.tsx`, `CommandPalette.tsx`, `CompareModal.tsx`, `WishlistDrawer.tsx`, dan `TrackingPage.tsx`.

### Fixed
* **TypeScript Compiler Error**:
  * Memperbaiki error ketidakcocokan tipe (TS2367) di file `ProductDetailPage.tsx` baris 3126 di mana `product.id` diperbandingkan dengan `"P020"` di dalam lingkup logika yang khusus dimasuki jika `product.id === "P013"`.
