# 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 11:30 ## 📍 Phase hiện tại: **Phase 1 — Alpha Core (đợt 2 xong)** — sẵn sàng Phase 2 Form Engine ## 🔥 In Progress _(không có — Phase 1 đợt 2 hoàn tất)_ ## ✅ Recently Done (newest on top) | Ngày | Ai | Task | Commit | |---|---|---|---| | 2026-04-21 | Claude | **Phase 1 đợt 2 HOÀN TẤT** — BE: Supplier/Project/Department CRUD + Permission Matrix (MenuItem/Permission + Authorization handler) + 2 migration. FE: DataTable/Dialog generic, usePermission, PermissionGuard, 3 trang CRUD admin, Permission Matrix page, Layout menu động | (sắp commit) | | 2026-04-21 | Claude | **Docs addition** — `database-guide.md` + `flows/` 6 doc | `49a5f57` | | 2026-04-21 | Claude | **Phase 1 foundation HOÀN TẤT** — BE Clean Arch + Identity + JWT + FE 2 app + Tailwind 4 + login E2E | `702411f` | | 2026-04-21 | Claude | **Phase 0 HOÀN TẤT** — scaffold + parse FORM/QUY_TRINH + docs + skills + git init | `25dad7f` | Session logs: - [`changelog/sessions/2026-04-21-1045-phase0-scaffold.md`](changelog/sessions/2026-04-21-1045-phase0-scaffold.md) - [`changelog/sessions/2026-04-21-1100-phase1-foundation.md`](changelog/sessions/2026-04-21-1100-phase1-foundation.md) - [`changelog/sessions/2026-04-21-1130-phase1-cruds-permission.md`](changelog/sessions/2026-04-21-1130-phase1-cruds-permission.md) ## 🎯 Next up — Phase 2 Form Engine (có thể bắt ngay) - [ ] Convert 3 file `.doc` (FO-002.02/03/06) → `.docx` qua PowerShell COM hoặc LibreOffice headless - [ ] Parse chi tiết field specs cho 5 template HĐ → JSON spec - [ ] Add NuGet: DocumentFormat.OpenXml, ClosedXML - [ ] `Domain/Entities/ContractTemplate`, `ContractClause` + EF config - [ ] `Application/Forms/Services/IFormRenderer` + `DocxRenderer` + `XlsxRenderer` - [ ] `Api/Controllers/FormsController` (list template, get spec, render preview, render final) - [ ] FE: form builder dynamic render từ fieldSpec - [ ] FE admin: upload template + manage ContractClause (rich text editor) - [ ] Test: FO-002.05 Giao khoán render → docx khớp mẫu 100% Chi tiết: [`docs/flows/form-render-flow.md`](flows/form-render-flow.md) + [`docs/changelog/migration-todos.md`](changelog/migration-todos.md) section Phase 2. ## 🔄 Còn có thể làm parallel (optional, không block Phase 2) - [ ] FE Users management (tạo user + gán role) — cần để test permission với role khác Admin - [ ] FE Roles CRUD (tạo custom role mới) - [ ] Contract entity skeleton (không state machine, chỉ CRUD draft) - [ ] E2E test permission: tạo user role Drafter-only → verify không thấy menu System/Admin ## 📊 Thông số sau Phase 1 đợt 2 - **Backend LOC:** ~1500 (Domain 150 + Application 800 + Infrastructure 350 + Api 200) - **Migrations:** Init + AddMasterData + AddPermissions - **DB tables:** 7 Identity + 3 Master (Suppliers/Projects/Departments) + 2 Permission (MenuItems/Permissions) - **API endpoints:** 20+ (Auth 4 + Suppliers 5 + Projects 5 + Departments 5 + Menus 2 + Roles 1 + Permissions 2) - **Frontend routes:** 5 (Dashboard + 3 CRUD + Permission Matrix) - **FE LOC:** ~1700 (fe-admin; fe-user vẫn minimal) ## 🚨 Blockers / risks - ⏳ **Gitea remote** — URL chờ user cấp - ⚠️ **fe-user** chưa được update với menu động — Phase 2 sẽ sync - ⚠️ **Users CRUD** chưa có UI → khó test permission với non-admin role thật - ⚠️ **3 file `.doc`** Phase 2 cần convert COM ## Credentials mặc định ``` Email: admin@solutionerp.local Password: Admin@123456 ``` URLs dev: - API: http://localhost:5443 — Swagger `/swagger` - Admin FE: http://localhost:8082 - User FE: http://localhost:8080