# -*- coding: utf-8 -*-
"""Lưu DANH MỤC MÀU OXID SẮT + hữu cơ (chủ dự án cung cấp 06/10/2026) vào CSDLA:
   - danh_muc_mau: 11 mã (nhóm ghi trong ghi_chu)
   - huan_luyen: luật #29 về CHẤT PHÂN TÁN cho đen oxit (kèm điểm cần xác nhận)
Kèm đối chiếu sang btchem.db.nguyen_lieu (chỉ đọc).
"""
import os, shutil, sqlite3, time

D = r'C:\Claw 2\Nghien cuu\Du-an-A-Quy-trinh-son'
DB = os.path.join(D, 'CSDLA.db')
DB2 = r'C:\c\deepseek-harness\claw2-db\btchem.db'
NGAY = '2026-10-06'
NGUON = 'Chủ dự án cung cấp 06/10/2026 — “lưu lại các màu Oxid sắt” (danh mục màu đang dùng)'

MAU = [
    ('Iron Oxide RB 4097',        'Nhóm ĐỎ — Đỏ oxit sắt (iron oxide red)'),
    ('Red RO 4597',               'Nhóm ĐỎ — Đỏ oxit sắt (iron oxide red)'),
    ('Ferrispec FP RB-4097',      'Nhóm ĐỎ — Đỏ oxit sắt (Ferrispec FP = dòng oxit sắt)'),
    ('Pigment Red TR 718',        'Nhóm ĐỎ — Đỏ HỮU CƠ (organic pigment red)'),
    ('Ferrispec FP YB-2087',      'Nhóm VÀNG — Vàng oxit sắt (iron oxide yellow)'),
    ('Hififast Yellow HF4G',      'Nhóm VÀNG — Vàng HỮU CƠ (organic yellow)'),
    ('Umber Pigment 645',         'Nhóm NÂU — Nâu ĐẤT / umber'),
    ('Hoover 778 BN',             'Nhóm NÂU — Nâu Van Dyke (Van Dyke brown)'),
    ('Pigment Brown TB 1008',     'Nhóm NÂU — Nâu paste gỗ'),
    ('Brown SP 1008 W',           'Nhóm NÂU — Nâu paste gỗ'),
    ('Iron oxide Black VAP-330M', 'Nhóm ĐEN — Đen oxit sắt; dùng chất phân tán BYK 106 (còn “màu đen oxid sắt” dùng phân tán LPN 22836 — cần xác nhận)'),
]

ts = time.strftime('%Y%m%d_%H%M%S')
bak = os.path.join(D, '_backup_CSDLA_truoc_danhmuc_mau_oxid_%s.db' % ts)
shutil.copy2(DB, bak)
print('backup:', os.path.basename(bak), os.path.getsize(bak), 'byte')

c = sqlite3.connect(DB)
truoc = {t: c.execute('select count(*) from %s' % t).fetchone()[0] for t in ['danh_muc_mau', 'huan_luyen']}
print('trước:', truoc)

them = 0
for ma, gc in MAU:
    if c.execute('select count(*) from danh_muc_mau where ma_mau = ?', (ma,)).fetchone()[0]:
        print('   (đã có, bỏ qua)', ma)
        continue
    c.execute('insert into danh_muc_mau (ma_mau, khach_hang, ghi_chu, nguon) values (?,?,?,?)', (ma, None, gc, NGUON))
    them += 1
print('đã thêm %d mã màu vào danh_muc_mau' % them)

nv = 'Chủ dự án (06/10/2026): “Đen oxit: Iron oxide Black VAP-330M dùng phân tán BYK 106, còn màu đen Oxid sẳt thì dùng phân tán LPN 22836”'
qt = ('**Chất phân tán cho MÀU ĐEN OXIT SẮT**: theo chủ dự án — **Iron oxide Black VAP-330M dùng phân tán BYK 106**; **“màu đen oxid sắt” dùng phân tán BYK LPN 22836**. '
      '⚠️ **ĐIỂM CẦN XÁC NHẬN:** câu gốc nêu 2 chất phân tán cho cùng “đen oxid sắt” ⇒ cần chủ dự án chốt **mã nào (VAP-330M hay mã khác) đi với chất phân tán nào**, trước khi đưa vào công thức/định mức.')
if not c.execute("select count(*) from huan_luyen where quy_tac like '%VAP-330M%'").fetchone()[0]:
    c.execute('insert into huan_luyen (ngay, nhom, nguyen_van, quy_tac, pham_vi, trang_thai, nguon, ghi_chu) values (?,?,?,?,?,?,?,?)',
              (NGAY, 'Màu & phụ gia phân tán', nv, qt, 'Công thức stain/sơn dùng đen oxit sắt', 'CHỜ XÁC NHẬN ĐIỂM MƠ HỒ',
               'Chủ dự án cung cấp 06/10/2026 (cùng danh mục màu oxid sắt)', 'Danh mục màu đã lưu vào danh_muc_mau (11 mã).'))
    print('đã thêm luật phân tán đen oxit (trạng thái CHỜ XÁC NHẬN)')

c.commit()
sau = {t: c.execute('select count(*) from %s' % t).fetchone()[0] for t in ['danh_muc_mau', 'huan_luyen']}
print('sau  :', sau, '| integrity:', c.execute('pragma integrity_check').fetchone()[0])
print()
print('=== DANH MỤC MÀU VỪA LƯU ===')
for r in c.execute('select id, ma_mau, ghi_chu from danh_muc_mau order by id desc limit %d' % them):
    print('  %-3s %-28s %s' % (r[0], r[1], r[2]))
c.close()

# ---------- đối chiếu btchem.db (chỉ đọc) ----------
c2 = sqlite3.connect('file:%s?mode=ro' % DB2.replace('\\', '/'), uri=True)
c2.row_factory = sqlite3.Row
print()
print('=== ĐỐI CHIẾU nguyen_lieu (btchem.db) ===')
import re
for ma, _ in MAU:
    key = re.sub(r'\s*\(.*?\)', '', ma)
    key = key.split()[0] if len(key) < 4 else ' '.join(key.split()[:2])
    cand = list(c2.execute('select id, ten, nhom from nguyen_lieu where ten like ? or ten like ? limit 3', ('%' + ma.split()[-1] + '%', '%' + key + '%')))
    print('  %-28s → %s' % (ma, [(r['id'], r['ten'][:48], r['nhom']) for r in cand] if cand else 'KHÔNG THẤY trong nguyen_lieu'))
print()
print('  chất phân tán:')
for p in ['%BYK 106%', '%Disperbyk%', '%22836%', '%LPN%', '%BYK%']:
    rows = list(c2.execute('select id, ten, coalesce(nhom,\'\') from nguyen_lieu where ten like ? or nhom like ? limit 5', (p, p)))
    print('   %-12s %s' % (p, [(r['id'], r['ten'][:44], r[2][:26]) for r in rows] if rows else '— không có'))
c2.close()
