用户需求:客户上传 PDF 等资料进行向量化并追加进向量库,且问答可检索。 决策:全局检索融合 / BFF 直连 DeepSeek 生成私有回答 / 两路并行展示(命中才显示) / 「我的资料」管理界面挂文档 TAB 空态。改动仅限本分支,QA 金标树与红线零改动。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
347 lines
20 KiB
Markdown
347 lines
20 KiB
Markdown
# UI_SPEC.md —— 设计令牌与组件规格
|
||
|
||
> 版本 1.0 | 作者 PM | 本文件由 PM 独占写入,所有开发/测试 agent **只读**
|
||
>
|
||
> 唯一权威来源:`/Users/jerry/haiguji/plantai-agent-ui-design/plantai-agent-ui-prototype.html`(1380 行)及其规范性文档 `DESIGN.md`。
|
||
> **实现以本文件的令牌值为准,以 DESIGN.md 的规则为约束。两者冲突时以 DESIGN.md 的规则优先,但像素值以本文件为准。**
|
||
> 前端实现时必须逐字复刻本文件列出的 CSS,不得自行"美化"。
|
||
|
||
---
|
||
|
||
## 1. 设计令牌(`ui/src/styles/tokens.css`)
|
||
|
||
### 1.1 深色主题(默认)`[data-theme="dark"]`
|
||
|
||
```css
|
||
--pa-canvas: #0A0A10; --pa-surface-1: #111119; --pa-surface-2: #161622;
|
||
--pa-surface-3: #1C1C2A; --pa-raised: #202031; --pa-hairline: #23232F;
|
||
--pa-hairline-strong: #33334A; --pa-ink: #F2F3F8; --pa-ink-muted: #A9ADC4;
|
||
--pa-ink-subtle: #6B6F8B; --pa-code-bg: #0D0D16;
|
||
--pa-user-bubble: linear-gradient(135deg, #2A2A3E, #1C1C2A);
|
||
--pa-user-bubble-border: #33334A;
|
||
--pa-glow-opacity: 1; --pa-aurora-opacity: 1;
|
||
--pa-grid-dot: rgba(255,255,255,.035);
|
||
--pa-scrim: rgba(10,10,16,.6);
|
||
```
|
||
|
||
### 1.2 浅色主题 `[data-theme="light"]`
|
||
|
||
```css
|
||
--pa-canvas: #F6F8FC; --pa-surface-1: #FFFFFF; --pa-surface-2: #F0F3FA;
|
||
--pa-surface-3: #E9EDF7; --pa-raised: #FFFFFF; --pa-hairline: #E2E7F2;
|
||
--pa-hairline-strong: #C9D2E8; --pa-ink: #16182A; --pa-ink-muted: #4C5268;
|
||
--pa-ink-subtle: #9AA1B8; --pa-code-bg: #F1F4FB;
|
||
--pa-user-bubble: linear-gradient(135deg, #E8ECFF, #F4FBFF);
|
||
--pa-user-bubble-border: #C9D2E8;
|
||
--pa-glow-opacity: .35; --pa-aurora-opacity: .08;
|
||
--pa-grid-dot: rgba(22,24,42,.05);
|
||
--pa-scrim: rgba(246,248,252,.6);
|
||
```
|
||
|
||
### 1.3 双主题公共
|
||
|
||
```css
|
||
/* 品牌 */
|
||
--pa-g-from: #5E6AD2; --pa-g-to: #00D4FF; --pa-aux: #A78BFA;
|
||
--pa-gradient: linear-gradient(135deg, var(--pa-g-from), var(--pa-g-to));
|
||
/* 语义色(只表状态,双主题通用) */
|
||
--pa-success: #2ED3A0; --pa-warning: #F5B85C; --pa-error: #FF5C7A; --pa-info: #5E9BFF;
|
||
/* 相位五色(只用于流水线卡/相位徽章/底栏状态点) */
|
||
--pa-t-planning: #C0A8DD; --pa-t-execution: #9FBBE0; --pa-t-knowledge: #9FC9A2;
|
||
--pa-t-validation: #DFA88F; --pa-t-done: #C08532;
|
||
/* 字体 */
|
||
--pa-font-ui: 'SF Pro Display','SF Pro Text','PingFang SC','Helvetica Neue','Microsoft YaHei','Noto Sans SC',system-ui,sans-serif;
|
||
--pa-font-mono: 'SF Mono',Menlo,'JetBrains Mono',Consolas,'Liberation Mono',monospace;
|
||
/* 圆角 */
|
||
--pa-r-xs: 4px; --pa-r-sm: 6px; --pa-r-md: 8px; --pa-r-lg: 12px; --pa-r-xl: 16px; --pa-r-pill: 9999px;
|
||
/* 缓动 */
|
||
--pa-ease: cubic-bezier(.4,0,.2,1);
|
||
--pa-ease-out: cubic-bezier(.16,1,.3,1);
|
||
--pa-ease-spring: cubic-bezier(.34,1.56,.64,1);
|
||
/* 壳层尺寸 */
|
||
--topbar-h: 48px; --statusbar-h: 28px;
|
||
```
|
||
|
||
### 1.4 硬编码值(token 之外的合法常量)
|
||
|
||
| 用途 | 值 |
|
||
|---|---|
|
||
| 热图 8 级色板 | `#0D0D16, #1E2A5E, #2B4AA8, #3B5FD0, #5E6AD2, #00A3E8, #00D4FF, #8DF0FF`(本项目图谱热力用途) |
|
||
| 按钮白字 | `#fff` |
|
||
| 辉光预设 | logo 点 `0 0 10px rgba(0,212,255,.7), 0 0 22px rgba(94,106,210,.5)`;按钮悬停 `0 0 24px rgba(0,212,255,.4)`;焦点输入 `0 0 14px~22px rgba(0,212,255,.16~.18)`;建议卡悬停 `0 0 18px rgba(0,212,255,.15)` |
|
||
| 徽章 tint 底 | running `rgba(245,184,92,.12)`、done `rgba(46,211,160,.12)`、error `rgba(255,92,122,.12)` |
|
||
| 相位色 tint | 工具图标 chip 底 `color-mix(in srgb, var(--pa-g-from) 16%, transparent)`,字色 `--pa-g-to` |
|
||
|
||
### 1.5 设计规则(DESIGN.md 约束,违反即缺陷)
|
||
|
||
1. **渐变克制**:渐变只允许出现在——Logo 文字、主按钮、活动会话高亮边、进度条填充、运行状态点、极光背景、焦点描边、表头下划线、chip/pill 激活态。正文与数据**永远是纯 ink 色**。
|
||
2. **层级靠表面阶梯 + 发丝线,不靠阴影**:静态卡片 1px `--pa-hairline` 描边;**glow 只属于状态类元素**(运行脉冲、悬停主按钮、焦点输入),静态卡片禁止发光。
|
||
3. **语义色只表状态**(成功/运行/失败),**相位色只表步骤归属**,两者互不混用。
|
||
4. **mono 只用于代码、终端、文件路径、数字与参数**;叙述性文字一律 font-ui。
|
||
5. **动效有目的**:动 = 状态。无装饰性漂浮弹跳。
|
||
6. **禁外链**:无 Google Fonts、无 CDN(DESIGN.md 硬性禁令,实验室可能离线)。
|
||
7. 状态表达三重编码:颜色 + 图标 + 文字。
|
||
|
||
---
|
||
|
||
## 2. 动画规格(`ui/src/styles/animations.css`)
|
||
|
||
| 动画 | 时长/缓动 | 用途 | 关键帧要点 |
|
||
|---|---|---|---|
|
||
| `pulse` | 2s infinite | running 状态点/徽章 | box-shadow `0 0 0 0 rgba(0,212,255,.5)` → `0 0 0 8px rgba(0,212,255,0)` → 0 |
|
||
| `shimmer` | 1.8s infinite | 运行中卡片扫光、流式进度线 | `background-size:200%`,`background-position` 200%→-200% |
|
||
| `blink` | 1s step-end infinite | 流式光标 | `50% { opacity: 0 }` |
|
||
| `spin` | 1s linear infinite | running 相位 spinner | `rotate(360deg)` |
|
||
| `sweep` | 2.4s infinite | 进度条高光带 | 同 shimmer 方向 |
|
||
| `fade-slide` | .2s `--pa-ease-out` | tab 切换、工具卡展开体 | translateY(6px)→0 + opacity |
|
||
| `msg-in` | .3s `--pa-ease-out` | 新消息入场 | translateY(8px)→0 + opacity |
|
||
| `aurora-drift` | 16s ease-in-out infinite alternate | 背景光斑 | translate(-40px,30px) scale(1.08),blob.b 延迟 -8s |
|
||
| 面板折叠 | .3s `--pa-ease-out` | 左右栏 grid-template-columns | — |
|
||
| 主题图标 | .4s | 切换 rotate 180° | — |
|
||
| hover lift | 200ms | 按钮 -1px、建议卡 -2px | — |
|
||
|
||
**降级**:`@media (prefers-reduced-motion: reduce)` 下 `*` 全部 `animation:none; transition:none`。状态仍由静态符号(✓/●/◌/实心/空心)表达。
|
||
|
||
---
|
||
|
||
## 3. 三栏外壳(Desktop ≥1280px)
|
||
|
||
```
|
||
grid: columns 260px minmax(0,1fr) 380px
|
||
rows var(--topbar-h) minmax(0,1fr) var(--statusbar-h)
|
||
areas "top top top" "side chat bench" "status status status"
|
||
```
|
||
|
||
- `.side-collapsed` → columns `64px minmax(0,1fr) 380px`
|
||
- `.bench-collapsed` → columns `260px minmax(0,1fr) 28px`
|
||
- body `overflow:hidden`,滚动在各栏内部
|
||
- `.aurora-bg` 固定层 z-index:0,pointer-events:none,两个光斑 560/620px + blur(120px) + 48px 点阵(顶部渐隐 mask)
|
||
- 顶栏 `.top-bar`:`color-mix(in srgb, var(--pa-canvas) 88%, transparent)` + `backdrop-filter: blur(14px)` + 底部 hairline
|
||
- 中栏 `.chat-inner` max-width 760px 居中,padding `28px 28px 12px`
|
||
- 作曲器 `.composer-wrap` padding `4px 28px 14px`,`.composer` max-width 760px
|
||
|
||
### 折叠把手
|
||
|
||
- 左栏折叠把手:26×26px 圆角按钮,悬浮在左栏底部(bottom 40px),hairline 描边,chevron 左指;展开后图标方向反转
|
||
- 右栏折叠把手条:28px 宽竖条,内嵌 chevron;折叠时 chevron rotate 180°
|
||
|
||
---
|
||
|
||
## 4. 组件规格(每个组件精确的 CSS 关键值)
|
||
|
||
### 4.1 顶栏与徽章
|
||
|
||
| 组件 | 规格 |
|
||
|---|---|
|
||
| `.logo-dot` | 9px 圆点,渐变底,双辉光 |
|
||
| `.logo-text` | 15px/700/ls .2px,`linear-gradient(90deg, from, to)` + `background-clip:text` |
|
||
| `.icon-btn` | 30×30px r-md,ink-muted → hover ink + surface-2 |
|
||
| `.top-title` | 居中,13.5px/600,ellipsis |
|
||
| `.badge` | pill(r-pill,padding 2px 10px),11px/500/ls .5px,6px dot + 文字;四态见 PRD §2.1,`.running` 的 dot 带 pulse |
|
||
|
||
### 4.2 会话列表
|
||
|
||
| 组件 | 规格 |
|
||
|---|---|
|
||
| `.new-task-btn` | 40px 高,r-md,渐变底,白字 14px/600;hover 辉光 + -1px lift |
|
||
| `.search-box` | 34px 高,surface-2 + hairline;focus-within 渐变描边(double-bg 技巧)+ `0 0 14px rgba(0,212,255,.18)` |
|
||
| `.group-label` | 11px/500/ls .6px,ink-subtle,padding `10px 6px 5px` |
|
||
| `.session-item` | padding 8px 10px,r-md,透明边;hover surface-2;active 时 左 2px 渐变条(`left:-10px`)+ `color-mix(g-to 8%)` 底 + `22%` 描边 |
|
||
| `.status-dot` | 8px;running=`--pa-g-to`+pulse,done=success,error=error,idle=空心 1.5px ink-subtle |
|
||
| 标题 | 13px/500 ellipsis;meta 11px ink-subtle ellipsis |
|
||
|
||
### 4.3 对话区
|
||
|
||
| 组件 | 规格 |
|
||
|---|---|
|
||
| `.empty-state` | 顶部 9vh;hero-dot 46px r-14 渐变底 ✧,双辉光;h1 28px/600/ls-.4px,ink→ink-muted 渐变字;副标题 14px ink-muted |
|
||
| `.suggest-card` | 3 列 grid gap 12px;padding 15px,r-lg;hover -2px lift + 渐变描边 + 青色辉光;icon 16px、name 13.5px/600、desc 12px |
|
||
| `.msg.user .bubble` | 右对齐 max-width 70%,user-bubble 渐变 + border,r-lg,padding 10px 15px,14px |
|
||
| `.msg.assistant` | 无底色;padding-left 14px;左缘 2px 透明竖线 hover 变渐变 |
|
||
| `.msg-head` | 24px 渐变头像 r-8 白 ✦ + 名字 12.5px/600 + 时间 11.5px ink-subtle |
|
||
| `.md-table` | surface-1 + hairline,r-md;thead th 12px/600 surface-3 底 + **2px 渐变下边框**(`border-image: var(--pa-gradient) 1`);数据格 13px,**表头非「说明」的列 mono 12.5px** |
|
||
| `.code-block` | code-bg + hairline r-md,mono 12.5px lh 1.7,pre-wrap,色 ink-muted |
|
||
| `.stream-cursor` | 8×15px 青色块,blink 1s;`.shimmer-line` 3px 高 surface-3 轨道 + 青色扫光 |
|
||
|
||
### 4.4 流水线卡(`pipeline-card`,RAG 域改为「检索流水线」五相位)
|
||
|
||
| 元素 | 规格 |
|
||
|---|---|
|
||
| 卡体 | surface-1 + hairline,r-lg,padding 14px 16px,margin 14px 0 |
|
||
| 头部 | 「⚙ 检索流水线」12.5px/600/ls .3px + 整体语义色徽章 |
|
||
| 步骤 | 每步 padding 7px 0,gap 10px;步骤间左侧 2px hairline 连接线(left 7px) |
|
||
| 状态点 | 16px 圆,done=`--pa-t-done` 底白 ✓;running=对应相位色底 ● + pulse;waiting=surface-3 底 + 1.5px hairline-strong 边 ◌ |
|
||
| 相位名 | 13px,宽 84px 固定 |
|
||
| 描述 | 12px ink-muted,ellipsis |
|
||
| 状态文字 | 12px/600;done 金、running 相位色 + 11px spin 环、waiting ink-subtle 400 |
|
||
|
||
注意:原型的 running 点颜色是执行蓝;RAG 版按 PRD FR-CHAT-009 的相位色表——**当前相位的点与字用该相位的 `--pa-t-*` 色**。
|
||
|
||
### 4.5 阶段卡(原型 `tool-card` 的 RAG 化,见 PRD FR-RETRIEVAL)
|
||
|
||
| 元素 | 规格 |
|
||
|---|---|
|
||
| 卡体 | surface-1 + hairline,r-lg,overflow hidden;running 时叠加 shimmer 扫光层(`rgba(0,212,255,.05)` 斜扫) |
|
||
| 头部 | padding 10px 14px;图标 chip 22px r-7(g-from 16% tint 底,g-to 字色);名称 13.5px/600 ellipsis;状态徽章;mono 耗时 11.5px;chevron 展开 rotate 90° |
|
||
| 展开体 | 顶部 hairline 分隔,padding 11px 14px 13px,fade-slide 入场;`tb-label` 11px/ls .5px;`tb-params` mono 12.5px 青色 code-bg r-sm;`tb-result` 13px 数值 mono success;`tb-log` mono 11.5px lh1.8 code-bg,max-height 130px 滚动,`.log-ok` success / `.log-run` 青色 |
|
||
|
||
### 4.6 作曲器
|
||
|
||
| 元素 | 规格 |
|
||
|---|---|
|
||
| `.composer` | r-xl surface-1 + hairline,padding 12px;focus-within 渐变描边 + `0 0 22px rgba(0,212,255,.16)` |
|
||
| `.mode-pill` | r-pill,padding 4px 12px,12px/500;默认 hairline + ink-muted;`.on` 渐变底白字 + `0 0 12px rgba(0,212,255,.3)` |
|
||
| textarea | 透明无边框 14px/1.6,min-height 46px,max-height 160px 内滚;placeholder ink-subtle |
|
||
| `.send-btn` | r-md,padding 7px 18px,渐变底白字 13px/600;hover 辉光 + -1px;disabled opacity .45 无辉光 |
|
||
|
||
### 4.7 右工作台
|
||
|
||
| 组件 | 规格 |
|
||
|---|---|
|
||
| `.bench-tabs` | padding 10px 14px 0,底部 hairline;tab 13px/500 ink-muted,`.on` 13px/600 ink + **底部 2px 渐变下划线**(fade-slide 入场) |
|
||
| `.bench-body` | padding 14px,滚动;`.tab-pane` fade-slide |
|
||
| `.chip` | r-pill padding 3px 11px,11.5px;`.on` 实心 `#5E6AD2` 底白字 |
|
||
| `.file-tree`(来源列表沿用) | mono 12.5px;条目 padding 6px 8px r-sm;hover surface-2 并显示 `.ft-dl`(opacity 0→1);目录名 g-to 色 600 |
|
||
| `.prog-item` | 名称 13px/600 + mono 百分比(100% 转 success);轨道 6px r-3 surface-3;填充渐变 + `sweep`;`.full` 纯 success 停扫光 |
|
||
| `.preview-block` | surface-1 + hairline r-lg padding 12px;标题 12px/600 |
|
||
|
||
### 4.8 底部状态栏
|
||
|
||
28px 高,surface-1 + 顶部 hairline,padding 0 14px,11.5px ink-subtle。
|
||
左:4 个 `.agent-dot-item`(7px 点 + 名):默认 surface-3 底 + 1.5px hairline-strong 边;`.running` = 相位色 + pulse;`.done` = success;`.error` = error。**RAG 版四个点名为:规划 / 检索 / 证据 / 生成**(对应 PRD FR-CHAT-009 前四相位;完成相位不进底栏)。
|
||
右:`PlantAI RAG v0.1` + mono QA 版本 + mono 会话数。
|
||
|
||
---
|
||
|
||
## 5. 四档响应式(`ui/src/styles/responsive.css`,覆盖 §3)
|
||
|
||
| 档位 | 规则 | 具体行为 |
|
||
|---|---|---|
|
||
| Desktop ≥1280px | 无覆盖 | 完整三栏,见 §3 |
|
||
| Laptop 1024–1279px | `@media (max-width: 1279px) and (min-width: 1024px)` | 左栏强制 `side-collapsed`(64px 轨);右栏列宽 340px |
|
||
| Tablet 768–1023px | `@media (max-width: 1023px) and (min-width: 768px)` | 单栏:`.app-shell` columns `minmax(0,1fr)`;左栏变**左抽屉**(fixed,260px 宽,translateX 滑入 + scrim);右栏变**右抽屉**;顶栏出现汉堡按钮与工作台按钮(工作台按钮带来源数角标);底栏保留 |
|
||
| Mobile <768px | `@media (max-width: 767px)` | 顶栏 = 汉堡 + 标题 + 工作台按钮;工作台为**全屏覆盖层**(顶部 tab 条);底栏隐藏;顶栏显示一枚聚合状态点;aurora 光斑 `--pa-aurora-opacity: 0` |
|
||
|
||
移动端专项(全部实现,见 PRD §12.2):安全区 `env(safe-area-inset-*)`;textarea 16px 字号;`@media (hover: hover)` 包裹全部悬停态;<768px 交互目标 min-height 44px;`100dvh` + `100vh` 回退;`visualViewport` 键盘适配;`md-table` 横向滚动容器 + 边缘渐隐;图谱节点上限 30。
|
||
|
||
抽屉组件(B1 负责):`.drawer-scrim`(fixed inset 0,`--pa-scrim`,fade-in)+ `.drawer`(fixed,宽 300px max,transform 滑入 300ms `--pa-ease-out`)。Esc 或点击 scrim 关闭。焦点进入抽屉时锁定 Tab 焦点在抽屉内,关闭后归还。
|
||
|
||
---
|
||
|
||
## 6. 主题初始化顺序(防止闪白)
|
||
|
||
`index.html` 中 `<html data-theme="dark">` 硬编码;`main.js` 中在 `createApp` **之前**同步执行:
|
||
|
||
```js
|
||
const t = localStorage.getItem('pa-theme');
|
||
if (t === 'light' || t === 'dark') document.documentElement.dataset.theme = t;
|
||
```
|
||
|
||
此后才挂载应用。theme store 仅管理运行时切换。
|
||
|
||
---
|
||
|
||
## 7. 组件类名复用约定
|
||
|
||
B2/B3 组件必须复用 B1 在 `styles/base.css` 与原型中定义的类名,**不得另起炉灶**:`app-shell`、`top-bar`、`logo`、`badge`、`session-panel`、`session-item`、`status-dot`、`chat-panel`、`msg`、`bubble`、`msg-head`、`agent-avatar`、`md-table`、`code-block`、`pipeline-card`、`p-step`、`tool-card`、`stream-wrap`、`stream-text`、`stream-cursor`、`shimmer-line`、`composer`、`mode-pill`、`send-btn`、`bench-panel`、`bench-tabs`、`bench-tab`、`chip`、`ft-item`、`prog-item`、`prog-track`、`prog-fill`、`preview-block`、`status-bar`、`agent-dot-item`、`drawer`、`drawer-scrim`。
|
||
|
||
---
|
||
|
||
## 8. 生信流程编排组件规格(FR-BIO,BioFlow)
|
||
|
||
通用纪律:全部使用现有 `--pa-*` 令牌;新类名集中声明(§8.7);前端逐字复刻本节 CSS 关键值,不得自行美化;深浅主题由令牌自动适配。
|
||
|
||
### 8.1 路径选择卡(`flow-path-card`)
|
||
|
||
| 元素 | 规格 |
|
||
|---|---|
|
||
| 卡体 | surface-1 + hairline,r-lg,padding 14px 16px,margin 14px 0 |
|
||
| 标题 | 「🧬 分析路径选择」12.5px/600/ls .3px |
|
||
| 候选路径行 | 每行 padding 8px 10px,r-md,hover surface-3;行内阶段序列 12px ink-muted,首阶段加粗 ink |
|
||
| 选中态 | 行 border 1.5px `--pa-g-from` + 背景 `color-mix(in srgb, var(--pa-g-from) 8%, transparent)` |
|
||
| 确认按钮 | 「确认此路径」`--pa-gradient` 底白字 12.5px/600,r-md padding 7px 14px;无选中时禁用(opacity .45) |
|
||
|
||
### 8.2 参数表单卡(`flow-form-card`)
|
||
|
||
| 元素 | 规格 |
|
||
|---|---|
|
||
| 卡体 | 同 8.1 |
|
||
| 标题 | 「⚙ XXXX 步骤 · 可调整参数」12.5px/600/ls .3px |
|
||
| 字段行 | label 12px ink-muted 宽 96px 固定;input surface-1 + hairline,r-sm,padding 6px 10px,focus border `--pa-g-from` |
|
||
| 来源标注 | 每字段下方 11px ink-subtle(如「默认值来源:阶段契约文档」) |
|
||
| 继续按钮 | 「继续」`--pa-gradient` 白字 12.5px/600,r-md padding 7px 16px |
|
||
| 自动连续开关 | 「自动连续执行」12px ink-muted + 现有 switch 样式(`mode-pill` 同款开关) |
|
||
|
||
### 8.3 文件引导卡(`flow-file-card`)
|
||
|
||
| 元素 | 规格 |
|
||
|---|---|
|
||
| 卡体 | 同 8.1 |
|
||
| 拖放区 | border 2px dashed `--pa-hairline-strong`,r-lg,padding 24px,居中提示 12px ink-subtle |
|
||
| 拖入态 | border-color `color-mix(in srgb, var(--pa-g-from) 45%, transparent)` + 背景 `color-mix(in srgb, var(--pa-g-from) 8%, transparent)` |
|
||
| 进度条 | 复用 `prog-track`/`prog-fill`(track surface-2 r-pill 高 4px;fill `--pa-gradient`),旁注百分比 11px mono |
|
||
| 路径输入行 | input 同 8.2 + 「登记路径」pane-btn 同款 12px |
|
||
|
||
### 8.4 阶段进度卡(`bioflow-progress-card`)
|
||
|
||
结构/状态点/连接线/相位色**复用 §4.4 pipeline-card 全部令牌**(done=`--pa-t-done` 底白 ✓、running=相位色底 ● + pulse、waiting=surface-3 底 ◌);新增两态与附加区:
|
||
|
||
| 元素 | 规格 |
|
||
|---|---|
|
||
| failed 态 | `--pa-error` 底 ✕,状态文字 error 色 12px/600 |
|
||
| skipped 态 | `--pa-ink-subtle` 底 ◌,状态文字 ink-subtle |
|
||
| 日志尾区 | 仅 running/failed 阶段展开:`--pa-code-bg` 底,mono 11px,padding 8px 10px,max-height 96px 滚动,随 SSE 追加 |
|
||
| 三选一按钮 | 仅 failed:重跑/跳过/改参数重跑,pane-btn 同款 12px,gap 8px |
|
||
| 折叠 | 阶段 >10 自动分组折叠(组头 12px/600 + 展开箭头),默认展开运行中所在组 |
|
||
|
||
### 8.5 存档提示卡(`flow-archive-card`)
|
||
|
||
| 元素 | 规格 |
|
||
|---|---|
|
||
| 卡体 | 同 8.1 |
|
||
| 文案 | 「本次生信任务已完成,是否存档?可按你的要求命名并描述」12.5px |
|
||
| 输入 | 名称输入行同 8.2 input |
|
||
| 按钮 | 「存档」`--pa-gradient` 12.5px/600;「放弃」pane-btn 同款 12px |
|
||
|
||
### 8.6 面板(`biojobs-pane` / `bioarchive-pane`)
|
||
|
||
| 元素 | 规格 |
|
||
|---|---|
|
||
| 面板容器 | 复用 bench 面板容器(§4.7),TAB 走现有 `bench-tab` |
|
||
| 列表项 | 复用 `session-item` 形态:标题 13px + 状态徽章(同 §4.2) |
|
||
| 阶段 DAG | 纵向 2px hairline 连接线(同 §4.4 连接线令牌),节点 8px 圆点按阶段状态取色 |
|
||
| manifest/日志 | 复用 `code-block`(mono 12px,code-bg,滚动) |
|
||
| 操作按钮 | pane-btn 同款(重跑/删除/复用发起) |
|
||
|
||
### 8.7 生信类名复用约定(在 §7 清单上追加)
|
||
|
||
`flow-path-card`、`flow-form-card`、`flow-file-card`、`bioflow-progress-card`、`flow-archive-card`、`biojobs-pane`、`bioarchive-pane`。其余(按钮/输入/进度条/徽章/面板容器)一律复用 §7 既有类名,不得另起炉灶。
|
||
## 9. 私有资料问答组件规格(FR-PRIV)
|
||
|
||
### 9.1 私有资料参考块(`private-doc-block`,对话内)
|
||
|
||
| 元素 | 规格 |
|
||
|---|---|
|
||
| 卡体 | surface-1 + hairline,r-lg,padding 14px 16px,margin 14px 0(同 flow-path-card 卡体) |
|
||
| 标题 | 「📚 私有资料参考」12.5px/600/ls .3px |
|
||
| 短答区 | markdown 渲染(markdown-it + DOMPurify,同 text 块纪律),12.5px/1.65,最大宽 100% |
|
||
| 条目行 | 上 1px hairline 分隔;编号 `[资料n]` 11px mono 相位色 `--pa-t-done` 底白字;资料名 12px ink 超长省略;相关度 11px mono ink-muted |
|
||
| 片段区 | snippet 12px ink-muted,max-height 64px 溢出隐藏 + hover 展开 |
|
||
| 空答态 | answer 为空时仅显示条目列表(不显示空白答区) |
|
||
|
||
### 9.2 我的资料面板(`private-library-pane`,文档 TAB 空态区)
|
||
|
||
| 元素 | 规格 |
|
||
|---|---|
|
||
| 挂载 | DocPane 空态区(`v-if="!docgen.activeArtifact"`)顶部;有活动文档时隐藏 |
|
||
| 标题 | 「📁 我的资料」12.5px/600/ls .3px + 右侧条目计数 11px ink-subtle |
|
||
| 列表项 | 复用 session-item 形态:名称 13px(超长省略)+ 大小/时间 11px ink-muted;hover 显示删除按钮 |
|
||
| 删除按钮 | pane-btn 同款 12px;点击 window.confirm 二次确认后调 DELETE |
|
||
| 空态 | 「尚无上传资料。在对话框拖拽 PDF / DOCX / TXT 上传。」12px ink-subtle |
|
||
| 加载/错误态 | 加载中 11px ink-subtle;加载失败显示重试按钮(pane-btn) |
|
||
|
||
### 9.3 类名复用约定(在 §7 清单上追加)
|
||
|
||
`private-doc-block`、`private-library-pane`。其余(按钮/列表项/分隔线/徽章)一律复用 §7 既有类名。
|
||
|