Go to file
hailin 6476bd868f feat(llm-gateway): 新增对外 LLM API 代理服务 — 完整的监管注入、内容审查和管理后台
## 新增微服务: llm-gateway (端口 3008)

对外提供与 Anthropic/OpenAI 完全兼容的 API 接口,中间拦截实现:
- API Key 认证:由我们分配 Key 给外部用户,SHA-256 哈希存储
- System Prompt 注入:在请求转发前注入监管合规内容(支持 prepend/append)
- 内容审查过滤:对用户消息进行关键词/正则匹配,支持 block/warn/log 三种动作
- 用量记录:异步批量写入,跟踪 token 消耗和费用估算
- 审计日志:记录每次请求的来源 IP、过滤状态、注入状态等
- 速率限制:基于内存滑动窗口的 RPM 限制

### 技术选型
- Fastify (非 NestJS):纯代理场景无需 DI 容器,路由开销 ~2ms
- SSE 流式管道:零缓冲直通,支持 Anthropic streaming 和 OpenAI streaming
- 规则缓存:30 秒 TTL,避免每次请求查库

### API 端点
- POST /v1/messages — Anthropic Messages API 代理(流式+非流式)
- POST /v1/embeddings — OpenAI Embeddings API 代理
- POST /v1/chat/completions — OpenAI Chat Completions API 代理
- GET /health — 健康检查

## 数据库 (5 张新表)

- gateway_api_keys: 外部用户 API Key(权限、限速、预算、过期时间)
- gateway_injection_rules: 监管内容注入规则(位置、匹配模型、匹配 Key)
- gateway_content_rules: 内容审查规则(关键词/正则、block/warn/log)
- gateway_usage_logs: Token 用量记录(按 Key、模型、提供商统计)
- gateway_audit_logs: 请求审计日志(IP、过滤状态、注入状态)

## Admin 后端 (conversation-service)

4 个 NestJS 控制器,挂载在 /conversations/admin/gateway/ 下:
- AdminGatewayKeysController: Key 的 CRUD + toggle
- AdminGatewayInjectionRulesController: 注入规则 CRUD + toggle
- AdminGatewayContentRulesController: 内容审查规则 CRUD + toggle
- AdminGatewayDashboardController: 仪表盘汇总、用量查询、审计日志查询

5 个 ORM 实体文件对应 5 张数据库表。

## Admin 前端 (admin-client)

新增 features/llm-gateway 模块,Tabs 布局包含 5 个管理面板:
- API Key Tab: 创建/删除/启停 Key,创建时一次性显示完整 Key
- 注入规则 Tab: 配置监管内容(前置/追加到 system prompt)
- 内容审查 Tab: 配置关键词/正则过滤规则
- 用量统计 Tab: 查看 token 消耗、费用、响应时间
- 审计日志 Tab: 查看请求记录、过滤命中、注入状态

菜单项: GatewayOutlined + "LLM 网关",位于"系统总监"和"数据分析"之间。

## 基础设施

- docker-compose.yml: 新增 llm-gateway 服务定义
- kong.yml: 新增 /v1/messages、/v1/embeddings、/v1/chat/completions 路由
  - 超时设置 300 秒(LLM 长响应)
  - CORS 新增 X-Api-Key、anthropic-version、anthropic-beta 头
- init-db.sql: 新增 5 张 gateway 表的建表语句

## 架构说明

内部服务(conversation-service、knowledge-service、evolution-service)继续直连 API,
llm-gateway 仅服务外部用户。两者通过共享 PostgreSQL 数据库关联配置。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 22:32:25 -08:00
.claude fix(evolution): handle super admin login without tenant context 2026-01-26 08:20:26 -08:00
database/migrations fix(database): add DELETED to conversations status CHECK constraint 2026-02-06 22:25:31 -08:00
docs feat(payment): P0 — 支付闭环,Agent 可创建真实订单并生成支付二维码 2026-02-07 01:17:14 -08:00
infrastructure fix(database): sync init.sql schema with all migrations for 100% consistency 2026-02-06 22:33:41 -08:00
kong feat(llm-gateway): 新增对外 LLM API 代理服务 — 完整的监管注入、内容审查和管理后台 2026-02-25 22:32:25 -08:00
nginx fix(nginx): fix admin SPA routing fallback to correct index.html 2026-02-06 23:24:22 -08:00
packages feat(llm-gateway): 新增对外 LLM API 代理服务 — 完整的监管注入、内容审查和管理后台 2026-02-25 22:32:25 -08:00
scripts feat(llm-gateway): 新增对外 LLM API 代理服务 — 完整的监管注入、内容审查和管理后台 2026-02-25 22:32:25 -08:00
.builder.Dockerfile fix(tenant): use TenantContextModule.forRoot() for global tenant context 2026-01-26 04:31:56 -08:00
.dockerignore Initial commit: iConsulting 香港移民咨询智能客服系统 2026-01-09 00:01:12 -08:00
.env.example feat(knowledge): add Docling document parsing microservice 2026-02-07 05:24:10 -08:00
.gitignore Initial commit: iConsulting 香港移民咨询智能客服系统 2026-01-09 00:01:12 -08:00
README.md docs: add link to Agent Evaluation Report in README 2026-01-23 04:56:27 -08:00
deploy.sh feat(deploy): add docling service support to deploy.sh 2026-02-07 05:34:23 -08:00
docker-compose.yml feat(llm-gateway): 新增对外 LLM API 代理服务 — 完整的监管注入、内容审查和管理后台 2026-02-25 22:32:25 -08:00
iconsulting部署架构.jpg Initial commit: iConsulting 香港移民咨询智能客服系统 2026-01-09 00:01:12 -08:00
package.json feat(multi-tenant): add super admin module and user profile pages 2026-01-26 06:41:11 -08:00
pnpm-lock.yaml fix(admin): add Markdown rendering to System Supervisor chat 2026-02-08 21:01:20 -08:00
pnpm-workspace.yaml Initial commit: iConsulting 香港移民咨询智能客服系统 2026-01-09 00:01:12 -08:00
tsconfig.base.json Initial commit: iConsulting 香港移民咨询智能客服系统 2026-01-09 00:01:12 -08:00
turbo.json refactor(services): implement 4-layer Clean Architecture for all backend services 2026-01-24 22:18:22 -08:00
优才.jpg docs: add QMAS (优才计划) reference image 2026-01-22 23:47:03 -08:00
香港移民类别.jpg Initial commit: iConsulting 香港移民咨询智能客服系统 2026-01-09 00:01:12 -08:00

README.md

iConsulting - 香港移民在线咨询系统

基于 Claude Agent SDK 的智能在线客服系统,专注于提供香港移民咨询服务。

功能特性

  • 智能咨询: 基于 Claude Agent SDK 的自然语言对话
  • 付费评估: 移民资格评估服务,支持支付宝/微信/信用卡
  • 知识增强: RAG + Neo4j 知识图谱
  • 自我进化: 从对话中学习,根据管理员指令调整
  • 长期记忆: 基于时间线的知识图谱记录
  • 多端支持: PC Web / H5 响应式设计

支持的移民类别

  1. 优才计划 (QMAS) - 行业翘楚、精英人士
  2. 专才计划 (GEP) - 专业人才
  3. 留学IANG - 非本地毕业生
  4. 高才通 (TTPS) - 高端人才
  5. 投资移民 (CIES) - 投资者
  6. 科技人才 (TechTAS) - 科技领域人才

技术架构

├── 前端 (Clean Architecture)
│   ├── React 18 + TypeScript
│   ├── TailwindCSS + Radix UI
│   └── Zustand + React Query
│
├── 后端 (DDD + Hexagonal + 微服务)
│   ├── NestJS
│   ├── Claude Agent SDK
│   └── TypeORM
│
└── 基础设施
    ├── PostgreSQL + pgvector (RAG)
    ├── Neo4j (知识图谱)
    ├── Redis (缓存)
    └── Kafka (消息队列)

项目结构

iconsulting/
├── packages/
│   ├── shared/                 # 共享类型、常量、工具
│   ├── web-client/             # 用户端 Web 应用
│   ├── admin-client/           # 管理端 Web 应用
│   └── services/               # 后端微服务
│       ├── api-gateway/        # API 网关
│       ├── user-service/       # 用户服务
│       ├── conversation-service/ # 对话服务 (核心)
│       ├── knowledge-service/  # 知识服务
│       ├── payment-service/    # 支付服务
│       ├── admin-service/      # 管理服务
│       └── evolution-service/  # 进化服务
│
├── infrastructure/
│   └── docker/                 # Docker 配置
│
├── DEVELOPMENT_GUIDE.md        # 详细开发指导
└── README.md

快速开始

1. 安装依赖

# 安装 pnpm (如果没有)
npm install -g pnpm

# 安装项目依赖
pnpm install

2. 启动基础设施

# 启动 Docker 容器 (PostgreSQL, Neo4j, Redis, Kafka)
pnpm docker:dev

3. 配置环境变量

# 复制环境变量示例文件
cp .env.example .env

# 编辑 .env 文件,填入必要的配置
# 特别是 ANTHROPIC_API_KEY

4. 运行数据库迁移

pnpm db:migrate

5. 启动开发服务器

# 启动所有服务
pnpm dev

访问:

环境变量

关键配置项:

# Claude API
ANTHROPIC_API_KEY=sk-ant-xxx

# 数据库
POSTGRES_HOST=localhost
POSTGRES_PORT=5432
POSTGRES_USER=iconsulting
POSTGRES_PASSWORD=your_password
POSTGRES_DB=iconsulting

# Neo4j
NEO4J_URI=bolt://localhost:7687
NEO4J_USER=neo4j
NEO4J_PASSWORD=your_password

# 支付 (支付宝/微信)
ALIPAY_APP_ID=xxx
WECHAT_APP_ID=xxx

完整配置请参考 .env.example

文档

文档 说明
架构文档 系统整体架构、服务职责、数据流、部署配置
Agent 评估报告 Agent 能力评估、成熟度分析、升级路线图
开发指南 详细开发指导、代码示例、API 设计
MinIO 配置 对象存储配置说明

开发进度

已完成

  • 项目架构设计
  • 开发指导文档
  • Monorepo 配置
  • 共享类型定义
  • Docker 基础设施配置
  • 数据库 Schema
  • 对话服务 (Claude Agent SDK 集成)
  • 用户端前端基础框架

进行中

  • 用户服务
  • 知识服务 (RAG + Neo4j)
  • 支付服务
  • 管理服务 (自我进化)
  • 管理后台前端

贡献指南

  1. Fork 本仓库
  2. 创建特性分支 (git checkout -b feature/amazing-feature)
  3. 提交更改 (git commit -m 'Add some amazing feature')
  4. 推送到分支 (git push origin feature/amazing-feature)
  5. 创建 Pull Request

许可证

私有项目,保留所有权利。