# -*- coding: utf-8 -*-
r"""B67: (1) soi file Mến bằng GLOB (tên NFD) ; (2) BACKUP 'da lam sach' ; (3) ghi YEU_CAU_T41.txt cho agy."""
import glob, os, shutil, time, zipfile

D = r'C:\Claw 2\Bao cao - Hanh chinh\Bao cao lam mau'
SACH = os.path.join(D, 'da lam sach')
import openpyxl

# 1) file Mến — tìm bằng glob
pn = [p for p in glob.glob(os.path.join(D, '*41*.xlsx')) if 'TU' in os.path.basename(p) and 'W41' not in os.path.basename(p) and 'KẾT' not in os.path.basename(p)]
print('  file Mến tìm được (%d): %s' % (len(pn), [repr(os.path.basename(x)) for x in pn]))
for p in pn:
    wb = openpyxl.load_workbook(p, read_only=True, data_only=True)
    for sn in wb.sheetnames:
        ws = wb[sn]
        n = sum(1 for r in ws.iter_rows(values_only=True) if any(c not in (None, '') for c in r))
        dong = None
        for r in ws.iter_rows(values_only=True):
            if any(c not in (None, '') for c in r):
                dong = [str(c)[:18] for c in r if c not in (None, '')][:7]
                break
        print('    %s | sheet %-12s dòng: %-5d | dòng đầu: %s' % (os.path.basename(p)[:34], str(sn)[:12], n, dong))
    wb.close()

# 2) backup da lam sach
t = time.strftime('%Y%m%d_%H%M')
BAK = os.path.join(D, 'da lam sach_BACKUP_%s' % t)
shutil.copytree(SACH, BAK)
n_bak = len(os.listdir(BAK))
print()
print('  BACKUP da lam sach -> %s (%d mục)' % (os.path.basename(BAK), n_bak))

# 3) YEU_CAU_T41.txt
ND = r'''YÊU CẦU CÔNG VIỆC — LÀM SẠCH & GỘP BÁO CÁO LÀM MẪU TUẦN 41 (05/10/2026 - 11/10/2026)

BƯỚC 0 — BẮT BUỘC ĐỌC TRƯỚC (để bám đúng chuẩn tuần trước):
1. Đọc script tuần trước: C:/Claw 2/Bao cao - Hanh chinh/Bao cao lam mau/clean_and_merge_tuan40.py
2. Đọc bản mô tả tuần trước: C:/Claw 2/Bao cao - Hanh chinh/Bao cao lam mau/da lam sach/Bao_cao_lam_sach_Tuan40.md
=> Tạo script mới clean_and_merge_tuan41.py theo ĐÚNG bố cục/định dạng của tuần 40, chỉ đổi tuần và cấu trúc dữ liệu tuần 41.

3 FILE NGUỒN TUẦN 41 (tên file + tên sheet THẬT, đã kiểm bằng openpyxl — ĐỪNG đoán tên sheet):
- FILE 1 (chính, của Mến): "TUẦN 41 (05.10-11.10).xlsx" — sheet: Sheet1 — 119 dòng có dữ liệu.
- FILE 2 (kết quả mẫu, của Thu): "KẾT QUẢ MẪU TUẦN 41.xlsx" — sheet: KQM 41 — 59 dòng có dữ liệu.
- FILE 3 (nhật ký, của Lan): "W41.xlsx" — 24 sheet; nhật ký tuần 41 nằm ở sheet "nhập" (656 dòng có dữ liệu) — KIỂM LẠI wb.sheetnames trước khi đọc, tuần trước tên sheet đã đổi khác.
Lưu ý file W41.xlsx nặng ~6 MB ⇒ dùng openpyxl read_only=True, data_only=True; KHÔNG quét max_row.

KẾT QUẢ PHẢI XUẤT RA (đúng tên, vào thư mục C:/Claw 2/Bao cao - Hanh chinh/Bao cao lam mau/):
1. da lam sach/Tuan_41_05.10-11.10_DA-LAM-SACH.xlsx        (file GỘP 3 nguồn)
2. da lam sach/Tuan_41_File1_Chinh_DA-LAM-SACH.xlsx
3. da lam sach/Tuan_41_File2_KQM_DA-LAM-SACH.xlsx
4. da lam sach/Tuan_41_File3_W41_DA-LAM-SACH.xlsx
5. da lam sach/Bao_cao_lam_sach_Tuan41.md   (bố cục: Thông tin chung · Thống kê gộp · bảng Loại mẫu / Trạng thái)

RÀNG BUỘC:
- KHÔNG GHI ĐÈ: nếu tên file đã tồn tại thì lưu thành bản "_v2" và BÁO RÕ trong báo cáo; tuyệt đối không sửa file của các tuần trước.
- GIỮ NGUYÊN mọi con số của nguồn (số lượng, mã mẫu, ngày). Chỉ chuẩn hoá CÁCH VIẾT (khoảng trắng, hoa/thường) — không đổi giá trị.
- KHÔNG BỊA: chỗ không chắc hoặc thiếu thì ghi "chưa rõ" — không tự suy diễn.
- Trong báo cáo .md, khi nêu "tổng số nhà máy" phải là SỐ NHÀ MÁY RIÊNG BIỆT (đếm DISTINCT trên cột Nhà máy), KHÔNG lấy số ở cột Stt hay dòng "Tổng cộng" (bài học T40: agy ghi 82 nhưng thực tế 51).
- Ghi dần tiến độ vào file C:/Claw 2/Bao cao - Hanh chinh/Bao cao lam mau/_tiendo_agy_T41.txt để người theo dõi được.
'''
p = os.path.join(D, 'YEU_CAU_T41.txt')
open(p, 'w', encoding='utf-8', newline='').write(ND)
print('  đã ghi:', os.path.basename(p), os.path.getsize(p), 'B')
