[CLAUDE] Scaffold: khoi tao SOLUTION_ERP Phase 0
- .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>
This commit is contained in:
154
docs/PROJECT-MAP.md
Normal file
154
docs/PROJECT-MAP.md
Normal file
@ -0,0 +1,154 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user