# -*- coding: utf-8 -*-
"""Thêm mục 08/10 vào Locqc.md (chỉ THÊM, không sửa mục cũ) + kiểm chứng difflib."""
import difflib, os, sqlite3, time

P = r'C:\Claw 2\QC\Locqc.md'
MUC = open(r'C:\Claw 2\QC\_muc_loc_0810.md', encoding='utf-8').read()
BK = r'C:\Claw 2\QC\20261008\BACKUP_MD\Nhan su tham gia\QC__Locqc.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 lại, 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 = old.split('\n')
new_l = 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 Locqc.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ũ đã bỏ xuống dòng cuối):', s.startswith(old.rstrip('\r\n')))
print('  phần chênh khỏi bản cũ:', 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 cùng:', [l for l in new_l if l.startswith('# BÁO CÁO')][-1][:120])
# kiểm ảnh tồn tại
for ten in ('loc_0810_mekong_7-panel-nen-phoi_0810.jpg', 'loc_0810_mekong_mat-ban-louis-thu-hoa-chat_0810.jpg'):
    d = os.path.join(r'C:\Claw 2\QC\images', ten)
    print('  ảnh %s: %s (%d byte)' % (ten, os.path.exists(d), os.path.getsize(d) if os.path.exists(d) else 0))
