73 lines
6.2 KiB
Markdown
73 lines
6.2 KiB
Markdown
# 会话状态
|
||
|
||
## 基本信息
|
||
|
||
- **技能**: 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 |
|