7.3 KiB
iConsulting Agent 能力扩展 — P0/P1/P2 实施计划
生成日期: 2026-02-07 目标:将 iConsulting 从纯咨询 Agent 升级为具备完整业务闭环的智能助手
当前状态总结
已实现 ✅
- 多 Agent 协调架构 (Coordinator + 6 specialists)
- 16 个工具 (knowledge search, assessment, memory, web search, etc.)
- 支付工具
generate_payment已定义但返回 MOCK 数据 - payment-service 已有完整的 Order/Payment/Adapter 架构(Alipay/WeChat/Stripe adapter 为 mock)
- WebSocket 已 emit
tool_call和tool_result事件 - 前端
ToolCallResult组件已识别generate_payment但只显示占位符
缺失 ❌
- conversation-service 没有调用 payment-service 的 HTTP 客户端
- 没有
check_payment_status工具(Agent 无法查询支付状态) - 没有
query_order_history工具(Agent 无法查询用户订单历史) - 前端没有安装
qrcode.react,无法渲染真实二维码 - 前端
tool_call/tool_resultWebSocket 事件只 console.log,未处理到消息 metadata - 没有发票生成能力
- 没有前端交互式表单(chat 内嵌表单收集信息)
P0 — 支付闭环(Payment Closure)
目标
Agent 能真正生成支付订单 → 返回支付二维码 → 前端渲染二维码 → Agent 能查询支付状态 → Agent 能查询订单历史
步骤
P0-1: PaymentClientService
新建 conversation-service/src/infrastructure/payment/payment-client.service.ts
- 模仿
KnowledgeClientService的 HTTP 客户端模式(使用 nativefetch) PAYMENT_SERVICE_URL从 ConfigService 读取,默认http://payment-service:3002- 方法:
createOrder(params: { userId, serviceType, serviceCategory?, conversationId? })→ 调用POST /orderscreatePayment(params: { orderId, method })→ 调用POST /paymentscheckPaymentStatus(paymentId: string)→ 调用GET /payments/:id/statusgetOrderStatus(orderId: string)→ 调用GET /orders/:id/statusgetUserOrders(userId: string)→ 调用GET /orders(header: x-user-id)
新建 conversation-service/src/infrastructure/payment/payment.module.ts
- 提供
PaymentClientService,导出供AgentsModule使用
修改 agents.module.ts
- 导入
PaymentModule ImmigrationToolsService构造函数注入PaymentClientService
P0-2: 重写 generate_payment 工具
修改 immigration-tools.service.ts 的 generatePayment() 方法
流程:
- 调用
paymentClient.createOrder(...)创建订单 - 调用
paymentClient.createPayment({ orderId, method })生成支付 - 返回真实的
{ orderId, paymentId, qrCodeUrl, amount, expiresAt } - 删除 MOCK 数据
P0-3: 添加 check_payment_status 工具
修改 immigration-tools.service.ts:
- 添加工具定义:
check_payment_status,输入{ orderId } - 添加实现: 调用
paymentClient.getOrderStatus(orderId)返回状态
修改 coordinator-tools.ts:
- 在
DIRECT_TOOLS中添加check_payment_status工具定义 - 在
TOOL_CONCURRENCY_MAP中标记为true(只读)
P0-4: 添加 query_order_history 工具
修改 immigration-tools.service.ts:
- 添加工具定义:
query_order_history,输入{ userId } - 添加实现: 调用
paymentClient.getUserOrders(userId)返回订单列表
修改 coordinator-tools.ts:
- 在
DIRECT_TOOLS中添加query_order_history工具定义 - 在
TOOL_CONCURRENCY_MAP中标记为true(只读)
P0-5: 前端 QR 码渲染
安装 qrcode.react 到 web-client
修改 MessageBubble.tsx 的 ToolCallResult 组件:
- 导入
QRCodeSVGfromqrcode.react generate_payment结果中,使用<QRCodeSVG value={qrCodeUrl} />渲染真实二维码- 添加
check_payment_status结果的渲染(状态卡片) - 添加
query_order_history结果的渲染(订单列表卡片)
P0-6: 处理 tool_call/tool_result WebSocket 事件
修改 useChat.ts:
tool_call事件: 存储到临时状态(当前消息正在执行的工具调用)tool_result事件: 将结果收集到 pending toolCalls 数组stream_end事件: 将收集的 toolCalls 注入消息 metadata
P1 — 信息收集 UX 增强
目标
Agent 能在聊天中展示结构化的评估结果卡片,用户能直观看到评分和建议
步骤
P1-1: 评估结果卡片组件
新建 web-client/src/features/chat/presentation/components/AssessmentResultCard.tsx
- 针对
collect_assessment_info和invoke_assessment_expert的工具结果 - 展示:评估类别、各项得分、总分、建议
- 使用现有 Tailwind 样式
- 分数条形图(纯 CSS,不需要 recharts)
P1-2: 在 ToolCallResult 中集成
修改 MessageBubble.tsx:
- 识别
collect_assessment_info工具结果,渲染AssessmentResultCard - 识别评估相关结果,渲染评分卡片
P2 — 财务合规
目标
Agent 能查询用户交易记录,支持退款处理(为未来发票功能预留接口)
步骤
P2-1: 交易历史查询增强
修改 PaymentClientService:
- 添加
getOrderDetail(orderId)→ 获取含支付详情的完整订单
修改 immigration-tools.service.ts:
query_order_history工具返回更丰富的信息(支付时间、状态、金额明细)
P2-2: 退款处理工具
修改 PaymentClientService:
- 添加
requestRefund(orderId, reason)→ 调用 payment-service 退款 API
修改 immigration-tools.service.ts:
- 添加
request_refund工具定义和实现 - 安全限制:需要确认对话 + 订单在可退款时间窗口内
修改 coordinator-tools.ts:
- 添加
request_refund工具定义 TOOL_CONCURRENCY_MAP中标记为false(有副作用)
P2-3: 前端交易记录展示
修改 MessageBubble.tsx:
- 增强
query_order_history的渲染:显示支付方式图标、退款状态 - 添加
request_refund结果渲染
文件变更清单
P0 新建文件 (2)
| 文件 | 说明 |
|---|---|
infrastructure/payment/payment-client.service.ts |
Payment-service HTTP 客户端 |
infrastructure/payment/payment.module.ts |
Payment 模块 |
P0 修改文件 (5)
| 文件 | 改动 |
|---|---|
agents/agents.module.ts |
+PaymentModule import |
claude/tools/immigration-tools.service.ts |
+PaymentClientService 注入, 重写 generatePayment, +2 新工具 |
agents/tools/coordinator-tools.ts |
+2 新工具定义, +concurrency map |
web-client/.../MessageBubble.tsx |
+QRCodeSVG, +3 工具结果渲染 |
web-client/.../useChat.ts |
+tool_call/tool_result 事件处理 |
P1 新建文件 (1)
| 文件 | 说明 |
|---|---|
web-client/.../AssessmentResultCard.tsx |
评估结果卡片组件 |
P1 修改文件 (1)
| 文件 | 改动 |
|---|---|
web-client/.../MessageBubble.tsx |
+评估结果卡片渲染 |
P2 修改文件 (3)
| 文件 | 改动 |
|---|---|
infrastructure/payment/payment-client.service.ts |
+getOrderDetail, +requestRefund |
claude/tools/immigration-tools.service.ts |
+request_refund 工具 |
agents/tools/coordinator-tools.ts |
+request_refund 定义 |
验证计划
每个 P 级别完成后:
pnpm build— conversation-service 和 web-client 均编译通过- 详细 commit 备注说明改动内容
git push推送到 remote- 进入下一个 P 级别