Files
tools-show/design/session-state.md
2026-04-15 13:47:39 +08:00

73 lines
6.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 会话状态
## 基本信息
- **技能**: executing-plans
- **主题**: 网页工具维护版本字段
- **开始时间**: 2026-04-14 18:11
- **最后更新**: 2026-04-15 09:50
## 当前状态
- **阶段**: 阶段 2执行任务
- **上一步**: 已完成任务 5后台表单、列表和概览已补齐 `versionOverride` / `displayVersion` / `none` 模式 UI 支持,并完成前端回归。
- **下一步**: 等待用户验收;如继续扩展,可补管理端更高层级交互测试或继续清理构建体积告警。
## 已确认内容
- 2026-04-14 18:06-项目为 Vue 3 + NestJS + Prisma 的工具站,工具实体区分 `web``download` 两种访问方式。
- 2026-04-14 18:08-下载工具的版本来自 `ToolArtifact.version`,网页工具 `Tool` 本体目前没有独立版本字段。
- 2026-04-14 18:10-前台首页和详情页当前都显示“版本”,但仅下载工具会返回 `latestVersion`,网页工具会显示“暂无版本”。
- 2026-04-14 18:11-后台新增/编辑工具表单当前没有网页工具版本输入项。
- 2026-04-14 18:13-用户确认版本字段采用“后台维护 + 前台展示”方案,需在访客端列表页和详情页展示。
- 2026-04-14 18:15-用户选择混合模式:`web` 工具有独立版本字段,`download` 工具默认取 `latestArtifact.version`,并允许单独覆盖展示版本。
- 2026-04-14 18:15-访问方式需要新增“无”模式,该模式也要支持维护版本。
- 2026-04-14 18:17-关于“无”模式的访客端行为,用户连续回复了 `1``3`,当前需要进一步确认最终选择。
- 2026-04-14 18:18-用户最终确认“无”模式采用详情引导:列表页主按钮为“查看详情”,详情页不提供打开/下载按钮。
- 2026-04-14 18:20-用户确认版本字段仅用于展示,不参与发布校验,现有发布规则保持不变。
- 2026-04-14 18:21-用户确认完成范围为“常规完整”:后台工具列表也显示版本和访问方式 `none`,相关接口统一返回展示版本。
- 2026-04-14 18:24-用户选择方案 2使用 `Tool.versionOverride` 存储覆盖版本,由服务端统一计算 `displayVersion`
- 2026-04-14 18:29-规格文档已写入 `design/specs/2026-04-14-tool-display-version-none-mode-design.md`
- 2026-04-14 18:43-实施计划已写入 `design/plans/2026-04-14-tool-display-version-none-mode-plan.md`,按单一子系统拆为 5 个任务。
- 2026-04-14 18:49-已切换到 `executing-plans` 技能并完成计划审阅;当前分支为 `master`,按执行规范需用户确认后才能继续执行。
- 2026-04-14 19:20-用户确认继续在 `master` 上执行;任务 1 已完成,`ToolsService` 与公开详情 e2e 已验证 `displayVersion`,本地数据库已手工应用 `version_override` 列。
- 2026-04-14 20:10-任务 2 已完成,后台 DTO、后台工具服务与种子数据已支持 `versionOverride``accessMode=none`,并通过相关 Jest 用例。
- 2026-04-14 20:40-任务 3 已完成,`none` 模式 launch 已在服务端返回 `409`,后台概览已补 `noneToolTotal`,相关单测与 e2e 已通过。
- 2026-04-15 09:27-任务 4 已完成,公开站首页与详情页已统一展示 `displayVersion``none` 模式按“查看详情/无主按钮”行为闭合,公共前端 Vitest 已通过。
- 2026-04-15 09:49-任务 5 已完成,管理端表单新增展示版本输入,访问方式支持“无”,工具列表新增版本列,概览显示 `none` 模式统计;新增 4 个管理端组件测试并通过,前端构建通过。
## 待处理问题
- [x] 网页工具版本字段的主要使用对象是谁,以及它需要出现在哪些页面或接口里。
- [x] 版本字段是否仅适用于 `web` 模式,还是所有工具都应统一维护一个主版本。
- [x] 版本字段是否参与发布校验、排序、筛选或审计记录。
- [x] “无”访问模式在访客端的按钮、详情页主操作和可见性规则。
- [x] 版本字段和“无”模式需要覆盖到哪些后台页面和接口返回。
## 执行状态
### 计划信息
- **计划文档**: `design/plans/2026-04-14-tool-display-version-none-mode-plan.md`
- **开始时间**: 2026-04-14 18:49
### 任务进度
| 任务 | 状态 | 完成时间 | 备注 |
|------|------|----------|------|
| 任务1先锁定 Prisma 契约和公开接口版本映射 | 已完成 | 19:20 | `schema-engine` 被沙箱拦截,改为手工 migration SQL + raw SQL 应用列变更 |
| 任务2补齐后台工具服务对 `versionOverride``none` 的支持 | 已完成 | 2026-04-14 20:10 | 后台 DTO/服务/seed 已对齐,并通过 Jest 回归 |
| 任务3封闭 `none` 模式的 launch 语义并补齐概览统计 | 已完成 | 2026-04-14 20:40 | `none` launch 返回 `409`,概览统计补齐,单测与 e2e 已通过 |
| 任务4更新公开站首页与详情页统一消费 `displayVersion` | 已完成 | 2026-04-15 09:27 | 列表/详情统一显示 `displayVersion``none` 模式行为闭合Vitest 通过 |
| 任务5补齐后台表单、列表和概览对新字段的 UI 支持 | 已完成 | 2026-04-15 09:49 | 表单/访问方式/列表/概览已支持 `versionOverride``none`,组件测试与构建通过 |
### 遇到的问题
| 问题 | 解决方案 | 解决时间 |
|------|----------|----------|
| 当前工作分支为 `master`,执行规范要求先确认是否允许直接在主分支改动 | 用户已明确确认继续在 `master` 上执行 | 19:20 |
| `jest` 默认 worker 在沙箱中触发 `spawn EPERM` | 改用 `npx jest --runInBand` 单进程执行测试 | 19:14 |
| `prisma migrate dev``schema-engine` 在沙箱中触发 `spawn EPERM` | 手工创建 migration 文件,并通过 Prisma raw SQL 为本地 SQLite 添加 `version_override` 列 | 19:18 |
| `client` 本地缺少 `vitest` 依赖,`npm run test:run` 无法直接执行 | 在 `client` 目录执行 `npm install --no-save vitest@3.2.4` 后,统一使用 `npx vitest run ...` 执行前端测试 | 2026-04-15 09:00 |
| Element Plus 的 `dialog/table` 在 jsdom 下不稳定渲染测试文本 | 为管理端组件测试增加轻量 stub直接覆盖组件分支逻辑避免把断言绑定到第三方渲染细节 | 2026-04-15 09:46 |