Files
svc-hall-service/src/main/resources/application.yml
T
chenxing 05d2143ce1
build / build-push (push) Successful in 48s
feat(p3.2): bizType 方案B——常量换终值 svc-hall + 双值双查 + P1-02 行级绑定校验 + P1-03 R4 时序修复
- 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)
2026-10-19 23:49:02 +08:00

156 lines
8.8 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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/