FtpTool/current.md
dark 114bcf33d8 feat: 同步链路支持版本分支目录映射、动态快照分支和 ackFail 定向重拉
- Git -> PROD 改为按 branch 作为 configVersion
- 按 airportId/appName/fileName 目录结构解析 pushConfig 参数
- PROD -> Git 改为写入 snapshot-branch/<configVersion> 动态分支
- pullConfig 支持 configVersion/fileName 可选过滤
- 抽出 ConfigCryptoService,统一收口加解密扩展点
- ackFail 落库增加重试上下文,支持按 airportId/appName/configVersion/fileName 定向重拉
- 同步更新测试、接口文档和 current.md
2026-04-28 14:49:33 +08:00

2.6 KiB
Raw Blame History

当前架构

已从 开发 -> FTP -> 生产 改为 生产环境单 prod-agent -> 开发 Git / 生产 push-pull API 正式启动类是 GitDirectSyncToolApplication.java 已完成

Git -> PROD 主链路已可用 PROD -> Git 主链路已可用 生产真实接口已按 testapi.txt 适配 pushConfigPOST + JSON数组 pullConfigGET + JSON响应 login已支持 token 获取与缓存 ackSuc/ackFail已接入回传与本地落库 ConfigCryptoService已抽出当前默认透传实现后续只需替换该服务内算法 Git -> PROD已支持最小增量推送删除场景自动回退全量 Git -> PROD已改为按“版本分支 + 机场目录 + 模块目录”解析参数 PROD -> Git已按 airportId/appName/fileName 目录结构回写到动态 snapshot 分支 Git -> PRODsourceVersion/configVersion 已改为 Git 分支名,不再用 commit SHA Git -> PRODbaseline 已按版本分支隔离 pullConfig已支持 configVersion/fileName 可选过滤参数 ackFail已支持按 airportId/appName/configVersion/fileName 定向重拉 ackFail失败记录已增加 retryCount/nextRetryAt/lastErrorMsg 元数据 管理接口已加: GET /api/admin/sync/overview GET /api/admin/sync/tasks/recent GET /api/admin/sync/tasks/failed docs 下设计文档和接口文档已同步更新到当前口径

Git 仓库约定

Git -> PROD

  • git.repo.scan-branch 直接指向待同步版本分支
  • 分支名本身就是 configVersion
  • 分支内目录结构必须为airportId/appName/模块内文件
  • pushConfig 参数映射:
    • airportId = 路径第1段
    • appName = 路径第2段
    • fileName = 模块内相对路径
    • configVersion = 当前分支名

PROD -> Git

  • pullConfig 返回项会恢复为airportId/appName/fileName
  • 当前提交目标分支为git.repo.snapshot-branch/
  • 例如config-prod-snapshot/R_XXX_V3.0.3_XXX
  • 若 pullConfig 返回缺少统一版本号,则按当前 result 的 sourceVersion 退化生成动态分支名

关键文件

生产接口适配ProdConfigApiService.java 加解密扩展点ConfigCryptoService.java 主协调器ProdSyncCoordinator.java ACK 落库: ProdPullAckRecord.java ProdPullAckService.java 管理接口SyncManagementController.java 接口文档prod-api-v1.md 设计文档: git-direct-sync-tool-design.md ftp-sync-tool-design.md ftp-sync-tool-detail-design.md 当前 TODO

configContent 推送前加密 configContent 拉取后解密 验证状态

mvn -s build-support/maven-settings.xml test 已通过 如果你是想让我继续下一步,最顺的就是:

把 ConfigCryptoService 的透传实现替换为正式加解密算法