# sub-implementer-backend-w3 — W3 seed họ workflow type-3 + 7 key Designer (BE data-op, 0-mig)

> Run `2026-08-10-S187-duyet-hd-tu-khkk` · vai `implementer-backend` · Opus 5 MAX · 2026-08-10.
> Đáp án owner đã chốt (YC-024): (80) trục **7-LOẠI** · (81) **PA-A** mỗi loại 1 mã · (83) **roster SAO KHUÔN KHKK**, anh tự chỉnh Admin Designer sau.
> Ghi TỪNG MỤC trong lúc làm (chống #53). File này = chân lý; return chỉ là tóm.

## §0 — Ground-truth ĐO TƯƠI (không chép từ brief)

| # | Đo gì | Lệnh / nguồn | Kết quả |
|---|---|---|---|
| 1 | Cấu trúc trạm/người THẬT của 8 workflow KHKK trên Dev | `sqlcmd -S "(localdb)\MSSQLLocalDB" -d SolutionErp_Dev -E` — chữ ký MD5 per-Code trên tập `(StepOrder/Dept/StepName/LevelOrder/Email/Finalize)` | **8/8 GIỐNG HỆT**: cùng hash `7EB6CD219E89AFA4C2DE55DE63377107`, 9 level-row/workflow ⇒ **dùng KHUÔN CHUNG** (không phải "lấy N1 + khai") |
| 2 | Khuôn chung đó là gì | cùng truy vấn, `KHKK-N1` | Bước 1 `Phòng Cung Ứng`/PRO → Cấp 1 OR-of-3 (duy·long·phuong) + Cấp 2 (tra.bui) · Bước 2 `P. Kiểm soát Chi phí`/CCM → Cấp 1 OR-of-3 (binh.le·luu.tran·nguyen.ho) + Cấp 2 (chuong.phan, `Finalize=1`) · Bước 3 `Ban Giám đốc`/BOD → Cấp 1 (truong.nguyen) |
| 3 | Roster CODE (11 email) vs DB Dev (9 slot) | `DbInitializer.cs:554-585` vs đo (1) | Dev thiếu 2 user (`binh.lethanh@`, `truong.letrandang@`) ⇒ **nhánh "bỏ slot + warning" đã chạy THẬT trên Dev** — không phải đường lý thuyết |
| 4 | Type-3 hiện có gì | `SELECT ... WHERE ApplicableType=3` | **1** workflow `QT-HD-V2-001` v01 (sample UAT S29), 1 Bước. Dev **0** workflow type-1/2 (khớp Surprise #7 BE) |
| 5 | `\|MenuKeys.All\|` trước sửa | đếm tay `MenuKeys.cs:222-250` + đối chiếu STATUS `:474` | **113** (khớp canonical) |
| 6 | Engine type-3 có hiểu `AllowApproverFinalize` không | `grep -n "Finalize" ContractWorkflowService.cs` | **0 hit** (chỉ `skipToFinal` = cờ KHÁC). Control dương: PE `:870` CÓ · KHKK `ContractSigningPlanWorkflowService.cs:286` CÓ ⇒ **thước sống**, 0-hit là vắng THẬT |

## §1 — 1 quyết kỹ thuật CÓ KHAI: cờ `AllowApproverFinalize` KHÔNG sao nguyên xi

Roster KHKK bật `Level2Finalize=true` ở trạm CCM (a Chương được kết thúc, không lên CEO). Đo (6) cho thấy **máy duyệt type-3 KHÔNG có nhánh finalize** ⇒ seed `true` cho họ HĐ = **config-lie #78**: Designer/UI khoe "cấp này được kết thúc" mà engine vẫn đi tiếp BGĐ.

⇒ Seed HĐ giữ **NGUYÊN trạm/người/thứ tự/OR-of-N** (đúng "sao khuôn" theo (83)), riêng cờ finalize = `false` + ghi vết ngay tại chỗ. Owner bật lại 1 click trong Designer khi máy type-3 có nhánh finalize (wave sau).

## §2 — 4 mảnh land (điền dần)

_(đang thi công — mục này cập nhật sau mỗi mảnh)_

== ĐANG VIẾT ==
