#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
安全的去識別化工具 v3.0

策略：只替換 HTML 標籤內的文字和特定的字串，避免破壞 JavaScript 程式碼
"""

import os
import re
from pathlib import Path

class SafeAnonymizer:
    def __init__(self):
        # 簡單的直接替換（精確匹配）
        self.replacements = {
            # 客戶名稱
            '新光人壽 2025Q4 投資性不動產覆核': '不動產投資組合分析系統 (Demo)',
            '新光人壽 2025Q4': '投資組合 Demo',
            '新光人壽': 'XX集團',
            '新光': 'XX',

            # 時間資訊
            '2025Q4': '20XX',
            '2025': '20XX',

            # 縣市名稱（按照字數從長到短排序，避免誤替換）
            '台北市': 'A市',
            '新北市': 'B市',
            '桃園市': 'C市',
            '新竹縣': 'D縣',
            '新竹市': 'E市',
            '苗栗縣': 'F縣',
            '台中市': 'G市',
            '彰化縣': 'H縣',
            '南投縣': 'I縣',
            '雲林縣': 'J縣',
            '嘉義縣': 'K縣',
            '嘉義市': 'L市',
            '台南市': 'M市',
            '高雄市': 'N市',
            '屏東縣': 'O縣',
            '宜蘭縣': 'P縣',
            '花蓮縣': 'Q縣',
            '台東縣': 'R縣',
            '澎湖縣': 'S縣',
            '金門縣': 'T縣',
            '連江縣': 'U縣',

            # 估價師事務所
            '麗業': '估價師A',
            '尚上': '估價師B',
            '中徵': '估價師C',
            '瑞普': '估價師D',
            'DTZ': '估價師E',
            '信義': '估價師F',
            '歐亞': '估價師G',
        }

        # 總金額替換
        self.total_value_pattern = r'2,244'
        self.total_value_replacement = 'XX'

    def safe_replace(self, content):
        """安全的替換，只處理字串而不破壞程式碼結構"""
        # 先替換總金額
        content = content.replace('2,244', 'XX')
        content = content.replace('2244', 'XX')

        # 執行所有直接替換
        for old, new in self.replacements.items():
            content = content.replace(old, new)

        return content

    def process_file(self, file_path):
        """處理單一檔案"""
        print(f"處理: {file_path.name}")

        try:
            with open(file_path, 'r', encoding='utf-8') as f:
                content = f.read()

            original_content = content

            # 安全替換
            content = self.safe_replace(content)

            if content != original_content:
                with open(file_path, 'w', encoding='utf-8') as f:
                    f.write(content)
                print(f"  [OK] 已更新")
                return True
            else:
                print(f"  [-] 無需更新")
                return False

        except Exception as e:
            print(f"  [ERROR] 處理失敗: {e}")
            return False

    def process_directory(self, dir_path):
        """處理整個目錄"""
        dir_path = Path(dir_path)
        html_files = [f for f in dir_path.glob('*.html') if '.bak' not in f.name]

        print(f"\n開始處理 {len(html_files)} 個 HTML 檔案...")
        print("=" * 60)

        updated_count = 0
        for html_file in html_files:
            if self.process_file(html_file):
                updated_count += 1

        print("=" * 60)
        print(f"\n處理完成！更新了 {updated_count} 個檔案")


if __name__ == '__main__':
    script_dir = Path(__file__).parent
    viz_dir = script_dir / 'visualization'

    if not viz_dir.exists():
        print(f"錯誤: 找不到 visualization 目錄")
        exit(1)

    anonymizer = SafeAnonymizer()
    anonymizer.process_directory(viz_dir)

    print("\n[OK] 所有檔案處理完成！")
    print("\n重要提醒：")
    print("- 已替換客戶名稱為 'XX集團'")
    print("- 已替換時間為 '20XX'")
    print("- 已替換縣市為匿名代碼 (A市、B市等)")
    print("- 已替換總金額為 'XX 億元'")
    print("- JavaScript 程式碼未受影響")
