wal: flush 20260814T0142

This commit is contained in:
pqhuy1987
2026-08-14 01:42:18 +07:00
parent 416ba9a777
commit 7cf5dcfd0b
5 changed files with 146 additions and 1 deletions

View File

@ -22,7 +22,11 @@ chain:
[!] 3 finding CRITICAL đổi kế hoạch: R2-F4 W2⟂W3 TRANH cùng cột DraftData (phải chốt schemaVersion TRƯỚC W2) · R3-F6 chuỗi VAT của spec SAI (ChuaVat là cột chết ⇒ câu (100) hỏi sai khuôn, ĐÃ đính chính với anh) · R3-F7 bảng giá Σ PeReferenceAmount ⟂ ô Giá trị Σ ApprovedAmount ⇒ HĐ tự mâu thuẫn tiền, Dev 2/2 lệch
[!] R3-F5b: 5/8 ô master IN TRẮNG (TK 83% · người đại diện 83% · chủ đầu tư 93% · địa điểm 93% rỗng) ⇒ pre-fill chạy đúng mà ra HĐ trống — lớp "cơ-chế đúng, dữ-liệu không có" lần thứ N
[!] 5 câu CHỜ ANH cho YC-032 — (97) 12 điều thiếu · (98) in bằng gì · (99) khoá · (100) VAT ĐÃ SỬA KHUÔN thành hỏi quy-ước-nhập-liệu · (101) đánh số menu
[ ] sau r4: lead vá spec theo 28+ finding rồi mới fan-out Opus 5 MAX (CẤM giao thợ bản spec chưa vá — acceptance 2/5 hỏng)
[x] owner phán 5/5 câu (YC-033 + YC-034): (97) PHẦN 2 = 002.04 đặt CUỐI · (99) khoá BẤT-KHẢ-ĐẢO, quy trình duyệt để sau · (100) chưa VAT, để sau · (101) uỷ quyền lead → 01A/01B giữ 02-07 · (102) nhân viên upload, quy trình để sau
[x] lead đo lại 002.04 bằng thước ĐÃ VÁ (control-dương 3/3 CO sau khi sửa lỗi nối-mảnh-bằng-dấu-cách): vẫn 5 điều/40 đoạn/6.929 chữ, 12 tên điều 0 hit ⇒ chặn gỡ bằng THU HẸP PHẠM VI không phải tìm ra đủ
[x] spec §⑥ bản thi công: lược đồ DraftData {schemaVersion,kind,body,paymentTerms} gỡ B-1 · 4 nợ đã-biết khai rõ · G1-G5 thay đồ thị cũ
[!] wf: wf_4ce77f41-0ea G1 3 lane (impl-be tách 17 site · impl-fe 4 bản TYPE_CODE_TO_INT + 2 mirror · office convert 2 .doc→.docx + bản chữ chuẩn) — chết giữa ⇒ /tiep §4 theo sub-*.md
[ ] sau G1: G2 document-view (PHẦN 1 riêng ×2 + PHẦN 2 chung cuối) → G3 pre-fill → G4 in+khoá → G5 verify/deploy
[ ] sau review: lead tổng hợp → fan-out Opus 5 MAX thi công theo wave
[!] 7 câu (90)-(96) CHỜ CHỦ DỰ ÁN — 0 đáp; nhà CANONICAL = docs/HANDOFF.md khối (90)-(96)
[!] residual-write 2 vai/2 phiên (score-counter S192 · score-count-auditor S189+S192) — GIỮ+KHAI theo LT3 bậc-2, chờ owner lật

View File

@ -218,3 +218,49 @@ B-4 (authz đính kèm) ──→ W5
| (100) VAT | ❌ **SAI KHUÔN** (S-4) | → *"giá nhập ở Duyệt NCC là **đã gồm** hay **chưa gồm** VAT?"* |
| (101) đánh số menu | ✅ giữ | giữ nguyên |
| — | 🔴 **QUÊN HỎI** | **(102)** *"**ai** được bấm upload bản cứng?"* — quyết cả authz (B-4) lẫn cửa GĐ4 |
---
## ⑥ BẢN THI CÔNG — sau khi owner phán 5/5 câu (`YC-033` + `YC-034`, 2026-08-14)
### ⑥.a — 5 phán quyết của owner
| Câu | Owner chốt | Hệ quả thi công |
|---|---|---|
| **(97)** PHẦN 2 | *"à có nhé, file này"*`002.04`; *"cho nó phần cuối là đc"* | document-view = **PHẦN 1 riêng** (`002.02`/`002.03`) **+ PHẦN 2 gắn CUỐI** (`002.04`, **dùng chung 2 loại**). 🔴 Đo lại bằng thước đã vá: `002.04` = **5 điều**, KHÔNG phải 17 ⇒ chặn gỡ bằng **thu hẹp phạm vi**, không phải bằng tìm ra 12 điều |
| **(99)** khoá | *"upload có quy trình duyệt riêng → duyệt nhanh, nhưng đã chốt rồi ko sửa đc"* | Khoá = **BẤT-KHẢ-ĐẢO**, không phải cờ 2 chiều. Quy trình duyệt bản cứng = **để sau** (kèm `(102)`) ⇒ lượt này chỉ dựng **chốt-cứng** |
| **(100)** VAT | *"hiện là chưa VAT nhưng chỗ này để sau"* | KHÔNG dựng xử-lý VAT. Ghi **nợ đã-biết**: thân HĐ ghi *"bao gồm VAT"* mà số đang chưa VAT |
| **(101)** đánh số menu | *"Tùy mày"* | Lead chọn **`01A.` / `01B.`**, giữ nguyên `02.``07.` (đánh lại 01→09 sẽ đổi số 6 menu người dùng đang quen; bộ số này đã sửa theo UAT anh Kiệt @S159) |
| **(102)** ai upload | *"cho nhân viên → có quy trình riêng nhưng để sau"* | KHÔNG dựng phân quyền upload lượt này. Lỗ `B-4` (endpoint 0 policy/0 ownership) **giữ KHAI là nợ đang mở** |
### ⑥.b — Lead chốt lược đồ `DraftData` (gỡ B-1, tiền đề của W2+W3)
Dev đang **0 row** `DraftData` ⇒ thời điểm rẻ nhất để đặt bao ngoài. Chốt:
```jsonc
{ "schemaVersion": 1,
"kind": "HD-TP-VT" | "HD-TP-TB", // biết thân nào để render
"body": { "<fieldKey>": "<giá trị ô trong thân HĐ>" }, // W2 sở hữu
"paymentTerms": { } // W3 sở hữu — chỗ pe.PaymentTerms đổ về
}
```
⇒ W2 và W3 **hết tranh cột**: mỗi wave sở hữu một nhánh, đọc/ghi qua nhánh của mình. `schemaVersion` để đổi thân về sau không phải đoán.
### ⑥.c — Nợ đã-biết (owner đã thấy, CỐ Ý chưa làm — KHÔNG phải bỏ sót)
1. **VAT** — thân ghi "bao gồm VAT", số chưa VAT · owner: để sau.
2. **Con trỏ chết** — bảng tóm tắt PHẦN 1 trỏ *"xem ĐIỀU 8 / ĐIỀU 12"* của PHẦN 2, mà `002.04` **không có 2 điều đó** · owner chấp nhận đi tiếp.
3. **Authz đính kèm** — upload/xoá 0 policy · 0 ownership · owner: quy trình riêng để sau.
4. **12 điều** của PHẦN 2 theo mục lục · phạm vi thu hẹp còn 5 điều của `002.04`.
### ⑥.d — Thứ tự thi công CHỐT (thay đồ thị §⑤.f)
| Nhóm | Việc | Tiền đề |
|---|---|---|
| **G1** *(chạy ngay, song song thật)* | **W1** tách 2 loại (**17 site**, không phải 13) · **⑤.c-1** convert 2 `.doc``.docx` + chép `wwwroot/templates` + `UPDATE IsActive=1` + **B-5**`ContractTemplates.ContractType` sang 8/9 | 0 |
| **G2** | **W2** document-view (PHẦN 1 riêng ×2 + PHẦN 2 chung ở cuối) + gỡ `draftData:null` **4/4 site** + `MaximumLength` cho `DraftData` | G1 · ⑥.b |
| **G3** | **W3** pre-fill 13 ô + đổi C4 sang `pe.DiaDiem` + vá regression `PaymentTerms` + **B-2** chốt bảng giá đọc số nào để Σ khớp `GiaTri` | G2 |
| **G4** | **W4** print CSS · **W5** khoá bất-khả-đảo (`SealedAt` + cấm xoá/thay file sau chốt) | G2 · G3 |
| **G5** | **W6** reviewer + style ×2 + cicd + runtime-verify | tất cả |
🔴 **Acceptance đã viết lại** theo §⑤.d — đặc biệt: W1 **KHÔNG** dùng "697 PASS giữ nguyên" (sai by-construction) mà **"697+k, khai k, chỉ được sửa `AwV2DesignerMenuKeyTests` 3 method neo số, cấm xoá/skip"**; W5 **KHÔNG** dùng "upload → sửa ⇒ 409" (PASS sẵn) mà **"xoá file bản cứng ⇒ KHÔNG mở khoá lại"**.

View File

@ -0,0 +1,37 @@
# sub-implementer-backend-1 — G1-BE: tách `01. HĐ Thầu phụ` thành 2 loại (VT / TB)
Run: `2026-08-13-S194-yc032-hd-thauphu-2form` · lane G1-BE · agent `implementer-backend`
## 0. Khung
Tên chốt (dùng chung 3 lane, KHÔNG tự đặt khác):
| Member | Value | typeCode | Mã họ | Nhãn VN | Form |
|---|---|---|---|---|---|
| `ContractType.HopDongThauPhuVatTu` | 8 | `ThauPhuVatTu` | `HD-TP-VT` | `01A. HĐ Thầu phụ (Nhân công & Vật tư)` | `SOL-CCM-FO-002.02` |
| `ContractType.HopDongThauPhuThietBi` | 9 | `ThauPhuThietBi` | `HD-TP-TB` | `01B. HĐ Thầu phụ (Nhân công & Thiết bị)` | `SOL-CCM-FO-002.03` |
| `ContractType.HopDongThauPhu` | 1 | `ThauPhu` | `HD-TP` | `01. HĐ Thầu phụ` (LEGACY, giữ nguyên) | — |
Ràng buộc: 0 migration (2 loại mới DÙNG CHUNG bảng `ThauPhuDetails`) · CẤM đụng FE · CẤM đụng `ContractTemplates` seed.
_(đang thi công — append sau mỗi file)_
## 1. Site đã sửa (bảng file:line)
_(pending)_
## 2. Nhánh câm đã bịt
_(pending)_
## 3. Seed menu + workflow
_(pending)_
## 4. Acceptance (lệnh + số thật)
_(pending)_
## 5. Chưa làm được / rủi ro
_(pending)_

View File

@ -0,0 +1,26 @@
# sub-implementer-frontend-1 — G1-FE: 2 loai HD Thau phu moi (ThauPhuVatTu=8 / ThauPhuThietBi=9)
Run: 2026-08-13-S194-yc032-hd-thauphu-2form · lane: implementer-frontend · turn-cap ~35
## 0. Khung
- [ ] Doc spec §6 (ban thi cong) + §5 (va sau review)
- [ ] Grep dem site that (TYPE_CODE_TO_INT / HD-* family / ContractDetailsTab / ContractCreatePage)
- [ ] Sua site
- [ ] Acceptance: npm run build x2 + sha256 pair + grep dem entry
## 1. Site da sua
(dang do dia)
## 2. Dem entry tung ban
(chua do)
## 3. Acceptance (lenh + so)
(chua chay)
## 4. Ca am / rui ro con lai
(chua viet)

View File

@ -0,0 +1,32 @@
# sub-office-document-2 — G1 YC-032 · Đưa 2 mẫu HĐ Thầu phụ vào hệ + bản chữ chuẩn
> Run: `2026-08-13-S194-yc032-hd-thauphu-2form` · Vai: office-document · Ngày: 2026-08-14
> Trạng thái: 🟡 ĐANG CHẠY (khung rỗng, append dần)
## 0. Khung
_(đang điền)_
## A1. Convert + đặt file
_(đang điền)_
## A2. Cờ IsActive
_(đang điền)_
## A3. Chất lượng convert
_(đang điền)_
## B. Bản chữ chuẩn (3 file)
_(đang điền)_
## C. Acceptance + control-dương
_(đang điền)_
## D. Trích lỗi / chưa làm được
_(đang điền)_