# -*- coding: utf-8 -*-
"""Nhập vụ KPH mới: Tiến Hưng — màu TTH270 (GF + MK khiếu nại) vào 4 nơi.
Bước 1: backup tất cả. Bước 2: copy ảnh. Bước 3: INSERT 2 DB. (portal + map làm ở script sau)"""
import os, io, re, json, zipfile, sqlite3, shutil, datetime, sys
from PIL import Image

STAMP = datetime.datetime.now().strftime("%Y%m%d_%H%M")
CL2 = r"C:\Claw 2\Bao cao - Hanh chinh\BAOCAOTONGHOP\HTML\KPH_TongHop_0508"
SRC_IMG = r"C:\Claw 2\QC\Base\mail_tienhung_1609"
DB1 = r"C:\c\deepseek-harness\claw2-db\btchem.db"
DB2 = r"C:\Claw\Khieu Nai KHach Hang\btchem_kph.db"
LTRU = r"C:\Claw\Khieu Nai KHach Hang\_Luu-Tru"

# ---------- BƯỚC 1: BACKUP ----------
def backup():
    src = sqlite3.connect(DB1, timeout=90); dst = sqlite3.connect(DB1 + f".bak_{STAMP}_truoc_tth270")
    src.backup(dst); dst.close(); src.close()
    print("  backup btchem.db :", os.path.basename(DB1 + f'.bak_{STAMP}_truoc_tth270'))
    os.makedirs(LTRU, exist_ok=True)
    zp = os.path.join(LTRU, f"btchem_kph_luu-tru_{STAMP}.zip")
    with zipfile.ZipFile(zp, "w", zipfile.ZIP_DEFLATED) as z:
        z.write(DB2, os.path.basename(DB2))
    print("  backup btchem_kph.db →", os.path.basename(zp))
    for f in ("index.html", "portal_map.json"):
        p = os.path.join(CL2, f) if f == "index.html" else r"C:\Claw\Khieu Nai KHach Hang\portal_map.json"
        b = p + f".bak_{STAMP}_truoc_tth270"
        shutil.copy2(p, b); print("  backup", os.path.basename(b))
backup()

# ---------- BƯỚC 2: COPY ẢNH ----------
IMG = os.path.join(CL2, "assets", "images")
MAP_ANH = [("anh_1_tienhung_1609.png", "tienhung_tth270_gf_kho_1609.png",
            "Ảnh khách GF kiểm tra màu tại kho: 2 chi tiết trắng — một trắng tinh, một ngả kem/vàng rõ"),
           ("anh_2_tienhung_1609.png", "tienhung_tth270_mail_gf_2101.png",
            "Mail khiếu nại thị trường 21/01/2026 (range Wilmslow White FBO-WD03PKLR/FMT — TTH-270): mẫu colour swatch không khớp màu sản phẩm"),
           ("anh_3_tienhung_1609.png", "tienhung_tth270_qc_th_1609.png",
            "QC nhà máy áp bảng mẫu chuẩn vào tủ 2 ngăn kéo: sản phẩm ngả vàng/kem hơn mẫu (kèm phiếu mẫu màu của hãng sơn)")]
for s, d, _ in MAP_ANH:
    shutil.copy2(os.path.join(SRC_IMG, s), os.path.join(IMG, d))
    im = Image.open(os.path.join(IMG, d))
    ty = im.width / im.height
    print(f"  {d}: {im.size[0]}x{im.size[1]} (tỉ lệ {ty:.2f})")

# ---------- BƯỚC 3: INSERT su_co_kph (btchem.db) ----------
MO_TA = (
 "1. NỘI DUNG KHIẾU NẠI — Khách/QC-KH của nhà máy Tiến Hưng phản ánh màu sơn bị chạy màu, không đúng màu đã ký lưu. "
 "Đặc biệt màu sơn TTH270: khách GF và MK khiếu nại màu bị vàng, khác màu khi khách mở sản phẩm so với lúc còn ở kho. "
 "Ảnh GF kiểm tra tại kho cho thấy 2 chi tiết cùng màu trắng nhưng một trắng tinh, một ngả kem/vàng. Mail khiếu nại thị trường 21/01/2026 "
 "(range Wilmslow White FBO-WD03PKLR/FMT — TTH-270) ghi mẫu colour swatch và màu thực tế sản phẩm không khớp nhau. "
 "2. CÁCH KIỂM TRA — Nhà máy mời P.Kỹ thuật Bình Thạnh họp 09h00 ngày 16/09/2026 tại VP Tiến Hưng; kiểm tra lại quy trình sơn và toàn bộ "
 "bảng màu ký lưu năm 2025. Kết quả: một số bảng màu ký lưu đã bị khác màu do bị dơ, cầm tay nhiều lần, bảo quản và vệ sinh chưa tốt; "
 "nhà máy và kỹ thuật sơn đã lấy chính bảng màu bị khác màu đó để kiểm tra màu cho hàng sản xuất đại trà. "
 "3. CÁCH GIẢI QUYẾT — Các bảng màu bị khác màu được lựa ra và hủy, không áp dụng cho sản xuất đại trà. Thống nhất quy trình kiểm soát – phòng ngừa: "
 "mỗi lô sơn trắng (pigment) khi BT giao, trước khi sơn đại trà Kỹ thuật BT sơn mẫu 1 bảng màu A4 so với bảng màu gold ký lưu, hai bên KT sơn BT & TH cùng ký, "
 "ghi rõ ngày tháng và lưu tại VP BQĐ-XS; bảng màu ký lưu mỗi đợt 10 tấm/lần, lưu gold 3 tấm; nhà máy trao đổi với khách để mượn lại chi tiết trên lô hàng đang "
 "khiếu nại và lô trước đó khách đang lưu kho để so lại với bảng màu đang lưu tại nhà máy; tuân thủ nhận bảng màu theo thông số đo ∆E < 0,5 và ghi thông số đo trên "
 "bảng màu gold seal; sử dụng bảng màu gold seal và bảng màu sản xuất theo thứ tự, so lại màu/3 lần sản xuất; nhà máy làm bảng màu lưu theo cont hoặc lô sản xuất "
 "(QC và QĐ-XS ký). Chi phí giải quyết khiếu nại: nếu GF gửi nhà máy thì nhà máy gửi BT để BT hỗ trợ giải quyết. Sau khi cùng xem lại lô hàng TTH270 xuất cho cụm "
 "cont GF 16~20, nhà máy quyết định cho xuất hàng. Nhà máy đề nghị BT hỗ trợ cung cấp máy đo màu hiệu SPECTRO để kiểm soát màu pigment tốt hơn, và đã làm "
 "Quy trình kiểm soát bảng màu sơn pigment gửi BT góp ý trước khi ban hành."
)
con = sqlite3.connect(DB1, timeout=90, isolation_level=None)
cur = con.cursor()
cur.execute("BEGIN IMMEDIATE")
new_id = cur.execute("SELECT COALESCE(MAX(id),0)+1 FROM su_co_kph").fetchone()[0]
cur.execute("""INSERT INTO su_co_kph (id, ngay_tao, nguoi_tao, giao_cho, ten_vu_viec, nha_may_id, san_pham_mau,
               mo_ta_su_co, loai_sai, giai_doan, trang_thai, nguoi_theo_doi, nguon)
               VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?)""",
            (new_id, "16/09/2026", "Phòng Kỹ thuật", "Phòng Kỹ thuật – QC",
             "Tiến Hưng (TTH270 – Wilmslow White): màu sơn bị vàng/chạy màu giữa các lô năm 2026 — khách GF + MK khiếu nại",
             10, "Màu sơn TTH270 (Wilmslow White) — FBO-WD03PKLR/FMT", MO_TA, "Sai màu",
             "Sau sản xuất — khách kiểm tra tại kho", "Theo dõi", "Phòng Kỹ thuật",
             "Biên bản làm việc 01-2026/BB-LV-BT ngày 16/09/2026 (mail Hữu Thoa – P.ĐHSX Tiến Hưng, 16/09/2026 17:58) + mail khiếu nại thị trường 21/01/2026"))
cur.execute("COMMIT")
print(f"\n  su_co_kph: đã INSERT #{new_id} | tổng dòng:", cur.execute("SELECT COUNT(*) FROM su_co_kph").fetchone()[0])
print("  kiểm tra:", cur.execute("SELECT id, ten_vu_viec, nha_may_id, loai_sai, trang_thai, length(mo_ta_su_co) FROM su_co_kph WHERE id=?", (new_id,)).fetchone())
con.close()
