Files
ttstd-infinite-canvas/docs/content/docs/overview/features.mdx

509 lines
51 KiB
Plaintext
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: 功能清单
description: 当前项目已实现的核心工作台能力与使用入口
---
# 功能清单
## 用户登录日志
管理员在“用户与运营 → 用户登录日志”查看密码、邮箱/短信验证码、Linux.do 的成功/失败登录、注册自动登录和主动退出。支持用户、事件、方式、结果、IP、时间范围筛选、分页、刷新、详情和失败重试;显示账号快照、设备信息和安全原因。成功记录与会话操作原子提交,重复/伪造/过期退出不产生成功事件;刷新和自然过期不计为登录/主动退出。普通用户不可访问,不记录密码或会话凭据,不补造历史。
## 个人信息
“更换头像”弹窗集中提供上传图片和系统头像两种方式。头像上传支持固定 1:1 裁剪:拖动裁剪框、调整大小、键盘移动和重置,确认裁剪后返回弹窗预览,在弹窗内保存。系统头像提供默认人像、导演、摄影师、小猫、小兔、机器人、探索者和灵感 8 款,在同一弹窗内选择并保存;保存后全局同步,刷新保持。
“账户与设置”新增“个人信息”,展示账号名称与绑定邮箱状态。用户可预览并保存个人头像或恢复系统默认头像,顶栏、侧栏、账户卡片与创作消息同步更新。密码修改与邮箱更换分别保存;修改密码需要当前密码,邮箱更换还需要新邮箱验证码,成功后退出所有登录会话。纯 Linux.do 账号可重新授权核验身份后设置本地密码或更换邮箱。沿用现有设置页、表单、按钮反馈与主题,未增加昵称、用户名或角色编辑。
## 生图与视频工作台
普通用户可分别使用生图、视频工作台。通过工具卡片选择场景,套用预设提示词,按所选模型能力配置参数和参考素材;生成结果、运行任务及历史详情在同一页面查看。管理员在「工作台工具」维护分类、图标/封面、预设、使用说明与示例素材,并在「功能开放」分别控制两个入口。新入口默认关闭;工作台任务经过统一任务与计费服务创建。
详见[生图与视频工作台](./workbench)。
## 可美 KM Seedream 图片
`km-kemei-seedream` 声明式插件接入 Seedream 5.0 Pro / Flash 的文生图与参考图编辑,支持 URL / Base64 响应并由宿主统一保存图片。精确模型 ID 与扩展参数见插件包内 `docs/interface.md`。
协议默认 2K 方图、单张生成、最多十张参考图,提供 1K / 1.5K / 2K 共二十四个精确尺寸预设。后台能力编辑、画布选择与服务端校验同步支持 1.5K。蒙版与通用质量开关关闭;透明输出通过插件命名空间配置,并要求单张含 alpha 的参考图。供应商错误和空结果保留失败语义。
## 卡藏 Midjourney
画布接收一次任务返回的全部图片,四张结果自动组成收起的图片堆叠,可展开、选择主图和分别使用。每张图保留独立资源及素材绑定,保存、刷新和任务重复同步不会将后续图片覆盖为第一张。已有仅显示首图的成功 Midjourney 节点在重新打开画布时从原任务恢复遗漏结果,无需再次生成。
`kacang-midjourney` 统一声明式插件提供 V6/V8 特惠、V7 特惠、稳定/高速三个生图协议。选择协议后自动填入供应商比例、默认比例、参考图上限和一次提交;禁用无合同的蒙版和通用输出参数。稳定版数值 quality 通过插件命名空间设置,不与宿主分辨率档混用。
特惠使用标准图片端点,稳定/高速使用受理和任务查询端点。结果支持顶层与 data 信封,全部单图及可选四宫格封面交给宿主立即保存;失败和空结果保留真实失败语义。完整模型和字段合同见插件包内 `docs/interface.md`。
## 沧元 Midjourney
`cangyuan-midjourney` 声明式插件分别提供 V7 与 1K/2K(供应商默认 V8.2)协议。V7 使用 `midjourney-v7`;1K/2K 使用 `midjourney-1k`、`midjourney-2k`,可在提示词显式写 `--v 8.2`。一次提交固定 `n=1`,全部结果交由宿主下载保存,参考图按供应商合同发送 HTTPS URL 字符串。
两条线路的参数、编辑端点和响应格式分别适配,不自动换模型。1K/2K 返回官网 CDN 原链,HTTP 403 会如实保留保存失败与原任务重试能力;插件不能消除供应商 CDN 的访问限制。完整字段与接口合同见插件包内 README 和 `docs/interface.md`。
创作页按整个任务一次消费返回图片,保留各图片的输出序号;一次请求返回多张时,素材与消息幂等去重不会再把后续结果当作第一张合并。
后台选择这两个协议时,“能力与参数”自动使用线路专属默认值:V7 为 4000 字符、五张参考图、不支持蒙版;V8.2 默认单张编辑源图、支持蒙版和十五种比例。两者默认自动尺寸、一次提交,关闭不支持的质量、透明背景、响应格式和输出格式选项。V8.2 在模型名未明确时暂用 1K,识别到上游 `midjourney-2k` 后改为 2K,切换档位保留管理员的参考限制、默认比例和价格。像素预设由宿主换算供页面展示,提交上游仍使用比例,实际尺寸由供应商决定。
## 自定义更新公告
「站点及外观 → 更新公告」提供开关、当前版本、多版本文字/图片/视频编辑、内容排序、整行/半行布局与即时预览。关闭展示原日志,开启展示自定义内容,保存后同步工作台和后台入口;后台系统更新保留真实构建版本。详见 [自定义更新公告](/docs/backend/update-announcements)。
## AutoDL 画面规格
AutoDL 视频模型在“能力与参数 → 画面规格”直接多选当前插件工作流声明的完整分辨率,并设置默认值;配置始终可编辑并生效。卡片沿用原有标题、副标题与字段样式,不再显示自定义开关或额外说明。AutoDL ComfyUI 视频与音频 v2.3.0 通过完整分辨率标签控制横、竖、方形,不显示未声明的独立比例控件。时长、音频与参考素材配置继续各自生效。
后台保存、用户模型目录、画布参数归一化、计费规格选择、服务端校验及插件请求使用同一套所选规格。仅允许选择插件预设,不能输入新标签;至少选一项,默认值必须属于所选列表。价格档可保留全部插件预设的价格,但不会扩大实际允许生成的分辨率范围。
## 画布媒体产出模型
图片、视频、音频在生成成功并写入节点后,会冻结当时提交的产出模型。提示词面板里的模型下拉仍是下一次要用的选用模型,改下拉不会改掉已经生成的内容。画布外观中的「媒体信息」打开后,有内容的媒体节点在左下角显示产出模型;图片右下角继续显示尺寸和体积。上传、粘贴、截取、合并、提取音频和本地加工不记录产出模型。本次改动之前的节点不回填。分享页和版本预览画布不显示这块信息。
## 画布 Agent 名称、文案与形象
「站点及外观 → 画布配置」提供独立助手名称、入口文字、面板标题和欢迎/输入文案。助手名称同步用于界面和后续对话的自我介绍;名称只是数据,不改变工具权限,历史消息保留原文。支持导入授权的 Live2D Cubism 3/4 运行时 ZIP,预览后保存启用、调整高度、切回默认动态球。加载失败保留可点击的默认入口,上传和资源访问具有管理员校验和引用保护。Cubism Core 由部署者提供,真实播放待验收;不含图片自动建模。详见 [画布 Agent 外观与 Live2D](/docs/backend/canvas-agent-appearance)。
## 素材库分类与画布媒体链路
素材库支持用户手动新增、重命名和删除分类,也可以按分类或“未分类”筛选素材,并批量移动素材。删除分类不会删除素材,分类内素材会回到“未分类”。
画布中的远程图片、视频和音频展示统一使用资源文件地址,不把浏览器 Blob Object URL 写入节点或预览状态;Blob 缓存只用于导出、抽帧、供应商输入等字节处理。画布生成的视频在进入成功态前会先完成资源 Blob 缓存,缓存失败会保留失败语义,不会显示为已成功。
### 相关实现
- `web/src/pages/assets/index.tsx`:素材库分类筛选、新建、重命名、删除和批量移动入口。
- `web/src/services/api/user-data.ts`:素材分类及素材移动 API。
- `web/src/services/file-storage.ts`、`web/src/services/image-storage.ts`:远程资源地址解析。
- `web/src/services/resource-blob-cache.ts`:按用户 scope 隔离的媒体字节缓存。
- `web/src/lib/canvas/canvas-generation-task-sync.ts`、`web/src/services/project-asset-sync.ts`:生成视频缓存完成后再写入成功结果。
## 画布连线可读性与底部工作条
画布左下角自动整理节点旁提供“设置隐藏节点连线”开关。开启后默认隐藏连线;鼠标划过、聚焦或选中节点时显示该节点关联的连线,已选中的连线保持可见。设置按浏览器保存,并同时应用于视觉层和连线命中层,避免隐藏连线仍可点击。
底部工作条将素材入口改为“素材 + 数量”标签按钮;手势切换保持纯图标胶囊滑块,使用指针 / 抓手图标和单个圆形选中滑块,保留悬停提示、键盘语义和原有操作。
### 相关实现
- `web/src/lib/canvas/canvas-connection-visibility.ts`:隐藏连线筛选和本地设置。
- `web/src/pages/canvas/project.tsx`、`web/src/components/canvas/canvas-zoom-controls.tsx`:画布状态、开关和渲染接线。
- `web/src/components/canvas/canvas-asset-tray.tsx`、`web/src/lib/canvas/tool-registry/definitions/main-toolbar-tools.tsx`:底部工作条入口。
## 文本节点尺寸联动
文本节点的普通文本、富文本和编辑态输入框共用同一套字号缩放规则。节点尺寸变大时字号随宽高联动增长,并保留最小、最大字号边界,避免极端尺寸造成不可读或失控的排版。
### 相关实现
- `web/src/lib/canvas/canvas-text-scale.ts`:字号缩放和边界规则。
- `web/src/components/canvas/canvas-node-content.tsx`:文本节点展示与编辑态应用字号。
## 支付订单与对账导出
管理员在 `/admin/payments` 可按关键词、状态、渠道和创建/支付/入账日期筛选订单,并导出全部匹配记录的 CSV。对账支持按渠道、执行状态和账单日期导出每日汇总;单次对账明细支持按结果或“仅异常”导出。单次最多 10000 行,超限明确提示,不静默截断。文件使用中文表头和北京时间,保留完整订单号、精确金额/积分及失败原因。导出不触发查单或积分补发;对账运行中不能导出明细。具体字段和参数见 [HTTP API 合同](../backend/http-api)。
## 首页常驻滚动通知
工作台首页顶部可展示运营配置的常驻滚动通知。管理员在「运营 → 常驻通知」维护标题、类型(公告 / 活动 / 更新 / 警告)、生效窗口和跳转链接;标题支持分段样式和光标处插入 emoji。公开接口 `GET /api/banner-announcements` 只返回当前生效条目,前台轮播展示,用户可本地关闭。
### 相关实现
- `web/src/components/layout/banner-announcements-slider.tsx`:首页顶部滚动通知条。
- `web/src/pages/admin/components/admin-banner-announcements-panel.tsx`:后台配置面板。
- `GET /api/banner-announcements` 与 `/api/admin/banner-announcements`:公开生效列表与管理 CRUD。
## 工作区签到加油站
积分功能开启且后台「每日签到积分」大于 0 时,首页侧栏容量条上方固定显示领取卡片:标题为「{站点品牌名}加油站」,副文案为今日可领积分,黑色按钮「立即领取」。未领取时一直显示;当天领取成功后立即消失。关闭积分、签到积分为 0,或未登录时不显示。卡片用白底、黑按钮和青绿积分数字,不套浅蓝舞台底。
### 相关实现
- `web/src/components/layout/workspace-sidebar-checkin.tsx`:侧栏领取卡片。
- `POST /api/wallet/checkin`:每日签到入账,同一天不可重复领取。
## 工作区账号容量
登录后,首页侧栏左下角用户头像上方显示账号文件容量进度:左侧硬盘图标,右侧已用容量与总容量,进度条旁显示剩余容量。用量达到 70% 变为警告色,达到 90% 或已满变为危险色。点击进入素材库;资产页页头仍展示同一用量。收起侧栏时保留图标和细进度条,悬停可看到已用、剩余与总容量。统计包含素材文件和 Agent 会话附件。
### 相关实现
- `web/src/components/layout/workspace-sidebar-storage-meter.tsx`:侧栏容量进度。
- `web/src/pages/assets/asset-storage-usage.tsx`:资产页同一查询。
- `GET /api/resources/storage-usage`:账号已用字节与配额总容量。
## 云端 Agent(写入与生成仍待真实环境验收)
浮窗支持移动、调整大小和浏览器偏好恢复;后端支持逐轮对话、可信历史、取消、Skills 快照、画布摘要/精读、审批后的画布写入及媒体生成。运行中可插话(下一步生效,不打断正在飞的调用);多步任务可用 `plan_update` 维护待办清单并在输入框上方展示,未完成项会催办;`request_approval` 下首次 ≥2 项清单会先确认,`auto` 直接建立。`ask_user` 可弹出选项并结束本轮。个人记忆由 `remember_lesson` 写入待审,用户在「设置 → Agent 记忆」自己批准、添加、导出导入,并可用自己的文本模型手动或按日/周/月压缩相近条目。系统提示只带已批准记忆的索引(标题+适用场景),完整做法由 `recall_lessons` 按 topic/关键词取;管理员可按用户查看和删除,不能代批。只读模式不能写记忆。终态旧轮次按其冻结合同保留为不可变历史,新消息使用当前合同创建新轮,不篡改父运行;旧合同下仍活动或待审批的运行不会被新版服务恢复执行。生成由预算和独立审批控制,画布写入使用内容快照哈希;未开放外部 MCP。系统行为策略以版本化资源发布,用户/项目/画布可编辑常驻偏好;偏好正文固定在运行快照并按层只读,不整段塞入 system prompt,也不能提权或跳过审批。节点创建、更新字段、摘要投影和连线限制来自服务端能力 registry;能力卡同时描述用途、适用场景、不适用场景、维护代价和可用动作,由 Agent 结合镜头数量、连续性、逐镜审查和交接需求自主选择,不强制所有任务使用分镜。分镜脚本支持结构化创建、分页读取及按真实行 ID 追加、修改和删除;普通文本和 Markdown 不会被宣称为具备镜头级维护能力的分镜表。图片、视频和音频节点可安全修改标题与下一版提示词草稿,既有媒体、已提交提示词和任务状态不会被草稿编辑覆盖;媒体模型按生成模式和真实参考节点从统一目录筛选。审批和执行记录明确展示目标节点、类型、修改字段、名称变化及连线两端,前端不再依靠内部 ID 猜测;这些预览不替代服务端归属、快照、Capability、锁、预算与调用哈希校验。真实模型计费与浏览器联调仍待验收。
云端画布 Agent 已分离行为策略、用户目标、参考事实和运行状态。续聊保留已送达插话,不再继承代码预设的创作自由;旧待办只作上下文,可移除取消项,催办不会强制工具调用或无限重复。提示词来源与发布约束见[画布 Agent 提示词与用户意图](/docs/backend/agent-prompt-policy),真实模型行为仍待场景验收。
## 导演台 3D-BOX 核心 MVP(待真实页面验收)
导演台默认进入“快速镜头”工作流:演员、白模姿态、景别、运镜、当前视图设机位和预演入口集中在同一条路径;完整摆场、骨骼、动画和时间轴能力保留在“高级工作台”。“生成预演”沿用真实 Three.js 视口录制白模视频,并把产物回写为画布视频节点。画布 Agent 新增 `director_scene_read` 安全摘要读取和 `director_preview` 预演请求,后端不返回模型 URL / storage key,浏览器导演台执行实际录制。该版本是自研的 3D-BOX 核心闭环,不复制第三方实现;复杂场景编辑、Agent 语义写入和多镜头剪辑仍在后续阶段。
## 技能库个人分类与画布 Agent 筛选
技能库保留原有头部和技能广场共享分类;在“我的技能 / 我创建的”视图增加左侧个人技能库分类及技能数量。用户可为已加入或自建技能创建、分配个人分类;管理员也可创建对所有用户可见、可选、可用于筛选的分类。个人分类仅影响当前用户的技能库和画布 Agent,不改动技能广场共享分类。删除分类只解除相关归类,技能仍保留。画布 Agent 的“我的技能 / 已启用”列表可按个人或平台技能库分类快速筛选,市场页仍按共享分类浏览。
## 画布 operations 同步与本地恢复
画布内容按字段和对象生成 operations,节点、连线和顶层业务字段分别提交;平移、缩放等 viewport 只保存在本地。每次请求携带唯一 `mutationId` 和可选基线版本,服务端在同一事务中校验对象存在性、字段基线、资源归属并保存回执。可选顶层字段不存在时用 JSON `null` 表示,避免 `undefined` 被序列化为缺失属性。相同请求安全重放,响应丢失、断网、刷新或服务端暂时不可用时,浏览器保留已确认基线与未确认请求,后台使用原 ID 和原 payload 自动继续处理。结构化配额只聚合当前用户素材与画布数据,不扫描任务和 API 日志大字段,容量上限与事务语义不变。
不同字段的并发修改可以合并;同一字段或同一对象的基线不一致会返回冲突,当前本地修改继续保留。删除后的迟到节点、连线或媒体更新不会重新创建对象,只有显式新增 operation 可以创建实体。界面只显示同步状态,不提供版本记录、加载云端版、覆盖云端或手动恢复入口。
此合同不提供多人实时协同;它保证局部变更、幂等重放和删除保护,避免旧缓存静默覆盖新内容。内部历史表仍用于资源完整性维护和审计,不作为用户编辑入口。
相关实现见后端 [画布 operations 同步](/docs/backend/canvas-operations-sync)、`web/src/services/user-data-sync.ts`、`web/src/services/api/user-data.ts` 和 `web/src/pages/canvas/canvas-sync-status.tsx`。
## 画布智能引用
节点提示词面板提供“智能引用”入口,支持 AutoLink 开关和“一键引用全文”。输入已连接素材的名称、标签或素材栏序号后,按 Tab 或点击光标旁的候选项插入引用;全文引用会批量转换匹配到的指代,没有可转换内容时按钮禁用。
匹配仅覆盖当前已连接且激活的画布素材,跳过技能、素材库条目、重名歧义和已有引用。支持 `图1`、`图片1`、`image1`、`image 1` 及独立序号;普通数字文本如“约2秒”保持原样。AutoLink 默认在节点面板开启,开关为面板临时状态。
## 批量创作表
批量创作表保留当前画布样式:顶栏拖动整表,表内控件不会打开“放入创作空间”遮罩。支持全局提示词覆盖各任务行、空槽点击/拖入上传、已有缩略图点击替换、参考图列拖拽重排,以及缩略图跨行跨列交换。连线到参考端口后会自动刷新任务行,“同步连线”仍可手动增量同步。Agent 通过 `canvas_edit_batch_table` 的 `set_global_prompt` 写入或清除全局提示词,读取结果会带上 `globalPrompt` 和按全局提示词计算的 `generationPreview`。
## 提示词放大编辑
图片和视频节点的提示词面板支持放大编辑:窗口默认约 `min(1200px, 92vw)`,编辑区最小高度 200px,右下角可对角拖拽,方向键可微调。切换节点后尺寸恢复默认,节点上的紧凑面板外观不变。
## 画布抓手与框选
画布底部主工具栏用一个胶囊开关切换「区域选择」和「抓手工具」。默认是区域选择,空白处拖动框选节点;切到抓手后拖动平移画布。按住空格或中键仍可临时平移,不改变当前工具。
框选多个节点后,悬浮栏默认提供对齐、等距、创建分镜组和批量连接。右键选区或画布空白处可「自适应整理画布」,按当前相对布局加大边距,而不是重排成宫格或媒体泳道。
### 相关实现
- `web/src/lib/canvas/tool-registry/definitions/main-toolbar-tools.tsx`:抓手与框选作为同一开关项注册。
- `web/src/components/ui/aceternity/floating-dock.tsx`:dock 内胶囊开关与圆形滑块。
- `web/src/lib/canvas/tool-registry/definitions/selection-toolbar-tools.tsx`:多选悬浮栏默认工具。
- `web/src/lib/canvas/canvas-layout.ts`:`spreadCanvasNodes` 按相对占位加大边距。
## 完整 AI 拆图工作流
图片节点的 AI 拆图可先用支持视觉输入的文本模型规划图层,再选择专用拆图模型,或用普通图片模型分别重建背景与前景。规划发送经过资源归属校验的实际像素;规划结果校验图层数量、区域与提示词,失败保留可修正的错误。
生成结果组成同尺寸图层组,支持展开、显隐、合成预览、复制、删除、失败重试和刷新恢复。前景可按需去背景,Image Tools 强制输出 PNG;透明内容可按有效区域裁切并另存为独立素材。派生图片使用独立资源与素材标识,避免覆盖原图或其他图层。
规划、生图及可选去背景沿用已有任务与计费;本地合成、显隐和素材裁切不调用生成模型。普通生图是语义重建,不能保证与原图逐像素一致。图层数、像素与输出比例受前端限制,供应商失败如实显示。
## 图片节点多角度、宫格切分与多选框
图片节点「多角度」使用贴在节点下方的 3D 编辑器(天空盒/摄像头、常用角度、方向箭头),拖动节点或平移画布时面板跟着走。宫格切分放在「图片工具」菜单的「拆分与标记」里,提供 4/9/16/25 预设和 5×5 自定义点选;自定义面板留在菜单内,切分后的子图按网格排开。框选多张图后拖动,虚线选框跟随被选节点。
### 相关实现
- `web/src/components/canvas/canvas-node-angle-dialog.tsx`、`web/src/components/canvas/canvas-angle-scene.tsx`:多角度面板与 3D 预览。
- `web/src/components/canvas/canvas-grid-split-picker.tsx`、`web/src/lib/canvas/canvas-grid-split.ts`:宫格预设、自定义点选与切分子节点布局。
- `web/src/lib/canvas/canvas-selection.ts`、`web/src/lib/canvas/canvas-live-viewport.ts`:多选虚线框随拖动预览平移。
## 系统渠道排序与前台别名
系统渠道模型选择器直接读取渠道下的模型列表:一级跨渠道按“模型展示名”分组并显示原色 Logo,二级显示该模型的“渠道展示名”及规格售价;留空使用所属渠道名称。模型调用标识不必相同,也不反查逻辑模型。系统渠道的“前台名称”已移除。调用保留用户选中的具体渠道,收起后显示“模型 · 渠道”,不因另一渠道更便宜而自动切换。图标优先使用图标库的原色版本,缺少彩色版本时使用单色版本;缺少配置时显示通用图标,不猜测产品品牌。
渠道模型价格档支持管理员单独配置积分成本价;后台请求记录同时显示销售金额和成本金额。成本按下单快照计算,不追随之后改价;普通用户页面及接口不返回成本字段。
系统渠道模型列表按规格显示成本价 / 销售价及利润率;文本输入、输出、缓存 Token 分开呈现。勾选多个模型可统一调价:弹窗一行一个模型,展示模型名、渠道展示名(上游 ID)、规格、成本与可编辑售价,多规格在模型行内纵向对齐。输入目标利润率并选择保留 0–6 位小数(默认 2 位),按 `成本 / (1 − 利润率)` 四舍五入实时计算;也可点击「重新计算」覆盖手动值,再逐项修改。保存最终输入售价,服务端校验价格与版本并原子保存,不改变成本或启停状态。
后台系统渠道通过“设置排序”、模型管理通过“自定义排序”打开完整列表。支持搜索选择条目后输入目标位置,也可拖动、上移和下移;列表显示从 1 开始的位置,点击“保存排序”统一生效,取消不会修改线上顺序。渠道行的“更多”菜单支持复制渠道,复制会生成独立的渠道、模型和价格档,并保留原连接配置与凭证。排序不受筛选及分页影响;并发修改会提示重新加载,避免覆盖其他管理员的调整。系统渠道模式下,用户端模型选择器沿用同一渠道及模型顺序。模型排序独立保存,不改变价格、能力版本或启用状态。
系统渠道可设置可选的前台别名;为空时显示渠道名,设置后公开目录和用户会话只返回别名,后台仍保留原名。别名最长 80 字,支持后台搜索。前台模型目录模式保留其独立配置。
注册默认每 IP 每小时允许 30 次注册请求、60 次验证码请求,单邮箱每小时另限 10 次且发送后间隔 60 秒。失败尝试也占请求额度,达到上限后的拒绝不会继续增加计数或延长窗口;限流响应携带真实剩余等待时间,注册页面显示倒计时并防止重复提交。已保存的运行策略仍需管理员按实际共用网络规模调整,不随默认值升级自动覆盖。
定时闲置资源清理与后台手动删除共同保护外观配置引用的浅色 Logo、深色 Logo、登录视频及封面;即使资源超过闲置期限也不会删除,外观配置无法读取时停止相关清理。
## 章节资产提取与任务浏览
画布视频支持鼠标悬停 350ms 后静音预览前 3 秒,不循环;全局仅一个悬停解码器,离开或操作画布立即停止并恢复封面。手动播放优先,系统开启减弱动态效果时不自动预览。
剧情章节支持一次提取角色、场景与道具,分别写入角色、环境和道具待确认资产。输出必须包含三类数组;无人章节可以只产生场景或道具,不把缺失字段当作提取成功。
任务详情只读取任务与日志,不因打开详情写入画布。视频任务列表和网格优先展示已有封面;没有封面时,在进入视口后提取首帧缩略图。后台请求明细默认仅显示请求,可切换仅下载或全部明细,导出沿用当前筛选条件。
## 站点及外观
管理员可以在“系统配置 → 站点及外观”统一管理品牌识别、登录页、SEO、首页收尾与备案、皮肤主题。品牌识别包括站点名、英文品牌标识、浅色与深色 Logo 和 Logo 外框;登录页包括主标题、说明、品牌视频和可选封面。Logo 可以只上传任意一套并自动复用,也可以分别适配浅色与深色界面;关闭外框后 Logo 会在原导航占位内等比放大。
前端入口在加载 React 应用之前先读取 `GET /api/public/appearance`。初始 HTML 不包含内置品牌名、Logo 或默认 favicon;只有公开配置成功或明确回退到内置外观后才渲染应用,避免自定义品牌访问时先闪现“影策”。自定义视频未设置封面时保持纯色背景直至视频首帧就绪,不复用内置视频封面。
浅色 Logo、深色 Logo、视频和封面通过后台专用上传接口进入现有资源存储,并由稳定的公开 slot URL 读取;公开响应不暴露资源 ID。正在使用的外观资源会阻止管理员从资源管理页直接删除。英文品牌标识可作为对象存储路径前缀建议,但不会自动覆盖已经保存的前缀或改写历史资源。“恢复影策默认”会恢复内置品牌值、SEO/页脚默认值、经典皮肤和默认 Logo 外框,同时保留已经上传的素材文件。
SEO 标题、描述、可选关键词会投影到浏览器 metadata、Open Graph、Twitter Card 与 canonical;版权信息在公共登录场景页脚显示。ICP备案默认关闭,启用后必须填写备案号,并链接至工信部备案系统。注册验证码与密码重置邮件的标题、正文和继承型发件人名称都会使用当前站点名。
皮肤主题以语义令牌集中管理浅色/深色背景、文字、表面、边界、主色、控件状态、hover/active/focus、图标、圆角、尺寸、动效和阴影。默认“经典黑白”不可修改或删除;“青瓷工作室”“暖柿纸境”“霓光紫境”作为重新校色的可编辑初始数据。每套主题还可独立设置警告色、危险操作常态/悬停/按下/前景,以及开关开/关轨道、悬停和滑块色。管理员可从经典或当前主题完整复制、新建、改名、编辑、启用和删除自定义主题;页面只消费语义变量,不按皮肤 ID 分叉业务组件。
主题卡顶部会按语义使用频次展示该主题浅色与深色令牌的全部去重颜色,宽度不足时保留高频色并截断尾部。颜色编辑器只在直接点击色块时打开系统取色器,点击名称、说明或 HEX 输入不会误触。
### 相关实现
- `backend/internal/service/appearance.go`:外观配置校验、公开投影、资源绑定与媒体类型校验。
- `backend/internal/handler/appearance.go`:公开读取、公开资源流和管理员读写/上传接口。
- `web/src/services/appearance-bootstrap.ts`:应用渲染前的公开外观解析与安全回退。
- `web/src/pages/admin/settings/appearance-settings-page.tsx`:站点及外观、草稿预览与原子保存流程。
- `backend/internal/service/appearance_skins.go`、`web/src/lib/skin-themes.ts`:主题库合同、校验、亮暗语义令牌、CSS Variables 与 Ant Design 组件映射。
- `web/src/components/layout/site-compliance-footer.tsx`:公共版权与ICP备案展示。
## 邮箱找回密码
登录页在密码字段标题行提供“忘记密码?”入口。已配置账户邮件服务时,本地密码账号可以通过绑定邮箱获取 6 位验证码,并在 10 分钟内设置新密码;发送接口对存在和不存在的邮箱返回相同结果,避免公开账号状态。
密码更新、验证码消费和该账号全部旧登录会话撤销在同一个数据库事务内完成。验证码按注册与密码重置用途隔离,不能跨流程复用;Linux.do 单点登录账号继续通过原身份提供方登录,不会由找回流程隐式创建本地密码。
### 相关实现
- `web/src/pages/auth/login.tsx`、`web/src/pages/auth/forgot-password.tsx`:登录入口与两阶段邮箱验证界面。
- `backend/internal/service/password_reset.go`:发送策略、验证码校验和密码重置业务边界。
- `backend/internal/repository/repository.go`:密码更新、验证码消费和登录会话撤销事务。
## 官方提示词模板
平台级 LLM 任务只走后端提示词目录,不在页面里手写整段系统指令。运营可在管理后台维护版本,用户可在设置里跟随、追加或改写创作层;动态上下文和 JSON 输出契约由服务端编译时注入,不能被模板或个人偏好覆盖。
当前操作包括:章节资产提取、分镜规划/修复、分镜首帧、分镜视频、角色卡提取、角色三视图、短剧大纲、技能草稿。短剧一句话生成和技能库 AI 草稿只提交 `promptTemplateOperation` 与变量,占位 prompt 不会成为模型看到的正文。
画布内置预设、反推提示词、工作流起步稿、文本改写包装、视频操作包装和字幕高亮指令属于客户端目录 `web/src/lib/prompts`。云端 Agent 的行为策略在后端版本化 md 资源中,用户常驻偏好可编辑;工具权限和计费规则仍由服务端代码强制执行,不由浏览器或偏好文档覆盖。
### 相关实现
- `backend/internal/service/prompt_template.go`、`prompt_template_defaults.go`:操作定义、编译、受保护契约和结果校验。
- `web/src/lib/prompts/`:前端操作名、客户端起始/包装提示词和短剧大纲解析。
- `web/src/pages/settings/prompt-preferences-pane.tsx`、`web/src/pages/admin/storyboard-prompts/storyboard-prompts-page.tsx`:用户偏好与运营版本。
## AI 提示词优化器
提示词优化器是一个内置 AI 能力插件,用于把模糊的生图或生视频想法整理成可以直接使用的提示词。它复用宿主已经配置的文本模型和渠道,不在浏览器中保存或拼接第三方密钥。
### 使用入口
- 创作页 `/create` 的提示词输入框中,点击“优化”。
- 画布中的图片或视频节点提示词编辑器中,点击“优化”。
面板使用紧凑的聊天式交互,跟随当前输入框定位,支持拖动、边缘调整尺寸和窗口尺寸变化。打开与关闭不使用延迟动效,避免遮挡画布或让用户误以为请求卡住。
### 优化方式
| 方式 | 用途 |
| --- | --- |
| 扩展想法 | 从模糊想法补齐主体、场景、构图、光线、镜头等可执行细节。 |
| 精修已有提示词 | 尽量保留原意,只修正表达并补充必要细节。 |
| 强化风格 | 保留主体和动作,强化色彩、材质、光影与指定风格。 |
| 适配模型 | 按当前生成模型和协议调整提示词结构,避免使用未确认的参数语法。 |
| 结合参考 | 使用已连接的图片或文本补充外观、一致性、构图和关联关系。 |
面板底部可以单独选择优化所使用的文本模型;目标生成模型仍取当前图片或视频生成配置。两者职责不同:前者负责整理提示词,后者负责最终生成内容。
### 结果与安全边界
- 优化结果以结构化内容返回,包含正向提示词、规避项、修改说明、假设和可选备选版本。
- 结果可以继续编辑;只有点击“采用”才会回填当前输入框,并自动关闭面板。
- 请求支持流式反馈、取消和错误提示,不会在优化失败时覆盖原提示词。
- 参考素材只提交当前已连接且符合类型的内容;插件不自行访问素材库或后端密钥。
### 相关实现
- `web/src/lib/plugins/builtin/prompt-optimizer.ts`:插件清单、优化方式和模型适配策略。
- `web/src/components/canvas/canvas-prompt-optimizer-drawer.tsx`:聊天面板、拖动缩放和结果采用交互。
- `web/src/services/plugin-host.ts`:将插件文本请求接入宿主现有模型渠道。
- `web/src/pages/create/index.tsx`、`web/src/components/canvas/canvas-node-prompt-panel.tsx`:两个入口的接入。
## 首页图片预览与画布同款查看器
创作页 `/create` 的生成结果、参考图片和故事板图片,打开后使用与画布图片节点相同的全屏图片查看器。首页不再维护独立的图片缩放和拖拽实现,避免两个入口的交互行为逐渐分叉。
图片查看器支持移动、缩放和关闭,缩放范围为 `0.5` 到 `12`,步进为 `0.25`;视频仍使用创作页原有的视频播放弹窗。该能力只统一图片预览交互,不改变缩略图、媒体资源地址或生成流程。
### 相关实现
- `web/src/components/canvas/canvas-image-preview.tsx`:画布与创作页共用的图片预览组件。
- `web/src/pages/canvas/canvas-project-status-dialogs.tsx`:画布图片节点预览入口。
- `web/src/pages/create/index.tsx`:生成结果、参考图片和故事板图片预览入口。
## 可自定义工作台导航
内置工作台插件将常用创作入口统一交给宿主渲染。用户可以在设置页的“自定义区域”(`/settings?section=workbench`)预览侧边栏,分别控制入口显示状态,并通过拖拽或上下按钮调整同一分组内的顺序;“恢复默认”可以还原初始布局。
布局只属于当前账号在当前浏览器中的界面偏好,按账号 scope 保存在本机浏览器,不会上传素材、密钥或插件代码。功能开关不可用的入口不会展示;工作台入口使用宿主预注册的内部路由,插件不能直接注入工作区脚本。
### 相关实现
- `web/src/lib/workspace-sidebar-layout.ts`:入口清单、分组、布局归一化、排序和账号 scope 存储。
- `web/src/lib/plugins/builtin/workbench.ts`:内置工作台插件 Manifest。
- `web/src/components/layout/workspace-sidebar-nav.tsx`:按功能开关和用户布局渲染侧边栏。
- `web/src/pages/settings/workbench-settings-pane.tsx`:预览、显示切换、排序和恢复默认。
## 用户诊断包导出
设置页的“问题诊断”入口和任务失败快捷入口支持导出脱敏诊断包,帮助普通用户提交问题时保留足够的排障上下文。
### 当前能力
- 浏览器内存中保留最近的全局错误、未处理 Promise、API 请求和任务创建事件。
- 后端按当前登录用户、时间范围、任务或项目聚合 `Task`、`TaskLog` 和 `ApiCallLog`。
- 下载前显示数据量预览,并生成包含清单、运行时信息和 JSONL 日志的 ZIP。
- 默认排除提示词、任务输入、API Key、Cookie、上游请求/响应体和 URL 查询参数。
### 使用入口
- 设置页:`/settings?section=diagnostics`。
- 失败任务详情中的“导出诊断包”按钮会自动带入任务和项目范围。
相关设计和接口边界见[用户诊断包设计](../../../design/user-diagnostic-bundle.mdx)。
## Eagle 外部素材库
内置 Eagle 插件可以从用户配置的 Eagle 服务读取素材、文件夹和标签,并将素材映射为工作台可引用的外部资源。
### 当前能力
- 支持按文件夹、关键词和素材类型查询 Eagle 素材。
- 素材没有文件夹或标签时,仍返回稳定的空集合,工作台可以继续展示和引用素材。
- 保留素材的文件夹路径、标签、扩展名、尺寸、大小和修改时间等排障与展示信息。
### 相关实现
- `backend/internal/service/eagle.go`:Eagle 响应解析和集合字段归一化。
- `web/src/lib/plugins/builtin/eagle.ts`:外部素材映射、预览和引用处理。
## 自由空白画布起点
新建且没有节点的自由画布会显示“从哪里开始”引导。除短剧流水线和 Agent 生成外,用户可以选择“自由空白画布”,在不预设工作流的情况下开始创作。
进入自由空白画布后,画布中央保留一个带加号的起始框。点击加号会打开与底部工具栏相同的添加菜单,可新建文本、绘图、分镜、背板、文件夹、图片、视频、音频和工作流,也可上传文件或打开素材库。插件提供的节点继续由同一命令注册表控制,不维护第二份素材类型清单。
自由起点选择按画布持久化;画布仍为空时刷新页面不会重新回到起始引导。中央起始框只负责提供入口,不创建占位节点。
### 相关实现
- `web/src/components/canvas/canvas-short-drama-entry.tsx`:起始引导、自由空白起始框和中央加号。
- `web/src/components/canvas/use-canvas-create-commands.ts`:工具栏与空白起点共用的添加命令解析。
- `web/src/lib/canvas/canvas-starter.ts`:空画布起点状态决策。
- `web/src/stores/canvas/use-canvas-store.ts`:按画布保存自由起点选择。
## 画布同步与离线恢复
画布编辑会先写入浏览器本地持久化,再由统一同步队列提交 operations。浏览器在线时自动保存;断网、响应丢失或服务端暂时不可用时,未确认请求会保留在本地 journal,恢复连接后按原 `mutationId` 和原操作内容自动重放。同步状态会区分保存中、已完成、待处理和错误,用户无需选择本地版或云端版,也无需手动强制覆盖。
媒体素材先完成资源归属和就绪校验,再提交引用画布的 operations。服务端返回并发或资源冲突时,本地修改继续保留,系统等待下一次基线校验;删除后的迟到更新会被拒绝,不会凭空创建节点。相关同步细节见 [画布 operations 同步](/docs/backend/canvas-operations-sync)。
### 相关实现
- `web/src/stores/canvas/use-canvas-store.ts`:本地画布持久化与 journal。
- `web/src/services/user-data-sync.ts`:operations diff、自动保存、回执重放和远端删除保护。
- `web/src/services/canvas-asset-repair.ts`:提交前媒体引用与素材记录校验。
- `web/src/pages/canvas/canvas-sync-status.tsx`:同步状态显示。
## 画布外观
底部工具栏的“画布外观”面板支持浅色、深色、自定义三种主题,以及点阵、线稿、空白三种网格。浅色画布使用比白色节点更沉的中性雾灰背景,深色画布使用比原深色节点更亮的中性灰背景,让画布底层与内容表面保持稳定区分,同时避免蓝灰背景与黑色工具浮层产生色温割裂。
自定义主题会继承用户进入前的浅色或深色基础界面,并允许在“浅色界面”和“深色界面”之间切换。界面样式复用原项目整套节点、工具浮层、文字、边框和交互状态,不开放这些元素的任意改色;切换界面样式不会覆盖已经选择的画布背景和网格颜色。
自定义主题还允许调整画布背景色、背景明亮度、网格颜色和网格强度。颜色输入支持三位或六位 HEX,可带或不带 `#`;形成合法色码后实时写入当前画布,编辑过程中不会被父级状态覆盖,关闭外观面板也不会撤销。选择新的画布背景色时明亮度自动归零,确保画布首先精确显示输入色;之后仍可沿 OKLCH 亮度轴单独调整。不提供背景透明度,避免画布底色与底层颜色混合后产生偏色。“网格强度”使用 `0%` 最淡、`100%` 最明显的方向,避免“透明度”命名歧义。
自定义外观可以应用到当前画布,也可以保存为当前浏览器、当前账号 scope 下的新建画布默认值。当前画布外观沿用画布项目的既有持久化和同步流程;浏览器默认值不跨设备同步。
### 相关实现
- `web/src/lib/canvas-theme.ts`:浅色、深色画布固定背景与原有节点、浮层 token。
- `web/src/lib/canvas/canvas-appearance.ts`:自定义外观归一化、解析和本机账号默认值。
- `web/src/components/canvas/canvas-toolbar.tsx`:画布外观面板入口。
- `web/src/components/canvas/canvas-appearance-controls.tsx`:主题、颜色、明亮度和网格控件。
- `web/src/components/canvas/canvas-viewport.tsx`:应用主题背景并保持网格渲染参数。
## 画布节点自动整理
画布底部的“自动整理节点”按钮用于快速改善节点排布,适合处理节点散落、间距不一致或流程方向不清晰的画布。
### 使用规则
- 选中了两个或以上节点时,只整理选中的可移动节点;没有选中节点时,整理所有顶层可移动节点。
- 候选节点存在连线时,横向保持从左到右的依赖层级,纵向按文本、图片、视频、音频分泳道;没有连线时,各媒体类型分别使用网格布局,不再把图片与视频混排。
- 锁定节点、容器节点和折叠批次中的隐藏子节点不会被移动。
- 节点位置变化会进入现有画布历史记录,可使用“撤销”恢复整理前的布局,并继续由画布生命周期自动保存。
### 相关实现
- `web/src/components/canvas/canvas-zoom-controls.tsx`:底部视图控制 Dock 与“自动整理节点”入口。
- `web/src/pages/canvas/use-canvas-node-operations.ts`:候选节点筛选、流程/网格布局选择和位置提交。
- `web/src/lib/canvas/canvas-layout.ts`:媒体泳道、拓扑流程、网格、行列排列和对齐算法。
## 积分充值支付插件
积分中心在线充值通过 `yingce.payment/v1` 支付插件接入。宿主只保存订单、加密配置、回调入账和对账;渠道协议由插件包提供。当前官方包包括微信支付 Native、支付宝电脑网站支付和虎皮椒聚合支付,包内同时带有 macOS、Linux、Windows 的 amd64/arm64 可执行文件,宿主启动时按本机系统选择。管理员在插件中心开放插件后,到支付设置填写渠道密钥即可出现在用户积分中心弹窗。扫码区固定白底深色码点;虎皮椒 `url_qrcode` 是现成二维码图片,钱包直接展示,不再二次编码。用户顶栏积分、账户卡片、命令面板、画布余额和 `/wallet` 回跳都打开同一弹窗,不再进入独立钱包页。
### 相关实现
- `plugin-packages/official-payment-xunhupay/`:虎皮椒聚合支付插件包与 RPC 入口。
- `backend/payment-plugins/xunhupay.go`:虎皮椒下单、查单、验签与关单适配。
- `docs/content/docs/plugins/payment-plugin-runtime.mdx`:支付插件运行时协议。
## 剪辑成片(时间线编辑器)
“剪辑成片”是项目详情里的时间线编辑器入口(`/projects/:id/editor`),用于把已就绪的分镜视频编排成一段可播放、可导出的成片。它运行在浏览器本地时间线模型之上,通过后端任务队列完成语音转写与成片导出,编辑器本身不直接触碰原始媒体大文件。
### 使用入口
- 项目详情“制作流程 → 剪辑成片”步骤卡,或地址栏直接访问 `/projects/:id/editor`。
- 编辑器按项目隔离时间线状态;离开后再次进入会恢复该项目的编辑器快照。
### 当前能力
- **轨道与命令**:时间线支持添加、删除、拆分、移动、修剪片段等操作,全部通过统一命令状态机执行并进入 200 层历史记录,可撤销与重做;非法操作整批拒绝,不产生半应用状态。
- **预设面板**:左侧“添加”分类提供 8 个内置片段/字幕插件,按分类分组接入同一插槽注册链,第三方插件可与内置面板共存。
- **权限与执行边界**:命令执行遵循失败关闭(fail-closed)策略,`timeline.command` 权限与全局 `plugins.run` 权限分开控制;未授权插件或命令不会被执行或回显。
- **语音转写(字幕)**:对时间线音视频发起转写任务,转写进度沿任务 SSE 回流,完成后生成字幕轨。
- **成片导出(渲染)**:发起渲染任务,由服务端 ffmpeg 按渲染计划输出成片;渲染成功后在项目概览的“剪辑成片”步骤卡呈现“已输出 N 个成片”,并作为该步骤完成度的判定依据。
- **AI 编辑助手**:可以用自然语言描述剪辑意图,系统将其解析为受支持的命令序列;不超过 3 条命令时直接执行,多于 3 条先给出差异预览,确认后才批量执行。
### 运行环境要求
- 语音转写依赖本地 whisper.cpp 服务(`CANVAS_WHISPER_BASE_URL`),未配置时转写任务明确失败。
- 成片导出依赖服务端 ffmpeg(`CANVAS_FFMPEG_PATH`,留空时在 PATH 中查找)。
- AI 编辑助手需要可用的文本模型渠道。
### 相关实现
- `web/src/pages/projects/detail/editor.tsx`、`web/src/pages/projects/detail.tsx`:编辑器页面与路由入口。
- `web/src/pages/projects/detail/overview.tsx`:制作流程步骤卡与成片完成度展示。
- `web/src/lib/timeline/`:时间线命令状态机、历史记录、命令 schema 与摘要(`editor-commands.ts`、`editor-history.ts`、`ai-command-schema.ts`、`timeline-summary.ts`)。
- `web/src/stores/editor/editor-store.ts`:编辑器状态与快照持久化。
- `web/src/lib/plugins/editor-slot-registry.ts`、`web/src/lib/plugins/builtin/editor/`:插槽注册链与内置预设插件。
- `web/src/lib/plugins/plugin-permission-check.ts`:命令执行权限与失败关闭策略。
- `web/src/services/api/timeline-tasks.ts`:转写与渲染任务客户端。
- `backend/internal/service/task_timeline.go`、`task_render.go`、`timeline_render_plan.go`、`transcription_whisper.go`:后端转写、渲染与渲染计划任务。
- `backend/internal/repository/project_workbench_read.go`:项目概览指标聚合(含成片完成度计数)。
## 画布生成工具(待本地验收)
画布支持风格、运镜、九宫格提示词工具及自定义特效工具,提供收藏和私有自定义工具。工具仅加入提示词或创建待生成子节点,选择工具不自动发起生成。画布左侧提供主页、折叠、节点、资产、任务和历史菜单,不再提供独立工具菜单,展开面板沿用主分支主题。资产支持分类、搜索、分页和直接插入,复用现有素材服务及插入合同;任务和历史独立,历史明确展示最近 30 条。图片节点直接展示风格和预设,不再展示提示词模板入口;其他节点的提示词模板保持不变。
## 平台技能策展
后台可选开启子分类维护,市场和技能库支持子分类浏览;默认关闭,保留原行为。
开启时一级分类也可在后台新增、改名、排序、停用和选择图示,未归入技能仍有默认入口。
## 创作首页纵深画廊与灵感库
创作页空态是直线纵深图片画廊:11 张横版卡片沿 Z 轴前后排队,当前一张在最前、最大,其余依次后退缩小并左右对称。滚轮、两侧按钮和自动轮播都能切换,切换只动 `transform` 与 `opacity`。卡片带玻璃描边、圆角和投影,底部是「行动点 / 标题 / 描述」三段信息,只有最前那张露出。队列跟随输入框的创作类型:选图片只排图片灵感,选视频只排视频灵感,选文本用本项目原创条目。每次进场和每次换类型都重新随机抽一批,并记住最近出现过哪些,走完一轮自动换批。
工作区左侧「创作」下方新增灵感页 `/inspirations`,展示全部提示词,按来源、分类和创作类型筛选,支持搜索、收藏、视图切换和分页;自建灵感支持新建、编辑、删除和 JSON 导入导出,改动只存在本地。
生产 Nginx 对 `/inspirations` 与 `/inspirations/` 精确返回 SPA 入口,支持直接打开和刷新;`/inspirations/*.json` 继续提供静态目录数据,避免页面路径与同名目录冲突而跳转到容器端口。
外部提示词由 `web/scripts/import-inspirations.mjs` 同步:`awesome-seedance`、好好学 AI 提示词库、YouMind 的两个姊妹库。脚本同时为画廊池生成本地缩略图(560px、webp、约 35KB 一张)。上游封面平均 400KB~700KB,直接引用一屏 11 张要拉 5MB 以上,换成本地缩略图后约 400KB。
画廊池走 `public/inspirations/gallery-pool.json` 运行时拉取,不打进首屏 JS:几百条提示词正文压在包里是白背的,而这份数据只服务画廊一处。池子按来源等距抽取以横跨各分类,并且只收描述非空的条目,保证卡片三行版式不缺角;这些条目仍留在全量目录里供灵感页展示。
### 相关实现
- `web/src/pages/create/creation-inspiration-tunnel.tsx`、`creation-inspiration-tunnel.css`:纵深画廊组件与样式。
- `web/src/pages/inspirations/`:灵感页、详情弹窗、编辑弹窗与样式。
- `web/src/lib/inspirations/`:来源登记表、条目类型与解析、原创条目、上游版本号(`catalog.ts`、`resolve.ts`、`source-revisions.ts`)。
- `web/src/services/inspiration-catalog.ts`:全量目录与画廊池的运行时加载和内存缓存。
- `web/src/stores/use-inspiration-store.ts`:自建、覆盖、隐藏与收藏的本地持久化。
- `web/scripts/import-inspirations.mjs`:外部来源同步、缩略图生成与画廊池落盘。
- `web/public/inspirations/`、`web/public/inspiration-thumbs/`:全量目录、画廊池与本地缩略图。