# -*- coding: utf-8 -*-
"""Nạp tiếp phần 2 vào CSDL D: yêu cầu chất lượng → hệ sơn; hiệu chỉnh theo độ hút màu; hướng dẫn chụp ảnh; lưu ý vận hành."""
import os, re, shutil, sqlite3

TMP = os.path.expandvars(r'%LOCALAPPDATA%\Temp\csdlD')
GOC = r'C:\Claw 2\Nghien cuu\Du-an-D-Ho-so-vat-lieu'
DB = os.path.join(GOC, 'CSDLD.db')
NGAY = '2026-10-07'
MD = open(os.path.join(TMP, 'cau_hoi_2.md'), encoding='utf-8').read().split('\n')


def sach(s):
    return re.sub(r'\s+', ' ', (s or '').replace('**', '')).strip().strip('|').strip()


def bang(tu_khoa, so_cot):
    i = next(k for k, l in enumerate(MD) if tu_khoa in l)
    rows = []
    for l in MD[i + 1:]:
        if l.startswith('#'):
            break
        if l.count('|') >= so_cot - 1:
            rows.append([sach(x) for x in l.split('|')])
    return rows


def tin_cay(*s):
    t = ' '.join(s)
    d = [x for x in (('R-cơ sở rộng rãi' if '[R]' in t else ''), ('K-kinh nghiệm' if '[K]' in t else ''),
                     ('TN-cần thử nghiệm' if '[TN]' in t else '')) if x]
    return ' · '.join(d) if d else 'K-kinh nghiệm'


A = bang('Yêu cầu chất lượng của khách', 7)
B = bang('Mức hút màu', 8)
C = bang('Hạng mục', 4)
U = bang('Ưu tiên', 3)
S = bang('Sai lầm', 3)
print('phân tích: A=%d B=%d C=%d U=%d S=%d' % (len(A), len(B), len(C), len(U), len(S)))

con = sqlite3.connect(DB)
c = con.cursor()
c.executescript('''
DROP TABLE IF EXISTS yeu_cau_chat_luong; DROP TABLE IF EXISTS hieu_chinh_theo_do_hut_mau;
DROP TABLE IF EXISTS huong_dan_chup_anh; DROP TABLE IF EXISTS luu_y_van_hanh;
CREATE TABLE yeu_cau_chat_luong (id INTEGER PRIMARY KEY AUTOINCREMENT, yeu_cau TEXT, nguong_do TEXT,
  he_son_phu_hop TEXT, so_lop_toi_thieu TEXT, buoc_bat_buoc TEXT, han_che_canh_bao TEXT,
  ghi_chu_thu_nghiem TEXT, nguon_id INTEGER, do_tin_cay TEXT, ngay_cap_nhat TEXT);
CREATE TABLE hieu_chinh_theo_do_hut_mau (id INTEGER PRIMARY KEY AUTOINCREMENT, muc_hut_mau TEXT,
  vi_du_loai TEXT, cach_hieu_chinh_nong_do TEXT, thoi_gian_luu_lau TEXT, so_lan_phu TEXT,
  buoc_chan_truoc TEXT, sai_lech_thuong_gap TEXT, cach_bu TEXT, nguon_id INTEGER, do_tin_cay TEXT, ngay_cap_nhat TEXT);
CREATE TABLE huong_dan_chup_anh (id INTEGER PRIMARY KEY AUTOINCREMENT, hang_muc TEXT, yeu_cau TEXT,
  sai_sot_thuong_gap TEXT, cach_kiem_tra TEXT, nguon_id INTEGER, do_tin_cay TEXT, ngay_cap_nhat TEXT);
CREATE TABLE luu_y_van_hanh (id INTEGER PRIMARY KEY AUTOINCREMENT, nhom TEXT, noi_dung TEXT,
  ly_do TEXT, nguon_id INTEGER, ngay_cap_nhat TEXT);
''')
for r in A:
    if len(r) >= 7 and r[0]:
        c.execute('INSERT INTO yeu_cau_chat_luong (yeu_cau,nguong_do,he_son_phu_hop,so_lop_toi_thieu,buoc_bat_buoc,han_che_canh_bao,ghi_chu_thu_nghiem,nguon_id,do_tin_cay,ngay_cap_nhat) VALUES (?,?,?,?,?,?,?,1,?,?)',
                  (r[0], r[1], r[2], r[3], r[4], r[5], r[6], tin_cay(*r), NGAY))
for r in B:
    if len(r) >= 8 and r[0]:
        c.execute('INSERT INTO hieu_chinh_theo_do_hut_mau (muc_hut_mau,vi_du_loai,cach_hieu_chinh_nong_do,thoi_gian_luu_lau,so_lan_phu,buoc_chan_truoc,sai_lech_thuong_gap,cach_bu,nguon_id,do_tin_cay,ngay_cap_nhat) VALUES (?,?,?,?,?,?,?,?,1,?,?)',
                  (r[0], r[1], r[2], r[3], r[4], r[5], r[6], r[7], tin_cay(*r), NGAY))
for r in C:
    if len(r) >= 4 and r[0]:
        c.execute('INSERT INTO huong_dan_chup_anh (hang_muc,yeu_cau,sai_sot_thuong_gap,cach_kiem_tra,nguon_id,do_tin_cay,ngay_cap_nhat) VALUES (?,?,?,?,1,?,?)',
                  (r[0], r[1], r[2], r[3], tin_cay(*r), NGAY))
for r in U:
    if len(r) >= 3 and r[0]:
        c.execute('INSERT INTO luu_y_van_hanh (nhom,noi_dung,ly_do,nguon_id,ngay_cap_nhat) VALUES (?,?,?,1,?)', ('Ưu tiên ổn định màu', r[1], r[2], NGAY))
for r in S:
    if len(r) >= 3 and r[0]:
        c.execute('INSERT INTO luu_y_van_hanh (nhom,noi_dung,ly_do,nguon_id,ngay_cap_nhat) VALUES (?,?,?,1,?)', ('Sai lầm làm vô nghĩa tính toán', r[1], r[2], NGAY))
c.execute("INSERT INTO nhat_ky (ngay,viec,chi_tiet,nguon) VALUES (?,?,?,?)",
          (NGAY, 'Nạp phần 2 vào CSDL D', 'Yêu cầu chất lượng → hệ sơn (ASTM/ngưỡng GU) · hiệu chỉnh theo độ hút màu · hướng dẫn chụp ảnh cho AI đọc màu · ưu tiên/sai lầm vận hành',
           'hội thoại ChatGPT cùng ngày (trình duyệt thật), câu hỏi 2'))
con.commit()
os.makedirs(os.path.join(GOC, 'nguon'), exist_ok=True)
shutil.copy2(os.path.join(TMP, 'cau_hoi_2.md'), os.path.join(GOC, 'nguon', 'chatgpt_cau_hoi_2.md'))
shutil.copy2(os.path.join(TMP, 'cau_hoi_2.txt'), os.path.join(GOC, 'nguon', 'chatgpt_cau_hoi_2_de_bai.txt'))

print('\n=== KIỂM CHỨNG SAU KHI NẠP ===')
for t in ('nguon', 'nhat_ky', 'loai_go', 'yeu_to_anh_huong', 'map_buoc_quy_trinh',
          'yeu_cau_chat_luong', 'hieu_chinh_theo_do_hut_mau', 'huong_dan_chup_anh', 'luu_y_van_hanh'):
    print('   %-30s %d dòng' % (t, c.execute('SELECT COUNT(*) FROM %s' % t).fetchone()[0]))
print('   integrity:', c.execute('PRAGMA integrity_check').fetchone()[0])
print('\n--- yêu cầu chất lượng (rút gọn) ---')
for r in c.execute('SELECT yeu_cau,he_son_phu_hop,so_lop_toi_thieu FROM yeu_cau_chat_luong'):
    print('   · %-28s | %-40s | %s' % (r[0][:28], r[1][:40], r[2][:22]))
print('\n--- mức hút màu → hiệu chỉnh ---')
for r in c.execute('SELECT muc_hut_mau,vi_du_loai,cach_hieu_chinh_nong_do FROM hieu_chinh_theo_do_hut_mau'):
    print('   · %-14s | %-30s | %s' % (r[0][:14], r[1][:30], r[2][:80]))
print('\n--- chụp ảnh: %d hạng mục ---' % c.execute('SELECT COUNT(*) FROM huong_dan_chup_anh').fetchone()[0])
for r in c.execute('SELECT hang_muc FROM huong_dan_chup_anh'):
    print('   ·', r[0][:70])
print('\nDB:', DB, os.path.getsize(DB), 'byte')
