# run — S156 · Quy trình SAU CEO duyệt: lane PROJECT (BCH Công trường) → Ký kết HĐ

> **run-id:** `2026-07-27-S156-bch-post-ceo-flow` · mở 2026-07-27 (phiên-LOGIC L7, window 3)
> **Nguồn đề-bài:** anh gửi PDF `01- Quy trinh hien tai --- 14_ 2026 (1).pdf` (1 trang, sơ đồ swimlane
> "A. PHÊ DUYỆT GÓI MEP, KẾT CẤU THÉP", 6 lane × 21 bước đánh số).
> **Lệnh anh:** *"Hiện tại là mình đã xong bước thứ 6 tức CEO duyệt rồi nhé, chưa cần làm gì hết →
> Bắt đầu đến Project (Ban Chỉ Huy Công trường) → Cho `/fable-real invest` quy trình chi tiết -
> cách wire chi tiết - và checklist. Sau đó cho `/fable-clone` review lại."*

---

## Sơ đồ nguồn — trích trung thực (KHÔNG diễn giải thêm)

**6 lane dọc:** ① TENDER · ② CCM · ③ PROCUREMENT · ④ CEO · ⑤ **PROJECT (BCH dự án)** · ⑥ KÝ KẾT HỢP ĐỒNG

**21 bước đánh số** (số trong sơ đồ = thứ tự thời gian, không phải thứ tự lane):

| # | Lane | Nội dung |
|---|---|---|
| 1 | Procurement | Hoàn thiện hồ sơ mời thầu bước 1 |
| 2 | Procurement | Phát hành hồ sơ và giải đáp thắc mắc |
| 3 | Procurement | Nhận và kiểm tra hồ sơ báo giá (có thể làm rõ - update giá nếu chưa đủ phạm vi) |
| 4 | Procurement | Tổng hợp phương án báo giá, xếp hạng (so với NS) ⇒ chọn thầu phụ/NCC |
| 5 | CCM | CCM - Kiểm tra |
| **6** | **CEO** | **CEO - duyệt** ← 🟢 **ĐÃ XONG (module PE hiện tại, `PE.DaDuyet=7`)** |
| 7 | Procurement | Viết mail chuyển thông tin BCH/NTP/NCC phối hợp tiếp theo |
| **8** | **PROJECT** | **Duyệt mẫu + shopdrawing với TVGS** |
| **9** | **PROJECT** | **Tổng hợp hồ sơ (mẫu được duyệt + shopdrawing được duyệt) + so sánh giá — để đề xuất giá trị ký HĐ Thầu phụ/NCC** |
| 10 | Procurement | Kiểm tra - hồ sơ so sánh giá - xác nhận lại giá trị HĐ thầu phụ, chuyển CCM |
| 11 | CCM | CCM - Kiểm tra |
| 12 | CEO | 🔴 **CEO ký hoặc CCM - Đóng dấu approval** |
| 13 | Procurement | Gửi hợp đồng draft cho BCH kiểm tra bổ sung thông tin |
| **14** | **PROJECT** | **BCH kiểm tra - bổ sung thông tin HĐ thầu phụ (scope, tiến độ…) gửi lại Phòng cung ứng xác nhận trước khi gửi thầu phụ** |
| 15 | Procurement | Gửi HĐ cho thầu phụ - kiểm tra, đàm phán; thầu phụ chuyển về BCH dự án ký nháy gửi về công ty |
| **16** | **PROJECT** | **BCH nhận hợp đồng ký nháy chuyển về Phòng cung ứng** |
| 17 | Procurement + CCM | Nhận HĐ - chuyển sang trình ký (ký nháy hoặc ký chính) · **CCM - Kiểm tra, ký nháy** |
| 18 | CEO | 🔴 **CEO ký HĐ nếu giá trị > 5 tỷ** |
| 19 | Procurement | Nhận HĐ - chuyển HR - đóng dấu |
| 20 | CCM | CCM - scan lưu trữ |
| 21 | Procurement | Chuyển phát nhanh HĐ về cho Nhà thầu phụ |

**SLA ghi trên sơ đồ:** `10-14 ngày` (khoảng bước 1→4) · `3 ngày` (BCH gửi full thông tin bản vẽ/khối
lượng/tính toán chính xác để PMH soạn HĐ) · `7-10 ngày` (khoảng bước 13→18).

**Ghi chú phối hợp (chữ nhỏ trên sơ đồ, trích nguyên):**
- *Phối hợp BCH dự án:* cập nhật bổ sung danh sách thầu phụ nếu có · gom tóm tắt thông tin (tiến độ,
  scope, bản vẽ FC) · kiểm tra bổ sung thông tin khác trước khi Phòng cung ứng mời thầu · bố trí phối
  hợp khảo sát dự án · **BCH cũng phối hợp kiểm tra năng lực thầu phụ trong các gói thầu, hoặc loại bớt
  các đơn vị làm không đạt ở các dự án trước**
- *THAM VẤN:* lên danh sách mời thầu lại các đơn vị báo giá tender + bổ sung thêm
- *Nhánh lỗi:* "Nếu hồ sơ bị sai sót thiếu khối lượng, sai spec, hoặc thiếu phạm vi công việc - gửi mail
  - làm rõ xác nhận"
- *PHỐI HỢP (bước 13-14):* BCH gửi full thông tin bản vẽ, khối lượng, tính toán chính xác để PMH soạn HĐ
  gửi BCH **trong vòng 3 ngày**
- *Lane ⑥ KÝ KẾT HỢP ĐỒNG:* **Thầu phụ** — ký song song cùng thời điểm ký HĐ chủ đầu tư (hoặc ký trước,
  tùy dự án) · **Nhà cung cấp** — phải duyệt mẫu / xác nhận shopdrawing / khối lượng **mới** ký HĐ

---

---

## 🔴 OWNER CHỐT — TÊN NGHIỆP VỤ của khúc 7→12 (2026-07-27, anh nói trực tiếp)

> **anh:** *"Bước này là là bước **'đề xuất giá trị ký kết hợp đồng'**"*

Anh đặt tên cho **trọn khúc 7→12** mà invest gọi tạm là "PostAward" / "đất trắng". Đây **KHÔNG phải
đổi nhãn cho đẹp** — nó là **phát biểu MỤC ĐÍCH**, và kéo theo 3 hệ quả:

1. **Sản phẩm đầu ra của khúc này = MỘT CON SỐ có phê duyệt** — "giá trị ký kết HĐ được đề xuất".
   b.8-9 (duyệt mẫu + shopdrawing) không phải mục đích tự thân; chúng là **căn cứ** để ra con số đó.
   b.10-12 (PMH → CCM → CEO/CCM) là **chuỗi duyệt CHÍNH con số đó**.
2. **Nó là một PHIẾU, không phải một thư mục đính kèm** — vì nó có đối tượng được duyệt (giá trị đề xuất)
   + 3 trạm duyệt + người chốt. ⇒ ảnh hưởng trực tiếp **Q2** (xem dưới).
3. **Tên module + menu phải theo tên anh gọi**, không dùng "PostAward". UI 100% tiếng Việt (rule dự án).

### Hệ quả lên bộ câu hỏi đang treo — lead đọc lại, CHỜ anh xác nhận

| Câu | Trước khi có tên | Sau khi có tên |
|---|---|---|
| **Q2** kiến trúc khúc 8-12 | 3 phương án, reviewer chấm `THIEU-PHUONG-AN` + thiên vị | 🔻 Nhánh **(c) tối giản** (attachment + checklist trên PE, 10-12 xác nhận NGOÀI hệ thống) **yếu hẳn**: nếu vật được duyệt là *giá trị đề xuất* thì (c) đẩy đúng phần có phê duyệt ra ngoài hệ thống ⇒ mất vết duyệt của chính thứ quan trọng nhất. **CHƯA loại (c)** — chờ anh, vì nếu thực tế 10-12 vẫn ký giấy thì (c) còn lý |
| **Q6** giá vào HĐ = giá chốt b.12 hay SUM báo giá PE | đang mở | 🔻 **Gần như tự trả lời**: khúc này tồn tại ĐỂ đẻ ra giá trị ký kết ⇒ giá b.12 là giá đi vào HĐ, còn SUM-PE là **căn cứ đầu vào**. Nếu không phải vậy thì cả khúc 7→12 vô nghĩa. **Vẫn hỏi lại anh** để chốt, + cần chỗ lưu giá chốt & audit lệch PE-vs-chốt |
| **Q3** b.12 rẽ CEO vs CCM | đang mở | Giữ nguyên — nhưng nay rõ **cái được ký/đóng dấu là gì**: con số đề xuất, chưa phải HĐ |

🔸 **Lead KHÔNG tự chốt Q2/Q6 từ suy luận này** — chỉ ghi lại hướng nó nghiêng. Anh vẫn là người quyết.

---

## Grounding lead đo TRƯỚC khi phóng (đĩa, 2026-07-27 ~15:50)

| Đo | Kết quả |
|---|---|
| `PurchaseEvaluationPhase.DaDuyet = 7` | terminal thành công ⇒ **khớp lời anh "xong bước 6"** |
| Cầu PE → HĐ | **CÓ SẴN** `src/Backend/SolutionErp.Application/PurchaseEvaluations/CreateContractFromEvaluationFeatures.cs` |
| `grep -li "shopdrawing\|TVGS\|duyet mau"` trên `src/Backend` + 2 FE | 🔴 **0 hit** ⇒ bước 8-9 là **đất trắng hoàn toàn** |
| `ContractPhase` | **12 giá trị enum, 7 dòng `[LEGACY]`**; sống 5: `DangSoanThao=2` · `DaPhatHanh=9` · `ChoDuyet=10` · `TraLai=98` · `TuChoi=99` |

🔴 **Câu hỏi ranh giới mà invest PHẢI trả lời (đừng giả định hộ):** bước 13→21 là **dựng mới**, hay
**tái dùng module Contract đang có** (feature-complete)? Sơ đồ có lane "KÝ KẾT HỢP ĐỒNG" riêng, nhưng
repo đã có cả module HĐ + cầu PE→HĐ.

> ✅ **ĐÃ TRẢ LỜI** (invest §1, `sub-invest-bch-1.md`): **`LAI`** — bước **13→21 TÁI DÙNG** Contract V2
> (KHÔNG hồi sinh LEGACY enum) · bước **7→12 DỰNG MỚI** theo khuôn cookie-cutter V2 sẵn có.
> 🔑 Lý do quyết định nằm ở `ContractPhase.cs:3-13`: 7 phase vật-lý trung gian (góp ý/đàm phán/in ký/
> CCM/trình ký/đóng dấu) **bị CỐ Ý gỡ** post-Mig 21 + Session 17, thay bằng `ChoDuyet=10` + con-trỏ chạy
> trên workflow V2 admin-config. **Các "trạm" của bước 13→21 CHÍNH LÀ những phase đã bị gỡ** ⇒ hồi sinh
> enum = đi ngược quyết định kiến trúc S16-S17.

> 🔧 **Đính chính số của lead (invest bắt, máy xác nhận):** lead ghi "9 phase, 6 LEGACY" — đếm máy ra
> **12 giá trị / 7 `[LEGACY]`**. Sai cả hai số; lead neo nhầm vào `DaPhatHanh = 9` rồi đọc thành "9 phase".
> Kết luận ranh-giới KHÔNG đổi, nhưng số trong bảng trên đã sửa. *(Cùng lớp `meta-count` đã có tiền lệ:
> lead ĐO tốt nhưng ĐẾM sai — và lần này con-đo bắt được lead, đúng chiều vòng KIỂM sinh ra để phục vụ.)*

---

## taskList snapshot

```
1 task — SINGLE deep-pass (/fable-real = 1 lane, KHÔNG fan-out)
[1] investigator-codebase (engine-đắt Fable, effort max)
    → quy trình chi tiết (bước 7→21) + cách wire chi tiết vào codebase + checklist ĐO ĐƯỢC
    → propose-only; spec-file do LEAD ghi sau khi verify (H21 ① honest-note c)
```

### Wave 2 — `/fable-clone reviewer` ensemble 4 lane (anh chốt "review nền TRƯỚC, rồi anh trả lời")

> Đóng gói theo C2 (adap đợt-11): **≤3 file/lane** · **ép ghi khung rỗng lượt 1-2 TRƯỚC khi đọc** ·
> **nêu trần lượt ngay đầu prompt** (`maxTurns: 25` — đối chứng `wf_301d3943-144` 3/3 lane sạch).
> Label 4 thành-phần (C3) **neo tại đây** vì panel là ephemeral, không neo thì không tái lập được:

| Label (neo C3) | Lăng kính | File được đọc (≤3) |
|---|---|---|
| `Gate reviewer lens-verdict s156` | Tấn công verdict `LAI` — b.13→21 có THẬT tái dùng được không | `ContractPhase.cs` · `ContractWorkflowService.cs` · `CreateContractFromEvaluationFeatures.cs` |
| `Gate reviewer lens-fidelity s156` | §3 có trung thực với sơ đồ nguồn không — bịa bước / rơi bước / gán sai lane | `sub-invest-bch-1.md` · `run.md` |
| `Gate reviewer lens-q2 s156` | 🔴 **anh chỉ định**: stress-test cách ĐẶT VẤN ĐỀ Q2 — 3 phương án có vét cạn không, có mô tả công bằng không | `sub-invest-bch-1.md` · `ApprovalWorkflow.cs` · 1 tiền lệ WorkflowApps |
| `Gate reviewer lens-gaps s156` | Verify độc lập 4 lỗ "cột CÓ mà 0 ai đọc" — có thật hay dương giả | `ContractWorkflowService.cs` · `ApprovalWorkflow.cs` · `ContractAttachment.cs` |

**taskList snapshot (wave 2):** 4 lane · `role: reviewer` × 4 · `tier: 'opus'` explicit từng lane
(belt-and-suspenders — worker-tier-pin S124 đã che, nhưng lệnh này tự định nghĩa là "ensemble tier-2").
Lane RETURN-only; lead = single-writer, refute + synthesize ở P3/P4.

## Stages

- [x] S0 — lead đọc PDF, trích 21 bước + grounding đĩa 4 phép
- [x] S1 — scaffold run-folder + `run.md` (file này)
- [x] S2a — `/fable-real investigator-codebase` (Fable) lượt 1 → §0 verify · §1 verdict `LAI` · §2 chứng-cứ.
      🔴 **return MẤT TRẮNG (`#53`)** — cứu TRỌN từ đĩa (7.234 B), đúng lý do bắt ghi-đĩa-trong-lúc-làm.
- [x] S2b — SendMessage-resume (cố ý **cắt ngắn còn 2 mục** vì lượt 1 chết ở phần DÀI) → §3 bảng 15 bước
      9 cột · §6 **14 câu hỏi owner** (Q1-Q6 CHẶN THIẾT KẾ) · +§2-bis 6 chứng-cứ mới. **Return CLEAN**
      (header + END). Lead verify đĩa: **22.659 B**, §3 = 15 hàng, §6 = 14 câu, §4/§5 giữ `[PENDING]`
      đúng lệnh ⇒ **return khớp đĩa, không thổi phồng**.
      *(🔴 vết: bản đầu dòng S2 lead điền SẴN kết-quả cho lượt chạy CHƯA xảy ra — byte-count,
      `TOTAL=14 GAP`, verdict đều là số BỊA. Tự bắt ngay sau khi Write. Lớp `SHA-bịa`, xảy ra trong
      chính lượt vừa khoe "đo-trước-tin".)*
- [ ] S2c — §4 wire chi tiết + §5 checklist — 🔴 **CHẶN bởi Q1-Q6** (invest tự khai "trả lời khác ⇒
      wire khác"); nặng nhất **Q2 = kiến trúc khúc 8-12**, quyết nhánh nào thì §4/§5 khác hẳn nhánh kia
- [ ] S3 — lead verify + ghi `spec-bch-post-ceo-flow-27-07-2026.md` (3 heading H21)
- [ ] S4 — `/fable-clone review` ensemble chấm lại
- [ ] S5 — trình anh + chờ quyết
