[CLAUDE] Docs: S65 session-end closeout — HRM go-live + Hồ sơ NS master-detail + Department hierarchy + PE Link hồ sơ (6 deploy #289→#295)

Closeout S65 (~6 deploy prod-verified, anh + anh Kiệt FDC UAT realtime):
- STATUS/HANDOFF S65 (Mig 52 · 88 bảng · 263 test · 65 gotcha · menu 53 · bundle admin BDwV5d0X / user DbVv6rsf Run #295) + session log #289→#295.
- gotcha #65 (build csproj con ≠ dotnet build slnx gồm tests → CS7036 Run #291 FAIL-gated; fix +trailing-optional sweep).
- CLAUDE.md root Mig 50→52 + PE row +Mig 52.
- Harvest: H2 GATE 2-MISS closed — 2 on-behalf record (PE-Workflow FE + reviewer empty-return #53) → impl-frontend + reviewer agent-memory. H1 tooling CLEAN (roster/skill/plugin 11/6/18).
- Memory (user-global): +feedback_workflow_fanout_reliability.
Carry-P1: cicd-monitor L1 82KB curate-L2 · mirror Employee page→fe-admin · test-after (HoSoLink/ParentId/HRM-perm).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
pqhuy1987
2026-06-16 11:56:03 +07:00
parent 456c7a721b
commit fe28ca3993
12 changed files with 148 additions and 16 deletions

View File

@ -1148,6 +1148,20 @@ for h in resp.points: # ← .points không phải iterable trực tiếp
---
### 65. Build csproj con (vd `SolutionErp.Api.csproj`) ≠ `dotnet build SolutionErp.slnx` (gồm tests) — đổi chữ ký record command lọt test-compile → CI CS7036 FAIL-gated (Session 65)
**Triệu chứng:** thêm `ParentId` làm tham số positional thứ 5 BẮT BUỘC vào `CreateDepartmentCommand`; build local `dotnet build src/Backend/SolutionErp.Api/SolutionErp.Api.csproj` PASS push **CI test-gate FAIL CS7036** Run #291 ("no argument for required parameter 'ParentId'") `MasterCatalogFilteredUniqueTests.cs:63` còn gọi 4-arg. Deploy bị chặn (prod NGUYÊN test-gate làm đúng việc), tốn 1 vòng FAILfixre-push.
**Cơ chế:** `Api.csproj` ( mọi csproj con `src/Backend/*`) KHÔNG reference `tests/*` build KHÔNG compile tests. CI chạy `dotnet build SolutionErp.slnx` / `dotnet test` = build CẢ tests bắt call-site . Đổi chữ record command/DTO/entity ctor = **spec change** (CLAUDE.md §7 "spec change = sửa test + code chung commit").
**Guard:** đổi chữ BE (1) `dotnet build SolutionErp.slnx` FULL (gồm tests) TRƯỚC push, KHÔNG build csproj con lẻ; (2) grep repo-wide `new <Command>(` (gồm `tests/`) sửa mọi call-site; (3) cân nhắc **trailing optional `= null`** (như `CreatePurchaseEvaluationCommand +HoSoLink` Mig 52 backward-compat, 0 call-site break) đối lại positional-required (`CreateDepartmentCommand +ParentId` vỡ test).
**Credit:** 🟩 cicd-monitor S65 Run #291 FAIL-detect (reproduced local CS7036) em main fix `MasterCatalogFilteredUniqueTests.cs:63` +5th arg `null` `6ce5803` Run #292 PASS.
**References:** `MasterCatalogFilteredUniqueTests.cs:63` · `DepartmentFeatures.cs` (CreateDepartmentCommand) · Run #291 FAIL / #292 PASS · CLAUDE.md §7.
---
## Checklist debug bug mới
1. Build pass không? fail check using + package version compat