# -*- coding: utf-8 -*-
"""Chèn ảnh bản báo cáo Phụ lục 02 (Minh Hạnh) vào khối 39 portal + ghi mốc vào 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")
IMG = os.path.join(CL2, "assets", "images")
SRC_IMG = r"C:\Users\admin\AppData\Local\hermes\cache\images\img_0f7b7b508420.jpg"
TEN_ANH = "minhhanh_mh289c_baocao_phuluc02_1409.jpg"
STAMP = datetime.datetime.now().strftime("%Y%m%d_%H%M")

# 1) copy ảnh (giữ nguyên file gốc)
shutil.copy2(SRC_IMG, os.path.join(IMG, TEN_ANH))
print("ảnh:", TEN_ANH, os.path.getsize(os.path.join(IMG, TEN_ANH)) // 1024, "KB")

# 2) backup + chèn figure vào khối 39 (trước <p class="src">)
h = io.open(P, encoding="utf-8", newline="").read()
shutil.copy2(P, P.replace(".html", f".bak_{STAMP}_truoc_anh_minhhanh.html"))
NL = "\r\n" if "\r\n" in h else "\n"
GAL = ("""<div class="gallery" style="grid-template-columns:1fr;max-width:520px">""" + NL +
       """          <figure class="fig"><img src="assets/images/""" + TEN_ANH +
       """" alt="Bản báo cáo Phụ lục 02-QT-KT-TTKT/01 ngày 14/9/2026 viết tay (ký: Duyên)" loading="lazy" style="height:auto;object-fit:contain"><figcaption>Bản báo cáo Phụ lục 02-QT-KT-TTKT/01 ngày 14/9/2026 — chữ ký: Duyên (Lê Đăng Duyên)</figcaption></figure>""" + NL + """        </div>""" + NL + """        """)

i_blk = h.find('id="minhhanh-mh289c"')
assert i_blk > 0, "không tìm thấy khối 39"
i_src = h.find('<p class="src">', i_blk)
assert i_src > 0, "không tìm thấy p.src trong khối 39"
h2 = h[:i_src] + GAL + h[i_src:]

# 3) cập nhật dòng nguồn: có ảnh rồi
old_src = "đã 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."
new_src = ("đã ghi CSDL chính (su_co_kph #58) + CSDL KPH (hồ sơ #825). Ảnh kèm: bản báo cáo viết tay "
           "Phụ lục 02-QT-KT-TTKT/01 ngày 14/9/2026 (ký: Duyên).")
assert old_src in h2, "không tìm thấy câu nguồn cũ"
h2 = h2.replace(old_src, new_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>"), (h2.count("<figure"), h2.count("</figure>"))
io.open(P, "w", encoding="utf-8", newline="").write(h2)
chk = io.open(P, encoding="utf-8").read()
print("portal:", chk.count('class="inc"'), "khối | figure:", chk.count("<figure"), "| div cân bằng:", chk.count("<div") == chk.count("</div>"),
      "| có ảnh mới:", TEN_ANH in chk, "| còn câu 'chưa có ảnh':", "chưa có ảnh hiện trường" in chk)

# 4) ghi mốc vào 2 CSDL (nối thêm, không ghi đè)
MO_THEM = (" | 16/09/2026 — Đã chèn ảnh bản báo cáo viết tay Phụ lục 02-QT-KT-TTKT/01 ngày 14/9/2026 (ký: Duyên) "
           "vào khối 39 portal KPH (minhhanh-mh289c). Lưu ý: bản viết tay có vài chỗ khó đọc (mã bóng ghi dạng "
           "'NC 2605 LH/ KH', 'balet/băng tải') — đề nghị đối chiếu khi kiểm tra lô bóng — Phòng Kỹ thuật")
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 cap_nhat = cap_nhat || ? WHERE id = 825", (MO_THEM,))
kc.execute("COMMIT")
print("hồ sơ #825 cap_nhat:", kc.execute("SELECT length(cap_nhat) FROM ho_so_kph WHERE id=825").fetchone()[0], "ký tự")
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 = 58", (MO_THEM,))
cc.execute("COMMIT")
print("su_co_kph #58 mo_ta:", cc.execute("SELECT length(mo_ta_su_co) FROM su_co_kph WHERE id=58").fetchone()[0], "ký tự")
c.close()
