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

6.2 KiB
Raw Blame History

会话状态

基本信息

  • 技能: 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 的工具站,工具实体区分 webdownload 两种访问方式。
  • 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-关于“无”模式的访客端行为,用户连续回复了 13,当前需要进一步确认最终选择。
  • 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、后台工具服务与种子数据已支持 versionOverrideaccessMode=none,并通过相关 Jest 用例。
  • 2026-04-14 20:40-任务 3 已完成,none 模式 launch 已在服务端返回 409,后台概览已补 noneToolTotal,相关单测与 e2e 已通过。
  • 2026-04-15 09:27-任务 4 已完成,公开站首页与详情页已统一展示 displayVersionnone 模式按“查看详情/无主按钮”行为闭合,公共前端 Vitest 已通过。
  • 2026-04-15 09:49-任务 5 已完成,管理端表单新增展示版本输入,访问方式支持“无”,工具列表新增版本列,概览显示 none 模式统计;新增 4 个管理端组件测试并通过,前端构建通过。

待处理问题

  • 网页工具版本字段的主要使用对象是谁,以及它需要出现在哪些页面或接口里。
  • 版本字段是否仅适用于 web 模式,还是所有工具都应统一维护一个主版本。
  • 版本字段是否参与发布校验、排序、筛选或审计记录。
  • “无”访问模式在访客端的按钮、详情页主操作和可见性规则。
  • 版本字段和“无”模式需要覆盖到哪些后台页面和接口返回。

执行状态

计划信息

  • 计划文档: 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补齐后台工具服务对 versionOverridenone 的支持 已完成 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 列表/详情统一显示 displayVersionnone 模式行为闭合Vitest 通过
任务5补齐后台表单、列表和概览对新字段的 UI 支持 已完成 2026-04-15 09:49 表单/访问方式/列表/概览已支持 versionOverridenone,组件测试与构建通过

遇到的问题

问题 解决方案 解决时间
当前工作分支为 master,执行规范要求先确认是否允许直接在主分支改动 用户已明确确认继续在 master 上执行 19:20
jest 默认 worker 在沙箱中触发 spawn EPERM 改用 npx jest --runInBand 单进程执行测试 19:14
prisma migrate devschema-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