59 lines
3.6 KiB
Markdown
59 lines
3.6 KiB
Markdown
REVIEWER-GATE-K1: IN-PROGRESS — 0 finding (đang chạy)
|
|
|
|
# Reviewer gate K1 — ContractCatalogEntries (SP-002 danh mục loại HĐ)
|
|
|
|
Ngày: 2026-07-31 · vai: reviewer (adversarial, read-only prod-code)
|
|
Artifact ghi LIÊN TỤC chống #53 — mỗi finding đổ ngay khi có.
|
|
|
|
## Trạng thái các bước
|
|
- [x] B1 Đọc spec cụm-1 + transcribe + 3 lane return
|
|
- [x] B2 dotnet build tươi — **Build succeeded · 0 Warning(s) · 0 Error(s) · Time Elapsed 00:00:44.23** (6 project)
|
|
- [x] B3 dotnet test — **45 Domain + 552 Infra = 597 PASS / 0 FAIL / 0 SKIP** (đúng kỳ vọng, 0 flaky, không phải chạy isolation)
|
|
- [ ] B4 Đối chiếu code-vs-spec
|
|
- [ ] B5 Ranh CẤM
|
|
- [ ] B6 Xác nhận 2 khoảng-hở UX
|
|
|
|
## Log
|
|
|
|
### B2 build (nguyên văn)
|
|
```
|
|
Build succeeded.
|
|
0 Warning(s)
|
|
0 Error(s)
|
|
Time Elapsed 00:00:44.23
|
|
```
|
|
6 project: Domain · Domain.Tests · Application · Infrastructure · Api · Infrastructure.Tests.
|
|
|
|
### B4-a Entity 10 cột — ĐẠT
|
|
`ContractCatalogEntry.cs:15-24` = Code · TenVi · TenEn? · GroupCode · ApprovalGroup · SignerRole · InitialsChain? · NduqNote? · IsActive · SortOrder = **10 cột** + 7 audit từ `AuditableEntity`. Khớp bảng spec `sub-invest-fable-b2-cum1.md:13-26`.
|
|
|
|
### B4-b Config + Mig — ĐẠT (1 nit tên index)
|
|
`ContractCatalogEntryConfiguration.cs:27` unique filtered `[IsDeleted] = 0` ✔ (#57) · `:28` index ApprovalGroup ✔ · `:29` HasQueryFilter ✔.
|
|
Mig `20260731072441_AddContractCatalogEntries.cs`: 1 CreateTable + 2 CreateIndex, Down = DropTable. **0 RenameColumn** ✔.
|
|
NIT: spec `:28` đặt tên `UX_ContractCatalogEntries_Code`, code để EF-default `IX_ContractCatalogEntries_Code` (`Mig:48`). Không ảnh hưởng chức năng; khuôn repo (Mig 47) cần đối chiếu.
|
|
|
|
|
|
### B3 test (nguyên văn)
|
|
```
|
|
Passed! - Failed: 0, Passed: 45, Skipped: 0, Total: 45, Duration: 342 ms - SolutionErp.Domain.Tests.dll
|
|
Passed! - Failed: 0, Passed: 552, Skipped: 0, Total: 552, Duration: 1 m 7 s - SolutionErp.Infrastructure.Tests.dll
|
|
```
|
|
Tổng **597 PASS / 0 FAIL** = baseline 590 + 7 test ContractCatalog. Không có fail lẻ ⇒ KHÔNG cần chạy isolation.
|
|
|
|
### B4-c Seed 86 — ĐO MÁY, KHÔNG tin lời khai (ĐẠT tuyệt đối)
|
|
Script parse trực tiếp `DbInitializer.cs` vùng `SeedContractCatalogAsync` (regex tuple 6-thành-phần):
|
|
- total rows = **86** · unique codes = **86** · dup codes = **[]**
|
|
- by GroupCode = A1:5 A2:1 A3:9 A4:5 B1:23 B2:14 B3:15 C1:6 C2:3 C3:4 CEO:1
|
|
- by ApprovalGroup = **1:5 · 2:10 · 3:5 · 4:23 · 5:14 · 6:15 · 7:13 · 8:1** → khớp CHÍNH XÁC spec `sub-invest-fable-b2-cum1.md:41` (5/10/5/23/14/15/13/1)
|
|
- empty TenEn = 0 (86/86 có tên EN) · dup SortOrder trong cùng GroupCode = none
|
|
- max len: Code 6≤20 · TenVi 153≤500 · TenEn 174≤500 · GroupCode 3≤10 → 0 nguy cơ truncation
|
|
|
|
Đối chiếu TỪNG DÒNG với `danh-muc-sp002-transcribe.md` (86 row parse từ markdown):
|
|
- code-set diff 2 chiều = **rỗng cả 2 chiều**
|
|
- text mismatch = **8 dòng, TẤT CẢ là B2-07..B2-14 bỏ chú-thích `(ảnh: …)`** — đúng lệch mà lane BE đã khai (`sub-implbe-k1.md:16`, mục 3). Không có mismatch nào ngoài tập đã khai.
|
|
- ApprovalGroup vs heading transcribe: **0 mismatch**
|
|
- signByGroup 8 nhóm khớp bảng transcribe `:9-16`, ô "N/A" bỏ đúng (N3 3 ô · N4 2 ô · N7 3 ô · N8 2 ô).
|
|
|
|
### B4-d Gate seeder — ĐẠT
|
|
`DbInitializer.cs:129-131` call-site NẰM NGOÀI mọi `if (!demoSeedDisabled)` ⇒ UNGATED (đúng spec K1.b, gotcha #51). `IgnoreQueryFilters()` có mặt khi dò existing (né #75/#76 resurrect).
|