hailin
9e9865acb0
fix(tools): 修复 coordinator-tools 与 immigration-tools 之间的 input_schema 不一致
...
## 问题
全链路检查发现 coordinator-tools.ts(Claude 实际使用的工具定义)与
immigration-tools.service.ts(实际执行器)之间有 4 处 input_schema 不一致,
会导致 Claude 发送的参数无法被正确解析。
## 修复
### check_off_topic
- coordinator 发 `query`,handler 读 `question`
- Fix: handler 同时支持 `query` 和 `question` 两个字段名
### collect_assessment_info
- coordinator 发 `{ userId, field, value }`(单字段模式)
- handler 读 `{ category, age, education, ... }`(批量模式)
- Fix: handler 同时支持两种输入格式
### generate_payment
- coordinator 旧 schema: `{ userId, serviceType, amount, description }`
- handler 需要: `{ serviceType, category, paymentMethod }`
- Fix: 更新 coordinator schema 为 `{ serviceType, category, paymentMethod }`
- serviceType enum 改为 ASSESSMENT/CONSULTATION/DOCUMENT_REVIEW(匹配 payment-service)
- 添加 category enum 和 paymentMethod enum
- 移除 userId(从 context 获取)和 amount(由 payment-service 定价)
### save_user_memory
- coordinator 旧 schema 多余 `userId`(handler 用 context.userId)
- coordinator 发 `importance` 但 handler 不读
- handler 支持 `category` 但 coordinator 未定义
- Fix: coordinator schema 移除 userId,移除 importance,添加 category
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 01:31:38 -08:00
hailin
a3f2be078b
feat(payment): P2 — 订单管理增强,支持取消订单和订单详情查询
...
## 后端改动
### PaymentClientService 增强
- 新增 `getOrderDetail(orderId)` — 获取完整订单信息(含支付详情)
- 新增 `cancelOrder(orderId)` — 取消未支付订单(调用 POST /orders/:id/cancel)
### 新增 cancel_order 工具
- 工具定义: 接收 orderId,取消未支付订单
- 实现: 调用 PaymentClientService.cancelOrder()
- 成功返回 { success, orderId, status, message }
- 失败返回友好错误信息(如"只有未支付的订单才能取消")
- coordinator-tools.ts 注册,concurrency map 标记 false(写操作)
## 前端改动
### cancel_order 结果渲染
- 成功: 绿色卡片 + CheckCircle 图标 + 成功提示
- 失败: 红色卡片 + AlertCircle 图标 + 错误原因
- 显示订单号
## 注意事项
- payment-service 暂无退款 API,cancel_order 仅限未支付订单
- 退款功能待 payment-service 侧实现后再扩展
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 01:23:28 -08:00
hailin
df754ce8b8
feat(payment): P0 — 支付闭环,Agent 可创建真实订单并生成支付二维码
...
## 后端改动
### 新增 PaymentClientService
- 新建 `infrastructure/payment/payment-client.service.ts`
- HTTP 客户端封装,调用 payment-service API(端口 3002)
- 方法: createOrder, createPayment, checkPaymentStatus, getOrderStatus, getUserOrders
- 基于 native fetch,模式与 KnowledgeClientService 一致
- 新建 `infrastructure/payment/payment.module.ts`
- AgentsModule 导入 PaymentModule
### 重写 generate_payment 工具
- 删除所有 MOCK 数据(fake orderId, placeholder QR URL)
- 实际调用 payment-service: createOrder → createPayment → 返回真实 QR URL
- 返回 orderId, paymentId, qrCodeUrl, paymentUrl, expiresAt
### 新增 check_payment_status 工具
- 查询订单支付状态(调用 payment-service GET /orders/:id/status)
- 返回 status, statusLabel(中文映射), paidAt
- 在 coordinator-tools.ts 和 concurrency map 中注册(只读 safe=true)
### 新增 query_order_history 工具
- 查询用户历史订单列表(调用 payment-service GET /orders)
- 返回 orders 数组含 orderId, serviceType, amount, status, createdAt
- 在 coordinator-tools.ts 和 concurrency map 中注册(只读 safe=true)
## 前端改动
### QR 码渲染
- 安装 qrcode.react 4.2.0
- ToolCallResult 组件使用 QRCodeSVG 渲染真实二维码
- 支持 qrCodeUrl(二维码)和 paymentUrl(跳转链接)两种支付方式
- 显示订单号、金额、过期时间
### 支付状态卡片
- check_payment_status 结果渲染为彩色状态卡片
- 已支付=绿色, 待支付=黄色, 已取消=红色, 已退款=橙色
### 订单历史列表
- query_order_history 结果渲染为订单列表卡片
- 每行显示: 类别、日期、金额、状态标签
### WebSocket 工具事件处理
- tool_result 事件收集到 pendingToolResults(chatStore 新增状态)
- stream_end 时将 toolResults 注入消息 metadata.toolCalls
- stream_start 时清空 pendingToolResults
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 01:17:14 -08:00
hailin
ce13c8b770
fix(agents): remove official website referral from fallback labels, use neutral disclaimer
...
Replace "请以入境处官方信息为准" / "建议向香港入境处官网核实" with
"基于AI训练数据,可能不是最新信息" across all fallback messages.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 22:10:45 -08:00
hailin
04dbc61131
feat(agents): add capability boundary guardrails — input gate, cascading fallback, output gate rules
...
Four guardrail improvements to enforce agent capability boundaries:
1. Cascading Fallback (Fix 1+4):
- Rewrite searchKnowledge() in immigration-tools.service.ts with 3-tier fallback:
KB (similarity >= 0.55) → Web Search → Built-in Knowledge (clearly labeled)
- Rewrite executeTool() in policy-expert.service.ts to use retrieveKnowledge()
with confidence threshold; returns [KB_EMPTY]/[KB_LOW_CONFIDENCE]/[KB_ERROR]
markers so the model knows to label source reliability
2. Input Gate (Fix 2):
- New InputGateService using Haiku for lightweight pre-classification
- Classifications: ON_TOPIC / OFF_TOPIC (threshold >= 0.7) / HARMFUL (>= 0.6)
- Short messages (< 5 chars) fast-path to ON_TOPIC
- Gate failure is non-fatal (allows message through)
- Integrated in CoordinatorAgentService.sendMessage() before agent loop entry
- OFF_TOPIC/HARMFUL messages get fixed responses without entering agent loop
3. Output Gate Enhancement (Fix 3):
- Add TOPIC_BOUNDARY and NO_FABRICATION to EvaluationRuleType
- TOPIC_BOUNDARY: regex detection for code blocks, programming keywords,
AI identity exposure, off-topic indicators in agent responses
- NO_FABRICATION: detects policy claims without policy_expert invocation
or source markers; ensures factual claims are knowledge-backed
- Both rule types are admin-configurable (zero rules = zero checks)
- No DB migration needed (ruleType is varchar(50))
Files changed:
- NEW: agents/coordinator/input-gate.service.ts
- MOD: agents/coordinator/coordinator-agent.service.ts (inject InputGate + gate check)
- MOD: agents/agents.module.ts (register InputGateService)
- MOD: agents/coordinator/evaluation-gate.service.ts (2 new evaluators)
- MOD: domain/entities/evaluation-rule.entity.ts (2 new rule types)
- MOD: agents/specialists/policy-expert.service.ts (RAG confidence threshold)
- MOD: claude/tools/immigration-tools.service.ts (cascading fallback)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 21:59:10 -08:00
hailin
4c125f3276
feat(agent): add 4 real-time tools for enhanced agent capabilities
...
Add the following real-time tools to ImmigrationToolsService:
- get_current_datetime: Get current date/time with timezone support
- web_search: Search internet for latest immigration news/policies (Google CSE)
- get_exchange_rate: Query real-time currency exchange rates (for investment immigration)
- fetch_immigration_news: Fetch latest immigration announcements
All tools include graceful degradation with fallback responses when external APIs are unavailable.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 00:46:55 -08:00
hailin
911132ab3e
feat(agent): upgrade to Level 3 with real RAG, Memory and Evolution integration
...
## Summary
Upgrade iConsulting from Level 2 (48 points) to Level 3 (68 points) by
implementing real service-to-service integration between conversation-service
and knowledge-service.
## New Files
- knowledge-client.service.ts: HTTP client for knowledge-service APIs
- knowledge.module.ts: NestJS module for KnowledgeClientService
- AGENT_EVALUATION_REPORT.md: Agent capability evaluation report
- LEVEL3_UPGRADE_PLAN.md: Upgrade plan and completion report
## Changes
### RAG Integration
- search_knowledge tool now calls /api/v1/knowledge/retrieve
- check_off_topic tool calls /api/v1/knowledge/check-off-topic
- Results include real vector similarity search from knowledge base
### Memory Integration
- save_user_memory writes to PostgreSQL + Neo4j via knowledge-service
- collect_assessment_info saves user data to long-term memory
- generate_payment records payment intent to user memory
- New get_user_context tool retrieves user's historical memories
### Evolution Integration
- getAccumulatedExperience() fetches approved system experiences
- sendMessage() dynamically injects experiences into system prompt
- System learns from approved experiences across all conversations
## Expected Score Improvement
| Dimension | Before | After | Delta |
|------------|--------|-------|-------|
| Tool Use | 14/20 | 18/20 | +4 |
| Memory | 12/20 | 16/20 | +4 |
| RAG | 10/20 | 16/20 | +6 |
| Evolution | 8/20 | 14/20 | +6 |
| Total | 48 | 68 | +20 |
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 23:45:58 -08:00
hailin
a7add8ff90
Initial commit: iConsulting 香港移民咨询智能客服系统
...
项目架构:
- Monorepo (pnpm + Turborepo)
- 后端: NestJS 微服务 + Claude Agent SDK
- 前端: React + Vite + Ant Design
包含服务:
- conversation-service: 对话服务 (Claude AI)
- user-service: 用户认证服务
- payment-service: 支付服务 (支付宝/微信/Stripe)
- knowledge-service: 知识库服务 (RAG + Neo4j)
- evolution-service: 自我进化服务
- web-client: 用户前端
- admin-client: 管理后台
基础设施:
- PostgreSQL + Redis + Neo4j
- Kong API Gateway
- Nginx 反向代理
- Docker Compose 部署配置
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-09 00:01:12 -08:00