# 训练日志详情页双栏改版设计

**日期**：2026-07-10  
**页面**：`frontend/src/views/system/TrainingLogView.vue`  
**视觉基准**：用户选定的第 2 套方案（双栏任务档案型）  
**视觉稿**：`docs/superpowers/specs/assets/training-log-detail-option-2.png`

## 目标

把当前多组带边框 `el-descriptions` 表格改成更易扫描的任务档案页：左侧聚合任务信息与数据集，右侧集中展示运行概况，下方用轻量折叠区呈现训练参数。数据请求、日志刷新、训练曲线和原始日志行为保持不变。

## 选定布局

1. 页面顶部保留任务名与状态，并增加任务类型、创建时间等辅助上下文。
2. 首屏主体使用 `2fr / 0.9fr` 双栏：
   - 左栏依次为“任务信息”和“训练数据集”；
   - 右栏为“运行概况”，集中展示时间、时长、存储、训练方式和训练方法。
3. 数据集名称与描述优先，条数和大小放入同一条浅色指标带。
4. 训练参数与 LoRA 参数使用同一卡片内的两个分组；标签和值采用轻分隔行，不再使用描边表格。
5. 缺失值统一显示“未配置”，输出模型缺失显示“暂未生成”，避免大量孤立的 `-`。

## 视觉规则

- 应用外壳使用 `--app-shell-bg: #f3f5f8`，灰色只作为页面四周的留白背景。
- 每个业务路由统一渲染在 `--app-page-bg: #ffffff` 的白色圆角页面画布中，所有页面内容都基于这层白底布局。
- 页面内部白色内容表面继续使用 `--app-surface-bg: #ffffff`；当路由根节点本身是 `PageCard` 时，移除其额外阴影和外边距，避免白底里再套一张重复大卡片。
- 沿用项目现有 Indigo `#4f46e5`、Slate 灰阶和成功色 `#10b981`。
- 一级卡片使用现有 `PageCard` 和 12px 实际圆角；内部块使用 8px 圆角。
- 仅使用 `#e2e8f0` / `#f1f5f9` 轻分隔，不新增阴影层级和渐变。
- 标题 18px/600，分组标题 16px/600，正文值 14px，辅助标签 12–13px。
- 图标继续使用项目现有 Font Awesome 4，避免引入依赖或扩大本次改造范围。

## 交互与响应式

- 参数折叠头改为原生 `button`，提供 `aria-expanded`、可见焦点和至少 44px 点击高度。
- 宽屏为双栏；`<= 1100px` 改为单栏；参数明细在窄屏下降为单列。
- 保持 5 秒自动刷新、图表、汇总和原始日志逻辑不变。

## 范围

### 修改

- `frontend/src/views/system/TrainingLogView.vue`
- `frontend/src/layouts/MainLayout.vue`
- `frontend/src/styles/index.scss`
- `frontend/package.json`
- `frontend/scripts/regression-training-log-layout.mjs`
- `frontend/scripts/regression-page-surface.mjs`

### 不修改

- API、Pinia、类型定义、路由和 mock 数据。
- 全局 `PageCard.vue`。
- 训练曲线、训练汇总和日志输出的业务逻辑。

## 验收标准

- 首屏不再使用带边框的详情表格表达任务、数据集和训练参数。
- 双栏信息架构与选定视觉稿一致，缺失值文案可读。
- 参数折叠支持鼠标、键盘和辅助技术。
- 1100px 以下无双栏挤压或横向滚动。
- 两个专项回归脚本与 `npx vite build` 通过。
- `npm run type-check` / `npm run build` 使用项目引用模式执行；当前仓库原有的 mock 与微调页面类型错误需如实记录，且本次改动文件不得出现在错误列表中。

## 风险

- 生成视觉稿只覆盖首屏，图表区继续沿用现状；实现以首屏信息架构为高保真目标。
- 项目目录没有 Git 元数据，无法提交设计文档或代码提交；所有变更保持小范围、可直接审阅。
