BỐI CẢNH: Bạn đang làm việc trong dự án “Bao cao lam mau” của Công ty TNHH SX-TM Hóa Keo Bình Thạnh (BT CHEM). Đây là việc LẶP HẰNG TUẦN: TUẦN 39 (từ 21/09/2026 đến 27/09/2026). Hãy làm giống hệt cách các tuần trước, KHÔNG tự nghĩ cách khác. BƯỚC 0 — BẮT BUỘC ĐỌC TRƯỚC ĐỂ BÁM CHUẨN: - `clean_and_merge_tuan38.py` (bản gần nhất — bám đúng class `DataCleanerAndMergerT38`, từ điển chuẩn hoá tên kỹ thuật, cách ghi file sạch). - `da lam sach\Bao_cao_lam_sach_Tuan38.md` (bố cục báo cáo MD tuần trước). - `da lam sach\Tuan_38_*.xlsx` (định dạng file sạch tuần trước: cột, thứ tự cột, kiểu trình bày). - `generate_report.py` / `generate_report_ttf.py` nếu tuần trước dùng để ra file DOCX. BƯỚC 1 — ĐỌC 3 FILE ĐẦU VÀO (tên file và số dòng dưới đây là do tôi tự đếm, dùng làm mốc đối chiếu): 1. `TUẦN 39 (21.09-27.09).xlsx` — file chính (Mến). Sheet duy nhất: `TUẦN 39`. - Dòng 1: tiêu đề “BẢNG KẾT QUẢ LÀM MẪU TUẦN 39…”; dòng 3–7: khối tổng hợp (MẪU MỚI 47 · MẪU NHÂN 24 · TỔNG 71 · MẪU BỘ 96; hoàn thành 71, đã ký 12); dòng 9–10: tiêu đề bảng chi tiết; dữ liệu chi tiết từ dòng 11. - **125 dòng có dữ liệu, dòng cuối cùng có dữ liệu là dòng 128, 17 cột.** 2. `KQM TUẦN 39.xlsx` — khách lẻ (Nguyễn Thị Thu). Sheet duy nhất: `KQM 39` (tiêu đề “TỔNG HỢP KẾT QUẢ MẪU KHÁCH…”, dòng 3–4 là 2 tầng tiêu đề, dữ liệu từ dòng 5), **62 dòng có dữ liệu (dòng cuối 62)**. Người lập ghi ở cuối: Nguyễn Thị Thu. 3. `W39.xlsx` — nhật ký theo dõi mẫu (Lan), **24 sheet, 5,72 MB**. Các sheet quan trọng: `THEO DÕI MẪU NĂM 2021-2023` (**3.235 dòng**), `nhập` (**606 dòng**), `DM VẬT TƯ` (63), `MẪU GỬI ĐI` (438), `GIAO TRÀ` (71), `NHẬP HÀNG 2021-2023` (3.246), `NHẬP HÀNG 2024` (1.055), `IN DỌC`/`IN NGANG` (53), `IN LỊCH TRỰC` (37), các sheet nhỏ khác. ⚠️ CẢNH BÁO KỸ THUẬT: đọc Excel bằng `openpyxl.load_workbook(path, read_only=True, data_only=True)`; **TUYỆT ĐỐI KHÔNG quét `ws.max_row`** cho tới hết (file có định dạng phủ hết cột ⇒ báo 1.048.576 dòng, sẽ treo/ngốn RAM); dừng ở dòng cuối có dữ liệu. Máy yếu (7 GB RAM) — đọc từng sheet rồi giải phóng, không nạp 3 file cùng lúc. BƯỚC 2 — SẢN PHẨM CẦN TẠO (đặt đúng như các tuần trước): a) Trong `da lam sach\`: - `Tuan_39_21.09-27.09_DA-LAM-SACH.xlsx` (file gộp sạch — tương ứng `Tuan_38_14.09-19.09_DA-LAM-SACH.xlsx`) - `Tuan_39_File1_Chinh_DA-LAM-SACH.xlsx`, `Tuan_39_File2_KQM_DA-LAM-SACH.xlsx`, `Tuan_39_File3_W39_DA-LAM-SACH.xlsx` - `Bao_cao_lam_sach_Tuan39.md` — bố cục theo `Bao_cao_lam_sach_Tuan38.md`: “Thông tin chung” (file gốc 1/2/3 + file sạch đầu ra + ngày xử lý) → “Thống kê dữ liệu gộp” (tổng số nhà máy, tổng số dòng, tổng sản lượng mẫu, số mẫu đã có đơn hàng) → 2 bảng `Loại mẫu | Số lượng dòng` và `Trạng thái | Số lượng dòng`. b) Trong `Bao cao\`: `Bao_cao_tien_do_lam_mau_tuan_36_39.docx` — báo cáo TIẾN ĐỘ LÀM MẪU 4 TUẦN (tuần 36 → 39), bố cục và font giống hệt `Bao_cao_tien_do_lam_mau_tuan_34_37.docx` (mở file đó ra đọc để bám: cùng tiêu đề, cùng thứ tự mục, cùng kiểu bảng). Lưu ý: **bản tuần 35–38 chưa có**, nên báo cáo này chỉ cần phủ tuần 36–39. BƯỚC 3 — QUY TẮC BẮT BUỘC: - **KHÔNG ghi đè file đã có**: nếu trùng tên thì thêm `_v2` và nói rõ trong báo cáo MD. - **Giữ nguyên mọi con số**, chỉ chuẩn hoá CÁCH VIẾT tên. Tên chuẩn đã chốt: **Nguyễn Đức Thăng** (không viết “Thắng”) · **Lê Văn Hòa** (không viết “Hoà”) · nhà máy **Geuther**, **Demeyer** · khách **Axcess** (không viết “Access”) · hãng sơn **Xinpan**. Không viết tắt “KTV”. - **KHÔNG bịa số**: chỗ không chắc ghi “chưa chắc/chưa rõ”. Không tự sửa số liệu của 3 file nguồn. - In ra stdout (bằng tiếng Việt có dấu): danh sách file đã tạo kèm dung lượng, bảng thống kê tuần 39, và **số dòng đọc được từ MỖI file** để tôi đối chiếu mốc (125 / 62 / 3235 / 606). - Ghi dần kết quả ra file ngay khi làm xong từng phần (đừng đợi hết mới ghi), để tôi theo dõi được tiến độ. - Kết thúc bằng dòng xác nhận `HOÀN TẤT` và liệt kê đường dẫn tuyệt đối của từng sản phẩm.