# -*- coding: utf-8 -*-
"""Dọn ca KIỂM THỬ của hệ thống trong CSDL B (backup trước):
  - xoá 2 hỗn hợp test (#1 của em, #4 kiểm thử pass) + thư mục việc của chúng
  - xoá 9 dòng đề xuất hiệu chỉnh sinh ra từ ẢNH TEST (không phải hỗn hợp thật)
  - giữ nguyên #2 và #3 của chủ nhân (đang chờ ảnh thật) và 8 màu/27 tấm
"""
import os, shutil, sqlite3, time

GOC = r'C:\Claw 2\Nghien cuu\Du-an-B-He-mau-Stain-Glaze'
DB = os.path.join(GOC, 'CSDLB.db')
BAK = os.path.join(GOC, '_backup', 'CSDLB_bak_%s_truoc_don_test.db' % time.strftime('%Y%m%d_%H%M'))
os.makedirs(os.path.dirname(BAK), exist_ok=True)
shutil.copy2(DB, BAK)
shutil.copy2(DB, DB.replace('.db', '_tam.db'))
print('backup:', BAK, os.path.getsize(BAK), 'B')

con = sqlite3.connect(DB)
c = con.cursor()
xoa_hh = [r[0] for r in c.execute("SELECT id FROM hon_hop WHERE nguoi_nhap LIKE '%kiểm thử%'")]
print('xoá hỗn hợp test:', xoa_hh)
for i in xoa_hh:
    c.execute('DELETE FROM hieu_chinh_mau WHERE hon_hop_id=?', (i,))
    c.execute('DELETE FROM hon_hop WHERE id=?', (i,))
n_hc = c.execute('SELECT COUNT(*) FROM hieu_chinh_mau').rowcount if False else c.execute('SELECT COUNT(*) FROM hieu_chinh_mau').fetchone()[0]
c.execute('DELETE FROM hieu_chinh_mau')
c.execute("INSERT INTO nhat_ky (ngay,viec,chi_tiet,nguon) VALUES (?,?,?,?)",
          (time.strftime('%Y-%m-%d %H:%M'), 'Dọn dữ liệu kiểm thử của hệ thống CALIB',
           'Xoá hỗn hợp test %s và %d dòng đề xuất hiệu chỉnh sinh ra từ ảnh test (ảnh mẫu bảng màu, không phải hỗn hợp thật). '
           'Giữ hỗn hợp #2, #3 của chủ nhân (chờ ảnh thật). CSDL B: 8 màu hệ số 1.0, 27 tấm kéo màu.' % (xoa_hh, n_hc),
           'dọn sau kiểm thử 08/10/2026'))
con.commit()
con.execute('VACUUM')
print('hieu_chinh_mau còn:', c.execute('SELECT COUNT(*) FROM hieu_chinh_mau').fetchone()[0])
print('hỗn hợp còn:', c.execute('SELECT id,nguoi_nhap,trang_thai FROM hon_hop ORDER BY id').fetchall())
print('màu:', c.execute('SELECT COUNT(*) FROM mau').fetchone()[0], '| tấm:', c.execute('SELECT COUNT(*) FROM mau_bang_in').fetchone()[0],
      '| hệ số:', sorted(set(r[0] for r in c.execute('SELECT he_so_cuong_do FROM mau'))))
print('integrity:', c.execute('PRAGMA integrity_check').fetchone()[0])
con.close()
print('CSDLB.db:', os.path.getsize(DB), 'B')

# xoá thư mục việc của các hỗn hợp test
vd = os.path.join(GOC, 'calib-app', 'viec')
for name in sorted(os.listdir(vd)) if os.path.isdir(vd) else []:
    so = name.split('_')[0].lstrip('H')
    if so.isdigit() and int(so) in xoa_hh:
        shutil.rmtree(os.path.join(vd, name), ignore_errors=True)
        print('  đã xoá thư mục việc', name)
print('viec còn:', sorted(os.listdir(vd)) if os.path.isdir(vd) else [])
os.remove(DB.replace('.db', '_tam.db'))
