Files
kra-new/docs/sw6-to-kra/alert-attachment-migration.md
T

1.6 KiB

预警日志附件的文件 ID 迁移补充

现有 sw_to_kra_migrate.sql 为 sys_oss.oss_id 建立 entity='file' 映射并导入 media_file_upload_and_downloads,同时只更新预警操作日志的操作人 ID,没有转换 attachment_ids 中的文件 ID。日志数字数组仍引用旧文件,不能直接当成 Kra 文件 ID 查询。

代码迁移步骤 202611030007_business_alert_attachments 在服务启动的迁移流程中执行,不修改用户提供的 SQL。最终数据库复制验收时,先完成原 SQL,再启动包含本步骤的新服务。

处理规则:

  1. 新库没有旧日志备份和映射表时不执行转换。
  2. 按日志 ID 与 bak_sw2kra_20261103_sys_alert_operation_log 关联,只处理当前附件与旧备份一致的纯数字数组,兼容 JSON 数字和数字字符串。
  3. 根据文件映射写入新文件 ID,保留原数组顺序。没有旧文件映射的引用原本无法展示,转换后不指向任何同号新文件;原始引用仍在备份中保留。
  4. URL 数组、混合 URL 数组、新日志、已改动的旧日志均不转换。分批查询和事务写入,重复执行不会二次映射。
  5. 运行时附件解析支持数字 ID 与 URL;文件查询分批执行,已删除或不存在文件不展示。大数字 ID 在解析及返回过程中不经过浮点数。

隔离测试覆盖超出 JavaScript 精确整数范围的旧 ID、失效引用、新旧文件同号、URL、新日志、已转换日志及重复执行。最终实库验收应以旧、新附件解析出的 URL 对比,而不是要求转换后的 JSON 字节仍与旧 ID 数组一致。