162 lines
13 KiB
Plaintext
162 lines
13 KiB
Plaintext
---
|
||
title: 功能清单
|
||
description: 当前项目已实现的核心工作台能力与使用入口
|
||
---
|
||
|
||
# 功能清单
|
||
|
||
## 站点及外观
|
||
|
||
管理员可以在“系统配置 → 站点及外观”统一管理品牌识别、登录页、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`:密码更新、验证码消费和登录会话撤销事务。
|
||
|
||
## 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`:两个入口的接入。
|
||
|
||
## 用户诊断包导出
|
||
|
||
设置页的“问题诊断”入口和任务失败快捷入口支持导出脱敏诊断包,帮助普通用户提交问题时保留足够的排障上下文。
|
||
|
||
### 当前能力
|
||
|
||
- 浏览器内存中保留最近的全局错误、未处理 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`:按画布保存自由起点选择。
|
||
|
||
## 画布外观
|
||
|
||
底部工具栏的“画布外观”面板支持浅色、深色、自定义三种主题,以及点阵、线稿、空白三种网格。浅色画布使用比白色节点更沉的中性雾灰背景,深色画布使用比原深色节点更亮的中性灰背景,让画布底层与内容表面保持稳定区分,同时避免蓝灰背景与黑色工具浮层产生色温割裂。
|
||
|
||
自定义主题会继承用户进入前的浅色或深色基础界面,并允许在“浅色界面”和“深色界面”之间切换。界面样式复用原项目整套节点、工具浮层、文字、边框和交互状态,不开放这些元素的任意改色;切换界面样式不会覆盖已经选择的画布背景和网格颜色。
|
||
|
||
自定义主题还允许调整画布背景色、背景明亮度、网格颜色和网格强度。颜色输入支持三位或六位 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/infinite-canvas.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`:媒体泳道、拓扑流程、网格、行列排列和对齐算法。
|