All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 10m12s
Phiên governance thuần, 0 code product. Bookend @close chạy trọn 1 lượt (YC-018/YC-027). 14 vai: H1 8 FLAG · H2 GATE-FAIL 6 · cặp H24 deep (10+7 FLAG) · trio 3/3 (MIXED 38 trục → 4 action/18 BÁC → 50Đ/5T/15KC trên 70 claim) · ring1 41Đ/5T/19KC · ring2 15Đ/0T/2KC · ring5 1Đ/2 xoá-án/1KC · ctx-audit TRUOT 6 FLAG · tầng-2/3 chấm. Vá đã land: - 3 ô SỐ canonical STATUS: Mig 73→74 · test 697→699 (45+654) · gotcha 92→93; bổ 3 ô vào ledger WAL TRƯỚC khi vá; lan Mig 74 sang CLAUDE.md + docs/CLAUDE.md. - CG-1 attempt #1: cứu front-end-reviewer-style 1.192→5.913 B (clobber-rot, 4 chứng; harness-audit xác nhận md5 nối thuần, 0 mất). - Trả nợ harvest S188 4 vai/42.975 B; đóng orphan S194 bằng synthesis hồi-tố. - Vá gốc dòng rách so-yeu-cau:58-59 => máy đổi muc 28→29, hội tụ đếm tay. - Đính chính tiền-đề SAI reinject-ledger:70 cho CẢ HAI vai (matcher DÍNH-vs-TÁCH). - MIND-4 => mind-check --closed từ exit 1 sang exit 0. 3 RCA lỗi của lead: FAKE-VERDICT-S195 (verdict bịa cho vai chưa chạy) · RITUAL-ECHO-S195 (tái phạm lần 3) · SCORE-T1-S195 (đọc hụt số máy). #53 nổ 10 lần, cứu 10/10 bằng resume-in-session. 4 vai tự phát hiện thước hỏng của chính mình — không có bước tự-falsify thì lượt này có >=7 cáo buộc oan. completeness-gate S195: vong 4/5 chuc-nang (khong-nhip: V4) | phep DAT 3 / TRUOT 1 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
9.9 KiB
9.9 KiB
CLAUDE.md — Full Context (SOLUTION_ERP)
1. Giới thiệu
SOLUTION_ERP là hệ thống quản lý Hợp đồng Nhà cung cấp / Thầu phụ / Tổ đội / Dịch vụ + Phiếu Duyệt NCC tiền-HĐ cho Công ty TNHH Xây dựng Solutions, thay thế quy trình giấy / Word+Excel hiện tại.
Scope chính:
- Số hóa 8 form hợp đồng (template engine điền field → export .docx/.xlsx)
- Workflow 9 phase trình ký HĐ (state machine + role guard + SLA auto-approve + versioned WF per ContractType)
- Tự gen mã HĐ theo Quy định SOL-CCM-RG-001
- Dashboard báo cáo HĐ theo NCC, dự án, trạng thái, giá trị
- Module Duyệt NCC (Phase 6-8) — phiếu trình duyệt so sánh giá tiền-HĐ, 2 quy trình A/B versioned admin-config, kế thừa HĐ 1-click khi DaDuyet, Ý kiến 4 phòng ban sign-off
Module Ngân sách (Phase 7-8) — 4 bảng quản lý ngân sách dự án, workflow simple 3-step, integration link với Contract & PE + cột "So với ngân sách" PE matrix⚠️ REMOVED Mig 50 (S61) — module Budget cũ (4 bảng Budgets/BudgetDetails/BudgetApprovals/BudgetChangelogs) XÓA, thay bằng ngân sách per-gói-thầuPeWorkItemBudgets(1 record/cặp Dự án × Hạng mục, nhập theo role PRO/CCM); FE pages/types/menuBg_*gỡ hết.- Test gate (Phase 8) — xUnit Domain policy + Infra code generator, CI fail-fast no deploy
2. Kiến trúc tổng thể
┌────────────────┐ ┌────────────────┐
│ fe-admin │ │ fe-user │ React 19 + Vite + TS + shadcn/ui
│ :8082 │ │ :8080 │ TanStack Query, Tailwind
└────────┬───────┘ └────────┬───────┘
│ │
│ Vite proxy /api → :5443
▼ ▼
┌──────────────────────────────────────┐
│ SolutionErp.Api :5443 │ ASP.NET Core 10 + JWT
│ Controllers / Middleware / Swagger │
└──────────────┬───────────────────────┘
│
┌────────▼─────────┐
│ SolutionErp. │ CQRS + MediatR
│ Application │ FluentValidation + AutoMapper
└────────┬─────────┘
│
┌────────▼─────────┐ ← SolutionErp.Infrastructure
│ SolutionErp. │ (EF Core, Identity, Repos, External services)
│ Domain │
└──────────────────┘
│
▼
┌────────────────┐
│ SQL Server │ dbo schema, GUID PK
└────────────────┘
3. Project layout
SOLUTION_ERP/
├── src/Backend/
│ ├── SolutionErp.Domain/ Entities + Enums (Contracts/, PurchaseEvaluations/, Forms/, Identity/, Master/, Notifications/)
│ ├── SolutionErp.Application/ CQRS handlers, DTOs, Validators, Mappings, Interfaces
│ ├── SolutionErp.Infrastructure/ EF DbContext, Identity, Repositories, External services
│ └── SolutionErp.Api/ Controllers, Middleware, Program.cs, appsettings
├── fe-admin/ (admin UI — CRUD master, approve, dashboards, workflow designer, permission matrix)
├── fe-user/ (user UI — soạn HĐ + duyệt phiếu PE + inbox)
├── docs/
│ ├── CLAUDE.md (file này)
│ ├── STATUS.md ⭐ snapshot hiện tại + Recently Done
│ ├── HANDOFF.md ⭐ brief 5 phút cho session tiếp
│ ├── PROJECT-MAP.md bản đồ tổng quan
│ ├── rules.md coding conventions
│ ├── architecture.md layered + PE §9 + Budget §10 + Testing §11
│ ├── gotchas.md pitfall đã gặp (số → docs/STATUS.md)
│ ├── forms-spec.md 8 form catalog + RG-001
│ ├── workflow-contract.md 9 phase HĐ + role matrix
│ ├── database/
│ │ ├── database-guide.md conventions + migration workflow
│ │ └── schema-diagram.md ERD (số bảng → docs/STATUS.md) (+§11 PE +§12 ~~Budget~~ DROP +§13 PEDeptOpinions +§14 Contract V2 LevelOpinions; §16+ Mig 32-74 pending)
│ ├── flows/ 6 sequence diagram (auth/permission/contract/form/sla + PE ref architecture)
│ ├── guides/ setup, cicd, deploy, runbook, security
│ ├── changelog/
│ │ ├── migration-todos.md roadmap compact (Phase 0-5+Tier3 collapsed)
│ │ └── sessions/ session logs YYYY-MM-DD
│ └── _archive/ raw dump Phase 0 (forms-spec-raw, workflow-raw)
├── .claude/skills/ 6 skill: 3 domain (contract-workflow, form-engine, permission-matrix) + 3 ops (dependency-audit-erp, ef-core-migration, iis-deploy-runbook)
├── scripts/ deploy, migrate-domains, backup, deps-audit
├── SolutionErp.slnx Solution file
├── global.json .NET 10 SDK pin
└── CLAUDE.md Pointer → docs/CLAUDE.md
4. Tech stack chi tiết
| Layer | Tech | Version |
|---|---|---|
| .NET SDK | .NET | 10.0.104 |
| ORM | EF Core | 10 |
| DB | SQL Server | 2019+ (LocalDB dev) |
| API | ASP.NET Core Web API | 10 |
| Mediator | MediatR | latest |
| Validation | FluentValidation | latest |
| Mapping | AutoMapper | latest |
| Auth | JWT Bearer + ASP.NET Identity | 10 |
| Logging | Serilog | latest |
| OpenAPI | Swashbuckle | latest |
| FE Build | Vite | 8 |
| FE Lib | React | 19 (auto-scaffolded) |
| FE Lang | TypeScript | 6 |
| FE Styling | Tailwind CSS + shadcn/ui | Phase 1 install |
| FE Data | TanStack Query | Phase 1 install |
| Node (local) | >= 20 | local có thể Node 22 |
| Node (CI) | KHÔNG pin (runner tự cài) | .nvmrc=20 có ở fe-*/ nhưng CI 0 bước setup-node ⇒ không ai đọc — ghost-wire class-2, xem gotcha #92 |
5. Reference projects
- NamGroup (
D:\Dropbox\CONG_VIEC\NAMGROUP\SOURCECODE_CÔNG_TY\NAMGROUP\) — template 2 FE + IIS deploy + permission matrix - DH_Y_DUOC (
D:\Dropbox\CONG_VIEC\DAI_Y_DUOC\DH_Y_DUOC_SOURCECODE\DH_Y_DUOC\) — template backend hiện đại (Clean Arch + CQRS + EF migrations)
6. Roadmap (status 2026-04-29)
| Phase | Focus | Trạng thái |
|---|---|---|
| 0 Draft | Scaffold, parse FORM + QUY_TRINH | ✅ Done |
| 1 Alpha Core | Auth + Permission + CRUD master + Contract draft | ✅ Done |
| 2 Form Engine | OpenXml + ClosedXML + LibreOffice PDF + DynamicForm | ✅ Done |
| 3 Workflow | 9 phase state machine + RG-001 code gen + SLA job + attachments + SignalR | ✅ Done |
| 4 Reporting | Dashboard KPI + Excel export + MyDashboard role-aware | ✅ Done |
| 5 Production | CI/CD Gitea Actions + 3 IIS site + Let's Encrypt + Security headers + Users CRUD | ✅ Done |
| Tier 3 | Versioned WF + 3-panel layout + 4-bảng + 4 catalogs + 16 demo users + Brand identity | ✅ Done |
| 6 Module Duyệt NCC | PE iter 1 (skeleton) + iter 2 (UX polish) + Domain rebrand .solutions.com.vn |
✅ Done |
| 7 Budget BE + 14 Solutions users | Migration 14 — 4 bảng Budget + workflow simple + 11 endpoint + 14 user thật ⚠️ Budget bị REMOVED Mig 50 (S61) → PeWorkItemBudgets |
✅ Done (Session 4) |
| 8 Budget FE + PE feature complete + Tests | FE Budget 3-panel + PE/HD-Budget integration + PE Workflow Designer + Ý kiến 4 PB (mig 15) + Tests Phase 1-2 (71 test) + CI gate ⚠️ FE Budget (pages/types/menu Bg_*) REMOVED S61 cùng Mig 50 |
✅ Done (Session 5) |
| 9 UAT + Ops + carry over | UAT thật + SMTP + Rotate creds + SQL backup + Export PDF (pending) + Tests Phase 3-5 | 📝 Active (Session 6) |
| 10+ Post-launch | E-signature, Bravo/SAP, Mobile, AI OCR | 📝 Future |
Chi tiết atomic tasks: changelog/migration-todos.md.
Session logs: changelog/sessions/.
7. Quy ước code
- Ngôn ngữ UI: 100% tiếng Việt. Code + comment + tên DB table: English.
- Tên file: PascalCase cho
.cs, kebab-case cho TS/TSX (trừ React component = PascalCase). - Null safety:
.NETbật nullable reference types. TSstrict: true. - Async/await cho mọi I/O.
- Error handling BE:
GlobalExceptionMiddleware→ map exception → ProblemDetails. KHÔNG try-catch ở controller. - Error handling FE: error boundary + toast. Dùng
useErrorHandlerhook. - Logging: Serilog structured. Không
Console.WriteLine.
8. Security baseline
- HTTPS everywhere (IIS redirect HTTP → HTTPS)
- JWT expiry 1h, refresh token 7d
- Password hash: Identity default (PBKDF2)
- CORS: whitelist chỉ 2 FE origin
- Rate limit: 100 req/min/IP cho endpoint auth
- SQL injection: EF Core parameterized (không raw SQL trừ khi cần)
- Audit log: mọi write →
AuditLogtable
9. Liên hệ + Production
- Dev: pqhuy1987@gmail.com (solo + Claude)
- Prod login:
admin@solutions.com.vn/Admin@123456⚠️ rotate sau login đầu - 3 domain prod:
- https://api.solutions.com.vn — API
- https://admin.solutions.com.vn — Admin FE
- https://eoffice.solutions.com.vn — User FE
- Gitea remote: https://git.baocaogiaoduc.vn/vietreport-admin/solution-erp
- SSH VPS:
ssh vietreport-vps(config sẵn~/.ssh/configuser=Administrator key=id_ed25519) - Domain expert: TBD (sẽ update sau UAT đầu tiên)