整体流程: MQ 消息推送 ↓ main.py 消费并生成线程 ↓ handle_message() → 解析消息体(platform + mode) ↓ 加载 user_list / rule_dict(数据库) ↓ 执行 UniversalCrawler.run() ↓ 1. 读取配置 2. 请求视频接口 3. 解析视频数据(字段映射) 4. 构造 VideoItem 5. 推送到 ETL MQ ↓ 全部成功 → ack 消息 失败 → 不 ack,MQ 自动重试