def main():
    """主程序入口"""
    # 配置信息（从环境变量或配置文件读取）
    CONFIG = {
        "cookie": "_m_h5_tk=your_token_here; ...",  # 替换为真实Cookie
        "serverchan_key": "YOUR_SERVERCHAN_KEY",
        "dingtalk_webhook": "https://oapi.dingtalk.com/robot/send?access_token=xxx",
    }
    
    # 初始化组件
    logger = Logger()
    notifier = NotificationManager(
        serverchan_key=CONFIG["serverchan_key"],
        dingtalk_webhook=CONFIG["dingtalk_webhook"]
    )
    
    # 创建秒拍机器人
    bot = AutoPurchaseBot(cookie=CONFIG["cookie"], headless=False)
    bot.start()
    
    # 创建监控引擎
    engine = AsyncMonitorEngine(cookie=CONFIG["cookie"])
    
    # 注册新商品回调
    def on_item_found(item: Dict):
        logger.info(f"发现新商品: {item.get('title')} - ¥{item.get('price')}")
        notifier.send_item_alert(item)
        # 符合条件的商品自动加入秒拍队列
        if item.get("price", 0) < 100:  # 100元以下自动抢
            bot.add_to_queue(item)
    
    engine.register_callback(on_item_found)
    
    # 添加监控任务
    filter_switch = ItemFilter(
        min_price=0,
        max_price=300,
        keywords_include=["switch", "任天堂"],
        keywords_exclude=["坏", "维修", "尸体"]
    )
    
    task = MonitorTask(
        task_id="switch_monitor",
        keyword="switch 游戏机",
        filter=filter_switch,
        interval_seconds=10,
        sort="new",
        max_pages=2,
        enabled=True
    )
    engine.add_task(task)
    
    filter_iphone = ItemFilter(min_price=500, max_price=2000, keywords_exclude=["屏幕坏", "进水"])
    task2 = MonitorTask(
        task_id="iphone_monitor",
        keyword="iPhone",
        filter=filter_iphone,
        interval_seconds=15,
        sort="new",
        max_pages=1
    )
    engine.add_task(task2)
    
    # 启动监控（阻塞运行）
    try:
        logger.info("闲鱼监控秒拍系统启动...")
        engine.start()
    except KeyboardInterrupt:
        logger.info("收到中断信号，正在关闭...")
        engine.stop()
        bot.stop()
        logger.info("系统已关闭")

if __name__ == "__main__":
    main()