4.9 KiB
Raw Blame History

Research: sw-business-bank 银行代扣文件传输配置能力

研究目标

本轮研究只解决“配置承接 + 统一解析 + 审计落点 + 文档闭环”,不把真实银行生产联调、完整 SFTP/FTP 客户端接入或私有文件报文解析扩展进当前范围。

基线与现状

  • backend 基线固定为:water-backend branch 001-sys009-withholding-closure @ 84493513c1d06936210ab7e697985d38958ba5ee
  • 当前 BankWithholdingServiceImpl 在业务方法内硬编码生成送盘、回盘、对账路径,未复用统一解析层。
  • 当前批次对象已能保存送盘/回盘/对账文件名与路径,但未统一保存协议与目录。
  • 当前配置加载已沿用 Spring profile + Nacos 导入方式,可承接环境级默认规则。
  • ChannelApiConfigDO.extParams 已存在但当前为空对象,可作为银行通道级覆盖配置的最小 carrier。

现有实现问题归纳

  1. 路径硬编码散落在 BankWithholdingServiceImpl 中,无法支撑运行时切换。
  2. 送盘、回盘、对账各自拼接路径,缺少统一优先级与字段级回退规则。
  3. 审计仅留存文件名与路径,无法完整表达本轮要求的“协议 + 目录 + 路径 + 文件名”。
  4. 当前 backend 尚未存在成熟的 SFTP/FTP 传输适配层,本轮不宜把联调闭环与传输客户端实现一并扩大到必交付。

配置承接方案比选

Decision: 默认规则沿用 Spring profile + Nacos

Rationale:

  • 现有应用已通过 application-{profile}.yaml + Nacos 导入配置,具备最低接入成本。
  • 环境级默认规则更适合由 profile/Nacos 承接,避免在业务表中固化所有默认配置。

Alternatives considered:

  • 完全新建独立文件传输配置表:当前范围过重,且与既有配置中心能力重复。

Decision: 通道/租户覆盖优先复用 ChannelApiConfigDO.extParams

Rationale:

  • 现有 ChannelApiConfigDO 已具备银行通道维度配置语义,extParams 可以作为最小增量承接文件传输覆盖规则。
  • 复用既有对象可降低本轮 schema 扩张与治理成本。

Alternatives considered:

  • 新增专门的文件传输策略表:对当前 brownfield 需求来说过重。
  • 把所有覆盖规则继续塞入 service 常量:无法满足统一解析与运行时切换。

Decision: 路径模板仅支持固定变量集合

Rationale:

  • 当前已澄清只允许固定变量白名单,可显著降低解析复杂度与安全风险。
  • 更适合形成稳定测试样本与正式文档说明。

Alternatives considered:

  • 自由表达式模板:与已澄清约束冲突,且增加安全与维护风险。
  • 完全固定路径:无法满足租户、通道、日期分化需求。

Decision: 配置缺失或连接信息不完整时立即阻断

Rationale:

  • 已澄清的失败策略要求立即阻断当前文件动作,避免静默回退或进入不确定人工补救状态。
  • 有利于验证工件给出明确失败结论。

Alternatives considered:

  • 仅记日志继续流程:会削弱审计与问题定位能力。
  • 自动回退到其他租户/通道配置:存在误用配置风险。

决策结论

  1. 引入统一解析入口,输入上下文、输出最终解析结果。
  2. 作用域优先级固定为:TENANT_CHANNEL > TENANT > CHANNEL > DEFAULT
  3. 上层覆盖不完整时采用字段级回退,而不是整组失败。
  4. 配置变更仅影响新发起文件动作,已开始或已落库批次沿用原解析结果。
  5. 审计只保存最终实际使用的协议、目录、路径、文件名,不强制留存配置版本或完整快照。

对正式文档的影响

  • 12_REV_Detailed.md:补齐 REV-008 的文件通道配置、路径分化、运行时切换与仍待补证边界。
  • 03_Interface_Design.md:补齐文件交换能力边界、解析优先级、失败规则与审计说明,不新增外部接口编号。
  • 04_Security_Design.md:补齐协议选择、凭据管理、敏感配置禁入仓库、优先 SFTP / 兼容 FTP 的治理口径。
  • 05_Deployment_Design.md:补齐 profile/Nacos 承接、银行文件交换通道、环境差异、白名单与本地临时/归档目录职责说明。

Cross-Repo Impact

  • water-docs
    • 更新正式主文档与治理台账,形成可评审的规格闭环。
  • water-backend
    • ApiTypeEnum 新增文件传输配置类型。
    • ChannelApiConfigExtParams 扩展作用域、业务类型、连接字段、目录字段。
    • 新增 config/filetransfer/service/filetransfer/ 解析器。
    • BankWithholdingServiceImpl 从硬编码目录切换到统一解析入口,并固化 send/back/reconcile 审计字段。

风险与 Deferred

  • 真实 SFTP/FTP 客户端与网络连通性联调Deferred
  • BankCollection 托收链路对等改造Deferred
  • 生产凭据、证书、白名单开通Deferred
  • ARCHIVE / LOCAL_TEMP 的独立持久化审计对象Deferred但当前可先纳入统一解析能力范围