# PROJECT-MAP — Bản đồ toàn cảnh > Đọc file này nếu cần deep context (~15 phút). Nếu chỉ cần snapshot → đọc [`STATUS.md`](STATUS.md). ## Module map ``` ┌─────────────────────────────────────────────────────────────────┐ │ SOLUTION_ERP │ └─────────────────────────────────────────────────────────────────┘ ╔════════════════╗ ╔════════════════╗ ╔════════════════╗ ║ IDENTITY ║ ║ DANH MỤC ║ ║ QUẢN LÝ HĐ ║ ║ (Phase 1) ║ ║ (Phase 1) ║ ║ (Phase 1-3) ║ ╠════════════════╣ ╠════════════════╣ ╠════════════════╣ ║ User ║ ║ Supplier ║ ║ Contract ║ ║ Role ║ ║ Project ║ ║ ContractType ║ ║ Permission ║ ║ Department ║ ║ ContractForm ║ ║ MenuKey ║ ║ ContractClause ║ ║ Approval ║ ║ AuditLog ║ ║ (điều kiện ║ ║ Comment ║ ║ ║ ║ chung - 002.04)║ ║ Attachment ║ ╚════════════════╝ ╚════════════════╝ ║ AuditTrail ║ ╚════════════════╝ ╔════════════════╗ ╔════════════════╗ ╔════════════════╗ ║ FORM ENGINE ║ ║ WORKFLOW ║ ║ BÁO CÁO ║ ║ (Phase 2) ║ ║ (Phase 3) ║ ║ (Phase 4) ║ ╠════════════════╣ ╠════════════════╣ ╠════════════════╣ ║ Template ║ ║ StateMachine ║ ║ Dashboard ║ ║ Renderer ║ ║ Transition ║ ║ ExcelExport ║ ║ (DOCX/XLSX) ║ ║ SlaTimer ║ ║ FilterQuery ║ ║ Field mapping ║ ║ Notification ║ ║ ║ ║ PO gen (F.07) ║ ║ CodeGenerator ║ ║ ║ ║ ║ ║ (RG-001) ║ ║ ║ ╚════════════════╝ ╚════════════════╝ ╚════════════════╝ ``` ## Domain entities chính (dự kiến) ``` User ────< Role ────< Permission (Role × MenuKey × CRUD) User ────< AuditLog Supplier (NCC) Project (Dự án) Department (Phòng ban) Contract ├── Type: HĐTP | HĐGK | NCC | HĐDV | HĐ Mua bán | ... ├── Phase (9 state — xem workflow-contract.md) ├── Supplier, Project, Drafter ├── MaHopDong (gen theo RG-001) ├── Approvals[] (audit ai ký phase nào) ├── Comments[] (thread góp ý Phase 3 của workflow) ├── Attachments[] (scan bản gốc, file export) └── TemplateData (JSON — field đã điền khi render form) ContractTemplate (ánh xạ Type → File mẫu FO-002.xx) ContractClause (điều khoản chung FO-002.04 — rich text) PurchaseOrder (có thể đính với Contract hoặc standalone) ``` ## API namespace dự kiến ``` /api/auth — login, refresh, logout, register (admin gate) /api/users — CRUD user, assign role, reset password /api/roles — CRUD role, permission matrix /api/menus — menu tree + permission resolution /api/suppliers — CRUD NCC /api/projects — CRUD dự án /api/departments — CRUD phòng ban /api/contracts — CRUD + query by phase/project/supplier /api/contracts/{id}/transitions — state machine action /api/contracts/{id}/comments — thread góp ý /api/contracts/{id}/attachments — upload/download /api/forms — template catalog /api/forms/{id}/render — render template → docx/xlsx (Phase 2) /api/reports/dashboard — KPI tổng hợp /api/reports/export — Excel download ``` ## FE screens dự kiến ### fe-admin (:8082) — cho Admin + Role quản lý - `/login` - `/dashboard` — KPI system - `/master/users` + `/master/roles` + `/master/permissions` - `/master/suppliers` + `/master/projects` + `/master/departments` - `/master/contract-templates` + `/master/contract-clauses` - `/contracts` — danh sách toàn bộ, filter phase/dự án - `/contracts/{id}` — detail + approval panel + audit log - `/reports` + `/system/audit-log` ### fe-user (:8080) — cho Drafter, TBP, PD/PM, BOD, CCM, ... - `/login` - `/inbox` — HĐ đang chờ tôi xử lý (filter theo role × phase) - `/contracts/new` — chọn template + điền form + submit - `/contracts/{id}` — detail, comment, approve/reject - `/my-contracts` — HĐ tôi đã tạo/tham gia ## Flow chính (Phase 3 — trình ký HĐ end-to-end) ``` Drafter (QS/NV.PB) ├─ [POST /api/contracts] tạo draft + chọn template ├─ [POST /api/forms/{id}/render] fill + preview ├─ [POST /api/contracts/{id}/transitions] DangSoanThao → DangGopY │ PD/PM/PRO/CCM/FIN/ACT (song song) └─ [POST /api/contracts/{id}/comments] góp ý Drafter ├─ [PATCH /api/contracts/{id}] revise ├─ [POST /api/contracts/{id}/transitions] DangGopY → DangDamPhan → DangInKy │ NTP/NCC/TĐ (external — Drafter update thay) └─ upload scan có chữ ký đối tác Drafter └─ [POST /api/contracts/{id}/transitions] → DangKiemTraCCM CCM └─ [POST /api/contracts/{id}/transitions] → DangTrinhKy BOD/NĐUQ └─ [POST /api/contracts/{id}/transitions] → DangDongDau (GEN mã HĐ ở đây!) HRA └─ [POST /api/contracts/{id}/transitions] → DaPhatHanh (upload scan có dấu) ``` ## External dependencies - **SQL Server** — chính thức, dev có thể LocalDB hoặc Docker (`docker-compose.yml`) - **IIS** — deploy target (Windows Server 2019+) - **Gitea** — git remote (URL chờ user cấp) - **Aspose.Words / DocumentFormat.OpenXml** — render .docx (Phase 2, quyết định khi đó) - **EPPlus hoặc ClosedXML** — render .xlsx (Phase 2) ## Non-goals (KHÔNG làm) - ❌ Python AI service (user đã quyết gác vô thời hạn) - ❌ Mobile app - ❌ Multi-tenant (1 instance / 1 công ty) - ❌ Tích hợp e-signature (Phase 6+ nếu có) - ❌ Tích hợp SAP/Bravo ERP (Phase 6+ nếu có) - ❌ Public API / external webhooks