refactor(flow): 回调端点收敛为 starter 默认 /oapi/flow/callback + 开漂移自动核对
build / build-push (push) Successful in 1m5s

网关契约 /{target}/oapi/** 的首段已由 target 承担,应用内端点再加一段
<target> 是冗余(Notice 的 /oapi/notice/flow/callback 属历史遗留:其 oapi
Controller 统一建在 /oapi/notice/** 下)。

- application.yml: notice.flow.callback-path 与 yh.flow-callback.path
  由 /oapi/notice/flow/callback 收敛为 /oapi/flow/callback
- application.yml: 摘除显式 callback-url,注册地址改由 starter 推导
  (open-host ?: yh.open.base-host) + /{target ?: base-path} + path
  ⇒ 生产 = http://open-gateway-service:10013/notice/oapi/flow/callback
  回滚绳:把全地址写回 callback-url 即可,无需回滚镜像
- application.yml: 开 reconcile-on-register=true —— 端点/ctx/base-path
  变更后镜像行有效但登记 URL 不一致时自动重注册,替代"删镜像行→重新保存
  绑定"的手工恢复路径(注意:重注册会轮换 secret)
- NoticeFlowProperties: callbackPath 默认值同步
- 测试 4 处同步冻结字面量/硬编码路径/断言

测试:mvn -o test → 114/114 通过(含 NoticeFlowApiIT 9 例、FlowCallbackTransientIT
1 例在真实过滤链上按新端点 200)
This commit is contained in:
chenxing
2026-09-24 11:57:01 +08:00
parent 58aadaa95a
commit a7e93cb22d
6 changed files with 26 additions and 14 deletions
@@ -31,8 +31,10 @@ public class NoticeFlowProperties {
/**
* 回调路径:挂在开放接口域下,由平台应用验签(/oapi/* 强制)保护,不再有独立回调过滤器。
* 取 starter 默认形态 /oapi/flow/callback——网关契约 /{target}/oapi/** 的首段已由 target
* 承担,端点内不再带应用名前缀(2026-09-24 由 /oapi/notice/flow/callback 收敛)。
*/
private String callbackPath = "/oapi/notice/flow/callback";
private String callbackPath = "/oapi/flow/callback";
/**
* 本服务部署 context-path(可选,无则空):注册时随 basePath 一并申报给 flow-center,
+14 -6
View File
@@ -59,9 +59,10 @@ notice:
# (构造期 fail-fast),不静默打 localhost。
# 本应用对外可达基址(flow-center 回调探活/事件推送打这里;本地=后端直连端口)
callback-base: http://localhost:8101
# 回调端点:必须与 OapiFlowCallbackController 映射一致(/callback/* 已随 X-Flw-* 过滤器下线,
# 旧值会让本地注册的回调地址 404)。不变式由 NoticeFlowCallbackConfigContractTest 冻结。
callback-path: /oapi/notice/flow/callback
# 回调端点:网关契约 /{target}/oapi/** 的首段已由 target 承担,端点不再带应用名前缀(2026-09-24
# 由 /oapi/notice/flow/callback 收敛为 starter 默认值);必须与 yh.flow-callback.path 一致,
# 否则 flow-center 探活/推送 404。不变式由 NoticeFlowCallbackConfigContractTest 冻结。
callback-path: /oapi/flow/callback
# Notice 前端基址(apply bizUrl 拼接,审批人点击跳回通知详情)
front-base-url: http://localhost:8077
# 短信到点补发调度(§3.2 修 BP-R5-2):fixedDelay 5min,扫"已发布+要短信+未发过+已到点"
@@ -105,10 +106,17 @@ yh:
flow-callback:
# 流程中心回调接收端 starter(2026-09-20 迁移):端点/幂等/乱序门由 starter 承担,
# 业务映射见 NoticeFlowCallbackHandler;验签仍由上方 /oapi/* 平台强制验签负责(X-Flw 不启用)
path: /oapi/notice/flow/callback
# path 取 starter 默认值 /oapi/flow/callback(2026-09-24 由 /oapi/notice/flow/callback 收敛)
path: /oapi/flow/callback
biz-types: [notice]
# 注册用回调地址=对外基址+端点路径(占位符组合,防两处配置漂移;base-path 本地无 context-path 不填)
callback-url: ${notice.flow.callback-base}${yh.flow-callback.path}
# 漂移自动核对(2026-09-24 开):端点路径/ctx/base-path 变更后,镜像行有效但登记 URL 与当前
# 期望不一致时自动重新注册,替代"删镜像行→重新保存绑定"的手工恢复路径。注意重注册会轮换 secret。
reconcile-on-register: true
# 注册地址不再显式配置(2026-09-24 摘除 callback-url):由 starter 推导
# (open-host ?: yh.open.base-host) + /{target ?: base-path} + path
# ⇒ 生产 = http://open-gateway-service:10013 + /notice + /oapi/flow/callback
# base-path 本地无 context-path 不填(生产由 projman 注入 /notice)。改地址回滚:把全地址写回
# callback-url 即可(回滚绳),无需回滚镜像。
open:
# 四域服务目录零配置:userbase/userclass/usermsg/flowcenter 枚举兜底 = base-host + 默认 ctx
base-host: http://base.yunhaixingtong.com