销售确认、库存完成、发票过账后触发的出站 Webhook/自动化,一旦静默失败就会丢单。Odoo 19 要用自动化动作或服务器动作写出站,并把请求体、响应码、耗时落到可查询台账;禁止 try/except: pass。本文说明台账字段、告警阈值、重放校验与财务类出站的人工闸门。
台账字段建议
至少记录:业务模型与 res_id、外部幂等键、请求摘要、响应码、响应摘要、重试次数、状态(pending/success/failed/replayed)、最后错误、操作人。可挂在专用模型,或结构化写入 mail.message(勿只写不可检索的自由文本)。
告警
连续失败 3 次或 15 分钟内失败 ≥5 次推送邮件/企业微信/Discuss。告警带单据链接、payload 摘要、上次成功时间。区分「网络超时」与「HTTP 200 但业务拒绝」——后者要解析响应体,不能当成功。
人工重放
重放按钮先校验幂等键,避免外部重复建单。每次重放记操作人、时间、结果。付款通知、开票类出站默认人工确认,不做无限自动重试。自动化上下文常用管理员:注意权限与真实用户审计差异。
常见坑
- 超时当成功。
- 重放改了 payload 却未改幂等键,外部仍拒收。
- 在管理员上下文写入了业务员不可见的数据。
验收标准
- 人为断外网能在约定时间内告警。
- 重放成功后台账有操作人与时间。
- 同一幂等键二次重放被拒绝或标记幂等成功。
出站台账的最小可用模型字段
若自建模型,建议字段:res_model、res_id、idempotency_key、
request_payload、response_code、response_body、
state、retry_count、last_error、replay_user_id、
replay_time。列表视图默认过滤 failed;表单上放「重放」按钮(服务器动作)。
与自动化动作联动时,把台账 id 写回单据 chatter,方便业务人员从订单跳进失败记录。
出站失败若涉及客户承诺时效,告警同时抄送业务负责人,而不仅是运维频道。
重放权限与财务闸门
重放按钮只给集成运维组;财务类出站(付款通知、电子发票)另加「会计确认」字段,未确认禁止重放。
告警聚合:同一下游连续失败合并通知,避免刷屏。把台账 state 与业务单据状态对照:
业务已取消的出站应标记 skip 而不是无限重试。自动化动作调试时在预生产打开,
确认管理员上下文写入的消息对业务员可见性符合预期。
季度演练:断开下游,观察告警时效;恢复后按台账批量重放,核对幂等键无双单。
出站台账保留周期与个保要求对齐,过期归档而非直接物理删。
预生产勾选表需覆盖文章编号 317 全部验收点后再约生产窗口。
将文章编号 317 的配置变更记入发版说明,便于回滚对照。
将文章编号 317 的配置变更记入发版说明,便于回滚对照。
将文章编号 317 的配置变更记入发版说明,便于回滚对照。
将文章编号 317 的配置变更记入发版说明,便于回滚对照。
台账保留与审计
出站台账保留周期按个保与财务要求设定,过期归档。重放双人复核适用于付款类。 告警聚合防刷屏。业务取消的单据自动 skip 后续出站。预生产每月演练断网告警与批量重放, 核对幂等键。台账列表过滤 failed 作为集成运维日常首页。
中国Odoo网|对照 Odoo 19 企业版出站自动化实践:可告警、可检索、可重放,财务出站加人工闸门。