# -*- coding: utf-8 -*-
"""Kiểm chứng file bước 2 lô 08-v2 (OAK trắng bạc — theo CHUẨN NHÁNH 2) + xuất DOCX gửi."""
import io, os, re, shutil
from docx import Document
from docx.shared import RGBColor

D = r'C:\Claw 2\Nghien cuu\Du-an-A-Quy-trinh-son'
Q = os.path.join(D, 'QUY_TRINH_DE_XUAT_OAK-TRANG-BAC-v2_2026-10-06.md')
P = os.path.join(D, 'PHAN_TICH_OAK-TRANG-BAC-v2_2026-10-06.md')
t = io.open(Q, encoding='utf-8').read()
pt = io.open(P, encoding='utf-8').read() if os.path.exists(P) else ''
print('file bước 2:', len(t), 'ký tự |', t.count(chr(10)) + 1, 'dòng |', len(Q.splitlines()), 'dòng list')
print()
print('=== BẢNG (số dòng mỗi bảng) ===')
for m in re.finditer(r'^\|.*\|$', t, re.M):
    pass
rows = [l for l in t.splitlines() if l.strip().startswith('|')]
print('  số dòng bảng:', len(rows))
print()
print('=== SOI CHUẨN NHÁNH 2 (bắt buộc có) ===')
for k in ['ngấm dầu', 'Washcoat', 'washcoat', 'quét cọ', 'QUÉT CỌ', 'Bóng', 'B12', 'B21', 'B25', 'B20', 'B19']:
    print('   %-12s %d lần' % (k, t.count(k)))
print()
print('=== PHÂN LOẠI THEO LOẠI MÀU (luật #27) ===')
for k in ['KHÔNG MÀU', 'CÓ MÀU', 'TRONG SUỐT', 'LOẠI KHÁC', 'pigmented']:
    print('   %-12s %d lần' % (k, t.count(k)))
print()
print('=== PHẢI SẠCH (0 = tốt) ===')
for k in ['KPH', 'khiếu nại', 'CSDLA', 'quy_trinh id', 'zoom', 'L*a*b', 'L\\*a\\*b', 'mảng màu', 'truy vết']:
    print('   %-14s %d' % (k, len(re.findall(re.escape(k), t, re.I))))
print()
print('=== CÓ ĐỦ MỤC BẮT BUỘC ===')
for k in ['ảnh mẫu', 'THIẾU ẢNH GỖ MỘC', 'gỗ mộc', '4B', '5B', 'KIỂM TRA MÀU', 'DẶM MÀU', 'tràm' if False else 'OAK']:
    print('   %-20s %d' % (k, len(re.findall(re.escape(k), t, re.I))))
print()
print('=== MÃ THƯƠNG MẠI trong bảng (0 = tốt) ===')
ma = re.findall(r'\b(?:BT|TB|S0?\d|NC|PU|UV|Bex|Diluen)[\s\-]?\d{2,4}[A-Za-z]?\b', t)
print('   ', ma if ma else 'không có')

# ---------- DOCX ----------
G = os.path.join(D, 'QUY_TRINH_DE_XUAT_OAK-TRANG-BAC-v2_2026-10-06.docx')
d = Document()
d.add_paragraph('QUY TRÌNH SƠN ĐỀ XUẤT — MẪU OAK TRẮNG BẠC (V2, theo kỹ thuật chuẩn nhánh 2)')
if os.path.join(D, 'anh_mau_moi', 'mau_01.jpg'):
    p = os.path.join(D, 'anh_mau_moi', 'mau_01.jpg')
    if os.path.exists(p):
        d.add_picture(p, width=None)
        d.add_paragraph('Ảnh mẫu')
for line in t.splitlines():
    if line.strip().startswith('|'):
        continue
    if line.strip():
        d.add_paragraph(line.strip())
try:
    d.save(G)
except Exception as e:
    print('LỖI ghi DOCX:', e)
print('DOCX:', os.path.getsize(G) if os.path.exists(G) else 0, 'byte')
o = os.path.join(os.environ['LOCALAPPDATA'], 'hermes', 'cache', 'gui_duan_a')
os.makedirs(o, exist_ok=True)
shutil.copy2(G, o)
print('bản gửi:', os.path.join(o, os.path.basename(G)))
