# -*- coding: utf-8 -*-
r"""B114: tạo build_sx_portal_t41.py từ bản T40 (đổi ĐỦ 6 chỗ), grep dấu vết tuần cũ, CHẠY, rồi verify."""
import os, re, subprocess, sys

LAM = r'C:\Claw 2\Bao cao - Hanh chinh\Bao-cao-sx\LAMSACH'
src = os.path.join(LAM, 'build_sx_portal_t40.py')
dst = os.path.join(LAM, 'build_sx_portal_t41.py')
s = open(src, encoding='utf-8').read()

thay = [
    ('Nguồn: BANG_BC_SX_TUAN_40_DA-LAM-SACH.xlsx (sheet T40).', 'Nguồn: BANG_BC_SX_TUAN_41_DA-LAM-SACH.xlsx (sheet T41).'),
    ('BANG_BC_SX_TUAN_40_DA-LAM-SACH.xlsx', 'BANG_BC_SX_TUAN_41_DA-LAM-SACH.xlsx'),
    ('HTML/Tuan 40/Bao_cao_SanXuat_Tuan40_Portal.html', 'HTML/Tuan 41/Bao_cao_SanXuat_Tuan41_Portal.html'),
    ("TUAN = '40'", "TUAN = '41'"),
    ("KY = '28/09 → 03/10/2026'", "KY = '05/10 → 10/10/2026'"),
    ("NGAY = '07/10/2026'", "NGAY = '14/10/2026'"),
]
for cu, moi in thay:
    n = s.count(cu)
    s = s.replace(cu, moi)
    print('  đổi %-58s -> %s (%d lần)' % (cu[:56], moi[:34], n))
open(dst, 'w', encoding='utf-8').write(s)
print('  đã tạo:', dst, os.path.getsize(dst), 'B')

print()
print('  --- grep dấu vết tuần cũ (phải = 0):')
xau = 0
for pat in (r'Tuan 40', r"TUAN = '40'", r'BANG_BC_SX_TUAN_40', r'28/09', r'03/10/2026', r'07/10/2026', r'Tuan40'):
    n = len(re.findall(pat, s))
    xau += n
    print('    %-24s %d' % (pat, n))
print('  => tổng dấu vết tuần cũ:', xau)

# sửa luôn docstring của script làm sạch cho khỏi lẫn
p_clean = os.path.join(LAM, 'clean_sx_t41_only.py')
sc = open(p_clean, encoding='utf-8').read()
sc2 = sc.replace('Làm sạch file BẢNG BC TÌNH HÌNH SX - TUẦN 40 (bản chỉ chạy tuần 40)',
                 'Làm sạch file BẢNG BC TÌNH HÌNH SX - TUẦN 41 (bản chỉ chạy tuần 41)')
if sc2 != sc:
    open(p_clean, 'w', encoding='utf-8').write(sc2)
    print('  đã sửa docstring clean_sx_t41_only.py')

print()
print('  === CHẠY build_sx_portal_t41.py ===')
r = subprocess.run([sys.executable, dst], capture_output=True, text=True, encoding='utf-8', errors='replace',
                   cwd=LAM, timeout=600)
print(((r.stdout or '') + (r.stderr or ''))[-900:])
print('  exit =', r.returncode)
out = r'C:\Claw 2\Bao cao - Hanh chinh\BAOCAOTONGHOP\HTML\Tuan 41\Bao_cao_SanXuat_Tuan41_Portal.html'
print('  portal:', out, os.path.exists(out) and ('%d B' % os.path.getsize(out)) or 'CHƯA CÓ')
