140 lines
4.7 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.

# Quickstart: sw-business-bank 银行代扣文件传输配置能力
## 1. 固定基线
1.`water-docs` 中确认当前 feature 为 `010-bank-transfer-config`
2.`water-backend` 中固定 branch 与 commit
- branch`001-sys009-withholding-closure`
- commit`84493513c1d06936210ab7e697985d38958ba5ee`
## 2. 阅读必要上下文
- `docs/design/00_Management/01_Project_Progress.md`
- `docs/design/00_Management/03_Task_Checklist.md`
- `docs/design/02_Detailed_Design/12_REV_Detailed.md`
- `docs/design/03_Technical_Design/03_Interface_Design.md`
- `docs/design/03_Technical_Design/04_Security_Design.md`
- `docs/design/03_Technical_Design/05_Deployment_Design.md`
- `spec.md`
- `research.md`
- `data-model.md`
## 3. 准备最小配置样本
准备 7 组配置样本:
1. 默认规则
2. 租户覆盖规则
3. 通道覆盖规则
4. 租户-通道覆盖规则
5. 协议切换样本(`SFTP -> FTP``FTP -> SFTP`
6. 非法模板变量样本(例如 `{unknown}`
7. 已落库批次配置切换回归样本
要求:
- 目录分化至少覆盖 `send/back/reconcile/archive/localTemp`
- 变量仅使用固定白名单
- 准备 1 组缺失连接信息样本用于失败验证
## 4. 执行 backend 验证
最少验证以下场景:
1. **默认规则命中**:无覆盖时使用默认协议与目录
2. **租户覆盖命中**:租户覆盖仅影响本租户
3. **通道覆盖命中**:通道覆盖优先于默认
4. **租户-通道覆盖命中**:最具体规则优先
5. **字段级回退**:仅覆盖 `sendDir` 时,其余阶段回退上一级
6. **协议切换**:同一业务动作切换协议后不改业务拼路径代码
7. **配置缺失失败**:缺协议、缺 host、缺目录时立即阻断
8. **非法变量失败**:目录模板命中未声明变量时立即阻断
9. **已落库批次不漂移**:送盘后切换配置,再处理同批次回盘时仍沿用批次已固化目录
## 5. 执行文档校验
```bash
make validate-file FILE=docs/design/02_Detailed_Design/12_REV_Detailed.md
make validate-file FILE=docs/design/03_Technical_Design/03_Interface_Design.md
make validate-file FILE=docs/design/03_Technical_Design/04_Security_Design.md
make validate-file FILE=docs/design/03_Technical_Design/05_Deployment_Design.md
make validate-file FILE=docs/design/00_Management/01_Project_Progress.md
make validate-file FILE=docs/design/00_Management/03_Task_Checklist.md
make check-links
```
## 6. 执行 backend 最小验证
```bash
mvn -f /Volumes/Dpan/github/water-workspace/water-backend/sw-business-bank/pom.xml -pl sw-business-bank-server -am -DskipTests compile
mvn -f /Volumes/Dpan/github/water-workspace/water-backend/sw-business-bank/pom.xml -pl sw-business-bank-server -am -Dtest=BankTransferPathResolverTest,BankWithholdingTransferConfigTest test
```
## 6.1 执行 Docker 文件通道 Smoke
启动 Docker 测试环境:
```bash
docker compose -f infra/docker/bank-transfer-test/compose.yaml up -d
```
执行 Java SFTP smoke
```bash
mvn -f /Volumes/Dpan/github/water-workspace/water-backend/sw-business-bank/sw-business-bank-server/pom.xml \
-DincludeScope=runtime dependency:build-classpath \
-Dmdep.outputFile=/tmp/sw-business-bank-server.cp
java -cp "$(cat /tmp/sw-business-bank-server.cp):/Volumes/Dpan/github/water-workspace/water-backend/sw-business-bank/sw-business-bank-server/target/classes" \
cn.com.emsoft.sw.bankbusiness.tools.BankTransferSftpSmokeCli \
--local-file /Volumes/Dpan/github/water-workspace/water-docs/infra/docker/bank-transfer-test/tmp/sample.txt \
--host 127.0.0.1 \
--port 2222 \
--username demo \
--password demo123 \
--send-dir /upload/{companyId} \
--company-id C001 \
--channel-code 00001 \
--batch-no SMOKE010 \
--business-date 2026-03-24 \
--remote-file-name smoke-cli-sample.txt
```
执行 Java FTP smoke
```bash
java -cp "$(cat /tmp/sw-business-bank-server.cp):/Volumes/Dpan/github/water-workspace/water-backend/sw-business-bank/sw-business-bank-server/target/classes" \
cn.com.emsoft.sw.bankbusiness.tools.BankTransferFtpSmokeCli \
--local-file /Volumes/Dpan/github/water-workspace/water-docs/infra/docker/bank-transfer-test/tmp/sample.txt \
--host 127.0.0.1 \
--port 2121 \
--username demo \
--password demo123 \
--send-dir {companyId} \
--company-id C001 \
--channel-code 00001 \
--batch-no SMOKE010FTP \
--business-date 2026-03-24 \
--remote-file-name smoke-cli-ftp-sample.txt
```
当前已验证结论:
- SFTP roundtrip 通过
- FTP roundtrip 通过
- 上传后再下载的样本 SHA256 一致
## 7. 汇总验证工件
- `baseline.md`
- `backend-validation.md`
- `docs-validation.md`
- `final-verdict.md`
## 8. 通过标准
- 五类核心验证场景全部有证据
- 文档校验通过
- backend 编译通过
- 正式文档与验证结论一致
- 台账已同步