# 11. Roadmap 8 tuần — Chi tiết

> **Đối tượng đọc**: Tech lead, PM, BA, sponsor (HungPM), ban đề tài Viện DD.
> **Mục đích**: Lộ trình chi tiết tuần-by-tuần với deliverable rõ ràng, gate go/no-go, và resource allocation. Là master plan để tracking hàng tuần.

---

## 11.1. Tổng quan timeline

```
Tuần │ 01     02     03     04     05     06     07     08
─────┼──────────────────────────────────────────────────────────────
P0   │ ████████  Discovery & Setup
P1   │           ████████████████████████████  MVP Build
P2   │                                          ████  UAT
P3   │                                                ████  Hardening + Handover
─────┴──────────────────────────────────────────────────────────────
                  Tuần 2: GO/NO-GO Gemma 4 PoC
                                      Tuần 5: Internal demo
                                                       Tuần 7: UAT với Viện DD
                                                                  Tuần 8: Production handover
```

**Mốc cứng**:
- Tuần 1 cuối: SRS approved by Viện DD
- Tuần 2 cuối: **GO/NO-GO** kiến trúc AI on-device (Gemma 4 PoC kết quả)
- Tuần 5 cuối: Internal demo (full flow capture → submit → review)
- Tuần 7 cuối: UAT signoff
- Tuần 8 cuối: Production go-live

---

## 11.2. Phase breakdown

### P0 — Internal Setup (Tuần 1, 5 ngày) — cập nhật v0.3 (bỏ Workshop)

> **Lưu ý**: Kickoff Sprint 1 là **internal OmiGroup** — không cần Viện DD signoff. SRS signoff Viện Dinh dưỡng target Sprint 3 (sau demo nội bộ tuần 5). G2/G3 gates vẫn cần external review từ Viện DD.

**Mục tiêu**: OmiGroup setup full team + infra + corpus, sẵn sàng AI PoC tuần 2.

**Deliverables**:
- SRS v0.3 sign-off **internal OmiGroup** (HungPM duyệt, không cần Viện DD)
- Corpus 100–200 nhãn test (Tech Lead + BA tự chụp tại siêu thị Hà Nội — Co.op Mart, Big C, Aeon)
- AWS 4-account setup (dev/staging/prod/shared) + IAM Identity Center
- Repo `omigroup/omiscan` setup với CI/CD skeleton + branch protection
- Flutter project skeleton với lib structure như Section 8.7.1
- Backend CDK skeleton với 5 stack (network, data, auth, api, frontend)
- Sentry projects + AWS observability dashboards skeleton
- Đăng ký Apple Developer + Google Play Console accounts (nếu chưa có)

**Daily breakdown**:

| Ngày | Activity | Owner | Output |
|---|---|---|---|
| T1 (Thứ 2) | Internal kickoff team OmiGroup, review SRS v0.3 | HungPM + Tech Lead | Team alignment |
| T2 | Setup AWS 4 account + GitHub repo + CDK skeleton | DevOps | Infra dev ready |
| T3 | Flutter project skeleton + flutter_gemma cài thử | Mobile dev | Skeleton + Gemma 4 download lần đầu |
| T4 | Thu corpus 100–200 nhãn — chụp tại 3 siêu thị Hà Nội | BA + Tech Lead | `corpus/` folder với 200 nhãn metadata + ảnh |
| T5 | SRS sign-off internal + sprint 2 plan locked | HungPM | Ready for AI PoC |

### P1 — MVP Build (Tuần 2–6, 25 ngày)

**Mục tiêu**: Hệ thống chạy end-to-end với feature MVP đầy đủ (M1–M9), pass internal QA.

Chi tiết tuần-by-tuần ở mục 11.3.

### P2 — UAT (Tuần 7, 5 ngày)

**Mục tiêu**: Cán bộ Viện DD thực sự dùng app trong điều kiện gần thật, feedback được thu thập và xử lý.

**Setup**:
- Triển khai staging environment với test data
- Cấp 5 device test cho cán bộ Viện DD (hoặc dùng device cá nhân với app TestFlight / Play Internal)
- Soạn UAT script với 20 scenario (chụp 1 sản phẩm, sửa OCR, submit offline, review queue, publish rule, export báo cáo, ...)

**Deliverables**:
- UAT report với pass/fail mỗi scenario
- Bug list phân loại critical / major / minor
- Performance benchmark thực địa: latency, accuracy, battery
- User feedback (UX, copy, workflow)

### P3 — Hardening + Handover (Tuần 8, 5 ngày)

**Mục tiêu**: Fix bug critical/major, deploy production, training + handover.

**Activities**:
- Fix bug từ UAT (critical = block release; major = sửa nếu kịp; minor = ticket cho Phase 2)
- Production deployment — phase rollout (5% → 25% → 100% device cán bộ)
- Training cán bộ Viện DD (2 buổi: 1 cho P1, 1 cho P2/P3/P4)
- Tài liệu hướng dẫn sử dụng (Section 15 mục mô tả chức năng UX-side)
- Runbook vận hành cho P5 (SRE OmiGroup)
- Production monitoring 1 tuần warranty

**Deliverables**:
- App production trên TestFlight + Play Closed Track (chưa public)
- Dashboard + CMS production
- Tài liệu user guide (PDF + video clip)
- Runbook SRE
- Hợp đồng bàn giao + SLA bảo trì sau v1

---

## 11.3. Sprint plan tuần-by-tuần (P1 MVP Build)

Mô hình: 1 tuần = 1 sprint, daily standup 15min sáng. Mỗi sprint có demo nội bộ Thứ 6 chiều.

### Sprint 2 — Foundation + AI PoC

**Mục tiêu sprint**: Foundation chạy end-to-end skeleton + GO/NO-GO Gemma 4.

| Module / Track | Story | Effort (story point) | Owner |
|---|---|---|---|
| **Track AI (high priority)** | | | |
| | Cài flutter_gemma + Gemma 4 E2B model trên iOS | 3 | Mobile dev |
| | Cài flutter_gemma + Gemma 4 E2B trên Android | 3 | Mobile dev |
| | Benchmark trên 5 device (iPhone 12 Pro, 15 Pro, Pixel 8, Galaxy S24, A53) — 30 inference liên tục, đo TTFT, RAM, thermal | 5 | Mobile dev + QA |
| | Pilot 100 nhãn corpus đầu, đo per-field accuracy + hallucination rate | 5 | Mobile dev + BA |
| **Track Infra** | | | |
| | CDK deploy dev environment (VPC, RDS, S3, Cognito, API GW) | 5 | DevOps |
| | **Setup RDS Proxy** (required cho Lambda-to-Aurora connection pooling) | 2 | DevOps |
| | Lambda skeleton ingest-handler + auth flow | 3 | Backend dev |
| | Postgres schema migration tool (Flyway hoặc Prisma) | 2 | Backend dev |
| **Track Mobile foundation** | | | |
| | Flutter app skeleton: routing, theming, i18n vi/en | 3 | Mobile dev |
| | Auth screen + Cognito integration | 3 | Mobile dev |
| | Camera screen với native MethodChannel (VNDocumentCameraViewController + ML Kit DocScan) | 5 | Mobile dev |

**Gate**: **End of sprint 2 — GO/NO-GO**:

| Tiêu chí | Pass | Fail |
|---|---|---|
| TTFT Gemma 4 E2B trên Tier B GPU | ≤ 1s | > 1s → fallback Plan B (server LLM) |
| RAM peak | < 2GB | ≥ 2GB → giới hạn Tier A |
| Per-field accuracy 100 nhãn | ≥ 85% | < 85% → tăng prompt engineering / dùng E4B |
| Hallucination rate | ≤ 10% | > 10% → tăng cross-check rigor |
| Plugin flutter_gemma stable (no crash 30min run) | OK | Crash → Plan B native MethodChannel + MediaPipe SDK |

→ Nếu **đủ 5 tiêu chí**: tiếp tục Plan A. Nếu **không đủ 2/5**: review với HungPM, có thể downgrade tới Plan B/C.

### Sprint 3 — Mobile core + Backend ingest

**Mục tiêu**: Mobile chụp 1 sản phẩm + submit lên backend; backend lưu được.

| Story | SP | Owner |
|---|---|---|
| Quality gate 5 chiều (Blur Laplacian, Exposure, Glare, Skew, Coverage) với UI overlay | 8 | Mobile dev |
| Multi-shot orchestration: capture 4 ảnh → call Gemma per-image → merge JSON Dart-side | 8 | Mobile dev |
| ML Kit OCR cross-check pipeline + flag hallucinated | 5 | Mobile dev |
| Edit JSON screen (UC-04) với confidence color code | 5 | Mobile dev |
| Backend ingest API `POST /submissions` + S3 upload + RDS insert + EventBridge | 5 | Backend dev |
| Submission list/detail API endpoints | 3 | Backend dev |
| Flutter offline queue M4 với SQLite + retry | 5 | Mobile dev |

**Demo Thứ 6 sprint 3**: Cán bộ chụp 1 sản phẩm, edit, submit; PM thấy submission xuất hiện trong DB qua admin tool.

### Sprint 4 — Validation engine + Rule pack v1

**Mục tiêu**: Backend M6 validation hoạt động; rule pack v1 với 20+ rule chạy được.

| Story | SP | Owner |
|---|---|---|
| Validation engine Lambda M6 với JsonLogic + extension custom | 5 | Backend dev |
| Rule pack signer Lambda với KMS sign ECDSA P-256 (đã chốt — KMS native, không fallback) | 5 | Backend dev |
| Soạn 23 rule v1 từ NĐ 37 + TT 29 (Section 06.4) — JSON manually hoặc qua CMS prototype | 5 | BA + Backend dev |
| CDN distribution (S3 + CloudFront) + manifest.json + invalidation | 3 | DevOps |
| Mobile rule pack pull + verify signature + apply local | 5 | Mobile dev |
| Mobile UI hiển thị rule violation/warning trước submit | 3 | Mobile dev |
| Audit log table + ship sang S3 cold | 3 | Backend dev |

**Demo Thứ 6 sprint 4**: Submit nhãn thiếu trường → app cảnh báo trước submit; sau submit → server cũng flag; admin tool thấy `validation_result` đầy đủ.

### Sprint 5 — Dashboard P2 + CMS P3

**Mục tiêu**: Web Dashboard + CMS hoạt động cơ bản; internal demo full flow end-to-end.

| Story | SP | Owner |
|---|---|---|
| Next.js Dashboard skeleton + Cognito auth + Routing | 3 | Fullstack dev |
| Dashboard Home với 4 KPI tile (UC-15) | 5 | Fullstack dev |
| Submission list với filter + search | 5 | Fullstack dev |
| Submission detail screen với 4 ảnh carousel + JSON editor + OCR raw + audit history | 8 | Fullstack dev |
| P2 sửa OCR/JSON + audit log entry | 3 | Fullstack dev |
| Bulk action duyệt batch (UC-10) + tag category (UC-11) | 3 | Fullstack dev |
| CMS Rule editor form-based (UC-12) | 8 | Fullstack dev |
| CMS Rule preview trên test set (UC-13) | 5 | Fullstack dev |
| Approval workflow 4-eyes (UC-14) | 3 | Fullstack dev |

**Demo Thứ 6 sprint 5 (internal demo cuối cùng trước UAT)**:
- Cán bộ chụp 5 sản phẩm trên app
- P2 mở dashboard, review queue, sửa 1 OCR field
- P3 tạo 1 rule advisory mới qua CMS
- P3.5 approve, publish
- Cán bộ chụp sản phẩm tiếp theo, app tự pull rule pack mới và áp

### Sprint 6 — Hardening + Reports + Polish

**Mục tiêu**: Tăng độ ổn định, hoàn thiện UX, sẵn sàng UAT.

| Story | SP | Owner |
|---|---|---|
| Report generator Lambda với template Excel/PDF/JSONL (UC-16) | 5 | Backend dev |
| Dashboard Reports tab + download | 3 | Fullstack dev |
| Research dataset endpoint + anonymization (UC-17) | 5 | Backend dev |
| Mobile UI polish theo design system Section 15.3 | 5 | Mobile dev |
| Web UI polish + responsive | 3 | Fullstack dev |
| Error handling + retry UX (Section 5.11.5) | 3 | Mobile + Fullstack |
| Sentry integration đầy đủ + breadcrumb | 2 | All |
| CloudWatch alarms + dashboards | 3 | DevOps |
| Documentation: CHANGELOG, RUNBOOK, ARCHITECTURE.md (extract từ Section 8) | 3 | Tech lead |
| Localization tiếng Việt cho mọi string | 3 | All |
| QA: regression test toàn bộ flow | 8 | QA |

**Gate end of sprint 6**:
- 0 critical bug, ≤ 5 major bug
- All NFR pass (latency, RAM, battery)
- Staging deploy stable 24h

---

## 11.4. Milestones & Deliverables

| Mốc | Tuần | Deliverable | Người duyệt |
|---|---|---|---|
| M1 — SRS Approved | T1 cuối | SRS v1 ký với Viện DD | HungPM + Viện DD |
| M2 — AI GO/NO-GO | T2 cuối | Báo cáo PoC Gemma 4 + quyết định Plan A/B/C | HungPM |
| M3 — Mobile + Backend integrate | T3 cuối | Cán bộ chụp 1 sản phẩm → submit thành công vào DB | Tech lead |
| M4 — Validation engine + Rule pack v1 | T4 cuối | Submit có validation_result; app preview violation | Tech lead |
| M5 — Internal demo | T5 cuối | Full flow end-to-end demo cho HungPM + Viện DD | HungPM + Viện DD |
| M6 — Hardening complete | T6 cuối | 0 critical bug, staging 24h stable | Tech lead + QA |
| M7 — UAT signoff | T7 cuối | UAT report với ≥ 90% pass | HungPM + Viện DD |
| M8 — Production go-live | T8 cuối | App + Dashboard + CMS production; training xong | HungPM + Viện DD |

---

## 11.5. Resource allocation

### 11.5.1. Team core (4-5 người, 8 tuần)

| Role | FTE | Tuần 1–8 | Trách nhiệm chính |
|---|---|---|---|
| **Tech Lead** | 1.0 | T1–T8 | Architecture, code review, technical decisions, M3 + M6 owner |
| **Mobile Engineer** | 1.0 | T1–T8 | M1, M2, M3 mobile side, M4 |
| **Backend Engineer** | 1.0 | T1–T8 | M5, M6, M7 backend, integration |
| **Fullstack Engineer (Dashboard + CMS)** | 1.0 | T2–T8 | M7 dashboard, M8 CMS, reports |
| **DevOps / SRE** | 0.5 | T1–T8 | Infra CDK, CI/CD, monitoring, security |
| **QA Engineer** | 0.5 | T2–T8 | Test plan, manual + automation, UAT facilitation |
| **BA / PM** | 0.5 | T1–T8 | Workshop, SRS, rule pack v1, UAT script, training |
| **Tổng** | **5.5 FTE** | | |

→ ~5.5 FTE × 8 tuần = **44 man-week**.

### 11.5.2. Tận dụng AI coding agents

Theo Section 5.13 (effort estimate), AI coding agents (Claude Code, Cursor) giảm ~35% effort dev cho công việc CRUD, scaffolding, form-heavy:

| Module | Effort gốc | Với AI agent |
|---|---|---|
| M1, M2, M4, M5, M9 | 6 | 4 |
| M3 (AI pipeline) | 2 | 1.5 (research + tuning vẫn cần con người) |
| M6 (rule engine) | 1.5 | 1 (logic + testing) |
| M7 (Dashboard), M8 (CMS) | 3.5 | 2 (form + table heavy, agent rất hiệu quả) |
| QA/UAT | 1.5 | 1 (test gen, regression script) |
| **Tổng** | **14** | **9** |

→ Còn dư ~30% buffer cho discovery, hardening, unknown unknown.

---

## 11.6. Dependencies map

> **Dependency data residency**: Quyết định data residency (AWS region vs VN hosting) **phải confirm trước khi CDK infra setup Sprint 2** — xem Section 8.8.1.b.

```
SRS Approved (M1) ─────► Mọi sprint sau
                  │
                  ├──► AI PoC (Sprint 2)
                  │       │
                  │       └──► GO/NO-GO (M2)
                  │              │
                  │              ├──► Plan A: tiếp Sprint 3
                  │              ├──► Plan B: thay đổi M3 (server LLM)
                  │              └──► Plan C: pure cloud
                  │
                  └──► Backend foundation (Sprint 2-3)
                          │
                          ├──► Rule pack signer (Sprint 4) — depend KMS ECDSA P-256 quyết
                          │       │
                          │       └──► Mobile rule application (Sprint 4)
                          │
                          └──► M5 Ingest API (Sprint 3) ─► Mobile submit (Sprint 3)
                                  │
                                  └──► M6 Validation (Sprint 4)
                                          │
                                          └──► Dashboard review queue (Sprint 5)

Sprint 5 demo (M5) ─► UAT (Sprint 7) ─► Hardening (Sprint 8) ─► Production (M8)

External dependencies:
• Viện DD cấp văn bản pháp lý chuyên ngành (TT TPCN, sữa trẻ em) — T1
• Viện DD cấp danh sách user + role để tạo Cognito accounts — T6
• Viện DD review rule pack v1 trước UAT — T6
• Viện DD chuẩn bị 5 device cho UAT — T6
```

---

## 11.7. Risk-based contingency

Liên kết Section 12 (Risks, sẽ viết sau). 5 rủi ro lớn ảnh hưởng roadmap:

| Risk | Trigger | Contingency |
|---|---|---|
| **AI PoC fail** (T2) | Gemma 4 không đáp ứng accuracy/latency | Switch Plan B server LLM — mất ~3 ngày refactor M3, không đẩy lùi M5 demo |
| **flutter_gemma blocker** (T3) | Plugin crash, không stable production | Switch native MethodChannel + MediaPipe SDK — mất ~5 ngày |
| ~~KMS signing algorithm~~ ✅ Resolved v0.2.1 | Đã chốt **KMS ECDSA P-256** (không phải Ed25519, không có "hoặc fallback ECDSA") — KMS native FIPS 186-4 | — |
| **Viện DD chậm cấp văn bản pháp lý** (T1) | Chưa có TT chuyên ngành sữa, TPCN | Implement scope filter cho thực phẩm chung trước, defer scope khác Phase 2 |
| **UAT phát hiện critical bug** (T7) | App crash trong field, accuracy thấp ngoài thực địa | Đẩy lùi go-live 1–2 tuần; SRE on-call trực P3 hardening |

---

## 11.8. Go/No-Go gates chi tiết

### Gate G1 — End of Tuần 1 (SRS Approved)

| Tiêu chí | Required |
|---|---|
| Section 01–05 + 08 đã review bởi HungPM | Y |
| Workshop với Viện DD đã hoàn thành | Y |
| 7 open question Section 8.15 đã có answer hoặc plan | Y |
| Corpus 100+ nhãn thu thập | Y (tối thiểu 50, bonus 100) |
| AWS infra dev ready | Y |

→ **GO** nếu tất cả Y. **NO-GO**: kéo dài Tuần 1 thêm 2-3 ngày.

### Gate G2 — End of Tuần 2 (AI PoC)

Đã chi tiết tại 11.3 Sprint 2.

### Gate G3 — End of Tuần 5 (Internal Demo)

| Tiêu chí | Required |
|---|---|
| Cán bộ chụp 5 sản phẩm liên tiếp không lỗi | Y |
| P2 review queue hoạt động | Y |
| P3 publish rule mới, mobile pull được trong 6 phút | Y |
| Dashboard hiển thị 4 KPI tile | Y |
| HungPM + 1 đại diện Viện DD đồng ý "ready cho UAT" | Y |

### Gate G4 — End of Tuần 7 (UAT signoff)

| Tiêu chí | Required |
|---|---|
| ≥ 90% UAT scenario pass | Y |
| 0 critical bug | Y |
| ≤ 3 major bug (sẽ sửa Tuần 8) | Y |
| Performance NFR pass trên Tier B device | Y |
| User feedback positive (NPS ≥ 7/10 từ 5 cán bộ) | Y |

### Gate G5 — End of Tuần 8 (Production go-live)

> **Hard dependency**: DPIA + AI Register + A05 acknowledgement là **hard dependency cho go-live**. Trễ DPIA = lùi go-live. Xem Section 10.2.3.

| Tiêu chí | Required |
|---|---|
| Hợp đồng + SLA bảo trì ký | Y |
| Training 2 buổi xong | Y |
| Runbook P5 hoàn thành | Y |
| Production deploy 100% device | Y |
| Monitoring dashboard active | Y |
| DPIA hoàn thành + A05 acknowledgement | Y |
| AI Register đăng ký với Bộ KH&CN | Y |

---

## 11.9. Post-launch plan (Phase 2 preview)

Sau Production go-live, vận hành warranty 4 tuần:

| Tuần (Post) | Activity |
|---|---|
| W+1–W+2 | Monitor production daily, fix bug minor, UX polish theo feedback từ cán bộ |
| W+3 | Retrospective với Viện DD, thu thập backlog Phase 2 |
| W+4 | Bàn giao chính thức, ký nghiệm thu cuối |

**Phase 2 backlog (preview, sẽ chi tiết sau)**:

- Cross-check với hồ sơ tự công bố Cục ATTP (open question b ở Section 02)
- Phát hiện gian dối nhãn (option c)
- Public lookup API
- Tích hợp hệ thống nhãn điện tử quốc gia (Điều 54 NĐ 37/2026)
- Multi-tenant cho Sở Y tế tỉnh
- Mở rộng device support Tier C (low-end)
- Mở rộng cho cộng tác viên + người tiêu dùng phản ánh
- Integration với hệ thống thông tin Bộ Y tế (Đề án 06, EHR)

---

## 11.10. Cách tracking weekly

- **Daily standup** 15min (9:00 sáng): yesterday / today / blockers
- **Weekly demo** Thứ 6 chiều (16:00): demo cho stakeholder nội bộ
- **Sprint review** với HungPM mỗi 2 tuần (T2, T4, T6, T8 cuối)
- **Retro** mỗi sprint cuối Thứ 6, action item vào sprint sau
- **Status report** cho Viện DD: weekly email mỗi Thứ 6 với screenshot demo + plan tuần sau

**Tooling**:
- Backlog: Linear hoặc Jira (OmiGroup standard)
- Repo: GitHub `omigroup/omiscan`
- Communication: Slack channel `#omiscan` + email cho Viện DD
- Documentation: chính tài liệu này (`docs/` repo)

---

## 11.11. Critical path

Theo dependency map ở 11.6, **critical path** (longest sequence of dependent tasks):

```
T1 SRS ─► T2 AI PoC GO ─► T3 Mobile capture+submit ─► T4 M6 validation
   ─► T5 Dashboard review ─► T6 Hardening ─► T7 UAT ─► T8 Production
```

→ **8 tuần là minimum**, không có chỗ rút gọn nếu giữ scope đầy đủ. Nếu rút bớt scope (ví dụ defer Reports cho Phase 2), có thể nén còn 6–7 tuần.

---

## 11.12. Cross-references

- Scope: [02_scope.md](02_scope.md) mục 2.2.6
- Module spec: [05_functional_spec.md](05_functional_spec.md) mục 5.13 (effort estimate)
- AI strategy: [07_on_device_ai.md](07_on_device_ai.md) mục 7.8.3 (PoC bắt buộc trước go-live)
- Architecture: [08_architecture.md](08_architecture.md) mục 8.10 (deployment)
- Rule engine: [06_rule_engine.md](06_rule_engine.md) mục 6.4 (rule v1)
- Cost estimate sẽ chi tiết tại [13_cost_estimate.md](13_cost_estimate.md)
