# sub-investigator-codebase-5 — LENS: RUỘT 2 FILE FORM (.doc)

> Lane 5 / S194 / YC-032. Nguồn sự thật = 2 file `.doc` gốc ở `D:/Dropbox/CONG_VIEC/SOLUTION/FORM/`.
> CHỈ ĐỌC (owner đang mở 002.02 trong Word — có `~$` lock, 162 B). Trích bằng `antiword -m UTF-8.txt`, 0 stderr.

## 0. Khung

| | 002.02 "…trọn gói nhân công, **vật tư**" | 002.03 "…trọn gói nhân công, **thiết bị**" |
|---|---|---|
| Bytes | 516.608 | 591.360 |
| mtime | 2026-03-03 16:16 | 2026-03-19 09:28 |
| Dòng text trích | **346** | **538** |
| ĐIỀU trong THÂN | **5** | **6** |
| Dòng bảng (`^\|`) | 61 | 113 |
| Ảnh (`[pic]`) | 1 (logo bìa) | 1 (logo bìa) |
| Phụ lục rời | **0** | **4** (PL01→PL04) |

Lệnh tái lập (đổ ra scratchpad, KHÔNG ghi đè gốc):
```
antiword -m UTF-8.txt "D:/…/SOL-CCM-FO-002.02.v01 Hop dong tron goi nhan cong, vat tu.doc"  > f02.txt   # 346 dòng
antiword -m UTF-8.txt "D:/…/SOL-CCM-FO-002.03.v01 Hop dong trong goi nhan cong, thiet bi.doc" > f03.txt  # 538 dòng
```
Mọi `Lnn` dưới đây = số dòng trong file trích tương ứng (f02.txt / f03.txt).

🔴 **Phát hiện nền, chi phối cả 4 câu hỏi:** cả 2 file có **MỤC LỤC khai 22 dòng giống hệt nhau** (f02 L33-62 ≡ f03 L32-61), trong đó có `PHẦN 2 | ĐIỀU KIỆN CHUNG` + `ĐIỀU 1..17`. Nhưng **THÂN cả 2 file KHÔNG chứa PHẦN 2** — chỉ có câu tham chiếu *"Những nội dung không đề cập trong bảng tóm tắt các điều kiện cơ bản tham chiếu theo PHẦN 2: ĐIỀU KIỆN CHUNG của Hợp đồng"* (f02 L336-337, f03 L399-400). ⇒ **17 ĐIỀU kia là TÀI LIỆU RIÊNG ngoài 2 file này**, không có ở đây. Document-view dựng từ 2 file này chỉ phủ được phần "Hợp đồng chính + PHẦN 1 Điều kiện riêng (+ Phụ lục ở 002.03)". Nếu spec muốn "toàn bộ thân hợp đồng" thì **thiếu nguồn** cho PHẦN 2.

---

## A. Cấu trúc ĐIỀU — 002.02 (Nhân công + VẬT TƯ)

Theo thứ tự vật lý trong file. 🔴 antiword **mất số thứ tự ĐIỀU** ở thân (heading dùng auto-numbering của Word) — số dưới đây map theo MỤC LỤC + thứ tự xuất hiện, tiêu đề là chữ trích nguyên.

| # | Khối | Dòng | Tiêu đề (nguyên văn trích) |
|---|---|---|---|
| — | Trang bìa | L6-29 | `HỢP ĐỒNG THI CÔNG XÂY DỰNG` / `Số:` / `DỰ ÁN :` / `HẠNG MỤC :` / `ĐỊA ĐIỂM :` / khối Bên A cứng / `CÔNG TY TNHH ………` / `Địa chỉ ….` / `Tháng ...... năm 20.....` |
| — | `DANH MỤC HỢP ĐỒNG` | L30-62 | bảng mục lục 22 dòng (ĐIỀU 1-5 + PHẦN 1 + PHẦN 2 + ĐIỀU 1-17) |
| — | Header thân lặp lại | L74-78 | tiêu đề + `Số:` + bảng 2 dòng `\|Hạng mục\|:\|` `\|Địa điểm\|:\|` (⚠️ **KHÔNG có dòng "Dự án"** — 002.03 thì có) |
| — | Căn cứ pháp lý | L81-86 | 4 gạch đầu dòng CỨNG (BLDS 91/2015/QH13 · Luật XD 50/2014 + 62/2020 · NĐ 06/2021 · nhu cầu 2 Bên) |
| — | Khối chủ thể | L87-107 | `Hôm nay, ngày ..… tháng …... năm 20….` + BÊN A (cứng, trừ STK/người đại diện) + BÊN B (trống) + `Hợp đồng Gói thầu: …………….` |
| **1** | L109 | L109-146 | `HỒ SƠ HỢP ĐỒNG VÀ THỨ TỰ ƯU TIÊN` — 3 mục đánh số + 6 mục con (bảng tóm tắt, bản vẽ/shopdrawing, phạm vi công việc, tiêu chuẩn KT, bảng tổng hợp đơn giá, tài liệu khác) + 2 đoạn quy tắc ưu tiên |
| **2** | L149 | L149-203 | `ĐỊNH NGHĨA VÀ DIỄN GIẢI` — **12 định nghĩa**: Hợp đồng · Chủ đầu tư · Nhà thầu chính · Nhà thầu-Bên A · Nhà thầu-Bên B · Ngày · Công trình/công trường · Hợp đồng giao thầu chính · Thiết bị của Bên B · Công việc · Luật · Thay đổi |
| **3** | L206 | L206-251 | `GIÁ TRỊ HỢP ĐỒNG` — 3.1 tổng giá trị (gồm VAT) + tham chiếu bảng · 3.2 trọn gói, không điều chỉnh trượt giá · 3.3 phát sinh bằng Phụ lục · +2 khoản (không phát sinh nếu CĐT không chấp thuận) · **Bảng tổng hợp giá trị hợp đồng 7 cột** (L244-251) |
| **4** | L254 | L254-258 | `thời hạn hoàn thành công việc` (chữ thường trong file) — 1 câu: `Ngày hoàn thành toàn bộ các công việc trong hợp đồng là : ……./…../20……` |
| **5** | L261 | L261-271 | `ĐIỀU KHOẢN CHUNG` — 3 khoản CỨNG (cam kết tuân thủ · hiệu lực từ ngày ký · lập 02 bản) |
| — | Chữ ký | L276 | `ĐẠI DIỆN BÊN A   ĐẠI DIỆN BÊN B` |
| — | `PHẦN 1 — ĐIỀU KIỆN RIÊNG CỦA HỢP ĐỒNG` | L310-341 | `a)` **BẢNG TÓM TẮT CÁC ĐIỀU KIỆN CƠ BẢN 14 dòng** (L313-333) · `b)` bản vẽ/shopdrawing *(theo file đính kèm)* · `c)` tiêu chuẩn KT/quy trình thi công *(đính kèm)* · `d)` bảng tổng hợp giá trị HĐ *(đính kèm)* · `e)` các tài liệu khác |

**Bảng tóm tắt 14 dòng (002.02, L313-333)** — cột `NỘI DUNG` TRỐNG 100%:
`1 Nội dung công việc→ĐIỀU 2` · `2 Tiến độ thi công→ĐIỀU 3` · `3 Bảo lãnh thực hiện hợp đồng→ĐIỀU 8` · `4 Bảo lãnh tạm ứng→ĐIỀU 8` · `5 Tạm ứng→ĐIỀU 8` · `6 Thanh toán tạm→ĐIỀU 8` · `7 Thời gian làm hồ sơ thanh toán→ĐIỀU 8` · `8 Thời gian thanh toán kể từ ngày nhận đủ hồ sơ thanh toán hợp lệ→ĐIỀU 8` · `9 Tiền giữ lại→ĐIỀU 8` · `10 Thu hồi tạm ứng→ĐIỀU 8` · `11 Thanh toán quyết toán→ĐIỀU 8` · `12 Tỷ lệ giữ lại bảo hành→ĐIỀU 8` · `13 Thời gian bảo hành→ĐIỀU 12` · `14 Các điều khoản phạt, làm lại, khắc phục và sửa chữa sai sót/vi phạm→ĐIỀU 10`
⚠️ Cột `ĐIỀU` ở đây trỏ sang **PHẦN 2 (ĐIỀU 2/3/8/10/12)** — tức trỏ ra ngoài file. Đây là **liên kết chéo giữa bảng nhập và tài liệu không có trong file**.

---

## B. Cấu trúc ĐIỀU — 002.03 (Nhân công + THIẾT BỊ)

| # | Khối | Dòng | Tiêu đề / ghi chú |
|---|---|---|---|
| — | Trang bìa | L6-29 | **Y HỆT 002.02** (so từng dòng: L6-29 trùng khớp, kể cả `Tháng ...... năm 20.....`) |
| — | `DANH MỤC HỢP ĐỒNG` | L30-61 | **Y HỆT** mục lục 22 dòng của 002.02 |
| — | Header thân | L66-70 | tiêu đề + `Số:` + bảng **3 dòng**: `\|Dự án\|` `\|Hạng mục\|:\|` `\|Địa điểm\|:\|` ← **KHÁC** (002.02 chỉ 2 dòng) |
| — | Căn cứ pháp lý | L73-78 | y hệt 4 gạch đầu dòng |
| — | Khối chủ thể | L80-100 | y hệt (khác vặt: `chúng tôi gồm có:` vs `chúng tôi gồm:`) |
| **1** | L102 | L102-154 | `HỒ SƠ HỢP ĐỒNG VÀ THỨ TỰ ƯU TIÊN` — **PHÌNH TO**: 6 mục, trong đó mục 1 liệt kê **4 PHỤ LỤC đích danh** (PL01 Phạm vi công việc công tác chính · PL02 Phạm vi thi công/cung cấp vật tư thiết bị + đơn giá khoán · PL03 Quy định xử lý vi phạm ATLĐ · PL04 Quy định tập kết/bảo quản/lưu kho thiết bị + sử dụng sắt hộp); mục 2 hồ sơ thiết kế; 3 LOA; 4 Điều kiện riêng (5 mục con); 5 Điều kiện chung; **6 Hợp đồng chính giữa Bên A và Chủ Đầu Tư của Bên A** |
| **2** | L157 | L157-210 | `ĐỊNH NGHĨA VÀ DIỄN GIẢI` — **cùng 12 định nghĩa, cùng thứ tự, câu chữ gần như y hệt**; khác duy nhất ở độ dài dấu chấm lửng + `Công trình/công trường **là dự án** ……. – tại …….` (002.02: không có chữ "là dự án") |
| **3** | L213 | L213-295 | `GIÁ TRỊ HỢP ĐỒNG` — **PHÌNH TO GẤP ~2**: 4 khoản đầu ≈ 002.02 (khoản 4 thêm câu *"phải chốt phát sinh 1 tháng 1 lần…"*) + **khoản 5 `Bảng tổng hợp giá trị hợp đồng:` NHƯNG KHÔNG CÓ BẢNG** + **khoản 6 `Đơn giá trên đã bao gồm:`** (6 gạch đầu dòng: dọn vệ sinh · máy móc/dụng cụ cầm tay + nhiên liệu · vật tư phụ · chi phí m³/ca bơm bê tông · nhân công hoàn thành nghiệm thu kết cấu · máy móc thiết bị dụng cụ) + **khoản 7 `Bảo hộ lao động`** (Bên A cấp, khấu trừ 100% — 9 món: áo kỹ sư, giày joger kỹ sư, nón kỹ sư 3M, dây nón 3M, kính KY2221, áo công nhân, giày công nhân, nón công nhân, ủng mũi thép) + **khoản 8 `Tuân thủ Quy định về hao hụt`** (thép · bê tông · gạch lát · vữa xây-tô · tham chiếu định mức) |
| **4** | L297 | L297-301 | `thời hạn hoàn thành công việc` — y hệt (`…../……/20…..`) |
| **5** | L304 | L304-344 | 🔴 **`TRÁCH NHIỆM RỦI RO VỀ THUẾ` — CHỈ CÓ Ở 002.03**. 2 nhánh: *Trách nhiệm của Bên B* (3 khoản: cam kết chịu trách nhiệm pháp lý hoá đơn/GTGT khi có tên trong DS rủi ro thuế · giải quyết dứt điểm sai phạm + thông báo tiến trình · chịu mọi rủi ro bồi thường/truy thu GTGT-TNDN) + *Quyền hạn của Bên A* (2 khoản: giữ lại công nợ tương ứng số thuế rủi ro · thanh toán lại sau khi Bên B chứng minh đã xử lý) |
| **6** | L347 | L347-357 | `ĐIỀU KHOẢN CHUNG` — 3 khoản CỨNG, **y hệt** 002.02 |
| — | Chữ ký | L362 | `ĐẠI DIỆN BÊN A   ĐẠI DIỆN BÊN B` |
| — | `PHẦN 1 — ĐIỀU KIỆN RIÊNG` | L368-404 | `a)` **BẢNG TÓM TẮT 16 dòng** (L371-396) · b/c/d/e y hệt 002.02 |
| — | **PHỤ LỤC 01** | L406-423 | `PHẠM VI CÔNG VIỆC CÔNG TÁC CHÍNH` — bảng header **2 tầng** (`STT` \| `Diễn giải` \| `TÊN CÔNG TY`{`Vật tư`\|`Nhân công`} \| `Ghi chú`), **13 dòng trống** + cặp ký |
| — | **PHỤ LỤC 02** | L431-449 | `PHẠM VI THI CÔNG, PHẠM VI CUNG CẤP VẬT TƯ THIẾT BỊ VÀ ĐƠN GIÁ KHOÁN THI CÔNG` — bảng header **3 tầng** (`STT`\|`CÔNG VIỆC`\|`ĐVT`\|`TRÁCH NHIỆM THỰC HIỆN`{`BÊN A (SOLUTIONS)`\|`BÊN B (Đội thi công)`}\|`ĐƠN GIÁ KHOÁN`\|`GHI CHÚ`), **11 dòng trống** + cặp ký |
| — | **PHỤ LỤC 03** | L452-469 | `QUY ĐỊNH XỬ LÝ VI PHẠM AN TOÀN LAO ĐỘNG` — `I. CÁC HÀNH VI VI PHẠM NHẸ` (a/b/c: cảnh cáo → thẻ vàng → thẻ đỏ) · `II. CÁC HÀNH VI VI PHẠM NẶNG` (1. biện pháp xử lý = cấm làm việc tại công trường; **2. "Hành vi vi phạm và mức xử lý" — trống, không có bảng theo sau**) + cặp ký |
| — | **PHỤ LỤC 04** | L471-531 | `QUY ĐỊNH VIỆC TẬP KẾT, BẢO QUẢN, LƯU KHO THIẾT BỊ VÀ SỬ DỤNG SẮT HỘP` — `I` bảng quy cách tập kết (4 cột, **5 dòng CÓ SẴN nội dung**: thép hộp/tuýp-chống-chéo-ty-gông · giàn giáo-mâm · ván phủ film · kích U-kích chân · cùm-bát chuồn; cột `HÌNH ẢNH MINH HỌA` trống) · `II` bảng bốc dỡ/bảo quản/lưu kho (5 cột, 4 dòng: Sắt thép · Thiết bị điện · Máy móc thiết bị · Vật liệu nhựa — **STT nhảy 1,2,4,5 thiếu 3**, lỗi trong file gốc) · `III` quy định sắt hộp (bảng 7 ô module: 1,0/1,5/2,0/3,0/4,0/5,0/6,0 m + cấm cắt ngắn) · `IV` xử lý vi phạm (4 khoản) + cặp ký |

**Bảng tóm tắt 16 dòng (002.03, L371-396)** — cột `NỘI DUNG` TRỐNG 100%. Dòng 1-8 **trùng khít 002.02**. Từ dòng 9 lệch:
`9 Tạm ứng vật tư tập kết đến công trường→ĐIỀU 8` **(chỉ 002.03)** · `10 Thu hồi tạm ứng→ĐIỀU 8` · `11 Tiền giữ lại→ĐIỀU 8` · `12 Thanh toán quyết toán→ĐIỀU 8` · `13 Tỷ lệ giữ lại bảo hành→ĐIỀU 8` · `14 Thời hạn thông báo sai sót (defect)→(cột ĐIỀU TRỐNG)` **(chỉ 002.03)** · `15 Thời gian bảo hành→ĐIỀU 12` · `16 Các điều khoản phạt…→ĐIỀU 10`

---

## C. Ô cần điền

Ký hiệu chỗ trống trong 2 file: `:` bỏ trắng · `…` (ellipsis) · `....` · `20....` · ô bảng rỗng. Đo được **15 dòng** chứa `…`/`....` ở 002.02, **18 dòng** ở 002.03 (`grep -cE "…|\.\.\.\."`).

### C1 — Ô CHUNG cả 2 file (ứng viên pre-fill 3 tầng)

| # | Ô (nguyên văn) | Ở ĐIỀU / khối | f02 | f03 | Ghi chú |
|---|---|---|---|---|---|
| 1 | `Số:` | Bìa **+ lặp lại** đầu thân | L7, L75 | L7, L67 | mã HĐ — xuất hiện **2 lần**, phải bind cùng 1 nguồn |
| 2 | `DỰ ÁN :` | Bìa | L9 | L9 | |
| 3 | `HẠNG MỤC :` | Bìa | L10 | L10 | |
| 4 | `ĐỊA ĐIỂM :` | Bìa | L11 | L11 | |
| 5 | `CÔNG TY TNHH ………` | Bìa (Bên B) | L22 | L22 | tên NCC/thầu phụ |
| 6 | `Địa chỉ ….` | Bìa (Bên B) | L23 | L23 | |
| 7 | `Tháng ...... năm 20.....` | Bìa | L29 | L29 | tháng/năm ký |
| 8 | `\|Hạng mục\|:` `\|Địa điểm\|:` | Header thân | L77-78 | L69-70 | **lặp** ô 3+4 |
| 8b | `\|Dự án\|` | Header thân | — | **L68** | ⚠️ chỉ 002.03 |
| 9 | `Hôm nay, ngày ..… tháng …... năm 20….` | Mở đầu | L87 | L80 | ngày ký |
| 10 | `Số tài khoản : … tại Ngân hàng :` (Bên A) | Mở đầu | L95 | L88 | Bên A còn trống STK |
| 11 | `Người đại diện : Ông/Bà … Chức vụ:` (Bên A) | Mở đầu | L97 | L90 | |
| 12 | `BÊN NHẬN THẦU (Bên B): CÔNG TY ..........` | Mở đầu | L98 | L91 | |
| 13 | `Địa chỉ :` (Bên B) | Mở đầu | L99 | L92 | |
| 14 | `Điện thoại : … Fax :` (Bên B) | Mở đầu | L100 | L93 | 2 ô/1 dòng |
| 15 | `Số tài khoản :` (Bên B) | Mở đầu | L101 | L94 | |
| 16 | `Mã số thuế :` (Bên B) | Mở đầu | L102 | L95 | |
| 17 | `Người đại diện : Ông/Bà … Chức vụ :` (Bên B) | Mở đầu | L103 | L96 | |
| 18 | `Hợp đồng Gói thầu: …………….` | Mở đầu | L107 | L100 | tên gói thầu |
| 19 | `Chủ đầu tư là ……………………………….` | **ĐIỀU 2** | L159 | L167 | |
| 20 | `Bên B là CÔNG TY ................` | **ĐIỀU 2** | L173 | L181 | **lặp** ô 12 |
| 21 | `Công trình/công trường ……… – tại ………` | **ĐIỀU 2** | L179 | L187 | 2 ô/1 dòng; f03 thêm chữ "là dự án" |
| 22 | `Hợp đồng giao thầu chính … ký số ………… … ngày ….../….../20…….` | **ĐIỀU 2** | L182-183 | L190-191 | 2 ô (số HĐ chính + ngày); f03 chỉ `ngày ………` |
| 23 | `Tổng giá trị Hợp đồng … là ………….. VNĐ (Bằng chữ: …………... đồng)` | **ĐIỀU 3** | L209-211 | L217-218 | **2 ô: số + bằng chữ** |
| 24 | `Ngày hoàn thành toàn bộ … là : ……./…../20……` | **ĐIỀU 4** | L257-258 | L300-301 | |
| 25 | `ĐẠI DIỆN BÊN A / ĐẠI DIỆN BÊN B` (tên người ký) | Cuối thân | L276 | L362 | ô ký, trống dưới |
| 26 | **Bảng tóm tắt điều kiện cơ bản — cột `NỘI DUNG`** | PHẦN 1 a) | L313-333 (**14 ô**) | L371-396 (**16 ô**) | ⚠️ nội dung dòng lệch nhau từ #9 |

### C2 — Ô CHỈ CÓ ở 002.02 (Vật tư)

| # | Ô | ĐIỀU | Dòng |
|---|---|---|---|
| 27 | **Bảng tổng hợp giá trị hợp đồng** 7 cột `STT\|NỘI DUNG CÔNG VIỆC\|ĐƠN VỊ\|KHỐI LƯỢNG\|ĐƠN GIÁ\|THÀNH TIỀN\|GHI CHÚ` + 3 dòng tổng `TỔNG CỘNG` / `VAT 10%` / `TỔNG CỘNG (SAU THUẾ)` | **ĐIỀU 3** | L244-251 (4 dòng dữ liệu trống) |

### C3 — Ô CHỈ CÓ ở 002.03 (Thiết bị)

| # | Ô | ĐIỀU / Phụ lục | Dòng |
|---|---|---|---|
| 28 | `Bảng tổng hợp giá trị hợp đồng:` — **có tiêu đề, KHÔNG có bảng** | ĐIỀU 3 kh.5 | L247 |
| 29 | Đơn giá 9 món bảo hộ lao động — câu ghi *"theo đơn giá sau (đơn giá chưa bao gồm VAT)"* nhưng **9 gạch đầu dòng KHÔNG kèm số** | ĐIỀU 3 kh.7 | L274-286 |
| 30 | Bảng PL01 `Diễn giải / TÊN CÔNG TY (Vật tư \| Nhân công) / Ghi chú` | PL01 | L408-420 (13 dòng trống) |
| 31 | Bảng PL02 `CÔNG VIỆC / ĐVT / TRÁCH NHIỆM (Bên A \| Bên B) / ĐƠN GIÁ KHOÁN / GHI CHÚ` | PL02 | L434-445 (11 dòng trống) |
| 32 | `2. Hành vi vi phạm và mức xử lý` — heading trống, không có bảng | PL03 II | L466 |
| 33 | Cột `HÌNH ẢNH MINH HỌA` bảng quy cách tập kết (5 dòng) | PL04 I | L475-489 |
| 34 | Bảng PL04 II: cột `BỐC DỠ` / `BẢO QUẢN` / `LƯU KHO` × 4 loại thiết bị | PL04 II | L493-497 |
| 35 | 4 cặp `ĐẠI DIỆN BÊN A \| ĐẠI DIỆN BÊN B` cuối mỗi phụ lục | PL01-04 | L423, L449, L469, L531 |

**Tổng nhóm-ô:** 002.02 ≈ **27 nhóm** · 002.03 ≈ **34 nhóm** (26 chung + 8 riêng, trong đó 6 là bảng/phụ lục).

**Ô LẶP (bind 1 nguồn → nhiều vị trí render):** `Số:` ×2 · `Hạng mục` ×2 · `Địa điểm` ×2 · tên Bên B ×3 (bìa L22 + mở đầu L98 + ĐIỀU 2 L173) · `Dự án` ×2 ở f03 (bìa L9 + header L68). ⇒ document-view **phải** có cơ chế field-lặp, không thể 1-ô-1-chỗ.

---

## D. So sánh 2 file

**VERDICT: 1 khuôn XƯƠNG CHUNG + 1 lớp DELTA — KHÔNG phải 2 khuôn rời, cũng KHÔNG phải 1 khuôn y hệt.**

Bằng chứng ĐỒNG NHẤT (chép nguyên, khác nhau ở mức dấu cách):
- Trang bìa L6-29 ≡ L6-29 (7/7 ô giống)
- Mục lục 22 dòng ≡ (f02 L33-62 ≡ f03 L32-61) — kể cả cùng lỗi chính tả `THÔNG TIN VÀ THÔNG BÁOXỬ LÝ KHI CÓ TRANH CHẤP` (thiếu space, ĐIỀU 14) và `DƯỢC DUYỆT` (b, PHẦN 1)
- 4 căn cứ pháp lý ≡
- Khối BÊN A / BÊN B ≡ (khác 1 chữ: `gồm:` vs `gồm có:`)
- ĐIỀU 2 — 12 định nghĩa, cùng thứ tự, cùng câu chữ
- ĐIỀU 4 (thời hạn) ≡ · ĐIỀU KHOẢN CHUNG 3 khoản ≡ · PHẦN 1 mục b/c/d/e ≡
- Bảng tóm tắt điều kiện cơ bản: **dòng 1-8 trùng khít**

Bằng chứng KHÁC BIỆT:

| Trục | 002.02 (Vật tư) | 002.03 (Thiết bị) |
|---|---|---|
| Header thân | 2 dòng (Hạng mục, Địa điểm) | **3 dòng (+ Dự án)** |
| **ĐIỀU 1** Hồ sơ | 3 mục + 6 mục con, **0 phụ lục** | 6 mục, **liệt kê đích danh 4 Phụ lục** + "Hợp đồng chính giữa Bên A và CĐT" |
| **ĐIỀU 3** Giá trị | 3.1/3.2/3.3 + 2 khoản + **bảng 7 cột tại chỗ** | 8 khoản: 1-4 tương đương (+"chốt phát sinh 1 tháng/lần") **+ kh.5 tiêu đề bảng rỗng + kh.6 "Đơn giá đã bao gồm" 6 mục + kh.7 Bảo hộ lao động 9 món + kh.8 Hao hụt 5 mục** |
| **ĐIỀU thuế** | **KHÔNG CÓ** | 🔴 **`TRÁCH NHIỆM RỦI RO VỀ THUẾ`** (L304-344, 7 khoản) |
| Số ĐIỀU trong thân | **5** | **6** |
| Bảng tóm tắt PHẦN 1 | **14 dòng** | **16 dòng** (+`Tạm ứng vật tư tập kết đến công trường`, +`Thời hạn thông báo sai sót (defect)`; thứ tự Tiền giữ lại ⟂ Thu hồi tạm ứng **đảo nhau**) |
| Phụ lục | **0** | **4** (PL01 phạm vi công việc · PL02 phạm vi thi công + đơn giá khoán · PL03 ATLĐ · PL04 tập kết/lưu kho/sắt hộp) |

🔴 **Hệ quả cho lane-1 (tách menu):** hai bản dùng **cùng bộ ô định danh** (26/26 ô chung đều là ô nhận diện dự án/bên/giá trị/thời hạn) ⇒ **1 entity + 1 bộ trường lõi**, tách bằng **biến thể khuôn (variant) chứ không phải 2 module rời**. Nhưng delta **KHÔNG phải cosmetic**: 002.03 có thêm 1 ĐIỀU pháp lý, +2 dòng bảng điều kiện, +4 phụ lục có bảng ⇒ chọn "1 khuôn chung + phần khác biệt" thì phần khác biệt vẫn chiếm **~35% khối lượng render** của bản Thiết bị (192/538 dòng = riêng phụ lục + điều thuế).

⚠️ **Cảnh báo bất đối xứng đáng ngờ (KHÔNG kết luận, cần owner xác nhận):** bản Vật tư có bảng giá trị hợp đồng **nhúng trong ĐIỀU 3**, bản Thiết bị chỉ có **tiêu đề rỗng** ở đúng chỗ đó rồi đẩy bảng giá sang **PL02 (Đơn giá khoán)**. Đây có thể là chủ đích (khoán theo đơn giá) HOẶC là template thiếu bảng. Lane-3 lập bảng ô×nguồn cần chốt điểm này trước khi map nguồn giá.

---

## E. Bảng/biểu

**002.02 — 3 bảng** (61 dòng `^|`):
1. `DANH MỤC HỢP ĐỒNG` L33-62 — 2 cột, 22 dòng, **nội dung tĩnh** (mục lục) → render dễ, read-only.
2. Header thân L77-78 — 2 cột × 2 dòng, ô nhập → thực chất là 2 field, không cần table-editor.
3. **`Bảng tổng hợp giá trị hợp đồng` L244-251 — 7 cột × N dòng + 3 dòng tổng có merge ngang** (`|TỔNG CỘNG` chiếm 4 cột đầu). → **BẢNG NHẬP THẬT, khó nhất của 002.02**: cần thêm/xoá dòng, tính `THÀNH TIỀN = KL × ĐƠN GIÁ`, `TỔNG CỘNG`, `VAT 10%`, `TỔNG SAU THUẾ`.
4. (bán-bảng) Bảng tóm tắt PHẦN 1 L313-333 — 4 cột × 14 dòng, **3 cột đầu tĩnh, chỉ cột `NỘI DUNG` nhập** → render như list 14 textarea, không cần grid động.

**002.03 — 8 bảng** (113 dòng `^|`): 1-2 giống trên (mục lục + header 3 dòng); bảng tóm tắt PHẦN 1 16 dòng; **PL01** (header **merge 2 tầng** `TÊN CÔNG TY`→{Vật tư, Nhân công}, 13 dòng trống); **PL02** (header **merge 3 tầng** `TRÁCH NHIỆM THỰC HIỆN`→{BÊN A (SOLUTIONS), BÊN B (Đội thi công)}, 11 dòng trống); **PL04-I** (4 cột, 5 dòng nội dung tĩnh + cột ảnh); **PL04-II** (5 cột, 4 dòng nhập); **PL04-III** (bảng module sắt hộp 4×2 = 7 giá trị tĩnh).

**Xếp hạng khó render document-view:**
| Mức | Vật thể | Vì sao |
|---|---|---|
| 🔴 Khó | PL02 (header 3 tầng), PL01 (header 2 tầng) | colspan/rowspan lồng, thêm-xoá dòng, cột "trách nhiệm" kiểu tick A/B |
| 🔴 Khó | Bảng tổng hợp giá trị 002.02 | có công thức + dòng tổng merge + VAT |
| 🟡 Vừa | Bảng tóm tắt PHẦN 1 (14/16 dòng) | cột trái tĩnh, chỉ 1 cột nhập, nhưng dòng **khác nhau giữa 2 bản** ⇒ phải seed theo variant |
| 🟡 Vừa | PL04-I/II | ô ảnh (PL04-I cột `HÌNH ẢNH MINH HỌA`) — cần upload ảnh hoặc để trống |
| 🟢 Dễ | Mục lục, header thân, PL04-III | tĩnh/read-only |

**Ảnh:** chỉ **1 `[pic]`** mỗi file (logo bìa L2). Cột `HÌNH ẢNH MINH HỌA` của PL04-I **rỗng trong template** (không phải antiword nuốt — nếu có ảnh antiword đã in `[pic]` như logo).

---

## F. Chỗ trích lỗi (khai thật)

1. 🔴 **antiword cắt ký tự UTF-8 giữa chừng ở cuối dòng wrap** — đo bằng python decode: **f02 có đúng 3 dòng hỏng, f03 có đúng 5 dòng**. Tất cả đều là **byte dẫn đầu mồ côi**:
   - `f02 L21 tail=b'V\xc3'` → phải là **`Và`** (bìa, giữa 2 pháp nhân)
   - `f02 L222 tail=b'...Nh\xc3'` → **`Nhà`** (…"được Nhà thầu chính xác nhận")
   - `f02 L311 tail=b'...\xc4\x90\xe1\xbb\x92NG\xc2'` → `ĐIỀU KIỆN RIÊNG CỦA HỢP ĐỒNG` + 1 ký tự đuôi mất (byte `\xc2`, nghi nbsp/ký tự ẩn)
   - `f03 L21`, `f03 L225` (`Nhà`), `f03 L252` (`và`), `f03 L369` (như f02 L311), `f03 L464` (`nhà thầu`)
   ⇒ **KHÔNG dùng text antiword làm nguồn chép thẳng vào code**. Muốn lấy câu chữ chuẩn phải convert lại bằng Word/LibreOffice hoặc chép tay từng đoạn. Lỗi này **xác định được và ít** (8 dòng tổng), không lan rộng.
2. 🔴 **Mất số thứ tự ĐIỀU**: heading trong thân dùng auto-numbering của Word ⇒ antiword in ra **chỉ có tiêu đề, không có "ĐIỀU n"** (vd L109 `HỒ SƠ HỢP ĐỒNG VÀ THỨ TỰ ƯU TIÊN`, L206 `GIÁ TRỊ HỢP ĐỒNG`). Số ĐIỀU trong mục A/B là **suy từ mục lục + thứ tự vật lý**, KHÔNG phải trích trực tiếp. Riêng ĐIỀU 3 của 002.02 có sẵn `3.1/3.2/3.3` trong text nên khẳng định được.
3. 🔴 **Số khoản trong list bị auto-numbering đè sai**: f02 L235 `5 Hợp đồng không phát sinh…` và L242 `6 Bảng tổng hợp giá trị hợp đồng:` nằm trong ĐIỀU 3 nhưng đánh số 5/6 (tiếp nối list trước), trong khi 3 khoản đầu là 3.1/3.2/3.3. Tương tự f02 L119-134 (`2 Bảng tóm tắt…` → `7 Các tài liệu khác`) và f03 L110-140. ⇒ **con số đầu dòng trong text trích KHÔNG đáng tin**; cấu trúc phân cấp phải dựng lại tay khi làm document-view.
4. ⚠️ **`TRÁCH NHIỆM RỦI RO VỀ THUẾ` (f03 L304) KHÔNG có trong mục lục của chính f03** (mục lục chỉ khai ĐIỀU 1-5). ⇒ mục lục file gốc **stale so với thân của nó**. Không phải lỗi trích — đối chiếu được vì mục lục 2 file giống hệt nhau còn thân thì khác.
5. ⚠️ **Cả 2 file cùng in footer `Trang 5 | 6`** (f02 L343, f03 L535) dù độ dài text chênh 192 dòng ⇒ antiword chỉ in **một** footer (của section cuối), **KHÔNG suy ra được số trang thật**. Không dùng con số này.
6. ⚠️ **f03 PL04-II STT nhảy `1,2,4,5` (thiếu 3)** (L494-497) — nghi lỗi trong file gốc, nhưng cũng có thể antiword nuốt 1 dòng bảng. **Chưa xác minh được** bằng công cụ hiện có.
7. ⚠️ **f03 kh.7 Bảo hộ lao động nói "theo đơn giá sau" nhưng 9 món không kèm số** (L274-286) và **kh.5 "Bảng tổng hợp giá trị hợp đồng:" không có bảng** (L247) — chưa phân biệt được "template cố ý để trống" vs "antiword mất bảng". Control: antiword **có** in được bảng ở chỗ khác trong cùng file (PL01/PL02/PL04) ⇒ thước không hỏng ⇒ **nghiêng về template trống thật**, nhưng vẫn khai là chưa chắc.
8. ✅ **Không** thấy mojibake diện rộng, không có ký tự thay thế `U+FFFD` nào (`grep -c` = 0 cả 2 file). Tiếng Việt trích ra sạch ngoài 8 dòng ở mục 1.

---

## Ghi chú vận hành

- File này ghi ở đường dẫn theo TASK (`sub-investigator-codebase-**5**.md`); footer RUN-TRACE của khung spawn ghi `-4.md` — **lệch tên giữa 2 chỉ thị trong cùng lượt**, tôi theo TASK body (lane-5). Không tạo file `-4.md` để tránh 2 bản.
- 2 file `.doc` gốc **KHÔNG bị chạm**; text trích đổ ra scratchpad ngoài repo, không commit.
