Architecture Decisions (ADRs)
Catatan keputusan arsitektur formal (ADR-001 hingga ADR-008) yang mendasari desain OrthoBreath.
Status: Stablev1.0.0Source Verified: Yes
Source:
docs/ARCHITECTURE.mdTests: tests/unit/uiDesignPolicy.test.tsArchitecture Decision Records (ADRs)#
Dokumentasi ini mencatat keputusan-keputusan arsitektural penting (Architecture Decision Records) yang diambil selama pengembangan OrthoBreath.
1. Ringkasan Architecture Decision Records#
| ADR ID | Judul Keputusan | Status | Dampak Arsitektural |
|---|---|---|---|
| ADR-001 | Penggunaan Next.js 16 App Router sebagai Core Framework | Accepted | SSR, Route Handlers aman, dan PWA terintegrasi |
| ADR-002 | Pemisahan AI Engine ke Kontainer FastAPI Standalone | Accepted | Isolasi komputasi ML, runtime Python 3.11 murni, deterministik |
| ADR-003 | Penggunaan Model SVM RBF dengan 26.244 Fitur HOG | Accepted | Inferensi cepat (<200ms), bobot model ringan (~190MB), interpretabel |
| ADR-004 | Dual-Token Auth: Firebase SDK + HttpOnly Session Cookie | Accepted | Proteksi dari XSS dan CSRF, integrasi serverless mulus |
| ADR-005 | Isolasi Multi-Tenant Firestore Berbasis clinicId | Accepted | Pemisahan data pasien antar cabang klinik tanpa kebocoran |
| ADR-006 | Broker MQTT TLS untuk Telemetri Sensor ESP32 | Accepted | Komunikasi streaming berlatensi rendah dan terenkripsi |
| ADR-007 | Format PDF Snapshot Rekam Medis Statis & Immutable | Accepted | Rekam medis resmi berkekuatan bukti hukum tidak dapat diedit |
| ADR-008 | Zero Regression Policy dengan Multi-Tier Testing | Accepted | 170+ unit & route test, Playwright E2E, dan CI blocking gate |
2. Rincian ADR Strategis#
ADR-002: Pemisahan AI Engine ke FastAPI Standalone#
- Konteks: Ekstraksi fitur HOG pada citra beresolusi tinggi dan model SVM Scikit-Learn memerlukan runtime native C/Python yang berat jika di-bundle ke dalam Next.js Serverless Function.
- Keputusan: Pisahkan engine ML ke dalam kontainer Docker FastAPI mandiri di Render, diakses melalui Next.js API Gateway dengan HMAC internal key.
- Konsekuensi: Mengurangi bundle size Next.js dari 400MB menjadi <50MB dan memungkinkan penskalaan independen untuk komputasi AI.