彭峰 3a7c5df3ee feat: add legacy realtime sync bridge 1 kuukausi sitten
..
database 3a7c5df3ee feat: add legacy realtime sync bridge 1 kuukausi sitten
Program.cs 3a7c5df3ee feat: add legacy realtime sync bridge 1 kuukausi sitten
README.md 3a7c5df3ee feat: add legacy realtime sync bridge 1 kuukausi sitten
Xiaoshu.LegacySyncBridge.csproj 3a7c5df3ee feat: add legacy realtime sync bridge 1 kuukausi sitten
appsettings.json 3a7c5df3ee feat: add legacy realtime sync bridge 1 kuukausi sitten

README.md

小树陪练旧系统同步桥

该服务部署在能访问旧 SQL Server 的受控网络内,只提供三类窄接口:

  • GET /xiaoshu-sync/v1/manifest:返回同一时间点的数据集数量。
  • GET /xiaoshu-sync/v1/changes?dataset=...&cursor=...:按旧业务主键断点续传,返回经白名单转换的 Parse 投影。
  • POST /xiaoshu-sync/v1/commands/{operation}:携带幂等键、操作人和原因调用旧系统正式业务逻辑。

请求必须包含 X-Xiaoshu-Key-Id、X-Xiaoshu-Timestamp、X-Xiaoshu-Nonce 和 X-Xiaoshu-Signature。签名原文为:

METHOD\nPATH_AND_QUERY\nTIMESTAMP\nNONCE\nSHA256_HEX(BODY)

返回字段严格白名单化,不查询、不返回 UserPwd、PayPassWord、Question、Answer、Cookie 或 Session。

部署

  1. 在 SQL Server 执行 database/install.sql,再把允许的写操作对接到旧站实际 BLL。对接前写入会安全拒绝,不会退化为无补偿双写。
  2. 通过环境变量或 IIS 配置提供 ConnectionStrings__LegacySqlServer、XiaoshuSync__KeyId、XiaoshuSync__Secret 和 XiaoshuSync__AllowedIps__0。
  3. 执行 dotnet publish -c Release,将发布目录部署为独立 IIS 应用。密钥不得写入仓库。
  4. 在新云函数设置 XIAOSHU_LEGACY_SYNC_BASE_URL、XIAOSHU_LEGACY_SYNC_KEY_ID、XIAOSHU_LEGACY_SYNC_SECRET。

首次全量投影使用数字主键游标。生产环境还需启用 SQL Server Change Tracking,并配合每日主键集合/字段哈希对账来捕捉硬删除和原地更新。