Files
solution-erp/.claude/workflows/runs/2026-07-29-S161-khkk-w7-bancung/ship-synthesis.md
2026-07-30 00:48:33 +07:00

37 lines
3.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# ship-synthesis — W7 KHKK GĐ4 "Hợp đồng cứng" 1-MỐC (VERIFIED, lead tổng hợp @S162 2026-07-30)
> Wave build 5/5 (W1→W2→W3→W6→W7) của dry-run KHKK. Commit **`3119cb9`** (12 file, +1358/18) — cicd **PASS 3/3 chân**.
## Giao được gì (đúng chốt @S161 "Upload file cứng lên → Là xem như xong")
- **BE** (+31/4, đo 2 phương pháp — errata BE tự-khai +35): `ListContractsQuery` +`ContractType? type` filter server-side (F-C1/F-05) + DTO `HasSealedCopy` derive `Attachments.Any(purpose=SealedCopy=3)` append-cuối default false. 0 policy mới · 0 migration · attachment endpoints 0-diff (O-A giữ).
- **FE ×2 SHA-PAIR** (`C7DCC20B…`): trang `/hard-copies` — list phase=9 hardcode phía gọi + badge bản-cứng + panel upload multipart (`file`+`purpose=3`+`note`) khớp endpoint Contract có sẵn + Ý kiến cấp duyệt readonly + hộp amber "ký/đóng dấu NGOÀI hệ thống". 7 leaf `Hdc_*` re-point `?type=1..7`, coming-soon co-occurrence 0/0.
- **Tests**: `ContractHardCopyTests` 3 PIN — suite **587→590/0**; probe vi-phân `_TempMutationProbe.cs` (tạm, đã xoá + verify 2 chiều) 5/5 phân biệt bản-hỏng (`>=DangDongDau`, `>=DaPhatHanh`, bỏ-type, `>=ScannedSigned`, `Any()`); 2 invariant ghim: cờ-không-xét-phase (FE chặn ở phía gọi) + cờ-chết-2-màn (Đã xóa/Hộp thư default false — 3 căn cứ giữ nguyên).
## Chuỗi verify
| Cổng | Kết quả |
|---|---|
| Gate 5-anchor | 5/5 |
| Review adversarial | PASS-có-điều-kiện → điều kiện ĐÃ XỬ (FLAG-1 untracked→F-0 gate; FLAG-2/3 comment vá giữ SHA-pair; FLAG-4 UX backlog) |
| CI #431 | success ~5m50s · gate **590/590** tách-phần 45+545, delta +3 Infra khớp đúng 3 PIN |
| sqlcmd prod | MenuItems **142 GIỮ** · `__EFMigrationsHistory` **69 GIỮ** · tables 96 · pool recycle PID `5576` StartTime 00:23:20 > DLL mtime 00:21:02 |
| Bundle ×2 | rotate 4/4 · marker khớp dự-đoán-chốt-trước từng đồng: `hasSealedCopy`=1 · `hard-copies`=10 · DƯƠNG 7 (distinct 1..7) / ÂM 0 · control 3-tầng old-hash+fake-hash→text/html |
| Smoke | `?phase=9` 200 · `?phase=9&type=1` 200 · âm `?type=999` **400** ValidationProblemDetails thật · route bịa 404 |
## Treo có chủ đích (KHÔNG phải lỗi)
1. **`hasSealedCopy` per-item UNVERIFIED-LIVE** — prod 0 hợp đồng (sqlcmd CONTRACTS_TOTAL=0) ⇒ `all()` trên N=0 không tính. Tự đóng khi E2E (sau W5) tạo HĐ đầu tiên → re-curl `?phase=9` 1 lần.
2. **§3.1 an-ninh hồ sơ W8**: upload/download attachment Contract 0-rào (hiện trạng O-A anh chốt để mở; W7 thêm lối vào nổi bật nhưng không mở rộng bề mặt lộ).
3. **FLAG-4 UX backlog**: multi-file upload dùng chung 1 `note` + `isPending` chỉ phản ánh mutation cuối.
## Bài học wave (đã ghi run.md + diaries)
- Memory-pack slice lead soạn cũng là giả-định — lane BE đo và bác (`IsDeleted` không tồn tại trên `ContractAttachment`).
- "Số đoán trúng ≠ số đo được" — test lane tự cắt §5-§8 viết-trước-đo rồi đo lại.
- Control ÂM chỉ có nghĩa khi vế DƯƠNG cùng hình-dạng regex trả >0 (regex nháy-kép chết trên bundle backtick — suýt FALSE-CLEAN).
- PS5.1 `commit -m @'…"…'@` vỡ native-arg mà `; push` vẫn chạy ⇒ message-có-quote dùng `-F <file>` + tách commit/push.
- #53 ×3 wave này (FE lane, reviewer, cicd) — 0 byte mất nhờ sub-md ghi-từng-mục; cicd còn 2 chân đo-xong-trước-garble, resume nối đúng chỗ.
**W7 ĐÓNG ⇒ HẾT wave build được. Còn lại: W5 (cầu KHKK→HĐ) + E2E — BLOCKED chờ anh chốt NGƯỜI DUYỆT 3 trạm (PRO/CCM/CEO trong 18 user prod).**