# -*- coding: utf-8 -*-
"""Thêm khối 39 (Minh Hạnh — MH-289C) vào portal KPH + đồng bộ số vụ 38→39."""
import io, os, re, shutil, datetime

CL2 = r"C:\Claw 2\Bao cao - Hanh chinh\BAOCAOTONGHOP\HTML\KPH_TongHop_0508"
STAMP = datetime.datetime.now().strftime("%Y%m%d_%H%M")
P = os.path.join(CL2, "index.html")
shutil.copy2(P, P.replace(".html", f".bak_{STAMP}_truoc_minhhanh.html"))
print("backup index.html:", os.path.basename(P.replace('.html', f'.bak_{STAMP}_truoc_minhhanh.html')))

h = io.open(P, encoding="utf-8", newline="").read()
NL = "\r\n" if "\r\n" in h else "\n"
n_truoc = h.count('class="inc"')
BLOCK = """    <!-- ============ 39. minhhanh-mh289c ============ -->
    <div class="inc" id="minhhanh-mh289c" data-st="watch">
      <div class="inc-head"><span class="no">39</span><div class="tt"><h3>Minh Hạnh (CTC) — Mặt bàn MH-289C dính mút xốp (foam) khi xếp lên balet sau 12h (50–70%)</h3><span>Phiếu TT không phù hợp 14/09/2026 · Báo cáo Lê Đăng Duyên (Phụ lục 02-QT-KT-TTKT/01) · đang xử lý, chờ QC kiểm tra lại bóng</span></div><span class="chev">▾</span></div>
      <div class="inc-body">
        <div class="kv">
          <div><b>Nhà máy:</b> Minh Hạnh</div>
          <div><b>Sản phẩm/màu:</b> Mặt bàn MH-289C — khách hàng CTC (cùng lô 2 cont hàng 2 màu MH-7463C và MH-289C)</div>
        </div>
        <div class="sub">Phản ánh: “Hàng xuống chuyền sau 12h xếp lên Balet bị dính mút (foam)” · Ngày kiểm tra 14/09/2026 · Người báo cáo: Lê Đăng Duyên (Tổ trưởng Kỹ thuật Minh Hạnh)</div>
        <div class="txt"><ul>
          <li><b>I. Nội dung không phù hợp (Phiếu TT 14/09/2026):</b> khách hàng <b>CTC</b>, sản phẩm <b>BÀN màu MH-289C</b>, phân loại “Khác” — hàng xuống chuyền sau 12h xếp lên balet <b>bị dính mút xốp (foam)</b>. Quy trình kiểm tra tại khách hàng: (1) Lót màu PU MH-289C; (2) Lót màu NC MH-289C (2 lần); (3) Bóng NC 2605 KH 30%. <b>Kết quả: màu sắc và độ bóng ĐẠT, nhưng hàng vẫn bị dính mút xốp.</b> Sản phẩm đi kèm biên bản: <b>hũ lưu — SAI</b>; <b>gỗ — SAI</b>. Tổ trưởng Kỹ thuật ký: <b>Duyên</b>.</li>
          <li><b>II. Quy trình sản xuất &amp; diễn biến (Báo cáo Phụ lục 02-QT-KT-TTKT/01):</b> nhà máy đang sản xuất <b>2 cont hàng 2 màu MH-7463C, MH-289C</b> của khách CTC. QTSX: (1) Phun phụ gia ngăn dầu SBM; (2) Lót màu PU MH-7463C; (3) Lót màu NC MH-7463C (3 lần); (4) Bóng NC 2605 KH 30%. Trước khi lên chuyền, Kỹ thuật kiểm tra màu sắc + độ bóng và nhà máy xác nhận sản xuất đạt; <b>sản xuất trên chuyền ổn định</b>. Thành phẩm sau 12 giờ xuống chuyền, xếp lên balet để đóng gói → <b>phát hiện dính mút xốp (foam) khoảng 50% đến 70%</b>.</li>
          <li><b>III. Xử lý hiện trường:</b> số hàng bị dính mút, Kỹ thuật đã cho <b>chà nhám bóng lại, để khô rồi đóng gói</b>.</li>
          <li><b>IV. Đề nghị của nhà máy:</b> Phòng QC <b>kiểm tra lại Bóng NC 2605 KH 30%</b> để sản xuất cho công hàng tiếp theo vào <b>cuối tháng 9/2026</b>. Hiện kho Minh Hạnh còn tồn <b>320 kg Bóng NC 2605 KH 30% (MSSX 21/07/2026)</b>.</li>
          <li><b>V. Liên hệ nội bộ:</b> cùng cơ chế “khô bề mặt nhưng chưa khô trong màng khi xếp chồng có lót xốp” đã gặp ở <b>Minh Dương Chu Lai — NC MD 2153 30%</b> (hồ sơ #803, kiểm 17–18/08/2026: ráo mặt 17–20 phút so với chuẩn 10–12 phút; độ bóng 22–23% so với chuẩn 30 ± 5%) và các vụ dính foam/carton tại <b>Thịnh Việt</b> (TV 246 &amp; TV 299 A) và <b>Minh Phát</b> (MP 394).</li>
        </ul></div>
        <p class="src">Phiếu thông tin không phù hợp 14/09/2026 + Báo cáo Phụ lục 02-QT-KT-TTKT/01 của Lê Đăng Duyên (Cty Minh Hạnh) — đã ghi CSDL chính (su_co_kph #58) + CSDL KPH (hồ sơ #825). Hồ sơ gửi kèm chưa có ảnh hiện trường.</p>
      </div>
    </div>

"""
i = h.rindex("</section>")
j = i
while j > 0 and h[j - 1] in "\r\n \t":
    j -= 1
blk = BLOCK.replace("\n", NL).rstrip(NL)
new = h[:j] + NL + NL + blk + NL + NL + h[j:]
n_moi = n_truoc + 1
new, c1 = re.subn(r"(<small>)\d+(\s*vụ việc)", lambda m: m.group(1) + str(n_moi) + m.group(2), new)
new, c2 = re.subn(r"(badge\">\s*(?:🏭\s*)?)\d+(\s*vụ việc)", lambda m: m.group(1) + str(n_moi) + m.group(2), new)
new, c3 = re.subn(r"\(\d+ vụ — nhấp tiêu đề", f"({n_moi} vụ — nhấp tiêu đề", new)
print(f"sửa số vụ: logo {c1} · hero {c2} · tiêu đề mục {c3}")
assert c1 == 1 and c2 == 1 and c3 == 1, "⚠ số chỗ sửa không như mong đợi"
assert new.count('class="inc"') == n_moi
assert new.count("<div") == new.count("</div>")
assert new.count("<figure") == new.count("</figure>")
io.open(P, "w", encoding="utf-8", newline="").write(new)

chk = io.open(P, encoding="utf-8").read()
print("sau:", chk.count('class="inc"'), "khối | số vụ:", re.findall(r"(\d+)\s*vụ việc", chk), re.findall(r"\((\d+) vụ —", chk),
      "| có khối mới:", 'id="minhhanh-mh289c"' in chk, "| div cân bằng:", chk.count("<div") == chk.count("</div>"))
