Files
MemRelay/projects/d44c219a-0b31-4de1-b160-323eb34a4c6a/C 端模块化编排契约与媒体存储层级.md
T

3.1 KiB

title, type, permalink, stable_id, scope, memory_type, project_id, usage_profile_id, status, revision, request_id, created_at, updated_at, tags
title type permalink stable_id scope memory_type project_id usage_profile_id status revision request_id created_at updated_at tags
C 端模块化编排契约与媒体存储层级 fact main/projects/d44c219a-0b31-4de1-b160-323eb34a4c6a/c-端模块化编排契约与媒体存储层级 3efd0adf-f91b-4d78-b163-5365c257d6d4 project fact d44c219a-0b31-4de1-b160-323eb34a4c6a 7aee455b-24cc-4008-bdaf-443721e6f939 active 1 artveris-migrate-2026-09-03-fact-07 2026-09-03T03:41:49.610529+00:00 2026-09-03T03:41:49.610529+00:00
client
trace-layout
media
storage

模块化编排(packages/shared/src/trace-modules.ts):布局 { version: 1, modules: [...] },数组顺序即展示顺序,每模块 { id, type, visible, title?, config }。

  • 系统单例模块(id 固定):HERO_CAROUSEL(hero) / AUTHENTICITY_STATUS(authenticity) / PRODUCT_INTRO(product-intro) / SHOWCASE(showcase) / CERTIFICATES(certificates) / TIMELINE(timeline) / BLOCKCHAIN(blockchain);可重复自定义模块:IMAGE_TEXT(图文,imagePosition 上/下/左/右)、HORIZONTAL_GALLERY(横向图库)。
  • 限制:最多 32 模块、标题 120 字、正文 5000 字、图库 30 张;白名单校验未知字段全拒;不开放 HTML/CSS。函数:validateTraceLayout/parseTraceLayout(非法抛错)、resolveTraceLayout(非法回默认)、templateTraceLayout(剥离作品媒体/文案)、createDefaultTraceLayout。
  • 默认顺序(旧数据无布局时):轮播 → 防伪 → 产品介绍 → 作品展示 → 版权证书 → 时间轴 → 区块链。
  • 模板 defaultTraceLayout 只存结构(顺序/显隐/标题/imagePosition),建档时深拷贝到 Artwork.traceLayout,之后互不影响;作品布局随快照走审核。
  • 公开接口过滤 visible=false 模块并把自定义模块媒体 key 转 URL;系统模块无内容自动隐藏(BLOCKCHAIN 保留“暂未上链”态)。防伪状态模块可排序/隐藏(甲方要求能置底),但首扫激活/计数/日志由后端固定执行。
  • 固定不可配置:顶栏(显示作品名)、预览提示条、加载/错误页、隐私说明、页脚。版权证书区不显示类型角标。
  • 后台 TraceModuleEditor.vue:上下移/拖拽/显隐/标题覆盖/自定义模块增删复制;卡片可折叠(默认全收,新增/复制自动展开,折叠按钮在拖动手柄右侧序号左侧,纯 UI 不写入 JSON)。ArtworkEdit 将轮播/介绍/展示/时间轴/证书编辑嵌入对应模块卡。

媒体存储层级(人类可读):{模板ID}/{档案编号}/ 下放 作品图_{ts}_{n}、作品展示_...、节点-{标题}_...、证书-{名称}_...(水印 _wm)、模块图文-{标题}_...、模块图库-{标题}_...;出库实况图 {模板ID}/{档案编号}/{追溯码}/出库实况_...。实现:上传先进临时日期目录,实体保存时 move 归位并改写 DB 引用(新建时档案号尚未生成);归位失败不阻断业务;编辑旧档案渐进迁移存量。本地驱动无 CDN 时返回相对路径 /uploads/{key}。原始出库 ZIP 存 .private/ 前缀。