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 buildSẠ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}/transitions — 0 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 và 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