# -*- coding: utf-8 -*-
"""Bổ sung báo cáo Lộc QC 16/09 (kiểm tra màu KH 3900 tại Kim Huy) vào khối 17 + 2 CSDL."""
import io, os, re, shutil, sqlite3, datetime

CL2 = r"C:\Claw 2\Bao cao - Hanh chinh\BAOCAOTONGHOP\HTML\KPH_TongHop_0508"
P = os.path.join(CL2, "index.html")
STAMP = datetime.datetime.now().strftime("%Y%m%d_%H%M")
h = io.open(P, encoding="utf-8", newline="").read()
shutil.copy2(P, P.replace(".html", f".bak_{STAMP}_truoc_locqc_1609.html"))
NL = "\r\n" if "\r\n" in h else "\n"
n = lambda s: s.replace("\n", NL)

PANEL = n("""        <div class="sub">📎 Bổ sung 16/09/2026 — BÁO CÁO KIỂM TRA MÀU KH 3900 tại Cty Kim Huy (Bùi Thiên Lộc — Lộc QC)</div>
        <div class="txt"><ul>
          <li><b>Bối cảnh:</b> kiểm tra màu <b>KH 3900</b> tại Công ty Kim Huy — sản phẩm <b>tủ 5 ngăn, tủ 2 ngăn, số lượng ~3 cont</b> của khách hàng <b>CRM</b>, theo quy trình đang sản xuất trên chuyền (báo cáo ngày 16/09).</li>
          <li><b>Quy trình đang chạy:</b> (1) Mặt ván PB, MDF cán (<b>BTUV 2703</b> → cán lót màu <b>KH Black 1808</b>) tại Cty Kim Phong, sau <b>&gt; 3 ngày</b> chuyển về Cty Kim Huy; gỗ thông (đố, diêm) phun lót màu <b>KH 3900</b> 1 pasth tại Cty Kim Huy sau <b>&gt; 24 giờ</b> → lắp ráp thành sản phẩm, lên chuyền pallet trám trét xử lý lỗi → chà nhám <b>#320</b> toàn sản phẩm.
            (2) Lót NC <b>KH 0204</b> độ nhớt <b>16 giây</b> phun cạnh hộc kéo → Lót NC <b>KH 0204</b> độ nhớt <b>12 giây</b> phun toàn sản phẩm, sau <b>2 giờ 50 → 3 giờ</b> (có 2 lần sấy <b>45 °C</b>, thời gian sấy <b>~ 1,5 giờ</b>) phun <b>1 pasth</b> → trám trét lỗi phôi → chà nhám #320.
            (3) Lót NC KH 0204 độ nhớt <b>[báo cáo để trống]</b> giây tại vị trí đố, diêm → sau <b>10 phút</b> phun lót màu NC <b>KH 3900</b> toàn sản phẩm (1 pasth), sau <b>50–55 phút</b> (có sấy 45 °C, thời gian <b>25–30 phút</b>) → kiểm tra xử lý lỗi cục bộ → chà nhám, trám trét cục bộ → phun lót NC KH 0204 / lót màu KH 3900 cục bộ → sau <b>10–15 phút</b>.
            (4) Bóng NC <b>2605 KH 35%</b> độ nhớt <b>10″50</b> phun toàn sản phẩm (1 pasth), qua chuyền sản xuất <b>~ 5 giờ</b> (có <b>4 lần</b> qua buồng sấy <b>45 °C</b> khoảng <b>2 giờ</b>). QC nhà máy kiểm tra: sản phẩm lỗi hạ xuống chuyền chuyển qua khu vực tái chế, sản phẩm đạt thì đóng gói trên chuyền.</li>
          <li><b>Kiểm tra chất lượng sản phẩm sau 18 giờ:</b> Màu sắc (so với mẫu gốc): <b>[báo cáo để trống]</b> · Độ bóng (đo bằng máy): <b>[báo cáo để trống]</b> — <i>yêu cầu 40 ± 5%</i> · Độ phủ: cảm quan so với mẫu gốc · Màng sơn: <b>[báo cáo để trống]</b> · Độ bám dính: giật băng keo, cắt ca rô giật băng keo · Kết luận: <b>[báo cáo để trống]</b>.</li>
          <li><b>Ghi chú của báo cáo:</b> lót cán trục <b>KH Black 1808</b> và lót màu <b>KH 3900</b> đã <b>điều chỉnh công thức</b> và đưa vào sản xuất sử dụng <b>lót NC KH 0204</b> (ở bước 2, độ nhớt <b>16 giây</b>) — chất lượng sản phẩm sản xuất hoàn thiện <b>ĐẠT</b>, đã làm báo cáo ngày <b>29/08/2026</b>. Hôm nay điều chỉnh <b>độ nhớt lót NC KH 0204 về 12 giây</b> ở bước 2 trên sản phẩm hoàn thiện.</li>
          <li><b>Đề xuất:</b> Kỹ thuật giám sát và hướng dẫn công nhân phun <b>thao tác chuẩn (chậm và đều)</b> để đảm bảo <b>độ dày màng sơn đồng đều</b> trên sản phẩm.</li>
        </ul></div>
        <div class="callout warn"><b class="t">⚠️ Cần bổ sung để chốt vụ</b><ul>
          <li>Báo cáo 16/09 để <b>TRỐNG 4 ô kết quả</b> (màu sắc, độ bóng, màng sơn, kết luận) — chưa có cơ sở để kết luận đạt/không đạt cho lô 3 cont khách CRM; đề nghị Lộc QC bổ sung số đo và kết luận.</li>
          <li>Báo cáo <b>29/08/2026</b> (mốc "điều chỉnh công thức — lót NC KH 0204 16 giây, sản phẩm hoàn thiện đạt") được nhắc trong ghi chú nhưng <b>chưa có trên portal</b> — đề nghị gửi để bổ sung vào chuỗi KH 3900.</li>
          <li>Đề nghị đối chiếu mã bóng: báo cáo ghi <b>Bóng NC 2605 KH 35%</b>, còn các báo cáo trước của cùng chuỗi dùng <b>KH 401</b> (kiểm dấu tay 24/08) — xác nhận lại mã đang chạy.</li>
        </ul></div>
        <p class="src">Báo cáo Lộc QC 16/09/2026 — kiểm tra màu KH 3900 tại Cty Kim Huy (tủ 5 ngăn/tủ 2 ngăn, ~3 cont, khách CRM)</p>
""")

i_blk = h.find('id="kimhuy"')
assert i_blk > 0, "không tìm thấy khối kimhuy"
i_src = h.find('<p class="src">', i_blk)
assert i_src > 0
i_end_blk = h.find('<!-- ============', i_blk + 10)
assert i_src < i_end_blk, "p.src không thuộc khối kimhuy"
h2 = h[:i_src] + PANEL + "        " + h[i_src:]

assert h2.count('class="inc"') == 39
assert h2.count("<div") == h2.count("</div>"), (h2.count("<div"), h2.count("</div>"))
assert h2.count("<figure") == h2.count("</figure>")
io.open(P, "w", encoding="utf-8", newline="").write(h2)

# kiểm panel nằm TRONG khối kimhuy
from bs4 import BeautifulSoup
soup = BeautifulSoup(io.open(P, encoding="utf-8").read(), "html.parser")
blk = [x for x in soup.select("div.inc") if x.get("id") == "kimhuy"][0]
txt = blk.get_text(" ", strip=True)
print("panel trong khối kimhuy:", "Bổ sung 16/09/2026" in txt, "| có 4 bước quy trình:", "10″50" in txt or "10\u203350" in txt,
      "| có callout trống:", "TRỐNG 4 ô kết quả" in txt)
print("portal:", h2.count('class="inc"'), "khối | div cân bằng:", h2.count("<div") == h2.count("</div>"), "| figure:", h2.count("<figure"))

# ---------- CSDL ----------
MO = (" — BỔ SUNG 16/09/2026 — BÁO CÁO KIỂM TRA MÀU KH 3900 TẠI CTY KIM HUY (Bùi Thiên Lộc): sản phẩm tủ 5 ngăn, tủ 2 ngăn ~3 cont khách hàng CRM. "
      "Quy trình đang chạy: mặt ván PB/MDF cán BTUV 2703 → cán lót màu KH Black 1808 tại Cty Kim Phong sau >3 ngày chuyển về Kim Huy; gỗ thông (đố, diêm) phun lót màu KH 3900 1 pasth sau >24 giờ; "
      "lắp ráp → chà nhám #320; Lót NC KH 0204 độ nhớt 16 giây phun cạnh hộc kéo → 12 giây phun toàn sản phẩm sau 2 giờ 50–3 giờ (2 lần sấy 45 °C ~1,5 giờ) 1 pasth → trám trét → chà nhám #320; "
      "Lót NC KH 0204 (độ nhớt báo cáo để trống) tại vị trí đố, diêm → sau 10 phút phun lót màu NC KH 3900 toàn sản phẩm 1 pasth, sau 50–55 phút (sấy 45 °C 25–30 phút) → xử lý lỗi cục bộ → phun lại cục bộ → 10–15 phút; "
      "Bóng NC 2605 KH 35% độ nhớt 10\"50 phun 1 pasth, qua chuyền ~5 giờ (4 lần qua buồng sấy 45 °C ~2 giờ). "
      "Kiểm tra chất lượng sau 18 giờ: màu sắc, độ bóng (yêu cầu 40 ± 5%), màng sơn, kết luận — báo cáo ĐỂ TRỐNG; độ phủ cảm quan so mẫu gốc; độ bám dính giật băng keo + cắt ca rô. "
      "Ghi chú: lót cán trục KH Black 1808 và lót màu KH 3900 đã điều chỉnh công thức, dùng lót NC KH 0204 (bước 2, 16 giây) — sản phẩm hoàn thiện ĐẠT, có báo cáo 29/08/2026; hôm nay điều chỉnh độ nhớt về 12 giây. "
      "Đề xuất: Kỹ thuật giám sát, hướng dẫn công nhân phun thao tác chuẩn (chậm và đều) để độ dày màng sơn đồng đều.")

k = sqlite3.connect(r"C:\Claw\Khieu Nai KHach Hang\btchem_kph.db", timeout=90, isolation_level=None)
kc = k.cursor(); kc.execute("BEGIN IMMEDIATE")
kc.execute("UPDATE ho_so_kph SET mo_ta = mo_ta || ?, cap_nhat = cap_nhat || ? WHERE id = 799",
           (MO, " | 16/09/2026 — Bổ sung báo cáo Lộc QC 16/09/2026 (kiểm tra màu KH 3900 tại Kim Huy, ~3 cont khách CRM) vào khối 17 portal; lưu ý báo cáo để trống 4 ô kết quả + thiếu báo cáo 29/08/2026 — Phòng Kỹ thuật"))
kc.execute("COMMIT")
print("hồ sơ #799 mo_ta:", kc.execute("SELECT length(mo_ta), length(cap_nhat) FROM ho_so_kph WHERE id=799").fetchone())
k.close()

c = sqlite3.connect(r"C:\c\deepseek-harness\claw2-db\btchem.db", timeout=90, isolation_level=None)
cc = c.cursor(); cc.execute("BEGIN IMMEDIATE")
cc.execute("UPDATE su_co_kph SET mo_ta_su_co = mo_ta_su_co || ? WHERE id = 28", (MO,))
cc.execute("COMMIT")
print("su_co_kph #28 mo_ta:", cc.execute("SELECT length(mo_ta_su_co) FROM su_co_kph WHERE id=28").fetchone())
c.close()
