Files
solution-erp/CLAUDE.md
pqhuy1987 25dad7f36f [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>
2026-04-21 10:37:34 +07:00

3.8 KiB

CLAUDE.md — AI Agent Context

Full content: docs/CLAUDE.md


SOLUTION_ERP — Hệ thống Quản lý Hợp đồng Nhà cung cấp / Thầu phụ / Tổ đội cho Công ty TNHH Xây dựng Solutions.

Kiến trúc: .NET 10 Clean Architecture + 2 React FE (admin + user) + SQL Server + IIS.

🚀 BẮT ĐẦU SESSION — 4 file đọc trước tiên

1. docs/STATUS.md                        ← Snapshot HIỆN TẠI (phase nào, việc gì đang làm)
2. docs/PROJECT-MAP.md                   ← Bản đồ toàn cảnh (nên đọc đầu dự án)
3. docs/changelog/migration-todos.md     ← Atomic tasks theo từng phase
4. docs/workflow-contract.md             ← ⭐ State machine 9 phase — ảnh hưởng mọi thiết kế

Quick Rules

Backend — .NET 10 Clean Architecture

  • Solution: SolutionErp.slnx ở root, projects ở src/Backend/
  • 4 layer: Api → Application ← Domain + Infrastructure → Application
  • Pattern: CQRS + MediatR, FluentValidation, AutoMapper
  • Repository qua IApplicationDbContext interface (Application layer)
  • Auth: JWT Bearer + ASP.NET Identity
  • DB: SQL Server (LocalDB dev / SQL Server prod), EF Core 10 Code-First migrations
  • Error handling: GlobalExceptionMiddleware map exception → HTTP status
  • Commit scope tech stack: Api · App · Domain · Infra

Frontend — 2 app React 18 + Vite + TS + shadcn/ui + TanStack Query

  • fe-admin/ (port 8082) · fe-user/ (port 8080)
  • Vite proxy /api → http://localhost:5443 (SolutionErp.Api)
  • Named export, không default export (trừ App)
  • shadcn/ui copy-paste, duplicate giữa 2 app là CÓ CHỦ ĐÍCH (mỗi app UX riêng)
  • Auth context: solution-erp-admin-token / solution-erp-user-tokenlocalStorage
  • TanStack Query cho data fetching
  • Node pin >=20 trong engines; CI pin 20.x qua .nvmrc (bài học NamGroup — KHÔNG dùng Node latest trên CI)
  • UI 100% tiếng Việt

Database conventions

  • Schema: dbo (single schema)
  • Table: PascalCase tiếng Anh (Contracts, Suppliers, Projects, ContractApprovals, ...)
  • PK: Id (Guid), FK: {Entity}Id
  • Audit fields: CreatedAt, UpdatedAt, CreatedBy, UpdatedBy (BaseEntity)
  • Soft delete: IsDeleted, DeletedAt, DeletedBy (AuditableEntity)
  • Migrations: dotnet ef migrations add <Name> --project src/Backend/SolutionErp.Infrastructure --startup-project src/Backend/SolutionErp.Api

Commit convention

[CLAUDE] <scope>: <imperative message>

Scope: Contract · Form · Workflow · Supplier · Auth · Admin · Api · App · Domain · Infra · FE-Admin · FE-User · Docs · CICD · Scripts

📖 Tài liệu quan trọng

File Nội dung
docs/STATUS.md 🔥 Current state — đọc đầu tiên
docs/PROJECT-MAP.md Bản đồ tổng quan
docs/changelog/migration-todos.md Roadmap 5 phase + atomic tasks
docs/CLAUDE.md Full context — tech stack, architecture
docs/workflow-contract.md State machine 9 phase + role matrix
docs/forms-spec.md Catalog 8 form + quy định mã HĐ

⚠️ Kết thúc session

  1. Update docs/STATUS.md (In ProgressRecently Done)
  2. Tick checklist tương ứng trong docs/changelog/migration-todos.md
  3. Tạo session log docs/changelog/sessions/YYYY-MM-DD-HHMM-{topic}.md nếu đáng ghi
  4. Commit [CLAUDE] <scope>: <message>
  5. ⚠️ Update SolutionErp.slnx nếu có .cs/.csproj mới

Bỏ qua nếu chỉ trả lời câu hỏi, không sửa file nào.