# 任务说明书 — P0-3 快捷申请按钮空白气泡修复【已标记误报】 > **版本**: v1.1 | **日期**: 2026-07-17 > > ⚠️ **误报声明(2026-07-18)**:经核实 `InputBox.vue` 是孤儿组件(`ChatPanel.vue:96` 实际使用 `InputBar.vue`),"快捷申请按钮"在当前产品中不存在,`showApprovalCard` 无人调用,本任务前提不成立。**已保留**:`GET /approval/all-categories-card` 端点(无害,可作未来功能备用)。**待清理**:InputBox.vue、showApprovalCard 列入批次 4 死代码。InputBar.vue 是否需要快捷申请入口属新产品决策,不在本次重构范围。 --- ## 📋 基本信息 | 项目 | 内容 | |------|------| | **任务名称** | P0-3 InputBox 快捷申请按钮空白气泡修复(新 all-categories-card 端点) | | **任务ID** | #87 | | **状态** | ⚠️ 误报(前提不成立,端点已保留备用) | | **优先级** | 🔴 P0 | | **类型** | Bug修复 | | **状态** | 待开始 | | **负责人** | 宋献 | | **创建日期** | 2026-07-17 | | **计划完成日期** | 2026-07-18 | --- ## 📥 输入项来源 ### 问题证据(F1,P0 Bug) | 来源 | 说明 | |------|------| | `frontend-h5/src/stores/conversation.ts:900-917` | `showApprovalCard()` 构造 `extra_data={approval_type:'',confidence:0}` | | `frontend-h5/src/components/chat/MessageBubble.vue:19` | 要求 `msg.extra_data?.action?.card_data`(v3.0 纯渲染) | | 结果 | InputBox「快捷申请」按钮点击后渲染**空白气泡** | | `frontend-h5/src/components/chat/InputBox.vue:506` | 快捷申请按钮调用方 | ### 技术文档 | 来源文档 | 说明 | |----------|------| | `docs/02-技术文档/重构记录/00-v4.0重构总方案.md` | D6 决策(快捷申请走新端点) | | `backend/app/services/approval_matcher.py` | `get_all_categories()` 已具备能力(v3.0 已实现) | --- ## 📤 输出成果要求 ### 交付物清单 | # | 交付物 | 类型 | 说明 | |---|--------|------|------| | 1 | `backend/app/api/approval.py` | 代码 | 新增 `GET /approval/all-categories-card`:调 `get_approval_matcher().get_all_categories()`,扁平化组装 `{card_type:'multiple', title:'审批申请', description:'请选择审批类型', options:[...]}` | | 2 | `frontend-h5/src/api/conversation.ts` | 代码 | 新增 `getAllCategoriesCard()` | | 3 | `frontend-h5/src/stores/conversation.ts` | 代码 | `showApprovalCard()` 改 async:拉取(store 缓存一次)后插入 `msg_type:'approval_card'`、`extra_data:{action:{card_data}}` | ### 代码要点 - 后端端点需鉴权(require_employee 或同等),返回结构必须与前端 `CardData` 接口一致(card_type/title/description/options[{name,icon,desc,url}]) - store 缓存:首次点击拉取后存 ref,后续点击直接用,不重复请求 --- ## 🔧 验证方式 | 验证项 | 验证方法 | 预期结果 | |--------|----------|-----------| | 端点响应 | `curl -H "Authorization: Bearer " https://itsupport.servyou.com.cn/api/approval/all-categories-card` | 200,options 数组 ≥18 项,每项含 name/icon/desc/url | | 快捷申请渲染 | H5 点快捷申请按钮 | 立即出现全量审批卡片(18 项),非空白 | | 选项跳转 | 点任一选项(如 VPN账号申请) | 正确跳转 itsm-bridge/企微审批 | --- ## ✅ 完成标准 - [ ] 后端端点上线,响应结构正确 - [ ] 前端 showApprovalCard 改造完成,快捷申请渲染正常 - [ ] 构建部署 H5 新版,端到端验证通过 - [ ] 状态看板已更新 --- ## 📊 工作分解 | 子任务 | 预估工时 | 状态 | |--------|----------|------| | 后端 all-categories-card 端点 | 30min | ⬜ | | 前端 API + store 改造 | 30min | ⬜ | | 构建部署 + 端到端验证 | 30min | ⬜ | --- ## 📞 依赖与阻塞 | 依赖 | 说明 | 状态 | |------|------|------| | v3.0 ApprovalMatcher.get_all_categories | 已实现 | ✅ 已完成 | **部署顺序**:后端先发(端点先上线),前端再发(前端依赖端点)。 --- ## 📈 变更记录 | 日期 | 变更内容 | 变更人 | |------|----------|--------| | 2026-07-17 | 创建任务 | 宋献 |