docs: reorganize documentation and add architecture document

Changes:
- Create docs/ directory for centralized documentation
- Move DEVELOPMENT_GUIDE.md from root to docs/
- Add comprehensive ARCHITECTURE.md with:
  - System overview and architecture diagrams (ASCII)
  - Microservices responsibilities (6 services)
  - Technology stack details
  - Data flow diagrams (user conversation, admin evolution)
  - Production deployment architecture
  - Kong API routing table
  - Port mapping reference
  - Database schema overview (PostgreSQL, Neo4j, MinIO)
  - Security design notes
- Update README.md with documentation index table

Documentation structure:
  docs/
  ├── ARCHITECTURE.md      - System architecture reference
  └── DEVELOPMENT_GUIDE.md - Development guide and code examples

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
hailin 2026-01-22 23:05:41 -08:00
parent e6e69f15ce
commit 4dbd6f075f
3 changed files with 448 additions and 2 deletions

View File

@ -138,9 +138,13 @@ WECHAT_APP_ID=xxx
完整配置请参考 `.env.example`
## 开发指南
## 文档
详细的开发指导请参考 [DEVELOPMENT_GUIDE.md](./DEVELOPMENT_GUIDE.md)
| 文档 | 说明 |
|------|------|
| [架构文档](./docs/ARCHITECTURE.md) | 系统整体架构、服务职责、数据流、部署配置 |
| [开发指南](./docs/DEVELOPMENT_GUIDE.md) | 详细开发指导、代码示例、API 设计 |
| [MinIO 配置](./infrastructure/minio/README.md) | 对象存储配置说明 |
## 开发进度

442
docs/ARCHITECTURE.md Normal file
View File

@ -0,0 +1,442 @@
# iConsulting 系统架构文档
## 目录
- [系统概述](#系统概述)
- [整体架构](#整体架构)
- [服务架构](#服务架构)
- [技术栈](#技术栈)
- [数据流](#数据流)
- [部署架构](#部署架构)
- [API 路由](#api-路由)
- [数据存储](#数据存储)
---
## 系统概述
iConsulting 是一个基于 Claude AI 的香港移民智能咨询系统,采用微服务架构,支持:
- **智能对话**: 基于 Claude API 的多模态 AI 对话
- **知识增强**: RAG + Neo4j 知识图谱
- **自我进化**: 从对话中学习经验,持续优化
- **文件处理**: 支持图片、PDF 等文件上传与 AI 分析
---
## 整体架构
```
┌─────────────────────────────────────────────────────────────────────────────┐
│ 客户端层 │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────┐ ┌─────────────────────┐ │
│ │ Web Client │ │ Admin Client │ │
│ │ (React + TS) │ │ (React + Ant) │ │
│ │ │ │ │ │
│ │ • 用户咨询界面 │ │ • 知识库管理 │ │
│ │ • 多模态文件上传 │ │ • 经验库管理 │ │
│ │ • 实时流式对话 │ │ • 系统配置 │ │
│ └─────────────────────┘ └─────────────────────┘ │
│ │ │ │
└────────────┼───────────────────────────────────┼────────────────────────────┘
│ │
▼ ▼
┌─────────────────────────────────────────────────────────────────────────────┐
│ Nginx 反向代理 (SSL 终止) │
│ │
│ / → Web Client (SPA) │
│ /admin → Admin Client (SPA) │
│ /api/v1/* → Kong API Gateway │
│ /ws/* → WebSocket (Conversation Service) │
│ /storage/* → MinIO (文件存储) │
└─────────────────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────────────────┐
│ Kong API Gateway (DB-less) │
│ │
│ • 请求路由 • CORS 处理 • 请求限流 │
│ • 超时控制 • 负载均衡 │
└─────────────────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────────────────┐
│ 微服务层 │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ User Service │ │ Conversation │ │ Knowledge │ │ Payment │ │
│ │ :3001 │ │ Service │ │ Service │ │ Service │ │
│ │ │ │ :3004 │ │ :3003 │ │ :3002 │ │
│ │ • 匿名认证 │ │ • Claude AI │ │ • RAG 检索 │ │ • 支付宝 │ │
│ │ • JWT 管理 │ │ • 流式响应 │ │ • 向量搜索 │ │ • 微信支付 │ │
│ │ • 用户信息 │ │ • WebSocket │ │ • Neo4j 图谱 │ │ • Stripe │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ └──────────────┘ │
│ │
│ ┌──────────────┐ ┌──────────────┐ │
│ │ Evolution │ │ File │ │
│ │ Service │ │ Service │ │
│ │ :3005 │ │ :3006 │ │
│ │ │ │ │ │
│ │ • 经验提取 │ │ • 文件上传 │ │
│ │ • 管理员认证 │ │ • MinIO 存储 │ │
│ │ • 自我进化 │ │ • 缩略图生成 │ │
│ └──────────────┘ └──────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────────────────┐
│ 基础设施层 │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ PostgreSQL │ │ Redis │ │ Neo4j │ │ MinIO │ │
│ │ :5432 │ │ :6379 │ │ :7474/:7687 │ │ :9000/:9001 │ │
│ │ │ │ │ │ │ │ │ │
│ │ • 用户数据 │ │ • 会话缓存 │ │ • 知识图谱 │ │ • 文件存储 │ │
│ │ • 对话历史 │ │ • 限流计数 │ │ • 用户记忆 │ │ • 图片/PDF │ │
│ │ • 订单数据 │ │ • 分布式锁 │ │ • 关系网络 │ │ • 缩略图 │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ └──────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────────────────┐
│ 外部服务 │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Claude API │ │ OpenAI API │ │ 支付网关 │ │
│ │ (Anthropic) │ │ (Embedding) │ │ │ │
│ │ │ │ │ │ • 支付宝 │ │
│ │ • 对话生成 │ │ • 向量化 │ │ • 微信支付 │ │
│ │ • 多模态理解 │ │ │ │ • Stripe │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
```
---
## 服务架构
### 服务职责
| 服务 | 端口 | 职责 |
|------|------|------|
| **user-service** | 3001 | 用户认证(匿名/手机、JWT 管理、用户信息 |
| **payment-service** | 3002 | 订单管理、支付宝/微信/Stripe 支付集成 |
| **knowledge-service** | 3003 | RAG 检索、向量搜索、Neo4j 知识图谱 |
| **conversation-service** | 3004 | Claude AI 对话、WebSocket 实时通信、流式响应 |
| **evolution-service** | 3005 | 管理员认证、经验提取、系统进化、经验库管理 |
| **file-service** | 3006 | 文件上传/下载、MinIO 存储、缩略图生成 |
### 服务依赖关系
```
conversation-service
├── knowledge-service (RAG 检索)
├── file-service (多模态文件)
├── PostgreSQL (对话存储)
├── Redis (会话缓存)
└── Claude API (AI 生成)
evolution-service
├── conversation-service (经验来源)
├── PostgreSQL (经验存储)
└── Claude API (经验分析)
knowledge-service
├── PostgreSQL (文档存储)
├── Neo4j (知识图谱)
└── OpenAI API (向量化)
file-service
├── MinIO (对象存储)
└── PostgreSQL (文件元数据)
```
---
## 技术栈
### 前端
| 技术 | 用途 |
|------|------|
| React 18 | UI 框架 |
| TypeScript | 类型安全 |
| TailwindCSS | 样式 |
| Zustand | 状态管理 |
| React Query | 数据获取 |
| Socket.IO Client | WebSocket |
| Ant Design | Admin UI 组件 |
### 后端
| 技术 | 用途 |
|------|------|
| NestJS | 微服务框架 |
| TypeORM | ORM |
| Socket.IO | WebSocket |
| Anthropic SDK | Claude API |
| bcrypt | 密码加密 |
| JWT | 认证令牌 |
### 基础设施
| 技术 | 用途 |
|------|------|
| PostgreSQL 15 | 主数据库 |
| Redis 7 | 缓存 |
| Neo4j 5 | 图数据库 |
| MinIO | 对象存储 |
| Kong | API 网关 |
| Nginx | 反向代理 |
| Docker Compose | 容器编排 |
---
## 数据流
### 用户对话流程
```
用户输入 (文本/图片/文件)
┌─────────────────┐
│ Web Client │
│ (上传文件到 │
│ file-service) │
└────────┬────────┘
┌─────────────────┐
│ Nginx │
│ (SSL + 路由) │
└────────┬────────┘
┌─────────────────┐
│ Kong Gateway │
│ (认证 + 限流) │
└────────┬────────┘
┌─────────────────┐ ┌─────────────────┐
│ Conversation │────────▶│ Knowledge │
│ Service │ RAG │ Service │
│ │ 检索 │ │
└────────┬────────┘ └─────────────────┘
│ 构建上下文 (系统提示 + RAG 结果 + 历史消息 + 文件)
┌─────────────────┐
│ Claude API │
│ (流式响应) │
└────────┬────────┘
┌─────────────────┐
│ WebSocket │
│ (实时推送) │
└────────┬────────┘
用户看到回复
```
### 管理员进化流程
```
管理员指令
┌─────────────────┐
│ Admin Client │
└────────┬────────┘
┌─────────────────┐
│ Evolution │
│ Service │
│ │
│ 1. 分析历史对话 │
│ 2. 提取经验 │
│ 3. 更新知识库 │
│ 4. 调整系统提示 │
└────────┬────────┘
┌─────────────────┐
│ Knowledge │
│ Service │
│ (更新 RAG) │
└─────────────────┘
```
---
## 部署架构
### 生产环境
```
┌───────────────────┐
│ 用户请求 │
│ iconsulting. │
│ szaiai.com │
└─────────┬─────────┘
┌─────────▼─────────┐
│ 系统 Nginx │
│ (SSL 终止) │
│ :443 → :8080 │
└─────────┬─────────┘
┌────────────────────┼────────────────────┐
│ │ │
┌─────────▼─────────┐ ┌───────▼───────┐ ┌─────────▼─────────┐
│ Docker Nginx │ │ Kong │ │ MinIO Console │
│ :8080 │ │ :8000 │ │ :9001 │
└───────────────────┘ └───────────────┘ └───────────────────┘
```
### 网络配置
- **对外网卡**: 14.215.128.96 (用户访问)
- **出口网卡**: 154.84.135.121 (Claude API 调用,绕过国内限制)
- **Docker 网络**: 172.20.0.0/16 (内部服务通信)
### 端口映射
| 服务 | 容器端口 | 宿主机端口 |
|------|----------|------------|
| PostgreSQL | 5432 | 5432 |
| Redis | 6379 | 6379 |
| Neo4j HTTP | 7474 | 7474 |
| Neo4j Bolt | 7687 | 7687 |
| MinIO API | 9000 | 9000 |
| MinIO Console | 9001 | 9001 |
| Kong Proxy | 8000 | 8000 |
| Kong Admin | 8001 | 8001 |
| Nginx | 80 | 8080 |
| user-service | 3001 | 3001 |
| payment-service | 3002 | 3002 |
| knowledge-service | 3003 | 3003 |
| conversation-service | 3004 | 3004 |
| evolution-service | 3005 | 3005 |
| file-service | 3006 | 3006 |
---
## API 路由
### Kong 路由配置
| 路径前缀 | 目标服务 | 说明 |
|----------|----------|------|
| `/api/v1/users`, `/api/v1/auth` | user-service:3001 | 用户认证 |
| `/api/v1/payments`, `/api/v1/orders` | payment-service:3002 | 支付订单 |
| `/api/v1/knowledge`, `/api/v1/memory` | knowledge-service:3003 | 知识库 |
| `/api/v1/conversations`, `/api/v1/messages` | conversation-service:3004 | 对话 |
| `/api/v1/evolution`, `/api/v1/admin` | evolution-service:3005 | 进化/管理 |
| `/api/v1/files` | file-service:3006 | 文件 |
### 前端路由
| 路径 | 说明 |
|------|------|
| `/` | 用户咨询界面 (web-client) |
| `/admin/` | 管理后台 (admin-client) |
| `/admin/login` | 管理员登录 |
| `/admin/knowledge` | 知识库管理 |
| `/admin/experience` | 经验库管理 |
---
## 数据存储
### PostgreSQL 主要表
| 表名 | 说明 |
|------|------|
| `users` | 用户信息(匿名/注册) |
| `conversations` | 对话会话 |
| `messages` | 对话消息 |
| `files` | 文件元数据 |
| `orders` | 支付订单 |
| `admins` | 管理员账户 |
| `experiences` | 提取的经验 |
| `knowledge_documents` | 知识文档 |
| `system_configs` | 系统配置 |
### Neo4j 图模型
```cypher
(:User)-[:HAS_MEMORY]->(:Memory)
(:User)-[:ASKED_ABOUT]->(:Knowledge)
(:Knowledge)-[:RELATED_TO]->(:Knowledge)
(:Experience)-[:DERIVED_FROM]->(:Conversation)
```
### MinIO Bucket 结构
```
iconsulting/
├── uploads/ # 用户上传
│ ├── images/
│ ├── documents/
│ └── temp/
├── processed/ # 处理后文件
│ ├── thumbnails/
│ └── extracted/
└── exports/ # 导出文件
```
---
## 安全设计
### 认证机制
1. **用户认证**: 匿名 fingerprint → JWT
2. **管理员认证**: 用户名密码 → bcrypt 验证 → JWT
3. **API 认证**: JWT Bearer Token
### 安全措施
- HTTPS (SSL/TLS)
- CORS 白名单
- 请求限流
- SQL 注入防护 (TypeORM 参数化)
- XSS 防护 (React 自动转义)
- 文件类型验证
- MinIO 预签名 URL (临时访问)
---
## 扩展性设计
### 水平扩展
- 微服务无状态设计,支持多实例部署
- Redis 分布式会话
- Kong 负载均衡
### 垂直扩展
- 数据库读写分离(预留)
- 消息队列Kafka 已预留)
- 缓存分层
---
## 相关文档
- [开发指南](./DEVELOPMENT_GUIDE.md) - 详细的开发文档和代码示例
- [MinIO 配置](../infrastructure/minio/README.md) - 对象存储配置说明