Files
tyx_AI_xhs/UIDesign.md
T
suyx 4d1ec8ba7e
Dada P0-A isolated Windows CI / validate-and-package (push) Failing after 1m5s
feat: complete TASK-WP5-03 asset allowlist
2026-08-03 18:24:16 +08:00

63 KiB
Raw Blame History

Dada UI Design

文档项 内容
文档版本 1.1
产品范围 P0-A Windows 单机版
设计状态 低保真交互与界面规范
主要画布 Windows 当前稳定版 Chrome / Edge1920 × 1080 优先验收
产品需求权威 PRD.md v1.10
功能与状态导航 FeatureSummary.md 1.1
工程与接口约束 DevelopmentPlan.md 1.2
本阶段产出 页面、布局、组件、状态、文案、焦点顺序和可访问性规范
本阶段不产出 高保真视觉稿、前端代码、移动端、P0-B、部署人员 CLI

输入文件冻结校验:

文件 SHA-256
PRD.md 31F93674DF1A90B557FEE3AA9E74FB084E246CA8FE09F6BD4B1DC9D56D606565
FeatureSummary.md 6F80E272AAB08A5525B54501D83F16A4F6A7A170596947BBC25F1DA54F2FE844
DevelopmentPlan.md 76CCC786E910F3E503921AEF5B9BD22976E364184BA8C0062CDCF1C5F376AC0A

文档使用规则

本稿只解释上游需求如何落到界面,不创建新的产品角色、状态、接口或错误动作。出现冲突时,PRD.md 是唯一产品需求权威;FeatureSummary.md 只用于导航;DevelopmentPlan.md 只约束已冻结的工程、接口和状态实现。

设计交付遵循以下边界:

  • UI 可以决定布局、视觉、图标、控件、焦点顺序、提示层级和未被冻结的具体中文文案。
  • UI 不得改变产品状态机、权限、错误动作、验收条件、API 语义、固定提示或数据范围。
  • 后端返回的稳定 message_key 决定错误语义;前端只把它映射到本稿规定的标题、说明和允许动作,不用字符串猜测错误。
  • 前端不得把已配置默认模型、运行时推荐模型和用户当前选择合并为一个状态。
  • 页面展示不得暴露密钥、完整本机路径、私有正文、私有图片内容或不必要的个人信息。
  • 本稿中的“卡片”仅用于重复项目、素材缩略项和弹层内的独立对象;页面区段本身不做层层嵌套卡片。

设计目标

Dada 是面向小规模内测创作者的本机图像创作工具。普通创作体验应直接、醒目、有作品感;后台和编辑器应安静、紧凑、可扫描。视觉表达不能掩盖本机数据风险、费用、模型状态和保存状态。

界面遵循六项原则:

  • 先给状态,再给动作:生成、保存、容量、服务和冲突状态必须在动作附近可见。
  • 视觉有识别度,操作不过度装饰:艺术表达集中在登录、注册和无项目工作台顶部。
  • 危险动作明确且可逆时优先可逆:移入回收站与永久删除分离;不可逆操作使用对象名确认。
  • 不暗换用户选择:模型失效、版本冲突和未提交导出都要求用户明确确认。
  • 本机边界持续可见:固定本机数据提示不是首次启动提示,不可被永久关闭。
  • 同一语义同一组件:相同状态、message_key 和错误动作在普通端、后台与辅助界面中保持一致。

视觉方向

主视觉

整体使用荧光黄、黑、白、冷灰的高对比系统。荧光黄用于主要动作、当前选择和有限的品牌面积;黑色用于标题、正文和关键轮廓;白与冷灰承担大面积操作背景。错误、成功和信息状态使用独立红、绿、蓝,不依赖黄色表达所有含义。

视觉特征:

  • 方角模块、硬边分隔、粗体中文标题、细密数据行。
  • 不使用大面积圆角、渐变、光斑、漂浮装饰球或卡片堆叠。
  • 控件圆角最多 4 px;大区段保持直角。
  • 页面级主标题不超过 28 px;高密度面板标题使用 16 至 20 px。
  • 数字、括号和机能符号只在艺术带中少量出现,不作为导航编号。
  • 所有动态信息预留稳定宽度,状态切换不推挤相邻控件。

原创机能风艺术带

艺术带只用于:

  • 普通用户登录与注册页顶部。
  • 普通用户首次进入且没有任何项目的工作台顶部。

艺术带不用于:

  • 已有项目的工作台。
  • 项目列表、项目详情、编辑器。
  • super_admin 登录与后台。
  • 浏览器阻断与启动失败等系统错误页。

后续高保真阶段制作原创位图,不复制参考图中的文字、标志或具体构图。视觉由巨大 DADA 字形、银灰材质碎片、细技术线、少量荧光黄切片和低密度标记组成。艺术带不得遮住页面 H1、表单、错误提示或主动作。

建议规格:

  • 桌面横幅比例约 3.4:1,高度 180 至 240 px。
  • 内容安全区左右各 48 px;主字形与装饰均不得越过安全区覆盖操作内容。
  • 静态图为默认方案;如后续加入轻微位移,必须响应减少动态效果设置,并提供完全静态替代。
  • 图片加载失败时显示白底、DADA 黑色字标和一条荧光黄分隔,不影响表单和导航。

设计令牌

颜色

令牌 色值 用途
Brand Yellow #F2F400 主按钮、当前标签、关键品牌面
Ink #111111 主标题、正文、主轮廓
Paper #FFFFFF 页面与画布操作区
Cool Gray 050 #F7F7F5 次级背景、表格隔行
Cool Gray 100 #E8E8E5 分区、禁用背景
Cool Gray 300 #B9B9B3 边框、占位
Cool Gray 600 #62625D 次要文字
Danger #C92A24 错误、破坏性动作
Success #16794B 已保存、恢复、完成
Info #1769AA 加载、排队、信息提示
Focus #005FCC 键盘焦点环

使用约束:

  • Brand Yellow 上只用 Ink,不用白字。
  • Danger、Success、Info 不能只靠颜色表达,必须同时出现图标和文字。
  • 页面正文与背景达到 WCAG AA;大号艺术字不承载唯一业务信息。
  • 禁用态保持文字可读,不通过降低到近乎不可见的透明度表达。

排版

层级 字体 字号 / 行高 字重
页面标题 Microsoft YaHei UI, Segoe UI, sans-serif 28 / 40 px 700
区段标题 同上 20 / 28 px 700
面板标题 同上 16 / 24 px 700
正文与控件 同上 14 / 22 px 400 或 600
表格与辅助信息 同上 12 / 18 px 400
艺术带字形 系统粗黑或后续位图 72 至 96 px 800

字间距固定为 0,不随视口宽度缩放字号。金额、点数、日期和版本号使用 Segoe UI 的等宽数字特性;不引入产品包之外的远程字体。

间距与尺寸

  • 基础间距:4、8、12、16、24、32、48 px。
  • 顶部导航高 56 px;严重状态条最小高 36 px;固定本机提示条最小高 32 px。
  • 普通按钮高 36 px;主要按钮高 40 px;图标按钮为 36 × 36 px。
  • 表格行高 44 px;密集审计表格可用 40 px。
  • 表单输入最小高 40 px;多行提示词输入最小高 120 px。
  • 页面最大内容宽 1440 px;后台数据区可使用可用宽度,不用居中窄栏。
  • 弹层宽度分为 480、640、800 px;不超过可用视口高度,正文区域内部滚动,标题和动作固定。

图标

实现阶段优先使用项目采用的 Lucide 图标。熟悉的工具只显示图标并提供 tooltip 和无障碍名称;业务命令使用图标加文字。

动作 图标
返回 ArrowLeft
撤销 / 重做 Undo2 / Redo2
保存 Save
下载 / 导出 Download
删除 Trash2
恢复 RotateCcw
当前任务 LoaderCircle 或 CircleCheck
状态警告 TriangleAlert
冲突 GitCompareArrows
查看详情 Eye
审计访问 ShieldCheck
诊断 Stethoscope
外部引导 ExternalLink

不手绘通用图标。加载图标旋转但不改变按钮宽度;减少动态效果时改为静态图标加“处理中”文本。

全局组件

按钮

  • 主要按钮:荧光黄底、黑字,用于页面唯一主动作。
  • 次要按钮:白底、黑色 1 px 边框,用于返回、取消、筛选。
  • 文字按钮:无边框,用于表格内轻量动作。
  • 危险按钮:红色边框或红底,只有最终确认使用实心红底。
  • 图标按钮:固定 36 × 36 px;必须有 tooltip 和 aria-label。
  • 处理中保持原宽,显示 spinner 与动词进行时,禁止重复提交。

输入与选择

  • 输入框标签始终在控件上方;必填标记和错误说明不占用 placeholder。
  • 邮箱与验证码使用原生可识别的 input 类型和自动完成语义。
  • 模型、比例、格式等有限选项使用菜单或分段控件,不使用自由文本。
  • 二元设置使用复选框或开关;危险设置不使用仅图标开关。
  • 数字范围使用输入加步进器;JPG 质量使用滑杆与数值输入同步。
  • 字段错误紧邻字段,页面级错误位于标题下方;二者可同时存在。

标签与状态徽标

状态徽标为方角短标签,固定最小宽,不使用只有颜色的圆点。状态词与后端状态一一映射,不用“差不多完成”等模糊措辞。

通知

类型 位置 行为
字段错误 字段下方 聚焦后仍保留,字段修正并重新校验后消失
页面错误 页面标题下 持续到重试成功或离开页面
场景状态条 受影响区段上方 服务恢复或场景退出后消失
全局容量条 普通端导航下 / 后台内容顶部 critical、full、unavailable 持续显示
Toast 右上角 仅用于低风险完成反馈,不承载唯一错误
冲突遮罩 编辑区或配置区 阻断写操作,保留规定的读取、导出或刷新动作

表格

  • 表头固定,第一列可在横向滚动时固定。
  • 支持筛选的列在表头提供明确按钮,不把筛选藏在列名点击中。
  • 行动作统一放在最右侧“更多”菜单;高频唯一动作可直接显示。
  • 空表格保留表头和筛选器,正文显示空状态与下一步动作。
  • 加载时显示稳定行高骨架;失败时不清空上一次已成功数据,并标注其更新时间。

弹层

  • 打开后焦点进入标题后的第一个可操作控件。
  • 焦点限制在弹层内;Esc 仅关闭非破坏性弹层。
  • 关闭后焦点返回触发按钮。
  • 破坏性确认显示对象名、影响范围和不可恢复后果。
  • 后端请求期间禁用关闭与重复提交;请求失败后恢复控件,保留用户输入。

全局状态语言

加载、空、失败和禁用

状态 视觉 默认动作
正常 完整内容与可用主动作 执行当前流程
明确空原因、一个主动作、可选次动作 创建、上传或清除筛选
加载 稳定尺寸骨架或行内进度 允许取消时显示取消
失败 红色标题、可理解说明、稳定 message_key 映射 重试、返回或诊断
禁用 控件保持可读,旁边说明前置条件 前往满足条件的入口
冲突 对象版本与最新状态并列 按产品规则刷新、重试或仅导出
容量限制 全局或场景状态条加受影响动作说明 清理、下载或重试计量

容量状态

LocalBackendStorageState 的状态与动作必须来自后端;前端不自行用浏览器剩余空间估算。

状态 全局表达 生图 / 参考图 / 成品保存 上传贴纸 / 生成缩略图 JSON 项目编辑 已有内容查看 / 下载 / 删除
normal,低于 80% 不显示全局条 允许 允许 允许 允许
warning,达到 80% 受影响场景显示黄色提示 允许 允许 允许 允许
critical,达到 90% 持续紧凑状态条 允许,但提交前再次显示预计占用 允许,但上传前再次确认 允许 允许
full,已达到 5 GB,或预计本次写入后超过上限 持续红色状态条 阻断新增受管二进制写入与 AI 调用;客户端只下载按上游规则保留 阻断 允许可提交的 JSON 编辑 允许
unavailable,不可写或系统磁盘满 持续红色状态条 阻断新增写入与 AI 调用;已有文件可下载 阻断 后端写入失败,页面进入 failed 允许查看、下载和删除入口

预计本次写入后恰好等于 5 GB 时,允许本次容量预留和写入继续;写入提交后 storage_status 进入 full,并阻断后续新增受管二进制写入与 AI 调用。

容量提示中显示已用量、5 GB 上限、最后计量时间和“管理存储”入口。前端不得在清理排队时预先减少已用量;只有物理清理完成并重新计量后更新。

服务异常

  • Worker degraded:生成表单和当前任务入口显示;不影响项目查看、编辑已有 JSON 和本地可完成的导出。
  • 无运行时可用模型:生成区持续显示,生成按钮禁用;不改写用户模型配置显示。
  • Resend 异常:只在登录、注册和后台服务页显示。
  • 高德异常:只在使用 DYN004 定位能力的素材场景和后台服务页显示。
  • AI 网关余额或可用性异常:在模型选择、生成提交、当前任务和后台服务页显示。
  • LocalDataRoot 容量异常:按上表全局表达。
  • 普通用户错误不显示密钥、绝对路径、原始上游响应或私有正文。

页面与入口地图

访问前门禁

浏览器访问 localhost 后首先进入支持检查。门禁通过后才可加载普通端或后台产品界面;失败只进入浏览器不受支持引导页。

普通用户

普通用户顶部导航:

  • 创作
  • 项目
  • 点数
  • 设置

右侧固定区域:

  • 当前生成任务入口:只要存在 queued 或 running 任务就持续显示。
  • 点数余额。
  • 账号菜单。

导航下方按需显示严重容量状态条。页面底部或固定底栏持续显示:

测试数据仅保存在本机,不自动备份,也不会迁移到正式系统。

普通用户页面:

  • 登录 / 注册
  • 创作工作台
  • 当前生成任务
  • 项目列表与回收站
  • 项目详情
  • 编辑器
  • 导出
  • 点数明细
  • 设置与账号注销

内部预览账号沿用普通用户全部页面,只在授权素材批次内多看到允许的 internal_preview 或 passed 内容。它不是新角色,不出现后台入口。

super_admin

super_admin 使用独立登录和独立会话。后台左侧导航:

  • 总览
  • 用户
  • 邀请码
  • 模型
  • 素材
  • 内部预览
  • 生成记录
  • 服务与存储
  • 审计

super_admin 不显示普通创作导航、创作工作台、项目或编辑器入口。

辅助系统界面

Windows 托盘和 Supervisor 提供:

  • 打开 Dada
  • 查看运行状态
  • 打开诊断
  • 退出 Dada

部署人员 CLI 不属于本稿。

权限矩阵

能力 未登录访问者 普通用户 内部预览账号 super_admin 辅助系统
浏览器不受支持引导 可见 门禁前可见 门禁前可见 门禁前可见 可打开支持页
登录 / 注册 可见 已登录后跳转创作 同普通用户 仅独立后台登录 不处理身份
创作与生成 不可 不可 只显示健康状态
已发布普通素材 不可 后台管理 只显示素材根健康
授权内部预览素材 不可 不可 管理授权与批次,不以普通用户身份消费 不可
项目、编辑器、导出 不可 不可 不可
后台运营 不可 不可 不可 不可
私有内容完整正文 / 图片 不可 不可 不可 告知确认后,逐次“打开并记录审计” 不可
诊断摘要 不可 设置中只看用户相关简化状态 同普通用户 后台可看脱敏运营诊断 可看脱敏系统诊断

账号被停用或注销后,服务端权限优先于已打开页面。页面收到拒绝时立即退出受保护内容并返回相应身份入口,不保留可交互的旧数据。

浏览器不受支持引导

入口与权限

支持检查返回 BROWSER_UNSUPPORTED,或任何产品路由在门禁前被拒绝时进入。所有身份均只能看引导,不能继续使用产品功能。

布局

  • 白底全页,顶部 8 px 荧光黄规则线。
  • 中央 640 px 文字列,显示 DADA 字标、标题“当前浏览器无法使用 Dada”、原因、受支持品牌和版本。
  • 底部显示当前检测到的浏览器品牌 / major;识别不可用时只显示“无法可靠识别”。
  • 不加载产品主导航、项目缩略图或后台框架。

控件

  • “查看如何打开 Chrome / Edge”折叠说明。
  • “重新检测”只重新执行门禁,不提供绕过。
  • 若系统能力允许,提供“复制本机地址”;它不是继续使用入口。

状态与动作

reason 文案重点 允许动作
platform_unsupported 仅支持当前 Windows 电脑 查看引导、复制地址、重新检测
brand_unsupported 请使用已验收的 Chrome 或 Edge 查看引导、重新检测
version_unsupported 当前版本不在本次发布支持范围 查看支持 major、重新检测
identity_unavailable 无法可靠识别浏览器 检查浏览器设置、重新检测

焦点顺序:页面标题 → 折叠说明 → 重新检测 → 复制地址。错误摘要使用 assertive live region。页面没有“仍然继续”。

普通用户认证

登录 / 注册框架

页面顶部为原创机能风艺术带,下方为左对齐 480 px 表单列。艺术带不随字段展开改变高度。页面右上角只显示“管理员登录”文字入口,明确进入独立后台身份域。

登录与注册使用标签切换。切换时清除不属于目标模式的敏感字段,不把注册资料带到登录提交。

登录

字段与动作

  • 邮箱
  • 验证码
  • 获取验证码 / 倒计时后重新获取
  • 登录

登录模式不显示邀请码、创作署名、社交 ID 和内测告知。

焦点顺序:登录标签 → 邮箱 → 获取验证码 → 验证码 → 登录 → 注册标签 → 管理员登录。

状态

状态 表达 允许动作
初始 邮箱空,获取验证码禁用 输入邮箱
邮箱格式无效 字段错误 修正邮箱
发码中 按钮保持宽度并显示“发送中” 等待
已发码 显示倒计时和发送目标的脱敏邮箱 输入验证码、倒计时后重发
Resend 失败 页面错误,不清空邮箱 重试
验证码错误 / 过期 验证码字段错误 修正或重发
账号停用 页面错误 返回、联系管理员
登录成功 跳转创作 无重复提交

注册

注册分为两个可见阶段,但仍是一个页面和一条注册流程。

第一阶段

字段顺序固定为:

  • 邀请码
  • 邮箱
  • 获取验证码

获取验证码只有在邀请码和邮箱均通过本地完整性检查后可用。点击后使用既有发码请求,由后端校验邀请码有效性和名额;前端不新增邀请码预检 API。

后端确认邀请码有效、名额未满并成功发码后,才展开第二阶段:

  • 验证码
  • 创作署名
  • 社交 ID
  • 《内测使用与隐私告知》阅读入口和必选同意框
  • 注册

第二阶段展开后,邀请码和邮箱保持只读摘要,并提供“修改”动作。修改会收起第二阶段并使已发挑战按后端规则失效或重新申请。

焦点顺序:注册标签 → 邀请码 → 邮箱 → 获取验证码 → 验证码 → 创作署名 → 社交 ID → 告知阅读 → 同意复选框 → 注册 → 登录标签。

状态

状态 表达 允许动作
邀请码未填 / 邮箱未填 获取验证码禁用,并说明缺少字段 补充字段
邀请码无效 邀请码字段错误,第二阶段不展开 修正邀请码
邀请码已用 / 过期 显示对应稳定错误语义 更换邀请码
名额已满 页面级阻断,不发送验证码 返回登录
发码成功 展开第二阶段 完成资料
验证码错误 / 过期 保留资料字段 修正或重发
告知未同意 注册按钮禁用,说明必选 阅读并勾选
最终复核失败 保留非敏感资料,显示具体稳定错误 按错误动作修正
注册成功 建立普通用户会话并进入创作 无重复提交

告知正文必须覆盖 PRD 固定范围;界面不把长文塞入复选框标签。阅读弹层底部固定显示“我已阅读”,但只有返回表单后的复选框代表同意。

普通用户主框架

顶部导航

左侧为 DADA 字标和四个导航入口。当前入口使用荧光黄底与 3 px 黑色下边线,不能只靠颜色。右侧任务入口在 queued 或 running 时显示状态文字和进度;进入 succeeded、failed 或 rejected 后保留一次可查看结果提示,用户查看后恢复为隐藏。

顶部导航在页面滚动时保持可见。容量 critical/full/unavailable 状态条固定在导航下,不盖住页面内容。

本机数据提示

普通用户主框架底部持续显示固定文案:

测试数据仅保存在本机,不自动备份,也不会迁移到正式系统。

该条不可永久关闭。设置页重复显示更完整的数据风险说明和下载建议。屏幕阅读器首次进入页面时读出,站内导航时不重复打断。

创作工作台

无项目状态

布局

  • 顶部原创机能风艺术带,标题为“开始一张新作品”。
  • 艺术带下方直接进入生成表单,不把表单放进装饰卡。
  • 右侧或下方显示“当前任务”;无任务时显示简洁空状态。

空状态动作

  • 输入提示词。
  • 选择模型和比例。
  • 添加参考图(提交生成时上传)。
  • 查看预计点数。
  • 提交生成。

没有“浏览示例模板”之类未定义入口。

有项目状态

不显示艺术带。页面顶部为紧凑生成区,下方为最近项目与当前任务摘要。最近项目只展示真实项目数据;最多显示 6 个,之后使用“查看全部项目”。

生成表单

布局与控件

  • 提示词多行输入。
  • 模型选择菜单。
  • 比例分段控件:3:4、1:1、4:3、9:16。
  • 添加参考图区域,包含选择本地文件、标注“尚未提交,仅保留在当前页面”的缩略预览和移除;只有点击提交生成时才上传并绑定本次 GenerationJob。
  • 已确认点数成本。
  • 生成按钮。

首次新建创作时预选 recommended_model_id。界面同时区分:

  • “系统配置默认”:只在模型详情说明中展示 configured_default_model_id。
  • “当前推荐”:在推荐模型选项旁显示“推荐”。
  • “你的选择”:菜单当前值。

如果 recommended_model_id 为空,模型不自动选中,生成按钮禁用并显示“当前没有可用于新任务的模型”。

若用户已选模型后,该模型变为不可用于新任务:

  • 保留原选择并标红“当前不可用”。
  • 不切换到推荐模型。
  • 阻断提交。
  • 若后端返回新推荐,显示“改用推荐模型”按钮;用户点击后形成新的显式选择。
  • 重新显示成本和能力约束,用户再次确认后才可提交。

提交前状态

条件 生成按钮 邻近说明
提示词为空 禁用 请输入创作描述
模型未选 禁用 请选择当前可用模型
模型运行时不可用 禁用 保留原选择并显示原因、推荐替代
比例未选 禁用 请选择画面比例
参考图处理中 禁用 正在处理参考图
点数不足 禁用 显示所需与现有点数,入口到点数页
已有 queued / running 任务 不创建第二个任务 变为“查看当前任务”
Worker degraded 禁用或按后端能力阻断 显示生成服务暂不可用
storage full / unavailable 禁用 显示容量动作
条件均满足 可用 显示确认成本与模型

提交后立即进入当前任务视图,不乐观创建成功图片。

当前生成任务

当前任务既是顶部持续入口,也有独立详情抽屉或页面。抽屉宽 420 px,从右侧打开,不改变主页面状态。

状态 显示 允许动作
queued 排队时间、模型、比例、冻结点数 关闭抽屉、返回项目
running 运行状态、开始时间、模型 关闭抽屉、查看项目
succeeded 结果缩略图、实际点数、项目入口 打开项目、下载原图
failed 错误标题、是否释放点数、允许动作 按错误映射重试或修改
rejected 拒绝原因、点数释放状态和允许动作 按错误映射修改提示词或参考图

同一账号再次提交时若后端返回现有 queued / running 任务,界面打开该任务,不显示第二次冻结成功。

生成错误与提交阻断动作矩阵

具体 message_key 由后端返回。固定 GenerationErrorCategory 只有以下九类,前端不得新增、重命名或归并:

GenerationErrorCategory 用户说明重点 主动作 任务与点数
upstream_timeout 上游响应超时 使用原输入重试 failed,释放冻结点
upstream_failed 上游明确失败 使用原输入重试 failed,释放冻结点
safety_rejected 内容未通过安全检查 修改提示词或参考图 rejected,不保存输出并释放冻结点
model_disabled 模型因普通启停规则不可用 选择其他模型或等待 不创建任务、不冻结点
gateway_balance_insufficient AI 网关余额不足 选择未受影响模型或联系管理员 未创建则不冻结;已创建则 failed 并释放
gateway_contract_invalid 网关契约未验证或失效 选择其他模型或联系管理员 未创建则不冻结;已创建则 failed 并释放
reference_invalid 参考图格式、大小、数量或内容无效 更换或移除参考图 未创建则不冻结;已创建则 failed 并释放
unknown_retryable 未知但判断为临时错误 稍后重试 failed,释放冻结点
unknown_non_retryable 未知且不应反复重试 联系管理员 failed,释放冻结点

以下情况是确定性业务阻断,不属于 GenerationErrorCategory

阻断条件 用户说明重点 主动作 任务与点数
点数不足 显示所需点数与当前可用点数 查看点数明细 不创建任务、不冻结点
ModelConfig 版本变化 显示最新模型配置和成本 重新确认 不创建任务、不冻结点
已有 queued / running 任务 当前已有生成任务 查看当前任务 不创建第二个任务、不重复冻结
项目或生成历史达到上限 显示对应上限和清理要求 管理项目或删除旧历史图 不创建任务、不冻结点
storage full / unavailable 显示容量或可写性阻断原因 管理存储或打开诊断 不创建任务、不调用上游、不冻结点

项目

项目列表

入口与权限

普通用户及内部预览账号从顶部“项目”进入,只能看到自己的项目。

布局

  • 页面标题、active 项目计数和上限。
  • “项目”与“回收站”标签。
  • 搜索、排序和状态筛选。
  • 项目缩略图网格;卡片比例稳定,不因名称或状态变化改变尺寸。
  • failed_empty 快捷清理区只在存在候选时出现。

项目卡片

  • 当前底图或占位图。
  • 项目名、比例、更新时间。
  • 成功图数量。
  • 项目状态。
  • 打开主动作。
  • 更多菜单:重命名、移入回收站;只有允许的对象显示对应动作。

项目名最多显示两行,之后省略;完整名称通过 tooltip 和无障碍名称可读。

状态

状态 表达 允许动作
正常 网格与计数 打开、重命名、按规则删除
“还没有项目” 前往创作
筛选为空 “没有符合条件的项目” 清除筛选
加载 固定比例骨架 等待
失败 保留上次列表并标注旧数据 重试
达到 20 个 active 上限 顶部阻断提示 清理 failed_empty 或移入回收站
批量 failed_empty 仅选择无成功图草稿 批量移入回收站

含成功图项目不得进入 failed_empty 快捷批量操作。前端复核展示条件,后端仍做最终校验。

焦点顺序:页面标题 → 标签 → 搜索 → 筛选 → 排序 → 项目卡片 → 分页或加载更多 → failed_empty 清理。

回收站

  • 显示删除时间和剩余保留时间。
  • 提供恢复和永久删除。
  • 恢复若触发 active 项目上限,显示阻断并指向现有项目管理。
  • 永久删除使用项目名确认;提交后显示清理进度。
  • 永久删除完成前不乐观减少容量。

项目详情

布局

  • 顶部:返回、可编辑项目名、项目状态、比例、更多菜单。
  • 主区:当前底图大预览。
  • 历史区:按时间展示最多 10 张成功图。
  • 操作区:继续生成、进入编辑器、下载原始图。
  • 最新导出区:每种格式最多展示最新一份;后端保存失败的本地下载不进入此区。

状态与动作

状态 表达 允许动作
active 且有成功图 正常详情 满足生成前置条件时继续生成;编辑、下载
failed_empty 无成功图与最后错误摘要 修改并重试、移入回收站
已达 10 张成功图 历史上限提示 编辑、下载;不再追加生成
trashed 回收站标识 恢复、永久删除;不编辑
state_version 冲突 版本冲突条 刷新后继续
加载失败 不展示部分可编辑数据 重试、返回列表

项目比例创建后固定。继续生成不提供改变比例的控件。继续生成入口始终保留,但受项目 10 张成功图上限、模型运行时可用性、点数、同账号单一 queued / running 任务和 storage full / unavailable 约束;条件不满足时禁用入口,并在入口旁说明具体原因和允许动作。

编辑器

总体布局

编辑器使用固定三栏框架:

  • 顶部工具栏:56 px。
  • 左栏:280 px,素材与底图来源。
  • 中央:自适应画布工作区。
  • 右栏:320 px,当前对象或底图参数。
  • 底部状态行:32 px,缩放、对象计数和键盘状态。

1920 × 1080 下,画布完整可见且工具栏不换行。可用宽度缩小时左右栏各自内部滚动,不挤压画布到不可操作尺寸。

顶部工具栏

从左到右:

  • 返回项目。
  • 项目名与比例。
  • 撤销、重做。
  • 保存状态。
  • 预览。
  • 导出。

保存状态固定占用至少 128 px,覆盖:

状态 显示文案 图标 / 色彩 行为
dirty 有未保存修改 Circle / Ink 允许继续编辑,离开需确认
saving 正在保存 LoaderCircle / Info 保持布局,禁止重复手动保存
saved 已保存 CircleCheck / Success 显示最近保存时间
failed 保存失败 CircleX / Danger 显示重试;离开与刷新按失败规则提示
conflicted 版本冲突 GitCompareArrows / Danger 编辑区转只读,进入冲突处理

左栏

左栏使用文本标签,不使用数字编号:

  • 底图
  • 历史
  • 文字模板
  • 普通贴纸
  • 色卡
  • 动态贴纸

底图显示当前生成图和可用历史图。切换底图前显示说明:“覆盖元素会保留,底图编辑参数将重置。”用户确认后执行。

历史区按项目历史顺序显示,不能绕过项目 10 张成功图上限。素材列表使用虚拟滚动、懒加载和稳定缩略尺寸;内部预览账号只在授权素材上看到“预览”标识。

素材加载失败时:

  • 已加载素材继续可用。
  • 失败分区显示重试。
  • 只读素材根异常时显示“素材暂不可用”,不显示绝对路径。
  • 下架素材不得用于新添加;项目已有引用仍按保存版本渲染。

中央画布

  • 画布背景为 Cool Gray 100,真实输出区域为白色或当前底图。
  • 固定宽高比容器避免图片加载时跳动。
  • 支持选择、移动、缩放、旋转、翻转、透明度、复制、层级、对齐吸附、循环选择、长按候选、多选和框选。
  • 对齐参考线使用 Focus 蓝,吸附结果同时有视觉和短暂文字提示。
  • 长按候选在指针附近显示对象列表,键盘用户可通过“循环选择”命令打开同一列表。
  • 覆盖元素达到 50 个时,新增相关动作禁用并说明上限。

明确不提供:

  • 图层面板。
  • 隐藏。
  • 锁定。
  • 编组。

层级调整只作用于当前选中对象,通过置顶、上移、下移、置底命令完成。

右栏

右栏标题随选择变化,但宽度不变:

  • 未选择对象:画布摘要和底图参数。
  • 选择底图:裁剪、适配、亮度、对比度、饱和度、色温、固定滤镜。
  • 选择文字:内容、模板允许的文字样式和对象变换。
  • 选择贴纸 / 色卡 / 动态贴纸:对象变换、透明度和素材允许参数。
  • 多选:对齐、分布、共同变换和删除。

数值控件使用滑杆与数值输入同步。拖动时画布即时预览,松开形成一个撤销记录;键盘步进结束后同样合并为合理的撤销单元。

编辑器状态

状态 中央区 顶部动作 允许动作
正常 可编辑 保存、导出可用 全部编辑
初次加载 固定画布骨架 导出禁用 返回项目
素材分区加载失败 画布保持可编辑 保存、导出可用 重试素材,编辑已有对象
dirty 可编辑 显示有未保存修改 保存、导出前确认
saving 可编辑但保存动作锁定 显示正在保存 继续本地编辑,按队列保存
failed 保留本地当前状态 显示保存失败 重试、按规则本地导出、返回需确认
conflicted 只读遮罩,显示本页版本和后端新版本 仅一次本地导出与刷新可用 本地导出一次、刷新最新版本
storage full JSON 保存仍按上游允许,二进制写入提示 导出可客户端下载 编辑、保存 JSON、客户端下载
storage unavailable 保留当前内存状态,保存 failed 本地导出按上游可行性提示 查看、尝试本地下载、诊断

同机多标签发生 state_version 冲突时,不提供合并、覆盖后端或继续编辑。旧页只读,允许一次本地导出当前内存版本,然后必须刷新本地后端最新版本。关闭冲突提示不能恢复编辑。

离开与崩溃边界

  • dirty:离开弹层提供“保存并离开”“不保存离开”“继续编辑”。
  • saving:等待当前保存结果后再决定离开。
  • failed:明确未写入本地后端;提供重试、按规则本地导出和继续编辑。
  • conflicted:只允许一次本地导出和刷新最新版本,不提供覆盖。
  • 强制刷新、关闭页面或浏览器崩溃时,不承诺恢复未提交私有草稿。

导出

导出使用 640 px 弹层。

控件顺序

  • 格式分段控件:JPG / PNG。
  • JPG 质量:滑杆和数值输入;选择 PNG 时隐藏且不保留为可聚焦控件。
  • 输出尺寸与预计文件信息。
  • 未提交修改确认区。
  • “导出并下载”主按钮。
  • 取消。

如果存在未提交文字或样式修改:

  • 弹层显示“导出前需要提交当前修改”。
  • 用户确认后形成一次撤销记录,再用提交后的同一画布状态合成。
  • 用户取消时不提交,也不导出。

结果矩阵

客户端合成 浏览器下载 后端最新成品保存 结果表达
成功 成功 成功 “已下载并保存为最新成品”
成功 成功 失败 明确“文件已下载,但未保存为最新成品”;latest_exports 不更新
成功 失败 未开始或失败 显示浏览器下载失败,允许重新下载同一次合成结果
失败 未开始 未开始 显示合成失败,返回编辑器检查
冲突页允许的一次导出 成功或失败 不覆盖后端 明确“仅下载本页版本,未写入项目”

下载与后端持久化必须来自同一次合成。后端保存失败不能撤回已成功的客户端下载,也不能假装 latest_exports 已更新。每种格式只保留最新一份后端记录。

焦点顺序:格式 → JPG 质量 → 修改确认 → 导出并下载 → 取消。结果消息通过 polite live region 宣读;失败通过 assertive。

点数

点数明细

布局

  • 当前可用点数。
  • 冻结点数说明。
  • 明细表:时间、事件、变动、任务 / 管理操作引用、余额。
  • 筛选:日期、事件类型。

状态

  • 空:显示“暂无点数变动”,不提供购买入口。
  • queued / running 冻结:用“已冻结”状态,不算作已扣除。
  • succeeded:显示实际结算。
  • failed / rejected:显示对应释放,避免看起来重复加点。
  • 加载失败:保留上次余额并标明更新时间,涉及新提交时仍以服务端实时校验为准。

upstream_cost_reconciliation 只用于后台诊断与本地监控,不改变 Dada 点数处理,也不在普通用户点数页显示为任务状态或点数状态。

普通用户不能调整点数。

设置与账号注销

设置

区段:

  • 个人资料:创作署名、社交 ID。
  • 账号:邮箱只读,登录与状态摘要。
  • 本机数据:固定提示、容量状态、主动下载建议、诊断摘要入口。
  • 注销账号。

本机数据区必须持续显示原文:

测试数据仅保存在本机,不自动备份,也不会迁移到正式系统。

同时说明数据依赖当前 Windows 用户登录和文件系统权限,不提供 Dada 应用层加密或云备份;机器损坏、重装或删除 LocalDataRoot 后不可恢复。界面只显示逻辑位置说明,不显示绝对路径。

注销

注销入口放在设置末尾危险区,不与退出登录相邻。流程:

  • 打开 640 px 确认弹层。
  • 展示影响范围、不可恢复内容和匿名保留规则。
  • 输入指定确认词或账号邮箱。
  • 再次获取验证码并验证。
  • 提交后显示处理中,不允许关闭重复提交。
  • 成功后结束普通用户会话并返回登录。

失败保留确认弹层和非敏感输入,按稳定错误显示重试动作。注销不提供将可编辑项目导入未来正式系统的承诺。

super_admin 登录与框架

管理员登录

独立 URL、独立会话和独立 audience。页面使用白底、黑色字标和窄荧光黄顶条,不使用创作艺术带。

字段:

  • 管理员邮箱。
  • 验证码。
  • 获取验证码。
  • 登录。

邮箱不在管理员白名单时,发码前按服务端结果阻断。错误文案不暴露某邮箱是否属于普通用户。普通用户登录成功不能跳入后台。

焦点顺序:邮箱 → 获取验证码 → 验证码 → 登录 → 返回普通用户登录。

后台框架

  • 左侧导航 216 px,固定在视口。
  • 顶部 52 px,显示页面标题、系统总体状态、管理员账号菜单。
  • 主内容区优先使用表格和无框分区。
  • critical/full/unavailable 容量条固定在主内容顶部。
  • 服务 degraded 可聚合为顶部“有异常”入口,但详细影响仍在对应页面。
  • 后台不显示创作、项目和编辑器入口。
  • 后台身份域不能把当前 super_admin 会话切换为普通用户。若同一自然人另有独立普通账号,必须退出后台并从普通用户登录入口进入普通端;普通账号与 super_admin 仍是独立身份,不能原地提升或共用会话。

后台总览

总览是运营状态摘要,不做营销式仪表盘。使用一列关键状态带和两列紧凑数据区:

  • 当前普通用户数与名额。
  • queued / running 任务。
  • 上游成本核对待人工核对数量和最早等待时间;该项来自 upstream_cost_reconciliation = pending_manual_review,不作为 GenerationJob 状态或点数状态显示。
  • 三模型配置默认、运行时可用数量和当前推荐。
  • LocalDataRoot 容量。
  • Resend、高德、AI 网关、Worker、素材根状态。
  • 最近后台操作。
  • 需要处理的贴纸清理任务。

每个摘要都链接到唯一负责页面。空状态代表“当前无待处理项”,不能与加载失败混淆。

用户管理

布局

  • 搜索与账号状态筛选。
  • 用户表:脱敏邮箱、创作署名、社交 ID、状态、点数、注册时间、最近活动。
  • 行动作:查看、停用 / 恢复、调整点数。

用户详情抽屉

  • 账号资料。
  • 项目与任务计数,不直接显示私有图片。
  • 点数摘要与最近流水。
  • 管理操作历史。

调整点数弹层要求:

  • 正负方向明确。
  • 数值、原因必填。
  • 提交前显示调整前后余额。
  • 处理中禁止重复提交。
  • 成功后更新余额和审计摘要。

普通后台查看不自动打开完整提示词或私有图片。需要私有内容时只能进入受保护的生成记录流程。

邀请码

页面含邀请统计、筛选和表格:

  • 邀请码脱敏显示。
  • 状态。
  • 创建时间、过期时间。
  • 使用账号和使用时间。
  • 创建人。

创建弹层只显示 PRD 允许字段。复制邀请码为低风险 Toast;禁用、过期或已用状态不能复制成“可用”。名额已满时创建或使用相关动作按后端规则禁用并说明。

模型

模型列表

每个模型一行,分别显示:

  • 模型 ID 与显示名。
  • configured enabled。
  • configured default。
  • recommendation_priority。
  • contract_validation_status。
  • runtime availability 及 reason、checked_at。
  • 当前是否为 recommended_model_id。
  • 成本、比例和参考图能力摘要。
  • config_version。

“默认”“推荐”“运行时可用”必须是三个独立列,不用一个徽标覆盖。

完整配置集合编辑

模型配置以完整集合弹层或页面编辑,不提供逐行立即保存。顶部显示 config_set_version。

规则:

  • 始终恰好一个已启用默认模型。
  • recommendation_priority 为唯一正整数,不能重复。
  • 停用非默认模型可直接纳入候选集合。
  • 停用当前默认模型时,同一操作必须先指定另一个已启用、合法的默认模型。
  • 保存以完整配置集合原子提交;任何字段失败整次不写入。
  • 保存时版本冲突映射 MODEL_CONFIG_VERSION_CONFLICT,用户刷新最新集合后重新编辑。

固定错误动作:

message_key 界面动作
MODEL_DEFAULT_REPLACEMENT_REQUIRED 聚焦“替代默认模型”,不允许提交
MODEL_DEFAULT_REPLACEMENT_INVALID 标出替代模型不可作为默认的原因
MODEL_RECOMMENDATION_PRIORITY_INVALID 聚焦首个非正整数或缺失优先级
MODEL_RECOMMENDATION_PRIORITY_CONFLICT 同时标出重复优先级行
MODEL_CONFIG_VERSION_CONFLICT 整页阻断保存,提供刷新最新配置

外部服务临时异常只更新运行时可用显示,不自动修改 enabled、is_default 或 recommendation_priority。恢复后 recommended_model_id 可重新派生,但界面不把结果写回配置。

素材

素材页分为:

  • 普通贴纸。
  • 素材版本与发布。
  • 历史文件清理。

普通贴纸

表格或缩略网格支持 part、状态、来源和稳定 ID 筛选。管理员上传流程:

  • 选择 PNG / WebP。
  • 填写稳定 ID、既有 part、顺序、启停和可选内部名称。
  • 上传前显示原图将写入 LocalDataRoot,缩略图由 Dada 生成。
  • 原图和缩略图都计入 managed_content_bytes。
  • 只读规范素材库明确显示“不计入本机 5 GB 内容额度”。

storage full / unavailable 时,选择文件和提交上传均禁用,缩略图生成不启动。已有素材仍可查看和按规则下架。

下架只阻止新添加;已有项目引用保持可渲染。页面不能提供“下架并立即删除文件”的组合动作。

素材版本与发布

  • 版本表显示稳定 ID、版本、状态、白名单范围、引用计数和发布时间。
  • passed、internal_preview 与公开可见性分列展示。
  • 发布、撤回和启停使用后端合法状态;UI 不创建额外“半发布”状态。
  • 发布失败保留候选配置并显示具体 message_key。
  • 只读素材根校验失败时暂停依赖动作,提供重新配置指引或诊断入口,不自动复制素材。

历史贴纸文件清理

清理是独立流程,不能藏在下架动作中。

阶段 页面表达 允许动作 容量显示
候选查询 列出历史原图、缩略图、预计字节和引用摘要 选择候选、刷新 不变
确认 显示文件数量、总字节、不可恢复说明 确认并提交、取消 不变
引用复核冲突 整批拒绝,列出引用类型与对象 ID 的安全摘要 打开引用对象、刷新候选 不变
已排队 显示 cleanup job 和排队时间 查看任务 不变
物理清理中 显示处理进度,不允许重复提交 查看任务 不变
物理清理失败 显示已处理 / 未处理摘要和重试条件 按后端结果重试或诊断 重新计量前不乐观减少
重新计量 显示“正在重新计量本机内容” 等待 使用旧值并标注
完成 显示实际释放与新容量状态 返回列表 以后端新计量为准

固定错误动作:

message_key 界面动作
ASSET_HISTORY_REFERENCE_CONFLICT 阻断整批清理,展示安全引用摘要
ASSET_CLEANUP_CANDIDATE_STALE 放弃旧候选,要求重新查询与确认
STORAGE_CAPACITY_EXCEEDED 阻断会新增受管二进制的动作,打开存储管理

每个阶段在后台操作审计中有记录。无引用只是候选条件,不代表系统可自动清理;必须由 super_admin 显式确认。

内部预览

页面管理:

  • 预览批次。
  • 批次内素材版本。
  • 授权普通用户账号。
  • 生效时间与状态。

授权对象仍是普通用户账号。界面不得创建“内部预览管理员”或单独角色。普通用户端仅在已授权批次范围内多显示素材,并在缩略项上加“预览”标识;不出现管理入口。

取消授权后,用户不再能新添加预览素材;已有项目引用按上游版本规则处理。后台变更必须显示影响范围并写入后台操作审计。

生成记录与私有内容

默认列表

生成记录表默认显示:

  • 任务 ID。
  • 脱敏账号。
  • 模型。
  • 比例。
  • 状态。
  • 上游成本核对状态,与任务状态分列;pending_manual_review 显示为“待人工核对”。
  • 点数结算状态。
  • 创建与完成时间。
  • 错误类别。

默认隐藏:

  • 完整提示词。
  • 参考图。
  • 生成图片。
  • 其他私有正文。

列表筛选和普通详情摘要不触发私有内容访问。

私有内容告知

管理员首次进入私有内容区域时,后端按 super_admin 身份与当前告知版本校验。未确认时显示阻断弹层:

  • 标题“查看私有内容前请确认”。
  • 告知版本和生效时间。
  • 可查看范围、自动审计、最小化查看和禁止外传说明。
  • “确认并进入”主按钮。
  • “返回生成记录”次按钮。

确认成功后由后端持久记录。相同管理员、相同版本不因新标签页、重启、重登或换浏览器再次提示;告知版本升级后重新提示。前端 session 或 localStorage 不能作为确认权威。

若后端返回 PRIVATE_CONTENT_NOTICE_ACK_REQUIRED,立即退出私有区域并打开告知弹层。

逐次访问

告知确认不替代逐次访问审计。每个完整提示词、参考图或生成图片入口统一显示:

打开并记录审计

动作流程:

  • 入口附近只显示对象类型、自动审计提示和最小化查看说明;不要求填写原因,也不增加逐次确认。
  • 用户点击。
  • 后端先写 PrivateContentAccessLog。
  • 审计成功后返回内容。
  • 审计失败则不打开内容。

图片默认使用低信息占位,不在 hover、列表预取、键盘聚焦或浏览器缓存预览时自动加载。完整提示词不进入页面初始 HTML。关闭内容后回到安全摘要,页面不把正文留在其他列表行。

服务与存储

页面分为五个无框区段:

  • Resend。
  • 高德。
  • AI 网关。
  • Worker / API。
  • LocalDataRoot 容量。

服务区段

每个服务显示:

  • configured / paused 等后台允许状态。
  • 最近健康检查时间。
  • 影响范围。
  • 当前错误安全摘要。
  • 允许的暂停、恢复或重新检查动作。

密钥只显示是否已配置和安全引用版本,不显示值。上游响应脱敏,不显示完整请求正文。

AI 网关按模型级、账户级或 unknown 影响展示。任何临时停用都只影响 runtime availability;页面显式提醒“不修改配置默认与推荐优先级”。管理员确认真实余额恢复后,按后端允许动作恢复运行时状态并审计。

LocalDataRoot

显示:

  • storage_status。
  • managed_content_bytes / 5 GB。
  • 80% 和 90% 阈值刻度。
  • last_measured_at。
  • 受影响动作清单。
  • 项目清理与历史贴纸清理入口。
  • 重新计量状态。

不显示绝对路径;只显示“当前 Windows 用户的 Dada 本机数据目录”等逻辑说明。只读规范素材库容量单独显示为参考信息,并标注“不计入 5 GB”。

full / unavailable 时,页面顶部和该区段同时显示阻断原因。恢复按钮只有在后端允许且已完成物理清理、可写检查和重新计量后出现;前端不能手工把状态改成 active。

审计

审计拆成两个同级标签,不混在一张表:

  • 后台操作审计。
  • 私有内容访问审计。

后台操作审计

覆盖用户状态、点数、邀请码、模型完整配置集合、运行时恢复、素材发布、贴纸清理各阶段、内部预览、服务操作等。列:

  • 时间。
  • 管理员。
  • 操作类型。
  • 对象安全摘要。
  • 结果。
  • request / operation ID。

私有内容访问审计

列:

  • 时间。
  • 管理员。
  • 被查看任务或项目的安全目标标识。
  • 查看内容类型。
  • expires_at。

两类表均不显示被访问的完整提示词、图片或密钥。180 天内不可编辑或删除;UI 不提供行内修改、批量删除或清空审计按钮。

加载失败时保留上次结果并标注时间;筛选导出若上游未定义则不提供。搜索只针对允许的标识与摘要,不对私有正文建前端搜索。

Windows 辅助系统界面

辅助界面属于产品支持面,不属于运营后台或部署 CLI。

托盘菜单

状态图标和 tooltip 同时表达:

  • 正常运行。
  • 启动中。
  • API degraded。
  • Worker degraded。
  • 存储 full / unavailable。
  • 启动失败。

菜单顺序:

  • 打开 Dada。
  • 运行状态。
  • 打开诊断。
  • 重新启动服务,仅在 Supervisor 允许时显示。
  • 退出 Dada。

退出时按工程约束执行优雅关闭。托盘不显示账号私有内容、提示词或完整错误堆栈。

启动中

小型 480 px 系统窗口:

  • DADA 字标。
  • “正在启动本机服务”。
  • API、Worker、数据目录三个步骤状态。
  • “打开诊断”仅在超过正常等待或发生异常时出现。
  • 关闭窗口不等于退出服务;使用明确最小化到托盘行为。

启动失败

显示稳定标题、发生时间、安全错误摘要和 correlation ID。允许:

  • 重试启动。
  • 打开诊断。
  • 退出 Dada。

不显示密钥、绝对路径、私有正文或完整堆栈。

端口占用

标题“Dada 无法使用固定端口启动”。说明另一个程序或残留实例占用了端口。允许:

  • 检查是否已有 Dada 正在运行。
  • 重试。
  • 打开诊断。
  • 退出。

不提供在 UI 中修改端口,不暗切随机端口。

API / Worker degraded

当 API 可用但 Worker degraded

  • 托盘显示警告。
  • 浏览器可进入项目、编辑器和已有内容下载。
  • 生成区显示服务异常并禁用受影响动作。
  • 诊断页显示 Worker 最近健康检查和有限重启结果。

当 API degraded

  • 浏览器产品页显示全页连接状态,不继续展示可编辑旧数据。
  • 提供重试连接和打开诊断。
  • 托盘保持可操作。

诊断

诊断使用只读窗口或本地支持页,包含:

  • 发布版本、支持的 Chrome / Edge major。
  • API / Worker / Supervisor 状态与最近检查时间。
  • storage_status、容量比例和 last_measured_at。
  • 只读素材根校验状态。
  • 固定端口状态。
  • 最近有限数量的脱敏错误事件。
  • correlation ID。
  • “复制脱敏诊断”动作。

复制内容必须经过同一脱敏契约,不含:

  • 密钥或安全配置值。
  • Windows 用户名和绝对路径。
  • 邮箱全值。
  • 提示词、参考图或生成图片。
  • 原始上游请求 / 响应正文。

焦点与键盘规范

全局

  • 每页第一个 Tab 目标为“跳到主要内容”。
  • 键盘焦点使用 2 px Focus 蓝外环和 2 px 间隔,在黄色、白色和灰色背景上均清晰。
  • 页面导航顺序与视觉顺序一致,不使用正 tabindex。
  • 图标按钮提供 aria-label;状态图标提供可读文字。
  • Toast 不是焦点目标;其中如有动作,动作进入正常焦点顺序。
  • 列表和表格不把整行及内部所有控件同时设为重复焦点。

编辑器

焦点区域顺序:

  • 跳到主要内容。
  • 顶部工具栏。
  • 左栏标签与素材。
  • 画布。
  • 右栏属性。
  • 底部状态。

画布获得焦点后,方向键执行已定义的对象微移;Esc 退出当前模式或选择;Delete 删除当前选中对象并保留撤销能力。所有快捷键必须能通过可见菜单完成,不在页面中放“使用说明”式常驻文字。

异步状态

  • saving、queued、running、重新计量使用 polite live region,仅在状态变化时朗读。
  • 保存失败、冲突、浏览器阻断、容量 full / unavailable 使用 assertive live region。
  • 进度未知时不用虚假百分比,显示不定进度和开始时间。

文案与 message_key 绑定

以下文案固定,不得改写:

场景 固定文案
本机测试数据 测试数据仅保存在本机,不自动备份,也不会迁移到正式系统。
私有内容入口 打开并记录审计

稳定 message_key 至少覆盖以下 UI 动作:

code / message_key 展示位置 UI 动作
BROWSER_UNSUPPORTED / browser.unsupported 浏览器引导 硬阻断,无继续入口
MODEL_CONFIG_VERSION_CONFLICT 模型配置 刷新完整配置集合
MODEL_DEFAULT_REPLACEMENT_REQUIRED 模型配置 要求同一操作选择替代默认
MODEL_DEFAULT_REPLACEMENT_INVALID 模型配置 修正替代默认
MODEL_RECOMMENDATION_PRIORITY_INVALID 模型配置 修正优先级
MODEL_RECOMMENDATION_PRIORITY_CONFLICT 模型配置 修正重复优先级
PRIVATE_CONTENT_NOTICE_ACK_REQUIRED 私有内容区域 退出内容并要求确认当前版本告知
ASSET_HISTORY_REFERENCE_CONFLICT 贴纸清理 阻断整批清理
ASSET_CLEANUP_CANDIDATE_STALE 贴纸清理 重新查询并确认候选
STORAGE_CAPACITY_EXCEEDED 所有受管二进制写入 阻断写入并打开存储管理

后端返回未知 message_key 时,使用安全兜底:

  • 标题“操作未完成”。
  • 显示 correlation ID。
  • 提供重试、返回或诊断中由接口允许的动作。
  • 不把未知错误映射成成功、点数已释放或可继续覆盖。

关键流程

普通用户注册

邀请码与邮箱完整 → 点击获取验证码 → 后端校验邀请码和名额 → 成功发码 → 展开验证码与资料 → 阅读并同意告知 → 最终注册复核 → 进入创作。

任何前置失败都不展开第二阶段。最终复核仍由后端完成,前端展开状态不代表邀请码已占用或注册必然成功。

新建创作

进入创作 → 读取模型列表与 recommended_model_id → 首次预选推荐模型 → 输入提示词与比例 → 可选参考图 → 确认模型配置版本和点数 → 提交 → 进入 queued / running 任务 → 成功进入项目,失败按错误动作返回输入。

模型在提交前失效时保留旧选择、阻断提交;用户主动改选并重新确认后才能继续。

编辑与导出

打开项目 → 加载画布和素材版本 → 编辑形成 dirty → 保存进入 saving → saved 或 failed / conflicted → 打开导出 → 如有未提交修改则明确确认 → 同一次客户端合成用于下载和后端最新成品保存 → 分别反馈下载和持久化结果。

默认模型替换

进入模型配置 → 编辑完整集合 → 尝试停用当前默认 → 必须选择新的已启用合法默认 → 校验唯一正整数 recommendation_priority → 提交带 config_set_version 的完整集合 → 原子成功或整次失败。

外部临时不可用不走此流程,也不修改配置集合。

私有内容访问

进入生成记录 → 默认只看安全摘要 → 打开私有区域 → 后端检查管理员身份与告知版本 → 必要时确认告知 → 点击具体对象“打开并记录审计” → 后端先写逐次访问审计 → 成功后才返回正文或图片。

历史贴纸清理

查询候选 → 选择与确认 → 后端复核所有有效引用 → 有引用整批拒绝 / 无引用创建清理任务 → 排队 → 物理清理 → 重新计量 → 更新容量状态 → 展示真实释放结果。

综合状态矩阵

页面 / 区域 正常 加载 失败 禁用 冲突 容量
登录 / 注册 可发码与提交 字段初始空 发码 / 登录中 Resend、验证码、邀请错误 前置字段或告知未完成 不适用 非存储相关
创作工作台 可生成 无项目艺术带 模型 / 任务加载 服务、参考图、生成失败 模型、点数、单任务等前置不满足 模型配置变化需重确认 critical 提示;full / unavailable 阻断
当前任务 状态与结果 无活动任务 queued / running failed / rejected 按稳定错误动作 不允许第二任务 不适用 storage 错误按任务结果显示
项目列表 active 项目 无项目或筛选空 卡片骨架 保留旧列表重试 20 项目上限 state_version 刷新 删除后重计量,不乐观减少
编辑器 三栏可编辑 无成功图不能进入正常编辑 画布 / 素材加载 保存失败或素材失败 50 元素等上限 旧页只读、一次导出、刷新 full 可按规则编辑;unavailable 保存失败
导出 下载并保存 不适用 合成 / 持久化中 下载与后端保存分别反馈 无画布或冲突次数用尽 冲突页只本地导出 后端失败不影响已下载文件
后台表格 数据与动作 无记录 稳定行骨架 保留旧数据 权限、状态前置 配置 CAS 冲突 顶部持续状态条
素材上传 上传并生成缩略 无上传素材 上传 / 处理 文件或编译失败 类型、状态、权限 稳定 ID / 版本冲突 full / unavailable 阻断
私有内容 告知已确认且逐次审计 无记录 审计写入中 审计失败不打开 未确认当前版本 版本升级重新确认 不适用
贴纸清理 候选到完成 无可清理文件 排队 / 清理 / 重计量 失败按任务结果 无选择或无权限 引用或候选过期 完成重计量后更新
辅助系统 正常托盘 不适用 启动中 启动失败 不允许的重启动作隐藏 端口占用 full / unavailable 告警

AC 界面追踪

AC 主要界面落点 必验 UI 行为
AC-24 浏览器不受支持引导、产品路由门禁、诊断 非支持品牌 / major / 识别失败均硬阻断,无继续入口
AC-25 私有内容告知、逐次访问、私有内容访问审计 身份+版本持久确认;升版重提示;每次打开独立审计
AC-30 模型完整配置集合、创作模型选择 唯一默认、优先级、原子替换、运行时推荐分层
AC-31 普通贴纸上传、历史文件清理、容量条 原图 / 缩略图计量;full / unavailable 阻断;显式清理
AC-35 项目详情、编辑器保存、导出 项目与成品保存失败动作清晰,不假成功
AC-36 P0-A 子集 编辑器冲突 同机多标签旧页只读、一次本地导出、刷新最新版本
AC-50 后台操作审计、私有内容访问审计 两类审计分离;清理全阶段有记录;正文不进入审计列表
AC-51 模型运行时状态、服务与存储、当前任务 临时不可用不回写默认 / 启停 / 优先级;推荐重新派生
AC-55 全局容量条、存储页、上传、生成、导出、清理 80% / 90% / 等于 5 GB / 超限 / unavailable 动作一致
AC-56 本机数据提示、设置、诊断、导出 无备份、不迁移持续可见;主动下载保留在下载目录

明确不做

本阶段不设计或暗示以下能力:

  • 手机、平板或移动端布局。
  • 远程访问、局域网访问、其他设备访问。
  • 跨设备同步、账号云端同步、云备份。
  • P0-B 公司系统、正式账号合并或数据迁移。
  • 可编辑项目归档、项目包导入导出。
  • 部署人员 CLI 或端口配置 UI。
  • super_admin 普通创作入口。
  • 内部预览独立角色或后台权限。
  • 图层面板、隐藏、锁定、编组。
  • 自动清理历史上传贴纸文件。
  • 模型失效后的静默替换。
  • 在浏览器不支持页继续进入产品。
  • 对只读规范素材库计入 managed_content_bytes。
  • 高保真视觉稿、艺术带最终图片和前端实现。

1080p 验收清单

高保真与实现阶段必须在真实 Windows 当前支持 Chrome / Edge 上逐页检查:

  • 1920 × 1080 下顶部导航、容量条、页面内容和固定本机提示不重叠。
  • 登录注册第二阶段完整展开后,主动作可通过滚动到达,艺术带不挤压表单。
  • 编辑器三栏、顶部保存状态和底部状态行不遮挡画布。
  • 最长中文状态、模型 ID、项目名和 message_key 映射不撑破控件。
  • 表格横向内容有明确滚动与固定关键列,不产生不可见行动作。
  • 弹层在可用视口内,标题与底部动作固定,正文可滚动。
  • 当前任务、容量条和服务异常同时出现时仍保持清晰层级。
  • 键盘可到达全部动作,弹层焦点不会逃逸,关闭后焦点正确返回。
  • 保存 failed / conflicted、storage full / unavailable、模型失效时没有隐藏可写入口。
  • 图片骨架使用稳定宽高比,加载、错误和实际图片切换不引起布局跳动。
  • 200% 浏览器缩放下不出现文字覆盖、不可关闭弹层或不可达主动作;允许页面滚动,不缩小字体规避问题。
  • Chrome 与 Edge 的焦点、下载和文件选择行为均按同一流程验收。

文档确认后的下一阶段

本稿确认后再进入低保真画布文件或可交互原型制作,并以本稿为页面与状态依据。高保真阶段补充原创机能风艺术带、真实素材缩略和像素级视觉 QA,但不得借视觉深化改变本稿绑定的产品状态、权限、错误动作、固定文案、API 语义或 AC。