Files
MemRelay/projects/d44c219a-0b31-4de1-b160-323eb34a4c6a/出库-上链不变量与审核流约束.md

2.4 KiB

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
出库/上链不变量与审核流约束 rule main/projects/d44c219a-0b31-4de1-b160-323eb34a4c6a/出库-上链不变量与审核流约束 a9739d28-4318-492e-bad3-53e9ea2769a8 project d44c219a-0b31-4de1-b160-323eb34a4c6a rule active 1 6a6a895eaf 2026-09-23T15:07:29.222015+00:00 2026-09-23T15:07:29.222081+00:00
outbound
blockchain
audit
business-rule

出库/上链(前后端一致硬校验):

  1. 上链与出库完全解耦:上链只发行追溯码数字身份,链上不含出库时间/备注/图片;可先上链后出库。
  2. 出库不可撤销但可修改:每码至多一个 OutboundRecord,出库时间必填;OutboundImage 独立存储、不限张数、分页读取。
  3. 批量上链不逐件调用:按作品元数据分组,每个 publish 请求最多 5000 个 productId;分片全局串行保护 baseTokenId。
  4. 不允许重复铸造:PENDING/SUBMITTING/CONFIRMING/ONCHAIN/UNKNOWN 均禁止新铸,只有明确 FAILED 可重试;重试复用已持久化的精确请求与 operateId。
  5. 未知结果优先保链上安全:网络中断/超时/HTTP 408、409、425、429、5xx/响应不完整 → UNKNOWN,禁止换新 operateId 重铸;只能原参数同步、补录交易哈希,或超管填原因确认失败后重试。
  • 批量选择语义 IDS(跨页手选)/ FILTER(筛选全集+排除 ID);JobItem.traceCodeId 刻意允许为空(保留失败占位),不要改回非空外键。
  • 上链作品必须启用、审核通过且有真实主图;本地 /uploads/ 主图在发行前以 BASE_URL 转绝对地址。

审核变更流:

  • 修改已通过档案写 artwork_revision 快照,审核通过才覆盖正式数据,C 端期间展示上一版。
  • 超级管理员创建/修改自动审批通过(提交人/审核人为本人,不进待审);普通运营进待审;模板无审核模型直接生效。
  • 节点、证书、showcaseImages、traceLayout、showOutboundTimeline 均无独立写接口,必须随作品快照提交;快照应用后统一触发证书水印 Worker。
  • 历史修订快照缺字段时:showcaseImages 按空数组、showOutboundTimeline 按 false、traceLayout 不覆盖当前正式布局。
  • 空修改前后端双重拦截(“内容未变化,无需提交审核”)。