build / build-push (push) Successful in 48s
- SvcFlowCallbackHandler.BIZ_TYPE → SvcBizTypes.CURRENT(svc-hall,H-1 实核 appKey=100008 注册行 app_code);yml 回调白名单双值 [svc-hall, svc_item](收敛条件=另一类型不再可能 产生事件,本轮不收敛;回滚也保双值) - 双值双查补丁(先终值后存量,S0-H2 实测中心 svc_item 存量=0,次查为防御性兼容): ApplyViewGuard 办理人分支 / FlowReconcileJob 对账(命中判据=内容非空,兼容 miss 空载体)/ progress 空态出参 / S2 审批代理 byBiz·todo(S2 已落) - P1-02 行级事件绑定校验:事件 schId 与行一致、行有镜像实例时事件 instanceId 必须一致; 不匹配 200 消费但不推进+告警日志(不抛 5xx 防重推风暴);行无值(首发回调早于回填)放行, doFlowApply 回填侧对实例不一致告警留痕(方案B 书面接受第二实例降级) - P1-03 R4 时序修复:markResubmitted 清旧 flowResultJson(保留 lastInstanceVersion 跨轮 乱序防护);Handler 终态守卫改版本感知(事件版本>已消费版本=新轮竞态窗口放行,不再以 旧结果非空一刀切拒绝);非终态推进清残留 finishTime;三场景测试静态化注入 (新轮回调先于 apply 响应/新轮快速终态/旧轮迟到重复) - 测试断言按新语义更新:新件出站断言 svc-hall×3;全量 163/163 绿(Stage S3/P3.2)
156 lines
8.8 KiB
YAML
156 lines
8.8 KiB
YAML
server:
|
||
port: 8086
|
||
# 本地无 context-path(同 Notice dev);生产经 CONTEXT_PATH=/svc-hall 注入,
|
||
# Caddy 只反代 /svc-hall/api/*,页面与上传走前端/静态直出
|
||
|
||
spring:
|
||
application:
|
||
name: svc-hall
|
||
datasource:
|
||
url: jdbc:mysql://localhost:3306/bsch_svchall?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
|
||
username: root
|
||
password: 123456
|
||
driver-class-name: com.mysql.cj.jdbc.Driver
|
||
hikari:
|
||
minimum-idle: 5
|
||
maximum-pool-size: 20
|
||
jpa:
|
||
hibernate:
|
||
# 开发期 update 自动建表;生产环境建议 none + 升级脚本(sql/ 目录)
|
||
ddl-auto: update
|
||
show-sql: false
|
||
open-in-view: false
|
||
database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
|
||
properties:
|
||
hibernate:
|
||
jdbc:
|
||
time_zone: Asia/Shanghai
|
||
jackson:
|
||
date-format: yyyy-MM-dd HH:mm:ss
|
||
time-zone: Asia/Shanghai
|
||
servlet:
|
||
# 对齐《Notice文件上传统一改造方案.md》D4:50MB / 200MB
|
||
multipart:
|
||
max-file-size: 50MB
|
||
max-request-size: 200MB
|
||
|
||
# ===== 基础平台 yh 配置(Cms/Notice 同款三件套)=====
|
||
yh:
|
||
auth:
|
||
enabled: true
|
||
sso:
|
||
server-url-prefix: http://sso.yunhaixingtong.com
|
||
# 本地 dev 指向前端 dev server(8087):CAS 验票回跳走 vite 代理(Cms 同款约定)
|
||
client-host-url: http://localhost:8087
|
||
allow-headers: all
|
||
allow-origins: all
|
||
# 用户面(发起/我的办件)与管理面全在 /api/* 下;本应用无匿名面。
|
||
# 流程中心回调与业务供数都在 /oapi/*(不在 pattern 内,由平台应用签名强制验签保护)
|
||
url-pattern: /api/*
|
||
app-auth:
|
||
enabled: true
|
||
# 本应用自身身份(客户端签名用)——UserBase 注册后分配(进白名单),占位值上线前必须替换,
|
||
# 生产由 projman/Nacos 注入,禁止明文入库仓库(V2.0 R7)
|
||
app-key: 100018
|
||
# 联调态密钥(与 flow-center trusted-apps["100018"] 逐字一致);
|
||
# 注意旧占位"裸 32 个 0"会被 YAML 按八进制整数解析成 "0",签名时 SignUtil 校验直接失败,必须带字母+引号
|
||
app-secret: "svc-hall-dev-secret-100018"
|
||
# 提供方强制验签(两级模型 §4.1,flow-center 同款):本地 OpenApiAuthEnforceConfiguration 副本已删,
|
||
# 换此一行——/oapi/**(含 /oapi/svc/** 供数与 /oapi/flow/callback 回调接收)无签名三件套即 401
|
||
# (starter 版 RequireAppSignFilter,order +11 行为等价)
|
||
server:
|
||
enforce-patterns: [/oapi/*]
|
||
# 中央密钥链(两级模型 §4.2):trusted-apps 先(确定性兜底),未命中走 SignKeyResolver
|
||
# (Redis sign:app:* → Caffeine → UserBase 兜底端点)——任何在 UserBase 注册过的 appKey 自动可验。
|
||
# 需 data-redis 依赖(yh-app-auth 侧 optional 不传递,pom 已显式引入)
|
||
trust-registry: true
|
||
# 入站验签白名单(组合链第一层,Redis 停摆时确定性工作):CMS(/oapi/svc/** 消费方,appKey=100005)、
|
||
# flow-center(回调推送方,appKey=100019 联调态密钥;生产密钥由平台注入)
|
||
trusted-apps:
|
||
100005: 2c7885de594742cc840b8762910b2d2e
|
||
"100019": "flow-center-dev-secret-100019"
|
||
open:
|
||
# 身份密钥唯一来源 = yh.app-auth.app-key/app-secret(本文件 app-auth 段),open.* 副本已删
|
||
base-host: http://base.yunhaixingtong.com
|
||
# 服务目录(子应用配置优化方案 §4.2):跨服务出站唯一地址来源,命名目标走 SDK 门面 /
|
||
# YschOpenCall。cms 未晋升 PlatformService 枚举(按名直调);flow-center 已入枚举。
|
||
# 完整 URL 拆 host+ctx,per-target base-path 与提供方 context-path 对齐 → 签名天然一致。
|
||
# 生产改容器直连:flow-center=http://flow-center-service:10008/flow-center、
|
||
# cms=http://yschcms-service:10005/yschcms。
|
||
# (base-path /userbase 已删 2026-10-05,对齐 Notice 形态:该键代码默认值即 /userbase,删键无行为变化,
|
||
# 回调前缀推导读的是 yh.flow-callback.target/base-path 三层回落,与本键无关)
|
||
services:
|
||
# 生产零配置:不配则枚举兜底 = base-host(网关)+/flow-center;此处显式覆盖仅本地开发用
|
||
# (Notice 同款)。生产如仍被平台层注入容器直连值,属平台配置项(projman yh.open.services 段)。
|
||
flow-center: http://localhost:8085
|
||
cms: http://base.yunhaixingtong.com:10005/yschcms
|
||
|
||
# 流程中心回调接收端 starter(2026-09-20 迁移;2026-10-05 收敛 Notice 形态):
|
||
# 端点/幂等/乱序门由 starter 承担,业务映射见 SvcFlowCallbackHandler;
|
||
# 验签由上方 /oapi/* 平台应用签名强制验签负责(X-Flw 不启用;flow-center 推送三件套+X-Flw 双带,
|
||
# Notice 线上实证此形态);secret 镜像在 flow_callback_reg(迁移 SQL 见 sql/)
|
||
flow-callback:
|
||
path: /oapi/flow/callback
|
||
# P3.2 方案B(2026-10-19)双值白名单:终值 svc-hall(H-1 实核 app_code)+ 存量 svc_item。
|
||
# 收敛条件=另一类型不再可能产生事件(覆盖 0 态重试/30/40 重提/积压核清),本轮不收敛单值;
|
||
# 回滚也保双值。读路径(guard/对账/审批代理)双查见 SvcBizTypes#queryOrder()。
|
||
biz-types: [svc-hall, svc_item]
|
||
# 漂移自动核对(Notice 同款):端点路径/ctx 变更后,镜像行有效但登记 URL 与当前期望不一致时
|
||
# 自动重新注册(会轮换 secret)——2026-10-05 改路径后 160 存量 /callback/flow 行靠它收敛
|
||
reconcile-on-register: true
|
||
# 注册地址不再显式配置(callback-url 已删):由 starter 推导
|
||
# (open-host ?: yh.open.base-host) + /{前缀} + path,前缀三层回落 target → base-path → 运行时自证
|
||
# context-path(本仓三层均未显式配置 → 生产 ctx=/svc-hall 自证)。
|
||
# ⇒ 生产 = http://open-gateway-service:10013/svc-hall/oapi/flow/callback(base-host 平台注入)
|
||
# 改地址回滚:把全地址写回 callback-url 即可(回滚绳),无需回滚镜像。
|
||
|
||
# ===== 办事大厅专属配置 =====
|
||
svchall:
|
||
# (public-base-url 已删 2026-10-05:唯一消费方是回调注册 callback-url 拼接,回调地址改由
|
||
# yh.flow-callback 三段推导(见上方该段),本应用地址类配置进一步清零;file.public-base-url 是另一键不受影响)
|
||
# 前端地址 front.base-url 已删(2026-09-26):办件 bizUrl 改传裸相对路径,绝对化由接收方按
|
||
# 页面归属查基址承担——解析键=flw_instance.apply_app_code(apply 时由验签身份 appKey 按注册表
|
||
# 换得的 app_code 快照,与 bizType 是两个字段互不影响)——本应用地址类配置清零(自指地址优化 Phase 2)
|
||
item:
|
||
# 服务部门"容器组"类型(UserBase GroupTypeEnum,默认 7=教师组;口径承袭 CMS cms.svc.item.dept-group-type)
|
||
dept-group-type: 7
|
||
cms:
|
||
# CMS 基址已迁至服务目录 yh.open.services.cms(上方 open 段)。
|
||
# 务必指向**后端**且带 context-path:内网 CMS 挂在 base 域下 /yschcms,但 Caddy 只反代
|
||
# /yschcms/{front,api,portal},没有 /oapi 路由——用 http://base.yunhaixingtong.com/yschcms
|
||
# 打 /oapi/* 会拿到 Caddy 404,因此必须是容器直连端口 10005
|
||
# (实测 /yschcms/oapi/site/list 能到应用)。
|
||
flow:
|
||
# 流程中心 flow-center 基址已迁至服务目录 yh.open.services.flowcenter(上方 open 段)。
|
||
# enabled=false(本地未部署 flow-center)时全部方法抛业务异常,消费方按需降级。
|
||
enabled: true
|
||
# 对账 Job 应急闸(契约冻结"消费方免每日对账":flow-center 持续重试+死信+挂起告警为主链路)。
|
||
# 默认 false 停用;仅大面积漂移事故应急时置 true 开闸(每日 04:00 跑)
|
||
reconcile-enabled: false
|
||
file:
|
||
# 文件对外可达基址(绝对地址):上传返回值、oapi 富文本内链绝对化都用它。
|
||
# 本地=后端直连(无 context-path);生产=https://base.yunhaixingtong.com/svc-hall/upload/
|
||
# (Projman 自动生成静态直出段,prod 由 CONTEXT_PATH 注入应用上下文)
|
||
public-base-url: http://localhost:8086/upload/
|
||
|
||
logging:
|
||
level:
|
||
com.yunhai.svchall: debug
|
||
|
||
management:
|
||
endpoints:
|
||
web:
|
||
exposure:
|
||
include: health
|
||
endpoint:
|
||
health:
|
||
show-details: never
|
||
# 密钥链验签依赖 Redis(sign:app:*)。关掉 Redis 健康指标:Redis 抖动不应把 /actuator/health
|
||
# 拉成 DOWN(503),否则部署健康检查与探活会误判整机不可用(Notice/flow-center 同口径)
|
||
health:
|
||
redis:
|
||
enabled: false
|
||
|
||
# 文件存储磁盘路径(Notice 三件套约定;Docker 部署时与 volume 挂载一致)
|
||
FILE_PATH: D:/bsch/svchall/upload/
|