5.2 KiB
5.2 KiB
implement-synthesis — KHKK 8 workflow-nhóm mirror DuyetNcc (YC-013 + YC-016)
VERIFIED bởi lead — viết hồi-tố @S185 (2026-08-09, cửa
/tiepwindow-4/L13) khi ĐÓNG orphan sàn-3 ①. Nguồn sự-thật: verify 4-chân @S183 + RE-verify 3/3 @S185 (origin72568f05· suite 668/0 · DLL prod 2 guard × 3-hit, control-dương đứng) — KHÔNG chép từ return sub (chuỗi #53 ~14 lượt trong phiên, ruột nằm ở 10sub-*.mdcùng folder).
Kết quả từng stage (B1a→B5 — bảng run.md:18-24 tick cùng lượt)
| stage | kết quả VERIFIED | con-trỏ |
|---|---|---|
| B1a invest BE | BE ~85% generic theo workflowKey — mirror DuyetNcc gần như 0 code mới BE-side |
sub-invest-be-fable.md (21.244 B) |
| B1b invest DB | 0-MIG — schema Mig 71 đã đủ (8 row KHKK-N1..8 seeder), không đổi bảng | sub-invest-db-fable.md (18.097 B) |
| B1c invest FE-UI | 1-file chính ApprovalWorkflowsV2Page param-hoá theo key; dialog 9-ô giữ khuôn |
sub-invest-fe-fable.md (13.916 B) |
| B2 wave-plan | spec DRAFT 8.891 B; PRECHECK đọc-DB bác tiền-đề :24 "phiếu đều Phase=3" (thật 9/12 submit-được, pin-lệch=0 ⇒ GO) |
spec-khkk-awf-mirror-ncc-DRAFT.md · sub-cicd-monitor-0.md:199 |
| B3 review ×2 | R1 2C/5M · R2 1C/5M+§8 — vá vào spec final |
sub-review-{1,2}-fable.md |
| B4 spec final | 15.900 B — D3=C (YC-014: ô chưa-nghe mờ + tooltip, giữ layout) | spec-khkk-awf-mirror-ncc-08-08-2026.md |
| B5 execute | wf wf_a07b53c8-47e 4 lane Opus MAX (PRECHECK trọn + 3 lane đứt-limit) → 3 Agent nối-từ-đĩa (BE build 0-err · FE tsc 0×2 · TEST) → 2 Agent vá MAJOR-1/-3 → reviewer pre-commit PASS_WITH_FIXES 0C/3M+6m (3M vá trước commit) → SHIP 706134da (13 file, +1604/−89, 0-mig) |
sub-{implementer-backend-0,implementer-frontend-1,test-specialist-2}.md · sub-reviewer-precommit.md |
Verify sau-ship (2 đợt độc lập)
- @S183 cicd 4/4 chân: admin bundle
Ajv-MaCz→ChepzuO4markerKhkkN1=1 (control-âm 0) · eofficeYsXRkBSR→BQ_dvyu6· DLLEnsureWorkflowGroupMatch3-hit · 8-rowIsActive=1+ pin-lệch-0 ⇒ 8 panel SỐNG prod. - @S185 RE-verify 3/3: origin
72568f05· suite 668/0 · DLLEnsureApprovalAttachmentUploaderAsync3-hit + control 3, mtime2026-08-08 13:11:21(YC-016 cùng chuỗi — guard tay-cầm-phiếu, slot 67 đóng).
🔴 2 khai lệch (đóng-băng số cũ, không sơn lại)
- Acceptance-literal
run.md:32"= 659" LỖI THỜI ngay lúc ship: 645 + 14 spec-test + 1 T15 (MAJOR-3) = 660 lúc ship706134da; nay 668 (+8 test YC-016). Số 659 giữ nguyên trong run.md làm ảnh chụp — bài-5 thư 08-08: không sửa bản đóng băng, đính chính ở đây. - Engine-mix:
run.md:4ghi lead = Fable 5 (đúng lúc mở @S182); giữa chuỗi anh đổi Opus-5 (PAUSE-1), cửa đóng-orphan này chạy Fable 5. Worker B5 = Opus MAX đúng pin.
Trạng thái sổ
YC-013 mở (code+deploy+verify XONG — chờ acceptance-mắt-anh rồi lật) · YC-014 đóng · YC-015 đóng · YC-016 mở-đã-verify (chờ lật cùng đợt). Orphan sàn-3 ① của run này ĐÓNG tại file này.
ADDENDUM @S185 (2026-08-10) — Acceptance ĐỘNG local (A2-răng + T8) — PASS
Seed local SolutionErp_Dev: cờ AllowApproverEditDetails=1 trên approver 620B968B (N1 B1C1) + phiếu KHKK-LOCAL-A2T8 Phase=ChoDuyet grp=1 pin N1. Đo qua API http:5443 + FE dev :8082 (JWT inject localStorage 3-key).
- A2-răng 2 tầng PASS: (data) API overview type-10 trả đủ 8 nhóm qua
history, approver seedallowApproverEditDetails=True, 2 approver cùng cấp False = control-âm · (hiển-thị) dialog "Sửa tại chỗ — KHKK-N1 v01": ô #4 Drafter tick-disabled default-true · ô "Sửa Section 2" TICK+disabled = STATE THẬT từ DB, không hard-code · NV#2 cùng cấp untick toàn bộ · ô #7 "KẾT THÚC" là ô sống duy nhất — khớp từng chữ D3=C + rule-box tự khai "ô vẫn hiển thị đúng giá trị đang lưu". - T8-động PASS: PUT đổi-tên (change thật) → 204 → 1 row
ContractSigningPlanChangelogsđúng shape {act=Update · etype=Workflow · PhaseAtChange=ChoDuyet · UserName=Administrator · Summary "Sửa quy trình duyệt tại chỗ: KHKK-N1 v1 (giữ nguyên phiên bản)" · ContextNote=lý-do}. Control-âm tự nhiên: 3 PUT echo-no-change trước đó → 204 + 0 row (changes.Count>0gate đúng — không rác changelog). - Bonus guard-409 runtime: tick cờ "Duyệt là KẾT THÚC" qua sửa-tại-chỗ → 409 Conflict đúng rule-box ("đổi cờ đó ⇒ phải Tạo phiên bản mới") — guard sống ở runtime, không chỉ unit.
- 2 thước-hỏng tự bắt: (i) selector
[role=dialog]không match component thật → đọc nhầm "dialog CLOSED" khi đang mở; (ii) slot "+ Thêm NV" auto-pick bị dedup loại → 2 PUT "đổi" thực chất echo — suýt phán T8-FAIL oan trước khi soichanges.Countgate + đếm B3C1. - Revert trọn: tên + cờ + phiếu + changelog test đã xoá; 2 server preview dừng. Vite-proxy note: API dev phải nghe http:5443 (
--urls) — proxy không nói https.