server: port: 8101 spring: mvc: date-format: yyyy-MM-dd HH:mm:ss jackson: time-zone: GMT+8 date-format: yyyy-MM-dd HH:mm:ss datasource: url: jdbc:mysql://localhost:3306/bsch_notice?useUnicode=true&characterEncoding=UTF-8&connectionCollation=utf8mb4_general_ci&serverTimezone=Asia/Shanghai username: root password: 123456 driver-class-name: com.mysql.cj.jdbc.Driver min-idle: 10 max-active: 30 #jpa jpa: database: MySQL show-sql: true hibernate: # 开发期使用 update 自动建表;生产环境设置成 none ddl-auto: update database-platform: org.hibernate.dialect.MySQL5InnoDBDialect properties: hibernate.order_by.default_null_ordering: last open-in-view: true #文件上传 servlet: multipart: max-file-size: 100MB max-request-size: 100MB #本地关闭 rabbit rabbitmq: listener: direct: auto-startup: false simple: auto-startup: false # 文件上传存储路径——仅供本地 Windows 开发兜底;生产读 FILE_PATH(平台统一, # 共享配置 application-platform.yml 一份 /data/upload,子应用不再各自维护), # notice 过渡键 FILE_UPLOAD_PATH(prod 配置已加)仍兼容。 # 切勿在生产只依赖本键:历史教训是 Linux 容器把 D:/data/upload # 锚定成 /app/D:/data/upload 写进容器可写层,每次更新部署附件全部丢失(2026-10)。 file: upload-path: D:/data/upload # 短信模块配置 sms: enabled: true module-id: notice # 先审后发(流程中心托管接缝):enabled=false 时编辑页选择器隐藏、FlowClient 降级 notice: flow: enabled: true # flow-center 地址不再单独配置:见上方 yh.open.services.flow-center(SDK 门面 YschFlowOpenApi)。 # legacy 回落键 notice.flow.base-url 不配即空,且代码侧不给默认值——与目录配置都缺时构造期 # fail-fast,不静默打 localhost。 # 回调地址相关键(callback-base / callback-base-path / callback-path)已于 2026-09-24 删除: # 注册地址改由 yh.flow-callback 三段推导(见下方该段),这三个键已无任何代码引用。 # 前端基址 front-base-url 已于 2026-09-26 删除:apply bizUrl 改传裸相对路径 # (/list/detail?serid=...),绝对化由接收方按页面归属(notice)拼——Notice 零地址类配置。 # 短信到点补发调度(§3.2 修 BP-R5-2):fixedDelay 5min,扫"已发布+要短信+未发过+已到点" # 补发(幂等由 notice.sms_sent_at 原子认领保证)。生产加列见 deploy/sql/20260913_add_sms_sent_at.sql sms: catchup-enabled: true catchup-fixed-delay-ms: 300000 # 消息中心(UserMsg)站内消息推送(发布/转发/编辑转直发/催办): # push-enabled 默认 false(未部署 UserMsg 的环境无空转告警);UserMsg 上线后打开 usermsg: push-enabled: true # 单点登录 / 应用间签名鉴权(基础平台 yh-auth / yh-app-auth) yh: sso: # 本地浏览器联调:登录页=SSO 前端 /login(读取 service 参数回跳), # 票据校验=根路径 /serviceValidate(160 实测;/cas/ 前缀仅存量本地默认值) server-url-prefix: http://sso.yunhaixingtong.com/ client-host-url: http://localhost:8101 allow-headers: all allow-origins: all url-pattern: /api/* mobi-api-pattern: /mobiapi/* app-auth: enabled: true # 本应用自身身份(客户端签名用)。本地联调用 100009(160 UserBase/中央密钥链在册身份, # 互通验证通过;100617 在 160 侧未被 UserBase 信任会导致出站 401)。生产仍为 100617 #(deploy/notice.yaml 唯一真源);flow-center trusted-apps 已同步收 100009 号段 app-key: 100009 app-secret: dcc36c98299a4d36bb0ec39d42008e8c # 提供方强制验签(两级模型 §4.1 试点 P2.1):/oapi/** 匿名 401、注册应用签名直调通过 server: enforce-patterns: [/oapi/*] # 入站验签改走中央密钥链(注册表模式):共享 Redis sign:app:* 单一真源,凡在 UserBase # 注册过的 appKey 自动可验,不再维护白名单(原 trusted-apps 每条都要跟着 UserBase 注册表手改, # 且形成双份真源)。注意:Redis 不可用时验签一律 401(fail-closed,无本地兜底)。 # 本地要跑 oapi 回调而没起 Redis 时,可临时打开下面白名单当兜底(勿提交到生产配置): # trusted-apps: # "100009": "dcc36c98299a4d36bb0ec39d42008e8c" trust-registry: true flow-callback: # 流程中心回调接收端 starter(2026-09-20 迁移):端点/幂等/乱序门由 starter 承担, # 业务映射见 NoticeFlowCallbackHandler;验签仍由上方 /oapi/* 平台强制验签负责(X-Flw 不启用) # path 取 starter 默认值 /oapi/flow/callback(2026-09-24 由 /oapi/notice/flow/callback 收敛) path: /oapi/flow/callback biz-types: [notice] # 漂移自动核对(2026-09-24 开):端点路径/ctx/base-path 变更后,镜像行有效但登记 URL 与当前 # 期望不一致时自动重新注册,替代"删镜像行→重新保存绑定"的手工恢复路径。注意重注册会轮换 secret。 reconcile-on-register: true # 注册地址不再显式配置(2026-09-24 摘除 callback-url):由 starter 推导 # (open-host ?: yh.open.base-host) + /{前缀} + path # 前缀三层回落:target → base-path → 运行时自证 context-path(ServletContext 容器级, # 2026-09-26 起);本地无挂载前缀时空串/"/"视为无前缀,URL 退化为 host+path,不报错 # ⇒ 生产 = http://open-gateway-service:10013 + /notice + /oapi/flow/callback # base-path 可不填(运行时会自证出与真实 ctx 同源的值;显式配置仅作覆盖/逃生口保留)。 # 改地址回滚:把全地址写回 callback-url 即可(回滚绳),无需回滚镜像。 flow-biz: # ysch-flow 语义接入件(2026-10-17 T3 迁移试点):装配总闸是本键——删掉本块即整体不装配, # NoticeFlowCallbackHandler 回退绳随之复位(两者互斥,同一上下文只允许一个 FlowCallbackHandler)。 biz-type: notice # 四语义态 → audit_status 码表(FlowAuditStatusEnum;0=待提交是 Notice 特有暂态,不在映射内) states: {approving: 10, passed: 20, rejected: 30, withdrawn: 40} # 变量契约:条件路由表达式取的两个键(发起前本地预检 + 启动自检依据;与 NoticeFlowService.buildFormData 同口径) variables: [deptId, deptName] # bizUrl 自动装配模式:与迁移前 JumpTarget.page("list/detail").param("serid", id) 的产物 # 逐字节相同(/list/detail?serid=27,裸相对路径,绝对化由接收方按页面归属拼) detail-route: /list/detail?serid={bizId} open: # 四域服务目录零配置:userbase/userclass/usermsg/flow-center 枚举兜底 = base-host + 默认 ctx base-host: http://base.yunhaixingtong.com # flow-center 显式指向本地流程中心(默认枚举兜底会打 base 域网关,网关无 /oapi 路由); # 生产改容器直连 http://flow-center-service:10008/flow-center(projman 注入)。 services: flow-center: http://localhost:8085 # usermsg 显式指向本地消息中心(生产部署 UserMsg 后改容器直连,如 http://usermsg-service:8080/usermsg) usermsg: http://localhost:8080 # env-config 前端运行时配置(免登录 GET /api/env-config?target=front,数据源见 # config/PropertyEnvConfigSource:聚合 starter 自动装配,有 bean 即注册端点)。 # 本地无需配值(前端 dev 走 .env.dev);线上值经环境变量 YH_ENV_CONFIG_SOURCE_FRONT # 或同名键 yh.env-config.source.front 注入(projman 配置管理维护),未配置时端点返回 {}, # 前端走同域推导兜底(serviceHost/baseHost 正确,ssoHost 为空登出跳转不可用)。 # 如需本地联调可打开: # env-config: # source: # front: '{"baseHost":"http://base.yunhaixingtong.com","ssoHost":"http://sso.yunhaixingtong.com","serviceHost":"http://localhost:8101","relayConf":{"ziyuankuHost":"https://base.bestsch.com/BschZyk","zhuanxiangHost":"https://base.bestsch.com/BschZncpd"}}' # 密钥链验签依赖 Redis(sign:app:*)。关掉 Redis 健康指标:Redis 抖动不应把 /actuator/health # 拉成 DOWN(503),否则部署健康检查与探活会误判整机不可用(同 flow-center 口径)。 management: health: redis: enabled: false