# -*- coding: utf-8 -*-
r"""B40: dời bản tổng hợp QC Trí+Lộc (28/09-10/10) vào THƯ MỤC RIÊNG trong QC;
dọn file lẻ ở gốc QC; ghi README; verify md5 trước/sau."""
import hashlib, os, shutil

QC = r'C:\Claw 2\QC'
DICH = os.path.join(QC, 'Tong-hop-QC-Tri-Loc-2809-1010')
os.makedirs(DICH, exist_ok=True)
os.makedirs(os.path.join(DICH, 'nguon'), exist_ok=True)
os.makedirs(os.path.join(DICH, 'scripts'), exist_ok=True)


def md5(p):
    return hashlib.md5(open(p, 'rb').read()).hexdigest()


DON = [
    (os.path.join(QC, 'TONG_HOP_QC_TRI_LOC_28-09_10-10-2026.docx'), os.path.join(DICH, 'TONG_HOP_QC_TRI_LOC_28-09_10-10-2026.docx')),
    (os.path.join(QC, '_TONGHOP_TRI_LOC_2809_1010.md'), os.path.join(DICH, 'nguon', 'BAN-GOP_TONG_HOP.md')),
    (os.path.join(QC, r'_tomtat_2809_1010\NGUON_LOC.md'), os.path.join(DICH, 'nguon', 'NGUON_LOC.md')),
    (os.path.join(QC, r'_tomtat_2809_1010\NGUON_TRI.md'), os.path.join(DICH, 'nguon', 'NGUON_TRI.md')),
    (os.path.join(QC, r'_tomtat_2809_1010\TOM_LOC.md'), os.path.join(DICH, 'nguon', 'TOM_LOC.md')),
    (os.path.join(QC, r'_tomtat_2809_1010\TOM_TRI.md'), os.path.join(DICH, 'nguon', 'TOM_TRI.md')),
]
for t in ('_b36_boc_khoang_2809_1010.py', '_b37_kiem_chung_tomtat.py', '_b38_soi_diem_nghi.py', '_b39_gop_tonghop.py'):
    DON.append((os.path.join(QC, t), os.path.join(DICH, 'scripts', t)))

for a, b in DON:
    truoc = md5(a)
    shutil.move(a, b)
    print('  %-44s -> %-34s md5 %s %s' % (os.path.basename(a), os.path.basename(b), truoc, 'KHỚP' if md5(b) == truoc else 'LỆCH!'))

# dọn thư mục tạm nếu rỗng
tam = os.path.join(QC, '_tomtat_2809_1010')
if os.path.isdir(tam) and not os.listdir(tam):
    os.rmdir(tam); print('  đã xoá thư mục tạm _tomtat_2809_1010 (rỗng)')

README = """# THƯ MỤC: TỔNG HỢP QC — TRÍ & LỘC (28/09/2026 -> 10/10/2026)

**BẢN CHÍNH (bản gửi đi):** `TONG_HOP_QC_TRI_LOC_28-09_10-10-2026.docx`
**Ngày lập:** 12/10/2026 · **Người lập:** trợ lý kỹ thuật (tổng hợp từ 2 sổ QC)

## Nội dung tài liệu
- PHẦN I — Bức tranh chung theo ngày (bảng 13 ngày: Lộc QC | Trí QC)
- PHẦN II — Lộc QC (Bùi Thiên Lộc): chi tiết 12 ngày + điểm chờ + mã màu/sản phẩm
- PHẦN III — Trí QC (Nguyễn Anh Trí): chi tiết 12 ngày + điểm chờ + mã màu/sản phẩm
- PHẦN IV — Nhóm vấn đề lớn & việc cần quyết (gom cả 2 người, 12 nhóm)
- PHẦN V — Nguồn & phương pháp

## Nguồn
- Sổ QC nhân viên Bùi Thiên Lộc: `C:\\Claw 2\\QC\\Locqc.md`
- Sổ QC nhân viên Nguyễn Anh Trí: `C:\\Claw 2\\QC\\Tri qc.md`
- Mỗi mục trong 2 sổ ghi rõ nguồn tin Zalo + mốc giờ; ngày 04/10/2026 CẢ HAI sổ đều không có mục.

## Kiểm chứng đã làm trước khi phát hành
1. Bóc đúng 12 mục/người trong khoảng ngày 28/09 -> 10/10 (`scripts/_b36_boc_khoang_2809_1010.py`).
2. Kiểm chứng tự động mọi con số của bản tổng hợp với 2 sổ nguồn: 315 con số được rà, 0 sai lệch; 2 trường hợp nghi ngờ rà lại là dương tính giả (`scripts/_b37`, `scripts/_b38`).
3. Kiểm bản phát hành: 0 dấu `**` sót, 0 emoji, 0 dòng "thiếu ảnh", đủ PHẦN I-V, bảng 13 hàng (`scripts/_b39_gop_tonghop.py`).

## Cấu trúc thư mục
- `TONG_HOP_QC_TRI_LOC_28-09_10-10-2026.docx` — BẢN CHÍNH (50 KB, 211 đoạn, 1 bảng)
- `nguon/BAN-GOP_TONG_HOP.md` — markdown gốc đã dùng để sinh DOCX
- `nguon/NGUON_LOC.md`, `nguon/NGUON_TRI.md` — trích nguyên văn 12 mục mỗi sổ (chỉ để đối chiếu)
- `nguon/TOM_LOC.md`, `nguon/TOM_TRI.md` — bản cô đọng từng người (2 subagent đọc độc lập)
- `scripts/` — 4 script đã chạy: bóc khoảng ngày · kiểm chứng số liệu · soi điểm nghi · gộp + xuất DOCX

## Ghi chú
- Các file trong `nguon/` và `scripts/` là bản đối chiếu/tái lập, KHÔNG phải bản gửi đi.
- File lẻ ở gốc `C:\\Claw 2\\QC\\` đã được dời hết vào thư mục này (không còn bản trùng).
"""
p = os.path.join(DICH, '_DOC-TRONG-THU-MUC.md')
open(p, 'w', encoding='utf-8', newline='').write(README)
print('  README:', os.path.getsize(p), 'B')

print()
print('  === NỘI DUNG THƯ MỤC %s ===' % DICH)
for root, dirs, files in os.walk(DICH):
    for f in sorted(files):
        fp = os.path.join(root, f)
        print('   %9d B  %s' % (os.path.getsize(fp), os.path.relpath(fp, DICH)))
tong = sum(os.path.getsize(os.path.join(r, f)) for r, d, fs in os.walk(DICH) for f in fs)
print('  tổng %d file, %.1f KB' % (sum(len(fs) for r, d, fs in os.walk(DICH)), tong / 1024))

print()
print('  === KIỂM GỐC QC CÒN SÓT ===')
sot = [f for f in os.listdir(QC) if f.startswith(('TONG_HOP', '_TONGHOP', '_b36', '_b37', '_b38', '_b39')) or f == '_tomtat_2809_1010']
print('   sót:', sot if sot else 'KHÔNG SÓT ✓')
