结论先行:当旧系统字段无法完整迁入时,保留项不应按“字段数量”决定,而应按“该字段是否仍参与当前业务判断”决定。只要一个字段今天仍被用来触发流程、区分客户状态或生成对外内容,就应优先保留;反之,即使历史数据很多,也可以只留归档不进入新站。这个结论有一个反例:如果迁入目标本身还没确定内容模型,那么先谈保留项就是空谈,此时应先冻结新站字段清单,而不是继续从旧库挑字段。
把旧字段逐个过一遍,问三个问题:它是否触发过自动动作,比如发送通知、改变订单状态、生成页面;它是否被后台人员用来做日常筛选;它是否出现在用户可见的页面或单据上。三个问题里有一个为“是”,就进入保留候选。三个都为“否”,只进入归档清单。
这里的关键不是字段有没有值,而是值有没有被使用。一个旧字段即使百分之九十的记录都有内容,只要近一年没有任何流程读取它,就不该占用新系统的必填位置。反过来,一个字段只有少量记录有值,但它决定了某类客户能否进入下一步,就应该保留,并允许为空。
旧系统字段无法完整迁入时,最容易犯的错是逐字段讨论,最后变成拉锯。更有效的做法是先画出决策链:用户从进入到离开,中间经过哪些判断点,每个判断点需要哪些字段。然后按判断点分组保留。
分组之后,保留项的数量往往会下降,因为多个旧字段可能服务同一个判断点,可以合并成一个新字段。合并时要记录旧字段到新字段的对应关系,否则后续核对数据时无法解释差异。
有些字段看起来重要,但其实可以由其他数据推导出来。例如总价可以由单价和数量计算,页面路径可以由栏目结构生成。这类字段不需要迁移原始值,只需要在新系统中保留计算逻辑。判断方法是:如果旧值和新计算值不一致,业务上以哪个为准。如果以新计算为准,就属于可以重建;如果旧值是历史事实且不能改,就必须迁移。
假设一个旧系统用“客户等级”字段决定折扣,新系统改为按累计金额实时计算。此时旧等级字段就不必迁移,但需要保留一份历史等级快照,用于解释过去订单为什么是那个价格。这个快照可以放在归档表,不进入新站主流程。这个例子只用于说明比较方法,不代表任何具体项目结果。
选一个保留候选字段,在新系统里做一次最小验证:用真实旧数据导入一小批,检查它能否触发预期动作,比如筛选、展示或状态变化。如果验证通过,就把同组字段一起保留;如果验证失败,先检查是新系统字段定义问题,还是旧数据本身不完整。只有确认旧数据无法满足新流程时,才把该字段降为归档。
这个动作的结果会直接影响下一步:验证通过的组可以进入迁移脚本编写;验证失败的组需要回到决策链,确认是否漏掉了某个判断条件。不要在没有验证的情况下批量迁移,否则问题会推迟到上线后暴露。
如果新系统的内容模型还没有确定,或者业务方对“当前流程”的描述本身存在矛盾,那么按业务判断保留项的方法就会失效。此时任何字段取舍都只是猜测。正确的做法是先暂停字段讨论,把新站需要支持的业务动作列出来,并让每个动作对应到明确的负责人确认。确认之后,再回到字段分组。
另一个失效条件是旧系统字段之间存在强依赖,单独迁移一个字段会导致其他字段无法解释。这种情况下,应以依赖组为单位整体保留或整体归档,而不是拆开决定。判断依赖组的方法是:改变其中一个字段的值,是否会影响另一个字段的含义。如果会,它们就属于同一组。