174 lines
4.0 KiB
Markdown
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.

# Data Model: sw-business-bank 银行代扣文件传输配置能力
## 设计原则
- 优先复用现有配置载体和批次对象,不新增独立正式主表作为第一选择。
- 本轮以逻辑实体 + 现有物理承接关系表达设计,不把真实密钥或密码写入文档。
- 以“默认规则 + 覆盖规则 + 解析上下文 + 解析结果”构成最小可实现模型。
## 逻辑实体
### 1. FileTransferPolicy
**说明**:环境默认文件传输策略,来源于 Spring profile + Nacos。
**字段**
- `policyId`:默认可固定为 `default`
- `scopeType``DEFAULT`
- `protocol``SFTP | FTP`
- `host`
- `port`
- `username`
- `credentialRef`:凭据引用名,不存明文
- `passiveMode`FTP 可选
- `sendDir`
- `backDir`
- `reconcileDir`
- `archiveDir`
- `localTempDir`
- `enabled`
- `remark`
### 2. FileTransferOverride
**说明**:银行通道/租户维度覆盖规则,建议复用 `bk_channel_api_config.ext_params`
**字段**
- `configId`
- `tenantId`:可为空,空表示非租户专属
- `channelId`
- `scopeType``CHANNEL | TENANT | TENANT_CHANNEL`
- `businessType`:默认本轮为 `WITHHOLDING`
- `protocol`:可选覆盖
- `host`
- `port`
- `username`
- `credentialRef`
- `passiveMode`
- `sendDir`
- `backDir`
- `reconcileDir`
- `archiveDir`
- `localTempDir`
- `enabled`
- `remark`
**物理承接建议**
- 使用 `ChannelApiConfigDO.extParams`
- 通过独立 `apiType` 表示“文件传输配置”,避免与交易接口配置混用
### 3. DirectoryResolutionContext
**说明**:一次文件动作解析路径与协议时使用的上下文。
**字段**
- `tenantId`
- `companyId`
- `channelId`
- `channelCode`
- `businessType`
- `stage``SEND | BACK | RECONCILE | ARCHIVE | LOCAL_TEMP`
- `businessDate`
- `batchNo`
- `fileName`
### 4. ResolvedFileLocation
**说明**:统一解析器输出的最终可执行目标。
**字段**
- `sourceScope`:命中的作用域层级
- `protocol`
- `host`
- `port`
- `username`
- `credentialRef`
- `resolvedDir`
- `resolvedPath`
- `fileName`
- `resolvedAt`
## 枚举
### TransferStage
- `SEND`
- `BACK`
- `RECONCILE`
- `ARCHIVE`
- `LOCAL_TEMP`
### TransferScope
- `DEFAULT`
- `CHANNEL`
- `TENANT`
- `TENANT_CHANNEL`
### TransferProtocol
- `SFTP`
- `FTP`
## 固定变量白名单
- `{tenantId}`
- `{companyId}`
- `{channelCode}`
- `{yyyyMMdd}`
- `{yyyyMM}`
- `{batchNo}`
- `{fileName}`
## 现有物理对象扩展建议
### `WithholdingBatchDO` / `bk_withholding_batch`
**现状已具备**
- `sendFileName`
- `sendFilePath`
- `backFileName`
- `backFilePath`
**建议新增**
- `sendProtocol`
- `sendDir`
- `backProtocol`
- `backDir`
**说明**
- 送盘创建时同步固化 `sendProtocol/sendDir/sendFilePath``backProtocol/backDir`,确保后续已落库批次不因配置切换而漂移。
### `ReconcileBatchDO` / `bk_reconcile_batch`
**现状已具备**
- `fileName`
- `filePath`
**建议新增**
- `protocol`
- `dir`
**说明**
- 对账批次在回盘处理阶段固化最终 `protocol/dir/filePath/fileName`,形成最小审计闭环。
## 关系
- `FileTransferPolicy` 提供环境默认协议与目录。
- `FileTransferOverride` 对默认规则做按字段覆盖。
- `DirectoryResolutionContext` 驱动统一解析。
- `ResolvedFileLocation` 由解析器生成。
- `WithholdingBatchDO` 持久化送盘/回盘解析结果。
- `ReconcileBatchDO` 持久化对账解析结果。
## Cross-Repo Impact
- `water-docs`
- 回写 `REV-008` 详设、接口设计、安全设计、部署设计与治理台账。
- `water-backend`
- `ChannelApiConfigExtParams` 承接四级作用域、业务类型、协议、连接字段与五类目录。
- `BankTransferPathResolver` 负责默认规则、覆盖优先级、字段级回退与变量校验。
- `BankWithholdingServiceImpl` 改为消费统一解析结果并固化 send/back/reconcile 审计字段。
## 最小实现结论
- 本轮不建议新增独立“文件传输策略表”。
-`profile/Nacos + ChannelApiConfigDO.extParams + 现有批次表增量字段` 完成 brownfield 最小落地。