# -*- coding: utf-8 -*-
r"""B162: copy 2 ảnh chèn + GHI THÊM mục 14/10 vào Tri qc.md (backup đã có) + kiểm chứng."""
import difflib, io, os, re, shutil

QC = r'C:\Claw 2\QC'
SOT = os.path.join(QC, 'Tri qc.md')
MUC = io.open(os.path.join(QC, '_muc_tri_1410.md'), encoding='utf-8').read().rstrip('\r\n')
ANH_LO = r'C:\Claw 2\QC\images\_zalo_tri_1410'
CAN = {
    'tri1410_01_d2974d.jpg': 'tri_1410_danglong_dl1619_phoi_hoanthien_glaze.jpg',
    'tri1410_02_784c3c.jpg': 'tri_1410_danglong_dl1619_phoi_lot-mau-nc.jpg',
}
for goc, dich in CAN.items():
    shutil.copy2(os.path.join(ANH_LO, goc), os.path.join(QC, 'images', dich))
    print('  ảnh: %s -> %d byte' % (dich, os.path.getsize(os.path.join(QC, 'images', dich))))

old = io.open(SOT, encoding='utf-8', newline='').read()
print('  sổ TRƯỚC: %d byte · %d mục' % (len(old.encode('utf-8')), old.count('\n# BÁO CÁO')))
if re.search(r'\n# BÁO CÁO[^\n]*CẬP NHẬT 14/10/2026', old):
    raise SystemExit('  DỪNG: đã có mục 14/10 trong sổ!')

moi = old.rstrip('\r\n') + '\n\n' + MUC + '\n'
tmp = SOT + '.tmp'
io.open(tmp, 'w', encoding='utf-8', newline='').write(moi)
os.replace(tmp, SOT)
new = io.open(SOT, encoding='utf-8', newline='').read()
print('  sổ SAU  : %d byte · %d mục' % (len(new.encode('utf-8')), new.count('\n# BÁO CÁO')))

o = old.split('\n'); n = new.split('\n')
sm = difflib.SequenceMatcher(None, o, n, autojunk=False)
removed = added = 0; first = None
for tag, i1, i2, j1, j2 in sm.get_opcodes():
    if tag in ('replace', 'delete'):
        removed += i2 - i1
        first = i1 if first is None else first
    if tag in ('replace', 'insert'):
        added += j2 - j1
print('  difflib: xoá %d dòng · thêm %d dòng · dòng đổi đầu tiên: %s' % (removed, added, first))
print('  startswith(cũ đã rstrip):', new.startswith(old.rstrip('\r\n')), '| phần chênh khỏi bản cũ:', repr(old[len(old.rstrip('\r\n')):]))
i = new.rfind('# BÁO CÁO')
print('  mục mới bắt đầu ở dòng:', new[:i].count('\n') + 1, '(tổng %d dòng)' % (new.count('\n') + 1))
print('  kiểm nội dung: có 16"28:', '16”28' in new, '| có 10”28:', '10”28' in new, '| có Bóng 5 = 70:', 'Bóng 5 = 70' in new)
print('  kiểm nối chuỗi: nhắc mục 13/10:', 'mục 13/10/2026' in new, '| nhắc DL 16/19:', 'DL 16/19' in new)
print('  kiểm đường dẫn ảnh tồn tại:')
for dich in CAN.values():
    print('    %s -> %s' % (dich, os.path.exists(os.path.join(QC, 'images', dich))))
