Script Generator
|
168c748835
|
feat(工时): 增加通用工时汇总引擎
|
2026-06-25 13:59:09 +08:00 |
|
Script Generator
|
978bc7aff1
|
docs(workflow): add workflow and effort engine design
|
2026-06-25 13:10:00 +08:00 |
|
Script Generator
|
ab25d7fa93
|
docs(版本模块): 拆分规则引擎实现计划
|
2026-06-25 10:14:33 +08:00 |
|
Script Generator
|
4a567da762
|
docs(版本模块): 规则引擎与任务类型设计
|
2026-06-25 09:52:05 +08:00 |
|
Script Generator
|
d0fd390bd0
|
fix: 创建产品后要刷新才出现 + 刷新后已有产品的项目被清空
根因:
1. createProduct try 路径调 fetchOverview,但 fetchOverview 第 103 行
`if (overview.length > 0) return` 直接 early return,导致新产品没被加进
overview,需刷新才能从 localStorage 重读。
2. fetchOverview 在 cached 已有数据时仍会调 api.get 拉远端,远端 mock
返回简化数据(无 projects)覆盖整个 overview,导致已有产品下的项目消失。
修复(mock 模式核心数据完全本地化):
- createProduct:直接本地新增 + saveLocal,异步尝试远端但不依赖(不再调
fetchOverview)
- fetchOverview:cached 有数据时直接用,不再调远端覆盖;空时才走远端/MOCK 路径
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-06-17 11:23:39 +08:00 |
|
Script Generator
|
cad190d83b
|
feat: 项目模块加删除按钮(仅超管 + 无版本可删)
- useProductStore 加 deleteProject(productId, projectId) action
- ProjectRow 行右侧加三点菜单(MoreHorizontal)+ 下拉项「删除项目」
- 项目下有版本时菜单项 disabled + tooltip「项目下还有 N 个版本,不可删除」
- 仅有 project:delete 权限的角色(默认仅超管)能看到三点 icon
- 点击删除 → confirm → 调 deleteProject
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-06-17 11:11:19 +08:00 |
|
Script Generator
|
53ae3f02a5
|
fix: 新建需求漏传 status 字段导致状态/操作按钮不显示
根因:RequirementModal.handleSubmit 提交时漏传 status,store
createRequirement 也无默认值,落库 status 为 undefined。
page.tsx 的所有操作按钮均按 req.status === '...' 判断,
undefined 不匹配任何分支 → 所有按钮消失;REQ_STATUS_LABEL[undefined]
也是 undefined → 状态列空白。
修复(双兜底,二选一就够,但都改更稳):
- RequirementModal.tsx: handleSubmit 加 status: initial?.status ?? 'pending_review'
- useRequirementStore.ts: createRequirement 加 status: data.status ?? 'pending_review'
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-06-16 20:55:04 +08:00 |
|
Script Generator
|
75519fd4e3
|
fix: 需求池操作矩阵微调 + 来源管理 bug 修复
需求池:
- 已采纳状态去掉「删除」操作(推进后不应直接删除,要走拒绝路径)
来源管理:
- 清空预设 mock 数据(海底捞/西贝/喜茶/奈雪等 17 条),用户自己维护
- 修复新建需求选「新建的来源对象」时显示数字 ID bug:
原因是 RequirementModal 里 <option value={t.id}> 存了 ID,但 mock
和详情页直接读 sourceTarget 当名字展示,导致新建的对象只显示 ID。
改为 <option value={t.name}> 与 mock 数据格式对齐
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-06-16 20:39:03 +08:00 |
|
Script Generator
|
d1b4d81a75
|
feat: 个人中心 UI 改版(Banner + 大头像 + 卡片化)
从孤立白卡改为 GitHub/Notion 风格个人页:
- 顶部 h-40 渐变 Banner(主色到 hover 色),左下 80px 圆头像 + ring 描边
- Banner 内显示姓名/角色·部门/手机·邮箱,右上白底透明退出按钮
- max-w-3xl 卡片居中:标题 + 副标题(如「修改后立即生效」)+ 字段单栏堆叠
- 保存按钮加 spinner(提交中)+ 已保存绿色文字带 Check icon 3 秒淡出
- refreshUser 后 Banner 立即同步新名字/邮箱
- 不考虑移动端
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-06-16 20:26:22 +08:00 |
|
Script Generator
|
7c49868c4f
|
feat: 个人中心管理(编辑信息 + 修改密码 + 退出登录)
- 新增 /profile 路由:两个 Tab(个人信息 / 修改密码)+ 退出按钮
- Sidebar 底部用户区改造:绑定真实登录用户(头像/姓名/角色)+ 加 Settings icon 跳 /profile
- useAuthStore 加 refreshUser:保存信息后立即同步 Sidebar 显示
- 个人信息表单:姓名/手机/邮箱可改,部门/角色只读,复用 updateMember
- 密码修改:原密 + 新密(≥8位且≠原密) + 确认 三档校验,眼睛 icon 切换可见,下次登录生效
- 退出登录:confirm → useAuthStore.logout → /login
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-06-16 19:51:22 +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
|
1f5bed0c79
|
feat: 开发任务时间字段重构 + 双口径耗时 + 搜索 + 性能优化
核心变更:
- DevTask 字段重构:startDate/dueDate/estimateHours/actualHours 替换为 expectedStartAt/expectedEndAt/actualStartAt/actualEndAt(含时分),预计/实际工时按工作时段(9:00-12:00 + 13:00-18:00)派生计算
- 状态机自动化:到点自动切开发中、未到可手动开干、超期需填延后原因
- 新建 lib/work-hours.ts:calcWorkHours(工作时段过滤)、formatWorkHours(X h(Y 天))、calcTwoMetrics(日历/人力双口径)
- 新建 lib/dev-task-transitions.ts:状态切换守卫
- 三个 Tab 顶部统计:开发任务(预/日历/人力)、测试用例 / Bug(日历 / 人力);版本概览总人天投入改双行(日历总耗时 / 人力总投入)
- 三个 Tab 加搜索框:300ms debounce + 标题/编号模糊匹配
- 性能优化:requirementIds/categories/requirements/testCases 转 Map/Set 索引、Row 组件 React.memo
- 全局耗时显示统一带天数换算:8h(1天)、11h(1.4天)
新增文件: SearchInput.tsx, useDebouncedValue.ts, work-hours.ts, dev-task-transitions.ts, 设计文档
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-06-16 17:44:59 +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
|
6d2f6d8b9f
|
docs+fix: 4份核心文档 + 项目模块版本记录数据全联动
文档:
- architecture.md - 整体架构、心智模型、关键设计原则
- decisions.md - 16条关键决策记录(含为什么)
- workflow.md - 工作流程和协作偏好
- roadmap.md - V1/V2/V3 路线图和已完成清单
修复项目详情版本记录:
1. 状态胶囊数据联动(开发中分支也补传 stageProgress)
2. 日期数据联动:
- 实际开始 = 取所有阶段最早 actualStartAt/startDate/startedAt
- 实际截止 = 取所有阶段最晚 completedAt/closedAt
- 数据完全和版本详情一致
VersionCard 的 versionData useMemo 增加 actualStart/actualEnd 派生字段,
两种状态分支(developing/released)都使用派生值,不再用静态 version.startDate
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-06-16 12:40:10 +08:00 |
|
Script Generator
|
4b05e09dab
|
fix: 项目详情顶部卡片 + 版本记录耗时和状态胶囊与版本详情联动
1. 顶部卡片从 6 个改为 4 个:
- 总版本数、已开发、需求数、Bug 总数
- 去掉重复的进行中、总耗时(天)、加班(h)
- bugCount 从 useBugStore 实时统计
2. 版本记录里的耗时与版本详情联动:
- 不再用 version.startDate 简单计算
- 改用版本详情同样的算法:取所有阶段最早实际开始
(plans.actualStartAt / devTasks.startDate / testCases.startedAt)
- 数据完全一致
3. 版本记录里的状态胶囊与版本详情联动:
- 之前 <CapsuleStages /> 不传任何数据,永远空胶囊
- 现在传入 stageProgress (与版本详情同样算法)
- 调研/产品/UI/开发/测试/BUG 各阶段进度一致
VersionCard 接收 plans/devTasks/testCases/bugs/requirements
useMemo 派生 versionData 和 stageProgress
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-06-16 11:52:39 +08:00 |
|
Script Generator
|
57e55b6788
|
fix: 修复录入人员不显示 + 状态列改名区分
1. 录入人员字段(creator):
- RequirementModal 新增 currentUserName prop
- handleSubmit 自动填入 creator
- 编辑时保留原有 creator,新建时取当前登录用户
- 修复"新建需求后录入人员为空"的 bug
2. 表格状态列改名(消除混淆):
- "状态" → "业务状态"(req.status,业务流转)
- "开发状态" → "实际进度"(从 DevTask 派生)
- 两个含义不同的状态不再叫同一个名字
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-06-15 19:26:16 +08:00 |
|
Script Generator
|
a3099f6952
|
feat: 产品页面去掉规划中 + 项目名和版本可点击跳转
1. 移除"规划中"状态:
- 去掉顶部图例的"规划中"
- activeVersions 过滤改为只显示 status === 'developing'
- 项目展开列表中的 projActive 同步只取 developing
2. 项目名可点击跳转:
- 项目名改为按钮样式,点击跳转 /projects/{id}
- hover 显示蓝色下划线
3. 版本胶囊可点击跳转:
- VersionChip 包裹按钮,点击跳转 /versions/{id}
- hover 半透明效果
4. 数据联动:
- 不再展示规划中的版本(视觉简洁)
- 点击直达对应详情页,方便快速访问
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-06-15 18:29:58 +08:00 |
|
Script Generator
|
fa7a0f7294
|
fix: 侧边详情显示产品/项目/版本上下文
所有 Drawer 新增 contextLabel 可选属性:
- 从工作台打开时传入"产品 / 项目 / 版本"路径
- 显示在 Drawer 顶部灰色背景条中
- 从版本详情打开时不传,不显示(无需冗余)
- 统一样式:px-5 py-2 bg-[var(--bg-subtle)] text-[11px]
涉及组件:
- PlanDetailDrawer
- DevTaskDetailDrawer
- TestCaseDetailDrawer
- BugDetailDrawer
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-06-15 17:52:15 +08:00 |
|
Script Generator
|
c7bccd7819
|
fix: 测试用例提Bug按钮 + 全局侧边栏阴影统一
1. 测试用例"提 BUG"按钮接入工作台:
- TestCaseDetailDrawer 传入 onCreateBug callback
- 点击"提 BUG"关闭测试详情,弹出 BugCreateModal
- 创建后 Bug 自动关联该测试用例
2. 全局侧边弹窗阴影统一为 shadow-2xl:
- PlanDetailDrawer: shadow-2xl ✓
- DevTaskDetailDrawer: shadow-[var(--shadow-lg)] → shadow-2xl
- TestCaseDetailDrawer: shadow-[var(--shadow-lg)] → shadow-2xl
- BugDetailDrawer: shadow-[var(--shadow-lg)] → shadow-2xl
- 所有 Drawer 样式一致,阴影明显
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-06-15 17:45:09 +08:00 |
|
Script Generator
|
98251f1c38
|
feat: 与我相关点击打开侧边详情 + 开发/测试转交功能
一、工作台交互改为侧边栏详情(点击卡片打开):
- 调研/产品/UI:新建 PlanDetailDrawer
- 子任务勾选、进度条、上传成果(链接/文件)
- 开始/提交完成操作、转交功能
- 开发任务:复用 DevTaskDetailDrawer
- 状态流转、阻塞管理、前置任务等完整功能
- 测试用例:复用 TestCaseDetailDrawer
- 测试步骤、预期结果、关联Bug、提Bug
- Bug:复用 BugDetailDrawer
- 描述、截图、操作日志、状态转换
二、开发任务增加转交功能:
- DevTaskDetailDrawer 顶部增加转交按钮
- 从 members 列表选择新负责人
- 更新 assigneeId
三、测试用例增加转交功能:
- TestCaseDetailDrawer 顶部增加转交按钮
- 人员离职等场景可转交
四、版本详情同步:
- 所有 Drawer 改动同时生效于版本详情页
(因为复用同一组件)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-06-15 17:30:16 +08:00 |
|
Script Generator
|
10131f9db7
|
feat: 与我相关加宽布局 + 任务可直接完成
1. 加宽两栏布局:
- 左一(树):w-52 → w-64
- 左二(环节):w-48 → w-56
- 右侧更舒适,不再拥挤
2. 待办任务可直接在工作台完成,无需跳转:
- 调研/产品方案/UI:开始 → 完成
- 开发任务:开始 → 提测 → 完成
- 测试用例:通过 / 失败
- Bug:修复中 → 已修复 → 关闭
- 每个状态显示对应的下一步操作按钮
- 已完成的不显示操作按钮
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-06-15 17:07:04 +08:00 |
|
Script Generator
|
77a9b0e827
|
feat: 与我相关增加产品/项目/版本树筛选 + 待办红色徽标
布局改为三栏:
1. 左一:产品/项目/版本树(只显示跟自己相关的)
- 树状可展开/折叠
- 版本节点上有待办数红色徽标
- 点击版本筛选任务列表
- 点击"全部"取消筛选
2. 左二:环节分类tab
- 只显示待办数(红色圆形徽标),无待办不显示数字
- 去掉之前的总数显示
3. 右侧:任务列表(不变)
- header 显示当前选中的版本名标签
- 待办/已完成计数受版本筛选影响
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-06-15 16:59:53 +08:00 |
|
Script Generator
|
5db00f01ff
|
feat: 与我相关重构 — workspace-engine 聚合引擎
架构:新建 lib/workspace-engine.ts
- aggregateWorkItems(): 从所有 store 统一聚合"与我相关"数据
- 每个 WorkItem 包含:type, title, status, completed,
productName, projectName, versionName, versionId
- 新增模块只需在引擎中添加聚合逻辑,工作台自动展示
- 解决了之前各模块增加内容但工作台无法关联的问题
功能改动:
1. 每个任务显示完整上下文:产品 / 项目 / 版本
2. 版本名可点击跳转到版本详情
3. 所有任务(含已完成)统一展示,已完成半透明+绿色勾
4. 左侧增加"显示已完成"开关
5. 待办/已完成计数统计
6. 统一卡片样式:类型标签 + 状态 + 编号 + 标题 + 优先级
7. Bug 额外显示严重程度标签
8. 列表默认排序:未完成在前,已完成在后
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-06-15 16:51:46 +08:00 |
|
Script Generator
|
a4f8edbcdb
|
fix: 新建版本移除状态选择(规划中/开发中)
新建版本不再需要手动选择状态,直接默认为 developing。
移除状态选择器 UI 区块。
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-06-15 16:39:01 +08:00 |
|
Script Generator
|
618f7877e0
|
fix: 胶囊移除"上线"阶段
上线阶段没有实际进度意义(上线是一个动作不是过程),
从 STAGES 中移除 released,胶囊只保留:
调研 → 产品设计 → UI设计 → 开发 → 测试 → BUG
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-06-15 16:35:51 +08:00 |
|
Script Generator
|
9c310534e6
|
fix: 去掉范围蔓延和其他选项 + 概览增加变更统计
1. 变更原因精简为4个:
- 需求理解偏差导致返工
- 反馈导致返工
- 实现难度超预期
- 上游交付延误
去掉"范围蔓延"和"其他"(避免大家逃避问题选其他)
2. 顶部小卡片新增"需求变更"计数(橙色警告色)
3. 概览新增变更统计区域(加班时长下方):
- 变更人员排名:谁发起的变更次数最多
- 变更原因占比:环形饼图 + 图例百分比
- 无变更时不显示此区域
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-06-15 16:28:37 +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
|
54efe53b11
|
fix: 概览耗时显示精确到时分 + 总耗时含加班
1. 开始日期/实际截止显示精确到分钟:
- 开始:取所有阶段最早时间 slice(0,16)
- 实际截止:取所有阶段最晚完成时间 slice(0,16)
- 格式如"2025-06-15 14:30"
2. 总耗时包含加班时长:
- 显示"已耗时 X 天(含加班 Yh)"
- 加班时长从 overtime records 实时汇总
- 无加班时不显示加班部分
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-06-15 15:59:04 +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
|
0a83ab8816
|
fix: 关联需求添加人显示"系统添加" + 开发状态列 + 开发中不可移除
1. 添加人字段:无值时显示"系统添加"而非"-"
2. 新增"开发状态"列:从 linkage-engine 推导
3. 开发中的需求:移除按钮替换为"开发中"文字提示
4. 去掉"描述"列(表格更紧凑)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-06-15 15:17:24 +08:00 |
|
Script Generator
|
43d3f76e6a
|
feat: 需求池重构 + 联动引擎 + 开发状态推导
架构:新建 lib/linkage-engine.ts 联动引擎
- deriveReqDevStatus(): 从 devTasks 推导需求开发状态
- canEditRequirement(): 开发中的需求不可编辑
- checkVersionChangeRisk(): 版本变更风险检查
- 所有跨模块推导逻辑集中在此文件
功能改动:
1. 导航改名"需求"→"需求池"
2. 新建需求:所属产品/项目必填,移除产品负责人字段
3. 需求表格新增"开发状态"列:
未排期/待开发/开发中/已完成(从 devTasks 实时推导)
4. 开发中的需求:编辑按钮禁用
5. 需求设 versionId → 版本详情关联需求天然兼容
(版本详情通过 filter(r.versionId === versionId) 读取)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-06-15 15:09:02 +08:00 |
|
Script Generator
|
b30c460571
|
fix: 概览排版优化 + 加班原因改为饼图
1. 参与人员/相关链接排版修复:
- 去掉 grid-cols-3 不等高布局
- 改为:总耗时独占一行 + 参与人员/相关链接并排双列
- 不再有被撑高留空白的问题
2. 加班原因占比改为环形饼图:
- SVG 环形饼图 + 右侧图例
- 各原因用不同颜色区分
- 图例显示名称 + 百分比
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-06-15 14:40:10 +08:00 |
|
Script Generator
|
2c1b68c46f
|
fix: 创建版本时自动将创建者加入 members
确保新创建的版本 members 中包含当前用户,
否则创建后自己就看不到这个版本了。
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-06-15 14:32:32 +08:00 |
|
Script Generator
|
c8d2bfdd51
|
feat: 版本总耗时实际数据 + 参与人员管理 + 链接聚合 + 权限控制
1. 版本总耗时改用实际数据:
- 开始日期取所有阶段最早 actualStartAt
- 预计截止显示 expectedReleaseDate
- 实际截止取所有阶段最晚完成时间
- 逾期天数 = 实际截止 - 预计截止(红色标签)
2. 参与人员管理:
- 新增"设置"按钮打开管理弹窗
- 可选角色(产品/UI/前端/后端/测试)+ 人员
- 添加/删除成员,保存到 version.members
3. 相关链接从 plans 成果聚合:
- 按调研/产品方案/UI设计分组
- 展示所有已完成 plan 的 resultUrl + resultFileName
- 不再是固定3个链接
4. 权限控制:
- 版本详情页校验当前用户是否在 members 中
- 版本列表页只显示当前用户参与的版本
- members 为空时所有人可见(兼容旧数据)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-06-15 14:23:11 +08:00 |
|
Script Generator
|
101a6be9b7
|
fix: Bug详情图片放大关闭不影响抽屉 + 仅修复人可操作
1. Lightbox 点击关闭时 stopPropagation,不会冒泡关闭 drawer
- 点击背景关闭图片
- 新增右上角 X 关闭按钮
- 点击图片本身不触发关闭
2. 仅当前修复人(assigneeId)可操作 Bug:
- 只有当前用户 === bug.assigneeId 时显示状态流转按钮和转交按钮
- 其他人查看时显示提示"仅修复人可操作"
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-06-15 13:45:08 +08:00 |
|
Script Generator
|
273182bb0f
|
feat: Bug 图片上传 + 转交 + 操作日志 + 开发中含自测
1. 开发中统计包含 in_progress + testing(自测)
2. Bug 支持上传图片:
- BugCreateModal 加宽为 max-w-2xl
- 新增拖拽/点击上传图片区域,转 base64 存储
- 上传后可预览缩略图、可删除
- BugDetailDrawer 展示截图列表,点击可放大
3. Bug 支持转交:
- BugDetailDrawer 操作栏新增"转交"按钮
- 选人下拉 + 备注输入 → 确认转交
- transferBug store 方法:更新 assigneeId + 追加日志
4. Bug 操作日志:
- BugLog interface: create/status_change/transfer/resolve
- createBug 时记录创建日志
- changeStatus 时记录状态变更/修复日志
- transferBug 时记录转交日志
- BugDetailDrawer 底部展示操作时间线
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-06-15 13:37:01 +08:00 |
|
Script Generator
|
0ed7ff1d53
|
refactor: 版本概览重新排版
1. 去掉顶部 Tag Row(P0/进行中/规划中/100健康/负责人缺失等标签)
因为状态胶囊已经展示了阶段信息
2. 概览内容重新排列:
- 风险详情(最上方)
- 统计卡片:关联需求/待调研/待方案设计/待开发/开发中/未关闭Bug/加班时长
- 状态胶囊
- 项目总耗时 + 参与人员 + 相关链接
- 加班时长排名 + 加班原因占比
- 阶段耗时 + 个人耗时排名
- 健康趋势(注释掉,代码保留)
3. 统计卡片去掉"开发任务"和"测试用例"
新增"待调研"和"待方案设计"
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-06-15 13:19:52 +08:00 |
|
Script Generator
|
342fff7f06
|
refactor: 去掉"联调"阶段,新增"BUG"阶段胶囊
- Stage 类型去掉 integration,新增 bug
- 胶囊条:调研 → 产品设计 → UI设计 → 开发 → 测试 → BUG → 上线
- BUG 阶段进度 = 已关闭Bug / 总Bug
- 全部关闭 = done(绿色),有Bug未关闭 = active(蓝色)
- 版本列表/项目详情的阶段筛选同步去掉联调
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-06-15 10:18:17 +08:00 |
|
Script Generator
|
c7f49ad51c
|
refactor: 胶囊条改为纯进度展示,去掉"当前阶段"和"阶段耗时"
胶囊条 CapsuleStages 重构:
- 去掉 currentStage/progress 旧 props
- 每段只显示进度百分比 + 状态颜色(idle/active/done)
- 支持并行阶段(多个可同时 active)
- 数据由实际 PlanTask/DevTask/TestCase 状态驱动
进度数据来源:
- 调研:任务完成数 / 总数
- 产品/UI:需求完成数 / 关联数
- 开发:DevTask 进度(STATUS_PROGRESS 加权)
- 测试:已执行用例 / 总用例
版本列表页:
- 去掉"当前阶段"和"阶段进度"两列
- 替换为"状态"列(显示版本状态标签)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-06-12 17:16:23 +08:00 |
|
Script Generator
|
3fd07dda71
|
feat: 版本详情完善关联关系处理
1. 删除版本时清理所有孤儿数据:
- 释放关联需求回需求池
- 删除计划任务(调研/产品/UI)
- 删除开发任务
- 删除测试用例
- 删除 Bug
2. Header 面包屑链路化:
版本 / 产品名(可点击) / 项目名 / 版本名
点击产品名跳转产品页
3. 概览统计卡片增加完整链路数据:
关联需求 | 计划任务 | 开发任务 | 测试用例 | 待开发 | 开发中 | 未关闭Bug | 加班时长
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-06-12 16:59:59 +08:00 |
|
Script Generator
|
e92ec4eb0e
|
fix: formatDuration 时间差为0时显示0h而非1天
之前 hours=0 时会落到 days 分支显示"1天",实际是开始和完成时间相同。
现在统一按小时数判断,不到1天显示Xh,整天显示X天。
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-06-12 16:43:54 +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
|
da1f98968b
|
fix: 调研/产品/UI阶段耗时改为精确时间戳计算
- VersionPlan 新增 actualStartAt 字段
- updatePlan 流转到 in_progress 时自动记录 actualStartAt
- updatePlan 流转到 completed 时自动记录 completedAt(如未设)
- 概览阶段耗时改用 actualStartAt/completedAt 计算(不再用计划排期)
- 个人耗时汇总同步使用实际时间戳
所有阶段(调研/产品/UI/开发/测试)现在统一用精确时间戳算耗时。
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-06-12 16:24:46 +08:00 |
|
Script Generator
|
c86e87f95b
|
fix: 实际耗时改为精确时间戳计算(精确到0.5h)
之前用日期+工作日×8h 计算耗时太粗糙,现改为:
- DevTask startDate/completedAt 使用完整 ISO 时间戳(含时分秒)
- TestCase startedAt/completedAt 同上
- 耗时 = (endTimestamp - startTimestamp) / 3600000,精确到0.5h
- 详情抽屉显示精确到分钟的时间(YYYY-MM-DD HH:mm)
例如:08:00 开始,10:30 提测,耗时 2.5h(不再是8h)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-06-12 16:11:51 +08:00 |
|
Script Generator
|
664330fe11
|
feat: 阶段耗时覆盖全流程(调研/产品/UI/开发/测试)
阶段耗时(项目维度):
- 调研阶段:PlanTask type=research 的日历跨度
- 产品方案阶段:PlanTask type=product 的日历跨度
- UI设计阶段:PlanTask type=ui 的日历跨度
- 开发阶段:DevTask startDate→completedAt 日历跨度
- 测试阶段:TestCase startedAt→completedAt 日历跨度
- 每阶段带进度条可视化对比
个人耗时排名:
- 汇总5类工作(调研/产品/UI/开发/测试)
- 条形图分色展示各类工作占比
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-06-12 16:02:30 +08:00 |
|
Script Generator
|
b3ccc17c2c
|
feat: 版本概览增加阶段耗时(项目维度)+ 个人耗时排名
项目维度:
- 开发阶段日历天数 = min(startDate) → max(completedAt)
- 测试阶段日历天数 = min(startedAt) → max(completedAt)
- 总人天投入 = 所有人个人耗时之和
个人维度:
- 按人汇总开发耗时 + 测试耗时
- 排名展示,条形图区分开发(蓝)/测试(紫)
- 可对比出谁花费时间长
解决了多任务日期重叠时叠加计算不合理的问题:
项目看日历跨度,个人看独立累加。
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-06-12 15:48:41 +08:00 |
|
Script Generator
|
8b3b3b7e21
|
feat(test-case): 测试耗时自动计算(逻辑同开发任务)
- TestCase 新增 startedAt / completedAt 字段
- 流转到"执行中"时记录 startedAt
- 流转到"通过/失败/阻塞"时记录 completedAt
- 回退到执行中时清除 completedAt
- 测试耗时 = startedAt → completedAt 工作日 × 8h
- 列表行显示耗时,详情抽屉显示开始/完成/耗时
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-06-12 15:38:48 +08:00 |
|