# Workflow Monitoring Pitfalls — 2026-06-15 ## auto_notify脚本挂掉不自知 - `auto_notify_new_file.sh` 依赖 `inotifywait` 持续监控,进程消失后无自动重启 - 6月12日后进程消失,6月15日凌晨5份合同完全未被检测到 - 教训:inotifywait类脚本需要进程守护机制(systemd service或cron watchdog) ## workflow suspended无人发现 - workflow因API 500错误suspended后,小Maggie未主动检查 - 规则:"启动后必须跟进到完成(不能启动了不管)" - 必须有机制持续检查`uwf thread list`的状态 ## workflow通知时序 - 旧版:deliverer先通知→final_review后终审→$END(不通知) - 问题:终审rejected时Doro已收到虚假"完成"通知 - 修复:deliverer去掉通知,final_review approved后才通知 - workflow hash变更记录:DQVH5MWCGYXMX → 6EZEZJF8M15V6 → 6T8SCPEQJ7DWJ ## 禁止把Doro放入自动化流程 - Doro明确拒绝❌被加入cron监控或自动通知链 - 技术问题应自行解决,不能设计成"出问题就通知Doro" ## reviewer agent进程反复崩溃 - 端午节合同两次在reviewer阶段因agent进程崩溃失败("agent command failed") - 非workflow逻辑问题,疑为API调用超时或内存问题 - 处理方式:重新启动thread(第三次成功),不修改workflow逻辑 ## 串行调度脚本(auto_notify挂掉时的临时方案) - 位置:`~/.hermes/scripts/run_contract_queue.sh` - 用法:`bash run_contract_queue.sh "file1.docx" "file2.docx" ...` - 逐份创建thread并同步执行,suspended自动重试一次,失败则跳过继续 - 日志:`/tmp/contract_queue.log` - 等待当前运行中的thread完成后再启动队列:写wrapper脚本轮询`uwf thread show`的status直到非running ## contract_docx_lib.py bug修复记录(2026-06-15) - **add_clause/add_clause_before numPr继承bug**:deepcopy相邻段落pPr时会连带numPr,导致新增独立条款错误继承上一条的子编号列表。修复:deepcopy后自动剥离numPr - **签署页INS字体不一致**:editor照抄被替换文字的rPr(sz=24 bold=no),但签署页标签是sz=28 bold=YES。修复:final_review检查清单新增g项和h项