# 任务计划:测试区版本/模型选择(basic-user 优先) > 2026-03-16 状态补充: > 当前代码已把旧 `latest` 语义替换为 `workspace`。 > 这份文档保留任务脉络,但阅读时请把所有 `latest` 理解为“当前工作区内容”。 ## 目标 在 `/basic/user` 中,让右侧测试区不再读取编辑区 textarea,而是从当前 session 的版本链(`v0..vn`)选择输入,并支持: - 每个结果面板独立选择提示词版本(`workspace / v0 / v1..vn`) - 每个结果面板独立选择测试模型(左右可以不同) 默认对比:`v0` vs `workspace`,对比测试需要并行执行。 ## 当前阶段 Phase 5(验证与交付) ## 阶段与状态 ### Phase 1:需求与现状梳理(已完成) - [x] 与用户确认需求与约束(basic-user first、session-scoped、无草稿选项) - [x] 识别版本链/测试执行的现有数据流与关键文件 - [x] 将关键约束记录到 `findings.md` ### Phase 2:方案设计(已完成) - [x] 设计 session 持久化数据模型:`testPanels.{original,optimized}.{version,modelKey}` - [x] 设计版本解析规则:`workspace` / `v0` / 固定 `vN` - [x] 设计 UI 集成:结果卡片 header 注入选择器(slot) - [x] 编写设计文档:`docs/architecture/test-area-version-model-selection.md` ### Phase 3:实现(basic-user)(已完成) - [x] Session store:新增 `testPanels` 并做旧数据迁移(继承 `selectedTestModelKey`) - [x] 组件扩展:`TestResultSection` 增加 header-extra slots;`TestAreaPanel` 透传 - [x] `BasicUserWorkspace`:加入每面板 version+model 选择器;测试改用解析后的 prompt;compare 并行 - [x] Evaluation:使用所选 prompt/结果进行评估(original/optimized/compare) ### Phase 4:UI/布局优化(已完成) - [x] 解决 header 溢出:允许 header/actions 换行;限制 version/model 选择器宽度 ### Phase 5:验证与交付(进行中) - [x] `pnpm -F @prompt-optimizer/ui lint` - [x] `pnpm -F @prompt-optimizer/ui typecheck` - [x] `pnpm -F @prompt-optimizer/ui test` - [ ](可选)补充 e2e:覆盖 basic-user 的新选择器与并行对比行为 - [ ] 与用户确认是否提交代码变更与文档(`docs/workspace` + `docs/architecture`) ## 关键决策(摘要) - 将 `testPanels` 持久化在 session store 中,保证刷新/重启后选择稳定。 - `version` 使用 `'workspace' | 0 | number` 持久化,能精确表达工作区草稿、原始输入与历史版本。 - 选择器放在每个结果卡 header,A/B 归属更直观;header 已做响应式换行避免溢出。