Files
solution-erp/.claude/workflows/runs/2026-07-31-S164-4gd-khkk-fanout/sub-implbe-k7.md
2026-08-01 12:11:32 +07:00

3.8 KiB

IMPLBE-K7: IN-PROGRESS

sub-implbe-k7 — Lane BE K7 (chuỗi SP-002 B4, S167 · 2026-08-01)

Rào: chỉ src/Backend/** · KHÔNG FE · KHÔNG tests/ · KHÔNG commit. Trọng tài = dotnet build SẠCH. Artifact ghi-từng-mục chống-#53: mỗi vá xong ghi NGAY {file:line, 1 câu}.

§0 — Tiền đề đo TRƯỚC khi gõ (KHÔNG đoán)

git status @spawn (sạch phía src/): dirty chỉ .claude/WAL.md · .claude/agent-memory/reviewer/MEMORY.md · .claude/auto-memory/* · .claude/governance/.session-counter.json · .claude/workflows/runs/.../sub-reviewer-gate-k6.md · docs/STATUS.md = của lead, bỏ qua. src/Backend/** = 0 file dirty. Branch main, HEAD 1c6d77a (K6).

🔴 BÁC TIỀN ĐỀ ĐỀ BÀI — "Bridge KHKK→HĐ ĐÃ TỒN TẠI (W6-S161)" là SAI (4 phép đo)

# Phép đo Kết quả
1 grep -rn "CreateContractFromSigningPlan|create-contract" src/ 1 hit duy nhất = PurchaseEvaluationsController.cs:339 (bridge PE→HĐ cũ). 0 hit KHKK.
2 ls src/Backend/SolutionErp.Application/ContractSigningPlans/ ContractSigningPlanFeatures.cs + Services/0 file bridge
3 grep "HttpPost" ContractSigningPlansController.cs 4 POST: "" · {id}/dossier-items · {id}/attachments · {id}/transitions0 endpoint tạo HĐ
4 write-site ContractSigningPlanLine.ContractId 0 assignment toàn codebase (khớp đo độc lập của invest K7.0(b) @S164 K5 FLAG-1 "lines[].contractId không tồn tại ở bất cứ đâu")

Cái ĐÃ tồn tại @W6-S161 = "đường ống HĐ V2" (List/Detail V2-aware ContractFeatures.cs:306-318 · Inbox V2 :532-543 · guard trình ContractWorkflowService.cs:73-92) — invest K7.0 đã BÁC đúng chỗ này. Lead nhập nhằng "đường ống đã vá" ⇒ "bridge đã tồn tại".

Hệ quả + quyết định lane (khai rõ, không im lặng)

4/5 vá được giao (vá-1-endpoint · vá-3 · vá-4a · vá-6) VẬT LÝ KHÔNG THỰC HIỆN ĐƯỢC nếu không có bridge — chúng đều là mệnh đề về thân bridge. Đặc biệt vá-6 ("nạp Project.Code + Supplier.Code theo khuôn bridge-cũ :63-66/:85-86") là no-op nếu áp lên bridge PE cũ: bridge cũ ĐÃ CÓ 2 dòng đó (đo: CreateContractFromEvaluationFeatures.cs:63-66 supplierMap, :65-66 project NotFound, :85-86 supplier NotFound) ⇒ vá-6 chỉ có nghĩa với bridge MỚI.

Quyết: DỰNG bridge KHKK→HĐ (BE-only) theo spec đã có sẵn sub-invest-fable-b2-cum3.md §K7.1 (K7.6 V1+V2) + nhúng thẳng 5 vá vào lúc dựng. Chệch-khuôn-so-brief KHAI RÕ tại đây, trỏ đề xuất gốc (invest K7.1 :23-56 — command signature, 6 guard, field-map, codegen, write-site, changelog, controller đều đã pin sẵn ⇒ 0 quyết-định-thiết-kế mới của tôi). KHÔNG làm: FE (K7.6 V4/V5/V6 → lane FE), test (V7/V3 → test-lane), migration (cột ContractId đã có từ Mig 69 + index ContractSigningPlanLineConfiguration.cs:26).

Tiền đề phụ thuộc (cụm-1 đã land?) — ĐO

  • K2 Mig 71: ContractSigningPlanLine.TenHangMuc (:27) + CatalogEntryId (:23) có trên đĩa.
  • K3 finalize: ApprovedAmount (:35 "CHỈ ghi tại choke-point finalize (W3)") — xem §5 đo write-site.

§1 — [vá-1a] Grant Contracts.Create (seeder, code-first)

(đang làm — ghi khi xong)

§2 — [vá-1b] Endpoint bridge = HỘI 2 khóa

(đang làm)

§3 — [vá-3] Guard workflow IsActive ∧ IsUserSelectable

(đang làm)

§4 — [vá-4a] Line.ContractId write-site + DTO expose

(đang làm)

§5 — [vá-6] Project.Code/Supplier.Code + SlaDeadline + WorkflowDefinitionId

(đang làm)

§6 — Build + verify

(đang làm)

END implbe-k7 — VERDICT=IN-PROGRESS