# -*- coding: utf-8 -*-
"""Thêm mục 08/10 vào 'Tri qc.md' (chỉ THÊM) + kiểm chứng difflib."""
import difflib, os

P = r'C:\Claw 2\QC\Tri qc.md'
MUC = open(r'C:\Claw 2\QC\_muc_tri_0810.md', encoding='utf-8').read()
BK = r'C:\Claw 2\QC\20261008\BACKUP_MD\Nhan su tham gia\QC__Tri qc.md'

truoc = os.path.getsize(P)
old = open(BK, encoding='utf-8', newline='').read()
hien = open(P, encoding='utf-8', newline='').read()
assert hien == old, 'File hiện tại KHÁC backup → dừng, không ghi!'

s = old.rstrip('\r\n') + '\n\n' + MUC.rstrip('\r\n') + '\n'
tmp = P + '.tmp'
open(tmp, 'w', encoding='utf-8', newline='').write(s)
os.replace(tmp, P)

old_l, new_l = old.split('\n'), s.split('\n')
sm = difflib.SequenceMatcher(None, old_l, new_l, 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('== KIỂM CHỨNG "Tri qc.md" ==')
print('  byte trước → sau:', truoc, '→', os.path.getsize(P))
print('  dòng:', len(old_l), '→', len(new_l))
print('  difflib: xoá %d dòng · thêm %d dòng · dòng thay đổi đầu tiên: %s' % (removed, added, first))
print('  startswith(bản cũ):', s.startswith(old.rstrip('\r\n')), '| phần chênh:', repr(old[len(old.rstrip('\r\n')):]))
print('  số mục "# BÁO CÁO":', old.count('# BÁO CÁO'), '→', s.count('# BÁO CÁO'))
print('  mục cuối:', [l for l in new_l if l.startswith('# BÁO CÁO')][-1][:110])
img = r'C:\Claw 2\QC\images\tri_0810_mau-panel-trang-xuong_0810.jpg'
print('  ảnh %s: %s (%d byte)' % (os.path.basename(img), os.path.exists(img), os.path.getsize(img) if os.path.exists(img) else 0))
