diff --git a/docs/技术架构/灵犀_信息流素材生产平台_技术架构_V0.1.md b/docs/技术架构/灵犀_信息流素材生产平台_技术架构_V0.1.md
new file mode 100644
index 0000000..e9ad155
--- /dev/null
+++ b/docs/技术架构/灵犀_信息流素材生产平台_技术架构_V0.1.md
@@ -0,0 +1,2018 @@
+# 灵犀 · 信息流素材生产平台 技术架构设计
+
+| **项** | **内容** |
+| --- | --- |
+| 文档版本 | V0.4(图片线按 PSD 套版 + 抠图合成落地) |
+| 文档状态 | 待评审 |
+| 编写日期 | 2026-11-02 |
+| 需求基线 | `docs/PRD/灵犀-信息流广告素材一站式生产平台PRD.md` V1.6 |
+| 关联文档 | `docs/立项建议/灵犀_信息流素材生产平台_立项建议书_V0.1.md`(论证)、`docs/PRD/灵犀_信息流素材生产平台_PRD_V0.3.md`(同事基线) |
+| 适用对象 | 研发(前端 / 后端 / 测试 / 运维)、AI 工程、技术负责人、产品(用于确认技术边界) |
+| 文档范围 | 技术栈选型、分层与模块、部署拓扑、数据模型、接口设计、关键链路、关键决策、非功能落地、交付路径、风险与未决 |
+| 不包含 | 排期承诺与人力预算的最终审批、AI 模型的训练与微调方案、投放平台对接、代码实现细节 |
+
+> **一句话**:这不是"用什么框架"的清单,而是**用一套可维护的模块化单体 + 异步任务管线,把 PRD 里的 15 类资产、两条素材生产线、行业包与 schema 动态表单、客户级数据隔离、全量审计与成本可见性,落在公有云上、让 2–4 个研发能在 3 个月内跑通 M0–M1**。
+
+---
+
+## 0 阅读说明
+
+### 0.1 这份文档回答什么
+
+1. **选什么**:前端、后端、数据库、队列、对象存储、媒体处理、AI 接入、观测、部署方式,以及为什么。
+2. **怎么排**:进程与模块怎么划分、一次图片生产与一次视频生产在系统里怎么流动、数据写在哪。
+3. **怎么兜**:PRD 的性能、隔离、审计、成本、合规要求,分别由哪个技术机制承接。
+4. **不做什么**:哪些架构花样(微服务、K8s、自建推理、通用低代码)本期明确不做,以及什么条件下再谈。
+
+### 0.2 结论摘要(先看这张表)
+
+| **层** | **选型** | **一句话理由** |
+| --- | --- | --- |
+| 前端 | React 19 + TypeScript 5 + Vite 6 + Semi Design 2.x(`@douyinfe/semi-ui-19`) | 后台型产品,表单/表格/权限组件密度高;Semi 中后台组件齐全、设计语言贴合运营后台 |
+| 图标 | Remix Icon 4.x(`@remixicon/react`) | 唯一图标库,线性风格统一;禁止其他图标源(见 2.2.1) |
+| 后端 | NestJS 11(Fastify 适配器)+ TypeScript | 模块化边界、DI、守卫/拦截器天然对应"权限点 + 审计 + 数据范围"三件套 |
+| 数据库 | PostgreSQL 18(**自建**,容器镜像 / 云主机,开发机 Docker) | JSONB 承载动态表单值、强事务、行级审计;自建可完全掌控版本、参数、扩展与备份策略;18 的异步 I/O 与虚拟生成列降低大表扫描与冗余列维护成本 |
+| 缓存 / 队列 | Redis 7.4 + BullMQ 5 | 一套 Redis 同时做缓存、分布式锁、限流与任务队列,M0–M2 足够 |
+| 对象存储 | S3 兼容(M0 自建 MinIO,可切云 OSS/COS) | 成片与中间产物按"对象 + 签名 URL"治理;S3 接口避免绑死厂商 |
+| 媒体处理 | Node 24(24.15.0)+ ffmpeg 7 + sharp(CPU worker) | 日产 < 500 条时,拼接/转码/缩略图用 CPU 足够;不引入 Python 服务 |
+| AI 接入 | 自建 Provider 适配层(HTTP/异步任务 + Webhook 轮询) | 多供应商并存、按用途路由、故障切换、逐次记账,都在这一层收口 |
+| 部署 | 单地域公有云,Docker Compose 起步(预留 K8s 触发条件) | 日均 < 500 条不需要 K8s;先把可观测与备份做对 |
+| 观测 | OpenTelemetry + Prometheus + Grafana + Loki + Sentry | 任务链路跨 API/Worker,必须能从"一条任务"追到"一次模型调用" |
+| 文档与接口 | OpenAPI 3.1 + Zod 单一真源 | 前后端共享类型,减少"字段对不上"的返工 |
+
+### 0.3 一页架构图
+
+```mermaid
+flowchart TB
+ subgraph Client["浏览器(内部用户,30–100 人)"]
+ WEB["React SPA
运营 / 设计 / 审核 / 管理员"]
+ end
+
+ subgraph Edge["接入层"]
+ NGX["Nginx / Caddy
TLS · 静态资源 · 反向代理"]
+ end
+
+ subgraph App["应用层(无状态,可水平扩)"]
+ API["NestJS API
鉴权 · 权限点 · 数据范围 · 审计埋点"]
+ WS["进度通道
SSE / WebSocket"]
+ end
+
+ subgraph Async["异步任务层(CPU worker,可水平扩)"]
+ Q["BullMQ 队列组
script / image / video / export / verify"]
+ W1["脚本 Worker
LLM 调用 · 质量校核"]
+ W2["图片 Worker
模板合成 · 规格矩阵"]
+ W3["视频 Worker
分镜 · 关键帧 · 图生视频 · 拼接"]
+ W4["导出 Worker
打包 · 命名 · 清单 · 归档"]
+ end
+
+ subgraph Data["数据层"]
+ PG[("PostgreSQL 18
业务数据 · 审计 · 成本账")]
+ RD[("Redis 7
缓存 · 队列 · 限流 · 锁")]
+ S3[("对象存储 S3 兼容
MinIO / OSS
物料 · 成片 · 中间产物")]
+ end
+
+ subgraph Ext["外部能力(全部走适配层)"]
+ LLM["文本模型 API"]
+ IMG["图生图 / 图生视频 API"]
+ TTS["TTS / Lip Sync API"]
+ OBS["观测与告警"]
+ end
+
+ WEB --> NGX --> API
+ WEB -.->|订阅进度| WS
+ API --> PG
+ API --> RD
+ API --> S3
+ API -->|投递任务| Q
+ Q --> W1 & W2 & W3 & W4
+ W1 & W2 & W3 -->|出网调用| LLM & IMG & TTS
+ W1 & W2 & W3 & W4 --> PG
+ W2 & W3 & W4 --> S3
+ API & W1 & W2 & W3 & W4 --> OBS
+```
+
+### 0.4 阅读路径
+
+- **只想看结论**:读 0.2 与第 2 章(选型)→ 第 8 章(关键决策)。
+- **要评审技术方案**:第 1 章(目标与约束)→ 3 章(架构)→ 5 章(数据模型)→ 7 章(关键链路)→ 8 章(决策取舍)。
+- **要排期与开工**:第 4 章(部署)→ 10 章(交付路径与里程碑)→ 附录 B(PRD 追溯矩阵)。
+- **要评估风险**:第 11 章(技术风险与未决)。
+
+### 0.5 与 PRD 的关系
+
+| PRD 章节 | 本文承接方式 |
+| --- | --- |
+| 5.1 脚本模块 | 5.4 数据模型(要素卡 / 模板 / 脚本版本)+ 6.4 接口 + 7.2 时序 |
+| 5.2 素材模块 | 5.4(任务 / 产物 / 分镜)+ 5.3 队列组 + 7.3 / 7.4 时序 |
+| 5.3 资产模块 | 5.4(资产 / 版本 / 引用关系)+ 5.6 动态字段 + 7.5 归档 |
+| 5.4 平台管理 | 5.4(权限 / 行业包 / 表单 schema)+ 6.2 鉴权 + 7.1 / 7.6 时序 |
+| 5.5 导出与交付 | 6.7 导出接口 + 7.5 时序 |
+| 6 关键规则 R-01~R-20 | 8 关键决策 + 5.4 约束(如资产删除保护用外键 + 应用校验双层) |
+| 9 非功能与合规 | 9 非功能落地(逐条给指标拆解与实现机制) |
+| 10 待确认 Q-01~Q-21 | 11.2 技术侧待确认 QT-01~QT-14(只列技术相关的) |
+
+---
+
+## 1 架构目标与约束
+
+### 1.1 必须被架构承接的 14 条硬需求
+
+下面每一条都不是"功能",而是**会改变架构形状的约束**。评审时逐条对齐,避免"PRD 写了、技术没落"。
+
+| **#** | **PRD 出处** | **硬要求** | **架构应对** |
+| --- | --- | --- | --- |
+| 1 | 5.4.2、R-20 | 行业 → 客户两级目录是全部资产的根节点,客户不可跨行业移动 | 所有业务表强制带 `customer_id`,`industry_id` 由客户派生并冗余;外键与唯一约束在库层兜底 |
+| 2 | R-04、9.2 | 客户级数据隔离:任何查询必须带客户维度,禁止"先查全量再过滤" | Repository 层强制注入数据范围片段;CI 静态检查禁止裸查询;P1 叠加 PG 行级安全(RLS) |
+| 3 | 5.4.3 | 仅内置超管,其余角色可配置(权限点 + 数据范围 + 特殊权限 + SoD) | 权限点在代码中声明式注册(装饰器 + 常量表),角色为数据;鉴权 = 守卫(功能)+ 范围解析器(数据)+ 特殊权限校验 |
+| 4 | 5.4.7 / 5.4.8 | 行业包 9 槽位 + 要素卡 schema 动态渲染,换行业不发版 | schema 以 JSON Schema 形式版本化存储;后端 Ajv 校验;前端轻量渲染器;可检索字段物化到索引表 |
+| 5 | 5.1.1、R-11 / R-14 | 已发布字段只可弃用不可改名;历史要素卡按当时 schema 解释 | 字段 key 不可变、版本快照不可变;要素卡存 `schema_version_id`,读时按该版本解释 |
+| 6 | 5.2.2 | 视频逐镜生成、单镜重试、拼接包装 | 任务拆到"镜头(shot)"粒度,每镜独立子任务与幂等键;拼接是独立任务,可重入 |
+| 7 | 5.2.2、5.2.3 | 异步、进度可见、失败重试、中断可恢复(100 张到 87 张不必从头) | 任务头 + 任务项两级表;每项独立状态机;队列重入 + 幂等键 + 断点续跑 |
+| 8 | 5.2.2、5.5 | 在线预览(首帧 ≤ 2s、断点续播)、命名下载、导出即归档 | 成片转 H.264 faststart MP4 + 签名 URL + Range 请求;缩略图预生成;导出为服务端打包 zip |
+| 9 | 5.4.4、R-06 | 多供应商、按用途路由、额度与预算、失败切换、成本看板 | AI 适配层统一收口;模型/路由/额度全部数据化;每次调用落 `ai_usage` 账本 |
+| 10 | 5.4.6、9.2 | 审计只读、不可修改、≥ 12 个月、可检索 | 审计表 append-only(禁 UPDATE/DELETE 权限)+ 按月分区 + 归档到对象存储 |
+| 11 | 5.4.5、R-10 | 字典变更只影响新数据,历史保留快照 | 字典项带版本;业务记录存字典快照值而非仅外键 |
+| 12 | 5.3.3、R-02 | 被引用资产禁止删除、版本可回溯、引用关系双向可查 | 资产表 + 版本表 + 引用关系表;删除前外键检查 + 应用层提示;软删除 |
+| 13 | 9.1 | 列表 ≤ 2s、脚本 ≤ 30s、图片 ≤ 10s、50 张预览不卡 | 查询走覆盖索引 + 分页游标;生成走异步;缩略图独立小图;前端虚拟滚动 |
+| 14 | 9.3、R-09 | AI 生成内容显式 + 隐式标识、肖像授权、分行业合规 | 合成阶段写入可见角标与 MP4 元数据;人物池存授权材料与到期时间;合规规则集数据化 |
+
+### 1.2 规模假设与容量口径
+
+用户给定:**日均成片 < 500 条、全部走外部 AI API、无自建 GPU、公有云部署**。以下推算是选型与规格的依据,评审时如有出入按比例调整。
+
+| **维度** | **假设** | **推算** | **影响** |
+| --- | --- | --- | --- |
+| 用户规模 | 30–100 人,峰值在线 ≤ 60 | API 2 实例足够(QPS < 50) | 不需要 K8s / 服务网格 |
+| 成片量 | 图片 + 视频合计 < 500 条/日,峰值批次 200 条 | 任务项 < 5000/日 | 单 Redis + 4 个队列组足够 |
+| 视频并发 | 单条 15s ≈ 4–6 镜;单镜图生视频 60–180s | 500 条 × 5 镜 × 90s ≈ 62.5 模型小时/日,均值 3 并发、峰值 12–15 | Worker 并发 20,按供应商限流分池 |
+| 图片合成 | 单张 ≤ 10s(sharp + 模板合成) | 2000 张/日 ≈ 5.6 小时单核 | 2 台 8C worker 足够 |
+| 存储 | 视频 1080×1920/15s ≈ 6–12 MB;中间产物约成片的 3–5 倍 | 成片 5 GB/日 ≈ 1.8 TB/年;含中间产物 ≈ 8–10 TB/年 | 对象存储分层 + 中间产物 30 天生命周期 |
+| 数据库 | 任务项 + 审计 + 成本账是主要增长 | 首年 < 200 GB | 200 GB ESSD 数据盘 + 按月分区,足够 |
+| 出网 | AI 调用全部出公网;下载走公网 | 峰值出网 100 Mbps 量级 | 单地域 + 弹性带宽即可,暂不做 CDN |
+| 成本 | 模型调用是主要变动成本 | 单条视频 5 镜 × 图生视频 + 1 次 TTS | 必须逐任务记账,否则无法报价 |
+
+### 1.3 架构原则
+
+1. **模块化单体优先,不等于"一个文件"**:按业务域切模块(Nest 模块 + 独立 Prisma 访问层),模块间只走服务接口与事件,不共享表写权限。微服务只在出现"独立扩容 / 独立团队 / 独立发布"三个信号之一时才拆。
+2. **异步是一等公民**:凡是超过 2 秒、会调外部模型、会产生文件的操作,一律"提交 → 任务 ID → 进度通道 → 结果",前端不阻塞等待。
+3. **配置驱动,代码分支最后**:行业差异、字典、规格、路由、提示词、权限点全部数据化;新增行业不改代码路径。
+4. **数据隔离在数据层强制**:应用层注入范围之外,库层再加一道(外键 + 强制 `customer_id NOT NULL` + P1 RLS)。
+5. **每一分钱可追溯**:每次模型调用都写账本(谁、哪个任务、哪个模型、多少 token/秒、多少钱),成本看板从账本聚合,不从日志猜。
+6. **可恢复优于可重试**:任务项级断点 + 幂等键,让"跑到 87 张失败"能从 88 张继续,而不是重跑 100 张。
+7. **观测先于优化**:接口耗时、队列积压、模型成功率、单条成本四个指标从 M0 就埋,否则性能与成本问题无法定位。
+8. **数据层自管,版本统一**:数据库与缓存不自建云托管服务,PostgreSQL 18 与 Redis 7.4 统一用容器镜像部署(开发机 Docker Compose、生产云主机),大版本、参数、扩展、备份策略都由我们掌握;外部只依赖 AI 模型 API。这样本地与生产的差异只剩「规格」和「数据」,不剩「版本」。
+
+### 1.4 明确不做(以及什么条件下再谈)
+
+| **不做** | **原因** | **重评条件** |
+| --- | --- | --- |
+| 微服务拆分 | 日均 < 500 条、团队 < 10 人,拆分带来的是运维成本而非收益 | 单个模块需要独立扩容 3 倍以上,或出现独立团队独立发布 |
+| Kubernetes | Compose + 2–4 台机器足够,K8s 的学习与运维成本高于收益 | Worker 峰值需要 10 台以上弹性,或多环境多租户隔离要求 |
+| 自建模型推理 / GPU | 生成能力是公共品,采购优于自建(见 PRD 附录 B 第 1 条) | 单月 API 费用超过自建 TCO,或出现无法采购的模型能力 |
+| 通用低代码 / 流程引擎 | PRD 5.4.8 明确"受控设计器",只解决要素卡字段 | 出现第二个需要动态表单的业务域 |
+| 实时协同编辑 | 内容以"生成 + 审核"为主,不是多人同文档编辑 | 审核环节出现明确的多人在线编辑诉求 |
+| CDN | 下载量 < 100 GB/日,源站带宽足够 | 出网带宽成本超过对象存储费用,或出现跨地域访问 |
+| 跨地域多活 | 单地域 + 每日备份 + 可接受 RTO 4 小时 | 业务要求 RTO < 1 小时或强合规要求异地双活 |
+| 云托管数据库(RDS / 云 Redis) | 需要完全掌控 PG 18 新特性、扩展与备份策略;托管实例可定制空间小、成本高,而本场景规模(< 200 GB)自建运维量可控 | 可用性靠主备 + 自建备份与演练;若团队无人愿承担数据层运维,或 SLA 要求提升,再评估托管 |
+
+### 1.5 术语
+
+| **术语** | **含义** |
+| --- | --- |
+| 任务(Task) | 一次用户提交的批量作业,如"生成 20 条脚本" |
+| 任务项(Task Item) | 任务下可独立成败的最小单元,如 1 条脚本、1 张图片、1 个镜头 |
+| 产物(Artifact) | 任务项产出的文件对象(图片 / 视频 / 中间帧 / 音频) |
+| 幂等键(Idempotency Key) | 由"任务 ID + 项序号 + 版本"生成的唯一键,保证重投不重复计费 |
+| 范围片段(Scope Clause) | 由角色数据范围解析出的 SQL 条件,如 `customer_id IN (...)` |
+| 物化索引(Materialized Index) | 把动态表单中声明"可检索"的字段落到独立表,供筛选与报表 |
+| 账本(Ledger) | 每次外部模型调用的用量与费用记录,append-only |
+
+---
+
+## 2 技术选型
+
+### 2.1 选型总表
+
+| **层** | **选型** | **版本基线** | **关键理由** | **主要代价** |
+| --- | --- | --- | --- | --- |
+| 语言 | TypeScript(全栈统一) | 5.7+ | 前后端共享类型与 schema 校验,减少字段错位 | 媒体处理生态弱于 Python(用 ffmpeg CLI 弥补) |
+| 运行时 | Node.js 24 LTS | 24.15.0(锁定小版本) | 与 TS 生态一致;worker 并发模型适合 I/O 密集;24 为当前 LTS | CPU 密集任务需多进程(worker 独立进程池) |
+| 包管理 | pnpm | 10.x | monorepo 原生、安装快、磁盘省、无幽灵依赖;**唯一包管理器,禁 npm / yarn** | 团队需统一 pnpm 版本(`packageManager` 锁定),历史脚本需改写 |
+| 前端框架 | React | 19.x | 生态最大;Semi Design 已支持 React 19 | 需在入口最顶部引入 `react19-adapter` |
+| 构建 | Vite | 6.x | 启动快、配置少 | 与 SSR 无关(本期纯 SPA) |
+| UI 组件 | Semi Design(React 19 构建 `@douyinfe/semi-ui-19`) | 2.x | 中后台组件齐全(Table / Form / Modal / Toast / Tree),设计语言统一;19 包 peer 锁定 react ^19,避免 peer 冲突 | 无 ProComponents 等价物,复杂表格页 / 查询表单需在 `packages/ui` 二次封装(约 3–4 人周);入口仍需导 adapter(见 2.2.1) |
+| 图标 | Remix Icon(`@remixicon/react`,统一出口 `packages/ui/icons.ts`) | 4.x | 唯一图标来源,线性风格统一、体积可控 | 禁止其他图标库与内联 SVG(见 2.2.1) |
+| 后端框架 | NestJS(Fastify 适配) | 11.x | 模块化 + DI + 守卫 / 拦截器,天然承载权限与审计 | 装饰器较多,团队需约定分层规范 |
+| ORM | Prisma | 6.x | 类型安全、迁移可审阅、JSONB 支持好 | 复杂 SQL 需 `$queryRaw` 兜底 |
+| 数据库 | PostgreSQL | 18 | JSONB + GIN、分区、强事务、RLS;18 的异步 I/O 提升大表扫描吞吐 | 动态表单查询需索引设计 |
+| 缓存 / 队列 | Redis + BullMQ | 7.4 / 5.x | 缓存、限流、锁、队列一套搞定 | 队列持久化弱于 Kafka(任务可重建,可接受) |
+| 对象存储 | S3 兼容(MinIO 起步) | MinIO 最新稳定 | 签名 URL、版本化、生命周期、可迁云 | 需自运维磁盘与副本 |
+| 媒体处理 | ffmpeg 7 + sharp | 7.x / 0.33+ | 拼接 / 转码 / 抽帧 / 缩略图 / 合成 | 需做进程隔离与超时控制 |
+| 鉴权 | 自建 JWT(access + refresh)+ OIDC 适配 | — | PRD 要求 SSO 可插拔,JWT 先落地 | SSO 接入点需预留接口 |
+| 接口文档 | OpenAPI 3.1(Nest Swagger 生成) | — | 前后端契约 + 测试依据 | 需与 Zod 校验保持同步(用单一真源生成) |
+| 校验 | Zod + Ajv(动态 schema) | 3.x / 8.x | 静态 DTO 用 Zod,动态表单用 Ajv | 两套校验器需约定边界 |
+| 观测 | OpenTelemetry + Prometheus + Grafana + Loki + Sentry | — | 跨 API/Worker 链路追踪 | 自建 Loki 需磁盘规划 |
+| 部署 | Docker + Docker Compose | — | 3 个月内最快落地 | 弹性扩容需手动 |
+| CI/CD | GitHub Actions(或 GitLab CI) | — | 仓库已托管,流程简单 | 无(当前仓库私有) |
+
+### 2.2 前端
+
+| **能力** | **选型** | **说明** |
+| --- | --- | --- |
+| 路由 | React Router 7 | 后台型 SPA,按模块懒加载 |
+| 服务端状态 | TanStack Query 5 | 列表 / 详情缓存、失效、轮询任务进度 |
+| 客户端状态 | Zustand 5 | 轻量,避免 Redux 样板代码 |
+| 表格 | Semi Table(`virtualized`) | 任务项、资产库动辄上千行,必须虚拟化;Semi Table 自带虚拟滚动 |
+| 图标 | `@remixicon/react` + `packages/ui/icons.ts` 语义出口 | 全站唯一图标来源,业务不直接引具体图标名 |
+| 动态表单渲染 | 自研轻量渲染器(基于行业包 schema) | 只支持 PRD 5.4.8 的 14 类字段白名单;比通用表单引擎可控 |
+| 富文本 | Tiptap | 要素卡中的"多行文本 / 富文本"字段 |
+| 拖拽排序 | dnd-kit | 资产排序、模板字段排序(仅列表内,不做自由布局) |
+| 图表 | ECharts 5 | 产能 / 质量 / 成本看板 |
+| 视频预览 | 原生 `