feat(agent): TaskDetailView 操作区主操作+⋯ 收纳(PRD-REQ-坐席-011 §6.4 决策 C-8) #6

Closed
workbuddy-claude wants to merge 0 commits from feat/task-actions-pivot-v1.8 into main
Owner

摘要

按 v1.8 原型 + PRD-REQ-坐席-011 §6.4 落地 TaskDetailView 操作区「主操作按钮 + ⋯ 次要动作收纳」设计。

改动清单(4 files,+1148/-53)

  • 新增 src/frontend-agent/src/composables/useTaskActions.ts
    • 5 个 pure 函数(isTicketClaimable / buildTicketMainAction / buildTicketMoreActions / buildApprovalMainAction / buildApprovalMoreActions)
    • 工厂产出 TaskActionsConfig{main, more},状态驱动主操作按钮
  • 改造 src/frontend-agent/src/components/chat/task/TicketDetail.vue(原 1 按钮 → 主操作 + ⋯ 5 项 disabled 待 ITSM U-1.1)
  • 改造 src/frontend-agent/src/components/chat/task/ApprovalDetail.vue(原 4 跳转 → 主操作 + ⋯ 3 项 enabled 真跳转)
  • 新增 src/frontend-agent/src/composables/tests/useTaskActions.vitest.test.ts(27 例)

关键设计(决策 C-8)

Ticket 主操作(按 status 驱动)

  • pending → 「📥 接单」disabled(U-1.1 阻塞)
  • processing → 「 结单」disabled(U-1.1 阻塞)
  • resolved → 「 已结单」disabled
  • 其他 → 「🔗 在 ITSM 中打开」enabled

Ticket ⋯ 收纳:开始处理 / 转派 / 挂起 / 升级优先级 / 打开原系统(全部 disabled 带 tooltip)

Approval 主操作(按 sp_status 驱动)

  • sp_status=1 → 「 审批通过」enabled(跳企微)
  • 其他 → 「🔗 在企微审批中打开」enabled

Approval ⋯ 收纳:拒绝 / 转交 / 加签(sp_status=1 时 enabled 真跳转)

收益(用户的痛点)

  • 操作区按钮数 4/1 → 2(主+⋯),body 高度 +50%↑
  • 状态信息一眼可见,无需滚动
  • v1.8 视觉与 PRD §6.4 一致
  • TicketDetail 接单/结单/转派按钮已「结构预留」,等 ITSM U-1.1 API 拿到后改 disabled=true 为 false 即可启用

测试

  • vitest: 102/102 全绿(27 新增 + 75 已有)
  • vue-tsc --noEmit: 我改的 4 文件 0 错误(30+ 历史遗留错误与本 PR 无关)

架构原则

  • 复用 PRD-012 沉淀:WorkItemActionMenu.vue + useConversationMenuItems.ts + TransferDialog.vue 复用现有结构,不重新造轮子
  • 降级跳转精神保留:approval ⋯ 内拒绝/转交/加签都是 <a target="_blank"> 真跳转,不发请求、不修改 store
  • pure 函数模式:5 个独立函数便于单测,避免 reactive setup 测试复杂性
  • 关键保护:所有 disabled 项仍带 href(跳 ITSM/企微),保留可达性;tooltip 明确告知阻塞来源

不影响

  • 左栏三点菜单(v1.7 §4.4 矩阵不变)
  • 中栏顶栏 UserInfoBar(v1.7 D-2 已删 3 留 1)
  • 后端 API(纯前端状态机调整 + 跳转 URL 保持原 wecomApprovalUrl)

提交

f1b12b7871 — feat(agent): TaskDetailView 操作区主操作+⋯ 收纳(PRD-REQ-坐席-011 §6.4 决策 C-8)

父 commit: b4e21e3(main 未改写)

## 摘要 按 v1.8 原型 + PRD-REQ-坐席-011 §6.4 落地 TaskDetailView 操作区「主操作按钮 + ⋯ 次要动作收纳」设计。 ## 改动清单(4 files,+1148/-53) - **新增** src/frontend-agent/src/composables/useTaskActions.ts - 5 个 pure 函数(isTicketClaimable / buildTicketMainAction / buildTicketMoreActions / buildApprovalMainAction / buildApprovalMoreActions) - 工厂产出 TaskActionsConfig{main, more},状态驱动主操作按钮 - **改造** src/frontend-agent/src/components/chat/task/TicketDetail.vue(原 1 按钮 → 主操作 + ⋯ 5 项 disabled 待 ITSM U-1.1) - **改造** src/frontend-agent/src/components/chat/task/ApprovalDetail.vue(原 4 跳转 → 主操作 + ⋯ 3 项 enabled 真跳转) - **新增** src/frontend-agent/src/composables/__tests__/useTaskActions.vitest.test.ts(27 例) ## 关键设计(决策 C-8) **Ticket 主操作(按 status 驱动)**: - pending → 「📥 接单」disabled(U-1.1 阻塞) - processing → 「✅ 结单」disabled(U-1.1 阻塞) - resolved → 「✅ 已结单」disabled - 其他 → 「🔗 在 ITSM 中打开」enabled **Ticket ⋯ 收纳**:开始处理 / 转派 / 挂起 / 升级优先级 / 打开原系统(全部 disabled 带 tooltip) **Approval 主操作(按 sp_status 驱动)**: - sp_status=1 → 「✅ 审批通过」enabled(跳企微) - 其他 → 「🔗 在企微审批中打开」enabled **Approval ⋯ 收纳**:拒绝 / 转交 / 加签(sp_status=1 时 enabled 真跳转) ## 收益(用户的痛点) - 操作区按钮数 4/1 → 2(主+⋯),body 高度 +50%↑ - 状态信息一眼可见,无需滚动 - v1.8 视觉与 PRD §6.4 一致 - TicketDetail 接单/结单/转派按钮已「结构预留」,等 ITSM U-1.1 API 拿到后改 disabled=true 为 false 即可启用 ## 测试 - **vitest**: 102/102 全绿(27 新增 + 75 已有) - **vue-tsc --noEmit**: 我改的 4 文件 0 错误(30+ 历史遗留错误与本 PR 无关) ## 架构原则 - **复用 PRD-012 沉淀**:WorkItemActionMenu.vue + useConversationMenuItems.ts + TransferDialog.vue 复用现有结构,不重新造轮子 - **降级跳转精神保留**:approval ⋯ 内拒绝/转交/加签都是 `<a target="_blank">` 真跳转,不发请求、不修改 store - **pure 函数模式**:5 个独立函数便于单测,避免 reactive setup 测试复杂性 - **关键保护**:所有 disabled 项仍带 href(跳 ITSM/企微),保留可达性;tooltip 明确告知阻塞来源 ## 不影响 - 左栏三点菜单(v1.7 §4.4 矩阵不变) - 中栏顶栏 UserInfoBar(v1.7 D-2 已删 3 留 1) - 后端 API(纯前端状态机调整 + 跳转 URL 保持原 wecomApprovalUrl) ## 提交 f1b12b78711fd1940bf19cfc1fba52501e5912cc — feat(agent): TaskDetailView 操作区主操作+⋯ 收纳(PRD-REQ-坐席-011 §6.4 决策 C-8) **父 commit**: b4e21e3(main 未改写)
workbuddy-claude added 2 commits 2026-08-10 12:45:35 +08:00
主要变更:

- P0-1 /itportal/ 500 修复闭环:nginx.conf line 139-142 08-03 fix 已生效,公网实测 500→404,迁移至已完成

- P0-NEW10: 后端 debug 端点全清单治理(test-ping/test-error/health/ready/metrics/version/openapi.json)生产暴露

- P1 治理-2/3: 看板-滴答双向同步铁律升级(dida→看板反向同步纳入巡检必做)

- P1-Alembic / P1-Idx: dida→看板反向脱节补登(Alembic 053-057 迁移 + troubleshooting 索引)

- console.{log,debug,info} 残留 128→129(h5 101 / agent 20 / admin 0 / terminal 8)

- BLK-A/B 26→30 天阈值校正

- dida 同步 close: 6a6bfc2be (sensitive_words 13 端点补 auth), create: 6a7928a2 (P0-NEW10)
按 v1.8 原型 + PRD-REQ-坐席-011 §6.4 落地 TaskDetailView 操作区「主操作按钮 + ⋯ 次要动作收纳」设计。

## 改动清单(4 files)

- **新增** src/frontend-agent/src/composables/useTaskActions.ts
  工厂产出 TaskActionsConfig{main, more},状态驱动主操作按钮:
  - ticket pending  → 「📥 接单」disabled(U-1.1 ITSM 阻塞)
  - ticket processing → 「 结单」disabled(U-1.1 阻塞)
  - ticket resolved  → 「 已结单」disabled
  - approval sp_status=1 → 「 审批通过」enabled(跳企微)
  - approval 其他 → 「🔗 在企微审批中打开」enabled
  ⋯ 内含:
  - ticket:开始处理/转派/挂起/升级优先级/打开原系统
  - approval sp_status=1:拒绝/转交/加签(真跳转)
  - 其他审批:空数组(无可执行动作)
  全部 pure 函数(isTicketClaimable / buildTicketMainAction / buildTicketMoreActions / buildApprovalMainAction / buildApprovalMoreActions)便于单测。

- **改造** src/frontend-agent/src/components/chat/task/TicketDetail.vue
  原 1 按钮 → 主操作(按状态动态文案)+ ⋯ 收纳(5 项 disabled 待后端 API)
  新增 ⋯ 菜单 DOM(task-actions-menu)、CSS(参考 v1.7 .conv-menu 风格)、click-out/Esc 关闭逻辑。
  保留对 ITSM 的跳转能力(disabled 占位也带 href,不破坏可达性)。

- **改造** src/frontend-agent/src/components/chat/task/ApprovalDetail.vue
  原 4 跳转按钮 → 主操作(按 sp_status 驱动)+ ⋯ 收纳(sp_status=1 时显示拒绝/转交/加签)
  降级跳转精神保留:所有审批动作仍走 <a target="_blank"> 跳企微审批原系统。

- **新增** src/frontend-agent/src/composables/__tests__/useTaskActions.vitest.test.ts
  27 例:覆盖 ticket 4 状态 + approval 3 状态 + 兜底 + 边界条件(pure 函数单测)。

## 收益(用户的痛点)

- 中栏 TaskDetailView 操作区按钮数从 4 / 1 → 2(主+⋯)
- body 区可用高度 +50%↑,状态信息一眼可见
- v1.8 视觉与 PRD §6.4 一致
- TicketDetail 的接单/结单/转派按钮已「结构预留」,等 ITSM U-1.1 API 拿到后改 disabled=true 为 false 即可

## 测试

vitest: 102/102 全绿(含 27 新增 + 75 已有)
vue-tsc --noEmit: 我改的 4 个文件 0 个 TS 错误(30+ 历史遗留错误与本 PR 无关)

## 不影响

- 左栏三点菜单(PRD-012 §6.4 + useConversationMenuItems)
- 中栏顶栏 UserInfoBar(v1.7 D-2 已删 3 留 1)
- 后端 API(纯前端状态机调整 + 跳转 URL 保持原 wecomApprovalUrl)

## 已知阻塞

- Gitea 远端 192.168.3.200:8418 当前不可达(ping 100% 丢包)
- 本地 commit 已就绪,待网络恢复后 push
workbuddy-claude added 1 commit 2026-08-11 09:28:07 +08:00
workbuddy-claude closed this pull request 2026-08-11 09:47:09 +08:00

Pull request closed

Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: simon/wecom_it_smart_desk#6