Files
solution-erp/.claude/workflows/runs/2026-07-31-S164-4gd-khkk-fanout/sub-test-specialist-1.md
2026-07-31 16:36:45 +07:00

3.1 KiB

K2-TEST: IN-PROGRESS — chưa đo suite (baseline nhận 598/0, CHƯA tự đo)

sub-test-k2 — K2 TEST lane (S164, wave 2/8, SP-002)

Luật đan-xen (bài K1/K2-BE): làm mục nào GHI NGAY mục đó, KHÔNG dựng dàn-bài kèm số chưa đo (bài S161-W7d2: dàn-bài có sẵn con-số = bẫy claim-trước-đo). Mục chưa chạy CHỈ được tiêu-đề + "CHƯA ĐO".

§0 Tiền đề — git status TRƯỚC mọi Write

  • git status --porcelain @start: sub-test-specialist-1.md KHÔNG tồn tại trong run-folder ⇒ Write mới AN TOÀN.
  • File test đang M (lead vừa sửa, CẤM đè): tests/.../Application/ContractSigningPlanApprovalTests.cs, tests/.../Common/ContractSigningPlanSchemaTests.cs.
  • Prod code đang M (lane BE K2, CẤM đụng): Features/WorkflowService/entity/config/controller + Mig 71 (untracked).
  • Baseline nhận từ lead: 598/0 (45D+553I). CHƯA tự đo (sẽ đo cuối, không tin số đề bài — bài S161-W2).

§1 Đọc nền — ĐO ĐƯỢC GÌ (đã đọc, trước mọi Write)

Đọc trọn: sub-implbe-k2.md (§a-§h) · sub-invest-fable-b2-cum1.md:77-172 (K2.a-K2.h, blueprint 7 test) · spec-cum1-chi-tiet-31-07-2026.md (12 vá + checklist ③). Đo lại trên ĐĨA (không tin sổ):

Thứ cần đo Site thật Ghi chú
submit-guard null ContractSigningPlanWorkflowService.cs:174-176 vá-5 CHẶN null (THẮNG nền :126 cho-qua)
submit-guard khác-nhóm …Service.cs:177-182 message …cùng nhóm N{plan.ApprovalGroup}
rào (PeId,Group) ContractSigningPlanFeatures.cs:393-402 Phase != TuChoi + ApprovalGroup == approvalGroup
list filter group Features.cs:737-738 ĐẶT SAU khối IDOR :720-729
Σ Approved Features.cs:803-804 Sum(l.ApprovedAmount) ?? 0m, DTO slot 25 :64
EnsureDraftEditable Features.cs:229-237 owner∥Admin TRƯỚC, phase {DangSoanThao,TraLai} SAU
default ApprovalGroup ContractSigningPlan.cs:39 = 1 mig :52 defaultValue 0 + Sql UPDATE … = 1 :61
site gán-qua-BIẾN …Service.cs:327-359 ReturnOrRejectAsync vá-2 chọn phương án (ii) = TEST KHOÁ, cấm sửa code

Hạ tầng tái dùng: InternalsVisibleTo CÓ SẴN (SolutionErp.Application.csproj:25) ⇒ gọi THẲNG ContractSigningPlanScope.EnsureDraftEditable (Pattern 12, không cần reflection). Global using Xunit + FluentAssertions (…Tests.csproj:31-32). .slnx chỉ liệt PROJECT ⇒ file .cs mới KHÔNG cần sửa slnx.

QUYẾT: file MỚI Application/ContractSigningPlanGroupAndCatalogTests.cs + fixture RIÊNG (mirror ContractSigningPlanCrudTests.cs:49-82, có AuditingInterceptor) — KHÔNG chạm 2 file lead vừa vá (ContractSigningPlanApprovalTests.cs fixture SeedPlanAsync +catalog · ContractSigningPlanSchemaTests.cs unique-3-cột), KHÔNG chạm ContractSigningPlanCrudTests.cs (helper CreateAsync ở đó không mang tham số nhóm; thêm tham số = sửa file người khác đang dùng).

§2 Test đã viết — CHƯA ĐO (đang viết)