Commit Graph

15 Commits

Author SHA1 Message Date
Script Generator
1cd595c42e feat(版本详情): 完善流程日志与需求覆盖 2026-06-30 11:00:07 +08:00
Script Generator
0f64a17d44 feat(版本详情): 接入计划时间与日期选择 2026-06-29 14:18:58 +08:00
Script Generator
4dcdad50c3 feat(产品方案): 优化计划卡片展示和排序 2026-06-26 14:05:01 +08:00
Script Generator
56e0fe562d feat(ai): 优化拆解重跑与结果展示 2026-06-26 11:01:11 +08:00
Script Generator
5adc7759ad feat(平台): 补齐服务端持久化和AI拆解契约 2026-06-25 15:21:32 +08:00
Script Generator
c2f2fed82c feat: 加班/版本/项目调整 + 角色权限设计
加班记录:
- 加班人默认回显当前用户且不可改
- 列表加创建日期列
- 移除编辑功能(创建即提交,仅可删除)
- 提交时校验结束>开始

版本列表:
- 移除顶部 9 个状态 tab + 表格状态列
- 仅保留搜索、项目、优先级筛选

项目列表:
- 行内显示进度未达 100% 的版本(与版本页同源算法)
- 新增 lib/version-progress.ts 抽出公共进度计算

角色权限:
- RoleItem 加 permissions 字段
- 新建 lib/permissions.ts: 14 组 37 个权限点 + 默认 5 角色映射 + hasPermission
- 角色表单内嵌权限矩阵(主模块 4 件套 + Tab 二档 + Bug Tab 4 档)+ 全选/反选/仅查看快捷
- 新建 components/auth/Guard.tsx: RouteGuard + PermissionGuard + useHasPermission + AccessDenied
- Sidebar 菜单按 view 权限过滤
- 7 个主路由(products/projects/versions/requirements/overtime/admin/members/roles)包 RouteGuard
- 版本详情 Tab 按 view 权限过滤,自动跳转到第一个有权限的 Tab
- 默认未登录/无角色按只读最严格
- 超管 role-admin: ['*'] 通配符,permissions 不可改

通用:
- 新建 components/FieldError.tsx 统一表单错误文案
- PlanTab 提交时校验结束>开始

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-16 19:15:28 +08:00
Script Generator
4ac0dab4c5 fix: 时间显示统一使用本地时区(修复UTC显示问题)
之前 ISO 时间戳直接 slice(0, 16).replace('T', ' ') 显示 UTC 时间
(北京时间晚 8 小时),现统一用 formatDateTime 转本地时区。

新增 lib/format.ts:
- formatDateTime(iso) → YYYY-MM-DD HH:mm(本地时区)
- formatDate(iso) → YYYY-MM-DD(本地时区)
- formatDateTimeShort(iso) → MM-DD HH:mm(本地时区)

替换文件:
- versions/[id]/page.tsx (实际开始/截止)
- workspace/page.tsx (计划任务时间)
- BugDetailDrawer.tsx (基本信息+操作日志)
- TestCaseDetailDrawer.tsx (执行时间)
- DevTaskDetailDrawer.tsx (开始/提测时间)
- PlanDetailDrawer.tsx (计划/实际/完成时间)
- PlanTab.tsx (计划任务列表时间)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-16 14:15:20 +08:00
Script Generator
700c8a9aba feat: 计划转交功能 + 关联需求增强(描述/变更/类型/日期)
一、调研/产品方案/UI设计 - 转交功能:
- 未开始/进行中状态可转交给其他参与人员
- 转交按钮打开内联选择器,从 version.members 选人
- 确认后更新 plan.owner

二、关联需求表格增强:
- 描述列:超出宽度省略号,hover 显示完整 title 属性
- 需求类型列:原始需求(灰色)/ 变更需求(橙色)
- 变更原因列:显示变更原因标签
- 添加日期列:显示 createdAt

三、需求变更功能:
- 新增"需求变更"按钮(橙色边框)
- 变更表单:变更人员(从参与人员选)、变更原因(6种)、
  需求概述、需求详细
- 变更原因选项:需求理解偏差导致返工、反馈导致返工、
  实现难度超预期、上游交付延误、范围蔓延、其他
- 创建后自动关联到当前版本,标记为变更需求

四、数据模型扩展(lib/requirement.ts):
- 新增 reqType: 'original' | 'change'
- 新增 changeReason: ChangeReason
- 新增 changeBy: string
- 导出 CHANGE_REASON_LABEL 常量

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-15 16:21:14 +08:00
Script Generator
24fb392017 feat: 计划时间改为年月日时分 + 到期自动开始 + 耗时统计同步
1. 日期选择改为 datetime-local(年月日时分):
   - 计划开始时间/截止时间均精确到分钟
   - 展示时显示完整时间而非仅日期

2. 到期自动开始逻辑:
   - 当前时间 >= plan.startTime 且 status=pending → 自动视为开始
   - 自动触发 store 更新 status=in_progress + actualStartAt
   - 用户仍可在计划开始前手动点击"开始"按钮
   - 按钮改为"提前开始",已到期的不再显示按钮

3. 耗时计算统一用实际时间:
   - 耗时 = actualStartAt 到 completedAt(或当前时间)
   - 自动开始的 plan 使用 startTime 作为 effectiveStartAt
   - 概览总耗时/开始日期计算也同步纳入自动开始的 plan

4. checkbox 与自动开始联动:
   - 自动开始后 checkbox 可交互(不需要手动点开始)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-15 15:53:41 +08:00
Script Generator
2d3f56b00c fix: 胶囊进度按子任务加权 + 调研任务清单必填+预设选项
1. 胶囊进度计算改为子任务加权:
   - 分子 = 所有plan中已完成的子任务数
   - 分母 = 所有plan的子任务总数
   - completed的plan视为其子任务全部完成
   - 没有子任务的plan按1项计算(不会导致分母为0)
   - 例:4个completed(共8子任务) + 1个pending(2子任务)
         = 8/(8+2) = 80%

2. 调研任务清单必须至少1项:
   - handleSubmit 加校验:tasks.length === 0 时 return
   - 红色提示:"请至少添加一项任务"

3. 预设可选任务选项(空列表时显示):
   - 竞品分析、用户访谈、数据调研
   - 技术可行性分析、市场调研、需求分析
   - 点击即添加,也可自定义输入

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-15 15:39:38 +08:00
Script Generator
5bbcf02962 fix: 计划任务勾选逻辑 + 胶囊进度计算修正
1. 必须点击"开始"后才能勾选任务:
   - 调研/产品方案/UI设计的 checkbox 加 disabled 判断
   - plan.status !== 'in_progress' 时不可交互

2. 调研勾选改为二态(与产品/UI一致):
   - 去掉三态循环(pending→in_progress→completed)
   - 改为 toggle:未完成 ↔ 已完成
   - 显示文字也简化为"已完成"/"未完成"

3. 胶囊进度百分比计算修正:
   - 旧逻辑:所有子任务合并计算(新建空任务导致分母为0返回0%)
   - 新逻辑:以 plan 为单位加权计算
     - completed 的 plan = 权重 1
     - in_progress 的 plan = 子任务完成率
     - pending 的 plan = 权重 0
   - 公式:sum(weights) / plan_count * 100
   - 新建一个 pending 的 plan 不会把已完成的 100% 打回 0%

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-15 15:31:21 +08:00
Script Generator
feba142ee9 fix: 调研/产品/UI 改为手动点击"开始"触发计时
去掉"到了计划日期自动变进行中"的逻辑,改为用户手动点击:
- pending 状态显示蓝色"开始"按钮
- 点击后记录 actualStartAt(精确时间戳)
- 进行中才显示"完成"按钮

跟开发/测试逻辑一致:状态由用户主动触发,时间戳准确。

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-12 16:38:03 +08:00
Script Generator
7af9206bec fix: 调研/产品/UI 实际耗时改为精确时间戳显示和计算
- PlanTab 自动进入"进行中"时调用 onUpdate 记录 actualStartAt
- 显示实际开始时间和完成时间(精确到分钟)
- calcPlanDuration 改为用时间差计算小时数(精确到0.5h)
- formatDuration 显示小时而非天数

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-12 16:32:50 +08:00
Script Generator
8bc23fbf3d feat: 计划任务清单+进度联动+与我相关工作台
- 计划新增任务清单:调研支持任务CRUD,进度=完成数/总数
- 产品方案/UI:通过关联需求勾选进度,全部完成提示提交
- 版本胶囊条动态进度:调研/产品方案/UI 阶段独立计算
- 版本状态显示具体阶段名(调研中/产品设计中/UI设计中)
- 计划开始日期≤今天自动进入"进行中",版本状态联动
- 与我相关重写为左右布局:左侧分组导航,右侧任务/需求勾选
- 计划支持超期原因校验(结束日期超版本截止)
- 修复列表overflow裁剪问题、计划耗时当天至少1天

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-11 15:43:09 +08:00
Script Generator
2acc9aeaa9 feat: 版本详情完整功能 + 数据串联 + 登录模块
- 版本详情:关联需求Tab(从需求池添加已采纳需求/移除释放)
- 版本详情:调研/产品方案/UI设计Tab(计划CRUD、完成提交成果、耗时统计)
- 版本详情:超期校验(结束日期超版本截止需填写原因)
- 版本详情:概览统计卡片(加班时长/排名/原因占比)
- 数据串联:产品→项目→版本→需求→加班全链路贯通
- 版本管理:规划中版本可删除,删除释放关联需求
- 数据清理:仅保留翻台宝/值班,需求池10条值班待评审需求
- 修复:列表页overflow裁剪菜单问题(4个页面统一修复)
- 新增:登录模块、AuthGuard、VersionPlan store

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-10 17:07:36 +08:00