这不是「加个 cache key」。完整链路是:紧凑指纹写入产物元数据 + 工作表清单差分 + 可复用则复用 + 并发用版本锁重试 + 失败保留旧产物。
机制步骤
- 按租户/用户/模块/条件加载当前成功产物(地址、修订号、配置指纹、工作表清单)
- 用表偏好、包络类偏好等拼成紧凑指纹;旧版非紧凑格式视为已变
- 与期望清单比,算出要重建的表
- 指纹一致且无变更且已有成功地址 → 直接复用(打复用日志)
- 否则构建:标记构建中,版本锁 CAS 重试,成功后提升修订号/地址/指纹
- 首次叠加且偏好非默认:不走同步重算(防网关超时),先叠加重建 + 进度
- 预导出按指纹失效并重建;失败则保留旧缓存
- 任务级请求指纹:相同进行中请求不重复堆任务
验收怎么定
验收标准应是「导出文件是否带上正确配置」(例如只改某一类包络、其它仍默认),而不是「配置页保存成功」。
也曾出现「选过一次后整批一直沿用」——作用域/过期问题,正是指纹要管的。旧文件看起来还在,其实已经在撒谎。
可复用的落点
- 影响输出的输入必须编进指纹并落在产物上。
- 复用与重建要可观测。
- 贵重产物重建需要并发控制(版本锁)。