#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
超簡單去識別化工具

策略：只替換陣列中的字串值，例如：
['台北市', '新北市'] -> ['A市', 'B市']

不碰任何程式碼、函數名稱、變數名稱
"""

import re
from pathlib import Path

# 定義替換規則
REPLACEMENTS = {
    # 縣市（完整匹配）
    '台北市': 'A市',
    '新北市': 'B市',
    '桃園市': 'C市',
    '台中市': 'D市',
    '台南市': 'E市',
    '高雄市': 'F市',
    '基隆市': 'G市',
    '新竹市': 'H市',
    '新竹縣': 'I縣',
    '苗栗縣': 'J縣',
    '彰化縣': 'K縣',
    '南投縣': 'L縣',
    '雲林縣': 'M縣',
    '嘉義市': 'N市',
    '嘉義縣': 'O縣',
    '屏東縣': 'P縣',
    '宜蘭縣': 'Q縣',
    '花蓮縣': 'R縣',
    '台東縣': 'S縣',
    '澎湖縣': 'T縣',
    '金門縣': 'U縣',
    '連江縣': 'V縣',
}

def simple_replace(content):
    """
    最簡單的替換：只替換在陣列或字串中的完整縣市名稱
    例如：'台北市' -> 'A市', "台北市" -> "A市"
    """
    for old, new in REPLACEMENTS.items():
        # 替換單引號包圍的
        content = content.replace(f"'{old}'", f"'{new}'")
        # 替換雙引號包圍的
        content = content.replace(f'"{old}"', f'"{new}"')
        # 替換一般文字（用於 HTML 內容）
        content = content.replace(old, new)

    # 替換其他敏感資訊
    content = content.replace('新光人壽 2025Q4', '投資組合 Demo')
    content = content.replace('新光人壽', 'XX集團')
    content = content.replace('2025Q4', '20XX')
    content = content.replace('2,244', 'XX')

    return content

def process_file(file_path):
    """處理單一檔案"""
    print(f"處理: {file_path.name}")

    with open(file_path, 'r', encoding='utf-8') as f:
        original = f.read()

    modified = simple_replace(original)

    if modified != original:
        with open(file_path, 'w', encoding='utf-8') as f:
            f.write(modified)
        print(f"  [OK] 已更新")
        return True
    else:
        print(f"  [-] 無需更新")
        return False

def main():
    viz_dir = Path(__file__).parent / 'visualization'
    html_files = [f for f in viz_dir.glob('*.html') if '.bak' not in f.name]

    print(f"\n處理 {len(html_files)} 個檔案...\n")

    updated = 0
    for f in html_files:
        if process_file(f):
            updated += 1

    print(f"\n完成！更新了 {updated} 個檔案")

if __name__ == '__main__':
    main()
