- .NET 10 Clean Architecture: Domain/Application/Infrastructure/Api (4 project) - 2 React + Vite + TS app: fe-admin (:8082), fe-user (:8080) voi proxy /api - Node engines >=20, .nvmrc = 20 cho CI (bai hoc NamGroup) - SQL Server 2022 qua docker-compose (dev) - Parse 8 FORM -> docs/forms-spec.md (catalog + ma HD format RG-001) - Parse QUY_TRINH -> docs/workflow-contract.md (9 phase state machine + role matrix) - docs: CLAUDE.md, STATUS.md, PROJECT-MAP.md, migration-todos.md (roadmap 5 phase) - .claude/skills: 3 placeholder (contract-workflow, form-engine, permission-matrix) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
6.9 KiB
6.9 KiB
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.
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