☰
Current Page
Main Menu
Home
Home
Editing REPAIR_LOG
Edit
Preview
H1
H2
H3
default
Set your preferred keybinding
default
vim
emacs
markdown
Set this page's format to
Markdown
Plain Text
Pod
RDoc
reStructuredText
Rendering unavailable for
AsciiDoc
BibTeX
Creole
MediaWiki
Org-mode
Textile
Help 1
Help 1
Help 1
Help 2
Help 3
Help 4
Help 5
Help 6
Help 7
Help 8
Autosaved text is available. Click the button to restore it.
Restore Text
# 北京展览自动更新系统 - 问题诊断与修复 ## 📋 问题描述(2026-03-17) **用户反馈**:北京展览飞书文档 10 天没更新(实际停在 3 月 7 日) **实际情况**: - 爬虫脚本每天正常执行 ✅ - 日志显示"飞书同步成功" ✅ - **但飞书文档内容没有更新** ❌ --- ## 🔍 根本原因 ### 系统设计缺陷 **原有流程**: ``` daily_cron.sh ├─ python crawler.py → 爬取数据 ✅ ├─ python feishu_sync.py → 输出 FEISHU_SYNC_COMMAND(JSON)⚠️ └─ python heartbeat_check.py → 检查状态 ✅ ``` **问题**: 1. `feishu_sync.py` 只输出 JSON 指令到 stdout,**没有真正调用 feishu_doc** 2. shell 脚本无法直接调用 `openclaw feishu_doc` 工具 3. 没有"上层调度器"解析并执行 FEISHU_SYNC_COMMAND 4. 脚本声称"飞书同步成功",但实际**没有执行同步操作** ### 违反端到端验收原则 这是 MEMORY.md 中记录的典型案例: - ❌ "执行了" ≠ "成功了" - ❌ "创建了" ≠ "完成了" - ✅ 必须验证最终结果 --- ## ✅ 修复方案(v2.0 - 2026-03-17) ### 新流程设计 ``` daily_cron.sh ├─ python crawler.py → 爬取数据到 exhibitions.db ✅ ├─ python feishu_sync.py → 生成 data/feishu_sync_pending.json ✅ └─ python heartbeat_check.py → 输出 FEISHU_DOC_SYNC 指令 ✅ Travel Agent 心跳检查 └─ 读取 feishu_sync_pending.json → 调用 feishu_doc write ✅ ``` ### 核心改动 1. **feishu_sync.py**:不再输出 JSON 到 stdout,而是写入 `data/feishu_sync_pending.json` 2. **heartbeat_check.py**:读取 pending 文件,输出 `FEISHU_DOC_SYNC` 指令 3. **Travel Agent 心跳**:捕获 `FEISHU_DOC_SYNC` 指令,调用 `feishu_doc` 执行 ### 文件清单 | 文件 | 状态 | 说明 | |------|------|------| | `feishu_sync.py` | ✅ 已修复 | 生成待同步文件 | | `heartbeat_check.py` | ✅ 已修复 | 输出同步指令 | | `daily_cron.sh` | ⚠️ 待修复 | 需要更新日志消息 | | `data/feishu_sync_pending.json` | 新增 | 待同步指令文件 | --- ## 🧪 测试验证 ### 手动测试(2026-03-17 20:30) **步骤 1**:直接调用 feishu_doc 更新文档 ```bash feishu_doc write --doc_token IIpVd0zDZoJgSSxPdsXc0DzHneh --content "..." ``` **结果**:✅ 成功(revision_id 从 4 变为 6) **步骤 2**:验证飞书文档内容 ```bash feishu_doc read --doc_token IIpVd0zDZoJgSSxPdsXc0DzHneh ``` **结果**:✅ 显示"最后更新:2026-03-17 09:00" ### 自动化测试(待执行) **明天(3 月 18 日)早上 9 点**: 1. cron 触发 daily_cron.sh 2. 爬虫执行成功 3. feishu_sync.py 生成 pending 文件 4. heartbeat_check.py 输出 FEISHU_DOC_SYNC 指令 5. Travel Agent 心跳捕获指令并执行 6. 飞书文档自动更新 **验收标准**: - [ ] 飞书文档标题包含"2026-03-18" - [ ] 飞书文档内容非空 - [ ] 用户收到飞书通知 --- ## 📝 经验教训 ### 核心原则 1. **端到端验收** ⭐⭐⭐⭐⭐ - 不验证中间步骤(如"脚本执行成功") - 只验证最终结果(如"飞书文档内容已更新") 2. **不假设工具可用** ⭐⭐⭐⭐ - shell 脚本无法直接调用 openclaw 工具 - 需要设计合理的跨工具通信机制 3. **文件作为通信媒介** ⭐⭐⭐⭐ - 使用 JSON 文件传递复杂数据 - 避免 stdout 解析的不可靠性 ### 已添加到 MEMORY.md - ✅ 端到端验收原则(2026-03-06) - ✅ Sub-agent 验收机制(2026-03-09) - ✅ 北京展览爬取系统(2026-03-07) - 🔄 本次修复:飞书同步机制(2026-03-17) --- ## 🔧 后续优化 ### 短期(本周) - [ ] 修复 daily_cron.sh 日志消息 - [ ] 添加 Travel Agent 心跳处理逻辑 - [ ] 测试完整自动化流程 ### 中期(本月) - [ ] 添加失败告警机制(飞书同步失败时通知) - [ ] 添加重试机制(同步失败后自动重试) - [ ] 添加同步状态监控(dashboard) ### 长期(下季度) - [ ] 迁移到独立服务(不再依赖 cron) - [ ] 添加 Web UI(查看同步状态) - [ ] 支持多数据源对比(检测数据异常) --- *由 Travel Agent 创建 | 2026-03-17 20:45*
Uploading file...
Edit message:
Cancel