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

26 lines
2.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: 出库 ZIP 导入契约与备份恢复机制
type: fact
permalink: main/projects/d44c219a-0b31-4de1-b160-323eb34a4c6a/出库-zip-导入契约与备份恢复机制
stable_id: 76e12a12-446a-4d96-bb49-2534930a5d56
scope: project
project_id: d44c219a-0b31-4de1-b160-323eb34a4c6a
memory_type: fact
status: active
revision: 1
restored_from_commit: 6a6a895eafcca6052e81a14fca103a42635dd1c2
created_at: '2026-09-23T15:07:24.510262+00:00'
updated_at: '2026-09-23T15:07:24.510364+00:00'
tags:
- 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 安全终止)。后台可定时备份+保留策略;恢复必须“上传预校验 → 确认恢复”两步。备份包存非公开目录。