#!/usr/bin/env python3
"""
简化版加盟商状态同步脚本
在OpenClaw环境中直接运行
"""

import json
import time
import logging
from datetime import datetime

# 配置信息
CONFIG = {
    "docid": "dcyeOLceOJqbuQpvY_EyivG5xx0cCPcT2x4kZ3UtkVJBhGqrD7wdc_iKB3za3vqq0foQifL-Y2npwGb1bl6Hb9EQ",
    "status_sheet_id": "q979lj",  # 加盟商状态表
    "progress_sheet_id": "MAqXdi",  # 加盟商工期进度表
    "status_field": "状态",
    "franchisee_field": "加盟商名称",
    "terminated_status": "签约后终止",
    "renewed_status": "再次签约",
    "check_interval": 60,  # 60秒 = 1分钟
}

# 设置日志
logging.basicConfig(
    level=logging.INFO,
    format='%(asctime)s - %(levelname)s - %(message)s'
)

class FranchiseeSyncSimple:
    """简化版同步类"""
    
    def __init__(self, config):
        self.config = config
        self.last_status = {}
        
    def run_check(self):
        """执行一次检查"""
        try:
            print(f"\n[{datetime.now().strftime('%H:%M:%S')}] 开始检查加盟商状态...")
            
            # 这里应该调用 wecom_mcp 工具来获取数据
            # 由于在脚本中无法直接调用，这里展示逻辑流程
            
            # 模拟数据
            mock_records = [
                {
                    "加盟商名称": "北京加盟商A",
                    "状态": "正常",
                    "record_id": "rec1"
                },
                {
                    "加盟商名称": "上海加盟商B", 
                    "状态": "签约后终止",
                    "record_id": "rec2"
                },
                {
                    "加盟商名称": "广州加盟商C",
                    "状态": "再次签约",
                    "record_id": "rec3"
                }
            ]
            
            # 检查状态变化
            changes = self._check_changes(mock_records)
            
            if changes["terminated"] or changes["renewed"]:
                print(f"发现状态变化:")
                if changes["terminated"]:
                    print(f"  - 终止加盟商: {', '.join(changes['terminated'])}")
                    print(f"    → 将从工期进度表中删除对应行")
                if changes["renewed"]:
                    print(f"  - 再次签约加盟商: {', '.join(changes['renewed'])}")
                    print(f"    → 将重新添加到工期进度表")
                
                # 这里应该调用 wecom_mcp 工具执行操作
                # 1. 对于终止的加盟商: smartsheet_delete_records
                # 2. 对于再次签约的加盟商: smartsheet_add_records
                
            else:
                print("未发现状态变化")
                
            print("检查完成")
            
        except Exception as e:
            print(f"错误: {e}")
    
    def _check_changes(self, records):
        """检查状态变化"""
        changes = {"terminated": [], "renewed": []}
        
        for record in records:
            franchisee = record.get("加盟商名称")
            status = record.get("状态")
            
            if not franchisee or not status:
                continue
                
            last_status = self.last_status.get(franchisee)
            
            # 检查状态变化
            if last_status != status:
                if status == self.config["terminated_status"]:
                    changes["terminated"].append(franchisee)
                elif status == self.config["renewed_status"]:
                    changes["renewed"].append(franchisee)
                    
            # 更新最后状态
            self.last_status[franchisee] = status
            
        return changes
    
    def run_continuously(self):
        """持续运行"""
        print("=" * 60)
        print("加盟商状态自动同步服务")
        print("=" * 60)
        print(f"文档URL: https://doc.weixin.qq.com/smartsheet/s3_AA0A_3gpAJMCNd1OF6YsjSTi3l7zF_a")
        print(f"检查间隔: {self.config['check_interval']}秒")
        print("=" * 60)
        print("服务已启动，按 Ctrl+C 停止")
        
        try:
            while True:
                self.run_check()
                time.sleep(self.config["check_interval"])
        except KeyboardInterrupt:
            print("\n服务已停止")

def main():
    """主函数"""
    sync = FranchiseeSyncSimple(CONFIG)
    
    # 显示配置信息
    print("当前配置:")
    print(f"  文档ID: {CONFIG['docid']}")
    print(f"  状态表ID: {CONFIG['status_sheet_id']}")
    print(f"  进度表ID: {CONFIG['progress_sheet_id']}")
    print(f"  状态字段: {CONFIG['status_field']}")
    print(f"  加盟商字段: {CONFIG['franchisee_field']}")
    print(f"  终止状态: {CONFIG['terminated_status']}")
    print(f"  再次签约状态: {CONFIG['renewed_status']}")
    
    # 开始运行
    sync.run_continuously()

if __name__ == "__main__":
    main()