# -*- coding: utf-8 -*-
"""Xoá dữ liệu CHẠY THỬ còn sót trong CSDL B (theo yêu cầu chủ nhân 08/10/2026):
   - lab_hieu_chinh của các màu bị ghi trong 2 lần chạy thử (hỗn hợp #1, #4 đã xoá)
   - so_lan_hieu_chinh / ngay_hieu_chinh / hệ số về trạng thái ban đầu (chưa hiệu chỉnh lần nào)
   - dọn phần ghi_chu do lần thử nối thêm
Backup TRƯỚC khi sửa."""
import os, re, shutil, sqlite3, time

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

con = sqlite3.connect(DB)
c = con.cursor()
print('\n=== TRƯỚC KHI XOÁ ===')
for r in c.execute('SELECT id,ma,he_so_cuong_do,so_lan_hieu_chinh,ngay_hieu_chinh,lab_hieu_chinh,ghi_chu FROM mau ORDER BY id'):
    print('  %-2s | %-7s | hs=%s | %s lần | %s | lab: %s' % (r[0], r[1], r[2], r[3], r[4], (r[5] or '')[:60]))
    if r[6] and 'HC ' in r[6]:
        print('       ghi_chu có phần HC:', r[6][-120:])

# 1. dọn ghi_chu: bỏ mọi đoạn " | HC dd/mm (hỗn hợp #N): ..." (do lần hiệu chỉnh nối thêm)
for r in c.execute('SELECT id,ghi_chu FROM mau').fetchall():
    gc = r[1] or ''
    gc2 = re.sub(r'\s*\|\s*HC \d{2}/\d{2} \(hỗn hợp #\d+\)[^|]*', '', gc).strip()
    gc2 = re.sub(r'\s*\|\s*HC \d{2}/\d{2}:[^|]*', '', gc2).strip()
    if gc2 != gc:
        c.execute('UPDATE mau SET ghi_chu=? WHERE id=?', (gc2, r[0]))
        print('  dọn ghi_chu màu id %s: %r → %r' % (r[0], gc[-80:], gc2[-80:]))

# 2. trả các màu về trạng thái CHƯA hiệu chỉnh
muon = [r[0] for r in c.execute('SELECT id FROM mau WHERE lab_hieu_chinh IS NOT NULL OR so_lan_hieu_chinh>0 '
                                'OR he_so_cuong_do<>1.0 OR ngay_hieu_chinh IS NOT NULL')]
print('\n  màu cần trả về trạng thái ban đầu:', muon)
c.execute('UPDATE mau SET lab_hieu_chinh=NULL, so_lan_hieu_chinh=0, ngay_hieu_chinh=NULL, he_so_cuong_do=1.0')
c.execute("DELETE FROM hieu_chinh_mau WHERE da_ap_dung=0")
c.execute("INSERT INTO nhat_ky (ngay,viec,chi_tiet,nguon) VALUES (?,?,?,?)",
          (time.strftime('%Y-%m-%d %H:%M'), 'Xoá dữ liệu chạy thử (lab_hieu_chinh + ghi_chu) của các màu',
           'Theo yêu cầu chủ nhân 08/10/2026: xoá phần "L*a*b* thực tế hỗn hợp #1/#4" (hỗn hợp thử đã xoá) và '
           'phần ghi_chu do lần thử nối thêm; trả 8 màu về hệ số 1.0 · 0 lần hiệu chỉnh · chưa có màu sau hiệu chỉnh. '
           'Backup trước khi xoá: %s' % os.path.basename(BAK), 'chủ nhân yêu cầu 08/10/2026'))
con.commit()

print('\n=== SAU KHI XOÁ ===')
for r in c.execute('SELECT id,ma,he_so_cuong_do,so_lan_hieu_chinh,ngay_hieu_chinh,lab_hieu_chinh FROM mau ORDER BY id'):
    print('  %-2s | %-7s | hs=%s | %s lần | ngày: %s | lab: %s' % (r[0], r[1], r[2], r[3], r[4], r[5]))
print('  hieu_chinh_mau:', c.execute('SELECT COUNT(*) FROM hieu_chinh_mau').fetchone()[0], 'dòng (mong đợi 0)')
con.execute('VACUUM')
print('  integrity:', c.execute('PRAGMA integrity_check').fetchone()[0], '| dung lượng:', os.path.getsize(DB), 'B')
con.close()
