同名“地址”可能是两种信息
假设销售工具保存客户常用收货地址,财务工具保存开票资料中的登记地址。两列都叫“地址”,并不意味着应该同步成一个值。先写出字段用途,再决定是否同步,比把表面上的差异全部消除更重要。
| 字段 | 负责来源 | 目标处理 |
|---|---|---|
| 客户显示名称 | 客户主档 | 允许按确认版本更新 |
| 常用收货地址 | 销售工具 | 写入收货地址字段,不覆盖登记地址 |
| 登记地址 | 财务工具 | 保持原用途,其他系统只读引用 |
| 信用或结算状态 | 指定负责人确认 | 本期不自动修改 |
表中应再补空值规则、允许更新方向和确认人。源字段空白可能是尚未收集,不等于要求清空目标;删除记录也需要单独规则,不能把查询不到直接理解为已删除。
编号映射要独立保存
客户在系统A叫 C018,在系统B叫 K302,就建立一条确认过的映射。名称相似只能帮助查找候选。第一次同步时确认映射,以后按编号更新;改名后仍能找到同一客户,不再创建第二份档案。
映射表还要记录失效和合并。两个旧客户被合并时,先确定新的目标编号及历史记录去向。无法判断的记录进入待处理队列,不临时把另一条“看起来差不多”的编号填进去。
用差异单说明将要改变什么
| 来源 | 差异 | 动作 |
|---|---|---|
| C018 → K302 | 收货地址由A改为B | 符合归属规则,生成更新 |
| C019 → K303 | 源地址为空、目标已有地址 | 保留目标,提示资料不全 |
| C020 → 未知 | 未找到已确认映射 | 转人工建立映射 |
每次更新记录来源版本、目标旧值、目标新值和结果编号。目标在读取后被其他人改过时,应识别冲突。接口若支持版本或条件更新,可以利用这类能力;不支持时,一期宜限定单向更新和可控时段,避免两个系统抢着覆盖同一字段。
把失败和结果不明分开
参数校验失败通常意味着本次没有满足写入条件;网络超时则可能发生在写入之后。超时后先按业务编号或请求标识查询目标。如果目标已是预期值,记录为已确认完成;如果尚未完成且具备重复保护,再重试。结果仍不明时交给人员核对,不能无限重发创建操作。
一批100条记录中,假设97条已确认完成、2条缺映射、1条结果不明,报告应明确列出这三类。下次处理只针对待处理部分,完成项不重复算作新成果。
交付时检查四个危险边界
- 源值为空,是否错误清空目标?
- 同一条更新重复执行,是否创建重复记录?
- 目标被他人修改后,是否仍被旧任务覆盖?
- 映射错误时,能否暂停、定位受影响记录并按确认方案修正?
第一版建议选一类资料、几个明确字段和一个方向。运行记录能解释每次变化后,再评估增加字段或双向同步。