身份证脱敏后从 18 位变成 8 位,下游按定长 18 解析的文件全部报错,后面字段整体错位。日志里能对上时间点,这种反而好排。

掩码把中间段直接删掉了,没有用等长星号补齐。文件交换格式按定长写,长度一变整行都错。这一点先确认清楚,后面就不用反复试。

def mask_id(v):
    return v[:3] + '*' * (len(v) - 7) + v[-4:]

这次卡住的地方就在「脱敏长度兼容」这一环,单独把它拎出来验证,别和其他改动混在同一次发布里。偶发问题先统计频率,一小时几次和一天一次,查法完全不同。

改完顺手把文档补一句,省得下次自己重新推一遍。监控和日志的时间要对上,时区不一致会多绕很大一圈。

临时改动用注释写上日期和原因,过两周自己都记不清为什么这么写。

处理上按这个顺序:掩码保持原长度 用星号占位;定长文件单独走一套规则;上下游都加长度校验;变更前用样本文件跑一遍解析。

结果对不对很好判断,输出文件每行仍是 18 位 下游解析不再错位。

作者 9823189