Files
MemRelay/projects/d44c219a-0b31-4de1-b160-323eb34a4c6a/出库 ZIP 导入契约与备份恢复机制.md
T

2.3 KiB
Raw Blame History

title, type, permalink, stable_id, scope, project_id, memory_type, status, revision, restored_from_commit, created_at, updated_at, tags
title type permalink stable_id scope project_id memory_type status revision restored_from_commit created_at updated_at tags
出库 ZIP 导入契约与备份恢复机制 fact main/projects/d44c219a-0b31-4de1-b160-323eb34a4c6a/出库-zip-导入契约与备份恢复机制 76e12a12-446a-4d96-bb49-2534930a5d56 project d44c219a-0b31-4de1-b160-323eb34a4c6a fact active 1 6a6a895eaf 2026-09-23T15:07:24.510262+00:00 2026-09-23T15:07:24.510364+00:00
outbound
import
backup
limits

出库 ZIP 高级导入(仅登记出库,不自动上链):

  • ZIP 根目录只能一个 xlsx(列:追溯码、批次、出库时间(必填,UTC+8 严格解析)、备注);图片仅接受 images/<追溯码>/文件名(旧 image/ 目录、单元格图片路径不兼容)。
  • 边界(outbound-import.util.ts):最多 10000 行/64 列;单 xlsx 100MB(内部解压 500MB);单图 100MB、JPG/JPEG/PNG/WebP、≤4000 万像素、单帧;图片张数无业务上限;ZIP 中央目录 100002 条目是技术安全阈值;总体积无固定上限(受磁盘/内存/1 小时接收窗口约束)。临时盘预检:有 Content-Length 按 3 倍与 1GB 取大,无则先 1GB 后按实际复检。
  • 流程:上传(requestId 幂等,Multer 临时盘 → .private/ 私有存储)→ 预览 Job(逐行校验、已出库/不存在/重复码拒绝)→ 会议 READY → 提交(事务内 READY→IMPORTING CAS,同 jobId)→ Worker 以 TraceCode.outTime IS NULL 条件更新逐行导入 → 结果 xlsx。预览 Job 每分钟心跳,失联 2 小时恢复;终态后立即删原始 ZIP。静态模板 apps/api/src/assets/templates/outbound-import-template.zip。

备份:格式 2.0.0 ZIP(manifest/database.json/storage 全目录),覆盖全局流水、逐码任务、上链分片/凭证、出库模型、系统设置(raw 值,含明文 UserKey)。创建/下载/上传/恢复均流式(archiver/unzipper,Zip64);恢复前精确校验 app/版本/模型全集/媒体清单/路径/大小/CRC/磁盘/nextSeq > max(serialNo),完整落盘后才自动快照并清库/清媒体;CAS 防并发;不恢复正在执行的批量导入(PARSING/IMPORTING 安全终止)。后台可定时备份+保留策略;恢复必须“上传预校验 → 确认恢复”两步。备份包存非公开目录。