#!/usr/bin/env python3
"""
工作台数据同步检查器
检查本地数据文件是否比 CloudBase 新，提示部署
"""
import json, os, hashlib
from datetime import datetime

DATA = os.path.expanduser('~/Desktop/Hermes输出-工作类/数据')
STATE_FILE = os.path.expanduser('~/Desktop/Hermes输出-工作类/.hermes/sync_state.json')

# 需要监控的文件
WATCH_FILES = {
    'kpi_progress.json': '数据/kpi_progress.json',
    'shipment_status.json': '数据/shipment_status.json',
    'workbench_data.json': '数据/workbench_data.json',
    'my_activities.json': '数据/my_activities.json',
}

def hash_file(path):
    if not os.path.exists(path): return None
    with open(path, 'rb') as f:
        return hashlib.md5(f.read()).hexdigest()

def load_state():
    if os.path.exists(STATE_FILE):
        with open(STATE_FILE) as f:
            return json.load(f)
    return {}

def save_state(state):
    os.makedirs(os.path.dirname(STATE_FILE), exist_ok=True)
    with open(STATE_FILE, 'w') as f:
        json.dump(state, f, indent=2)

def check():
    state = load_state()
    changed = []
    
    for name, rel_path in WATCH_FILES.items():
        local_path = os.path.join(DATA, name)
        current_hash = hash_file(local_path)
        prev_hash = state.get(name)
        
        if current_hash and current_hash != prev_hash:
            size = os.path.getsize(local_path)
            changed.append((name, rel_path, size, prev_hash is None))
            state[name] = current_hash
    
    save_state(state)
    return changed

if __name__ == '__main__':
    changed = check()
    if changed:
        print('🔔 以下数据文件已变更，是否部署到工作台？\n')
        for name, path, size, is_new in changed:
            mtime = datetime.fromtimestamp(os.path.getmtime(os.path.join(DATA, name)))
            print(f'  📄 {name} ({size//1024}KB) — {mtime.strftime("%m-%d %H:%M")}')
        print(f'\n  部署命令: bash ~/.hermes/scripts/cb_sync_data.sh')
        print(f'  或单个: tcb hosting deploy 数据/{name} 数据/{name} -e bier-sales-d0gatbvlx288724e9')
    else:
        print('✅ 所有数据文件与上次同步时一致，无需部署')
