# 交互设计 ## 主流程 1. 用户登录,系统用 `/auth/me` 确认身份和权限。 活跃用户在 access token 剩余不超过 30 分钟时静默续约;续约不跳转、不刷新页面,不清空当前任务。 2. 概览页确认后端健康、模型配置和近期运行。 3. 管理员在模型配置页建立 target/judge 配置,可查询模型并执行最小连通性检查。 4. 用户选择 smoke/all 与是否自动裁判,确认后创建运行。客户端自动携带 UUID 幂等键,避免重复提交。 5. 详情页展示探测、执行、裁判和完成阶段,按后端 `poll_after_seconds` 轮询。 6. 运行中可取消;中断后可恢复;局部错误可只重试错误样例;终态后可查看逐条结果、汇总报告、导出 Markdown 详细报告或确认删除。 `cancelled / failed / pending / probing / running` 可确认后“恢复运行”;`completed_with_errors` 且 `error_count > 0` 可确认后“重试错误(N)”。提交期间按钮禁用,成功提示跳过或重试数量;409 会刷新详情以校正操作状态。 7. 逐条结果可按执行状态、仲裁结论筛选,并可按执行 ID 搜索;三项条件组合生效,执行 ID 支持忽略大小写的片段匹配。 8. `completed / completed_with_errors` 的每条结果可确认后单独“重新执行”。提交中仅该按钮显示“提交中…”,受理后该 Run 的全部单条重试按钮锁定并显示目标执行 ID“重新执行中…”,直到 Run 再次进入终态。目标结果会进入跟踪状态并置顶,暂时绕过执行状态、仲裁结论和执行 ID 筛选,用户可手动停止跟踪;原筛选值始终保留。 9. “导出详细报告”位于逐条结果筛选栏,复用当前执行状态和仲裁结论筛选,不占用页头运行控制区;“全部”不传参数,“未仲裁”映射为 `verdict=none`,执行 ID 搜索不参与导出。非终态按钮禁用,导出期间显示加载状态并阻止重复提交,文件名为 `run_{run_id}_results.md`;409 会刷新运行详情。 ## 模型等待交互 - 创建成功后立即进入运行详情,不用一个无信息的全屏 loading 阻塞。 - Steps 显示当前阶段,环形进度和成功/错误/总数提供可量化反馈,当前样例 ID 说明系统仍在前进。 - 文案明确告知“可安全离开”;顶栏在全站显示活跃运行数,返回后会恢复轮询。 - 运行期间每 3 秒同步已落库的逐条结果。运行进入终态时会立即执行最后一次结果同步,再停止轮询,避免错过最后落库的样例。 - 终态是停止常规轮询的唯一条件。网络错误显示可重试状态,不把未知状态误报为失败。 - 恢复或重试成功只表示任务已重新排队;详情立即刷新,并继续严格使用最新 `poll_after_seconds` 轮询,直到 `terminal = true`。 - 单条重跑会短暂删除旧结果;结果列表找不到目标执行 ID 时继续显示“正在等待跟踪结果…”,终态后用相同执行 ID 置顶展示新结果,即使新状态不符合原筛选也不消失。网络错误或 5xx 先刷新 Run 状态,发现已进入执行态时不重复提交。 ## 闭环与破坏性操作 创建、修改、检查、重试等操作都有进行中状态和成功/失败反馈。取消、删除、禁用用户、重置密码等高风险操作要求确认。修改本人密码后所有旧 token 立即失效,前端清理会话并要求使用新密码登录。