# STATUS — Snapshot hiện tại > **Update rule:** trước khi bắt đầu 1 task → ghi row vào `🔥 In Progress`. Xong → chuyển sang `✅ Recently Done`. **Last updated:** 2026-04-21 14:30 ## 📍 Phase hiện tại: **Phase 4 Report MVP (xong)** — sẵn sàng Phase 5 Production hoặc polish iterations ## 🔥 In Progress _(không có)_ ## ✅ Recently Done (newest on top) | Ngày | Ai | Task | Commit | |---|---|---|---| | 2026-04-21 | Claude | **Phase 4 Report MVP + Docs Consolidation** — BE Dashboard stats (5 KPI + by phase + top 5 NCC/dự án + 12 tháng) + Excel export qua ClosedXML. FE DashboardPage rewrite với BarChart tự build (không thư viện ngoài) + ReportsPage filter export. Docs: rules.md (coding conventions), architecture.md (layered + sequence), database/schema-diagram.md (ERD + data flow 19 table), gotchas.md update 26 pitfalls | (sắp commit) | | 2026-04-21 | Claude | **Phase 3 Workflow MVP** — 9 phase state machine + code gen RG-001 + Inbox/Detail FE — E2E pass mã `FLOCK 01/HĐGK/SOL&PVL2026/01` | `7e957a7` | | 2026-04-21 | Claude | **Phase 2 Form Engine MVP** | `5113e4c` | | 2026-04-21 | Claude | **Phase 1.2** — CRUD Master + Permission Matrix | `54d6c9b` | | 2026-04-21 | Claude | **Docs addition** — database-guide + flows | `49a5f57` | | 2026-04-21 | Claude | **Phase 1 foundation** — Clean Arch + Identity + JWT + 2 FE | `702411f` | | 2026-04-21 | Claude | **Phase 0** — scaffold + docs | `25dad7f` | Session logs: [P0](changelog/sessions/2026-04-21-1045-phase0-scaffold.md) · [P1f](changelog/sessions/2026-04-21-1100-phase1-foundation.md) · [P1.2](changelog/sessions/2026-04-21-1130-phase1-cruds-permission.md) · [P2](changelog/sessions/2026-04-21-1200-phase2-form-engine.md) · [P3](changelog/sessions/2026-04-21-1330-phase3-workflow.md) · [P4](changelog/sessions/2026-04-21-1430-phase4-report.md) **Docs entry points:** - [`rules.md`](rules.md) — coding conventions - [`architecture.md`](architecture.md) — layered + data flow + deployment - [`database/database-guide.md`](database/database-guide.md) + [`database/schema-diagram.md`](database/schema-diagram.md) — DB spec - [`gotchas.md`](gotchas.md) — 26 pitfalls - [`HANDOFF.md`](HANDOFF.md) — brief 5 phút - [`workflow-contract.md`](workflow-contract.md) — state machine - [`forms-spec.md`](forms-spec.md) — 8 form catalog - [`flows/`](flows/) — 6 flow diagram ## 🎯 Next up ### Phase 5 — Production (T12-13, item lớn nhất còn lại) - [ ] CI/CD Gitea Actions (`.gitea/workflows/deploy.yml`) deploy IIS - [ ] `scripts/deploy-iis.ps1` stop app pool → xcopy → start - [ ] Windows Server setup: IIS + URL Rewrite + ARR - [ ] HTTPS cert via win-acme - [ ] `appsettings.Production.json` + user secrets - [ ] Rate limiting middleware - [ ] Security audit OWASP top 10 - [ ] Health check endpoint `/health` - [ ] Serilog → file rolling daily retention 30d - [ ] Runbook: restart, rollback, backup/restore - [ ] UAT production 1 tuần ### Polish iterations (optional — làm khi rảnh) **Phase 2 iter 2:** convert 3 .doc, field spec JSON + form builder, {{#loop}}, PDF convert, upload template UI **Phase 3 iter 2:** SLA auto-approve job, email/in-app notification, attachment upload, RowVersion, render HĐ khi tạo **Phase 4 iter 2:** SLA overdue report, PDF HĐ export, dashboard user-specific ### Quick wins - FE Users management + Roles CRUD (test permission non-admin) - Filter Inbox theo phase FE - FE refresh token auto interceptor ## 📊 Thông số cumulative | | P0 | P1f | P1.2 | P2 | P3 | **P4** | |---|---:|---:|---:|---:|---:|---:| | BE LOC | 0 | ~400 | ~1500 | ~1900 | ~2700 | **~3100** | | DB tables | 0 | 7 | 12 | 14 | 19 | **19** | | API endpoints | 0 | 4 | ~20 | ~23 | ~31 | **~33** | | FE pages | 0 | 2 | 6 | 7 | 14 | **16** | | Docs | 10 | 13 | 14 | 24 | 26 | **30** | | Commits | 1 | 2 | 3 | 5 | 6 | **7** (sắp) | ## 🚨 Blockers / risks - ⏳ **Gitea remote URL** — user sẽ cấp khi vào Phase 5 - ⚠️ **3 file .doc chưa convert** (Phase 2 carryover) - ⚠️ **SLA chỉ set deadline** — không auto-approve (Phase 3.2) - ⚠️ **Không notification** email/in-app (Phase 3.2) - ⚠️ **Permission chưa test non-admin user thật** — cần FE Users mgmt - ⚠️ **FE refresh token** — 401 chỉ redirect logout, chưa auto-refresh ## Credentials + URLs ``` admin@solutionerp.local / Admin@123456 ``` - API: http://localhost:5443 — Swagger `/swagger` - Admin FE: http://localhost:8082 — Dashboard → **`/dashboard`** (KPI mới), **`/contracts`** (list), **`/reports`** (export), **`/master/*`** (NCC/DA/PB), **`/forms`**, **`/system/permissions`** - User FE: http://localhost:8080 — Inbox → **`/inbox`**, **`/contracts/new`**, **`/my-contracts`**