# 企业智能助手模块文档

> 基于大模型的企业内部智能问答与服务升级系统

---

## 📚 文档导航

| 文档 | 说明 | 状态 |
|------|------|------|
| [01-prd.md](./01-prd.md) | 产品需求文档（功能定义、用户故事、验收标准） | ✅ 已完成 |
| [03-architecture.md](./03-architecture.md) | 系统架构设计（数据模型、核心流程、技术选型） | ✅ 已完成 |
| [07-api.md](./07-api.md) | API 接口文档（接口定义、请求响应、错误码） | ✅ 已完成 |
| [09-roadmap.md](./09-roadmap.md) | 开发路线图（进度跟踪、任务分解） | ✅ 已完成 |

---

## 🎯 模块概述

### 核心功能

- 🤖 **AI 对话**: 基于 GPT 的智能问答
- 📝 **问题升级**: 未解决问题自动转工单（含二次确认）
- 👍 **反馈收集**: 用户满意度评价
- 📊 **使用统计**: 对话量、解决率分析
- 🔒 **安全防护**: PII 脱敏、Prompt 注入防护
- 📚 **知识补充**: Human-in-the-loop 质量改进

### 技术亮点

- **LangChain 集成**: 统一的 LLM 调用框架，支持多模型切换
- **SSE 流式响应**: 打字机效果，提升用户体验
- **多模型支持**: OpenAI / Azure OpenAI / 通义千问 (阿里云百炼)
- **对话记忆**: 自动管理上下文窗口，支持多轮对话
- **智能分类**: 自动识别 IT/HR/行政问题
- **工单集成**: 与工单系统对接，自动传递对话上下文
- **降级策略**: LLM 故障时优雅降级 + 告警
- **管理仪表盘**: 实时监控调用量、成功率、满意度

---

## 💻 技术信息

### 技术栈

- **框架**: NestJS
- **数据库**: PostgreSQL (Prisma)
- **LLM 集成**: LangChain.js
- **流式响应**: Server-Sent Events (SSE)
- **模型提供商**: OpenAI / 通义千问 / Azure OpenAI

### 核心依赖

| 包名 | 版本 | 用途 |
|------|------|------|
| `@langchain/openai` | latest | OpenAI 模型调用 |
| `@langchain/core` | latest | LangChain 核心 |
| `langchain` | latest | 链式调用、记忆管理 |

### 代码位置

```
backend/src/ai-assistant/
├── ai-assistant.module.ts         # 模块定义
├── chat/                          # 对话子模块
├── feedback/                      # 反馈子模块
├── ticket/                        # 工单子模块
├── knowledge/                     # 知识纠正子模块
├── prompt/                        # Prompt 模板子模块
├── config/                        # 配置管理子模块
├── stats/                         # 统计分析子模块
├── security/                      # 安全防护 (PII, Prompt Guard)
└── llm/                           # LLM 服务 (LangChain)
    ├── llm.module.ts              # LLM 模块配置
    ├── llm.service.ts             # LLM 服务（安全增强）
    ├── providers/
    │   ├── langchain.provider.ts  # LangChain 统一 Provider
    │   ├── openai.provider.ts     # OpenAI Provider（兼容）
    │   ├── qwen.provider.ts       # 通义千问 Provider（兼容）
    │   └── mock.provider.ts       # Mock Provider（测试）
    ├── memory/
    │   └── memory.service.ts      # 对话记忆服务
    └── interfaces/
        └── llm-provider.interface.ts
```

---

## 🔗 相关模块

- [工单系统](../tickets/README.md) - 问题升级工单创建
- [通知系统](../notification/README.md) - 工单状态变更通知
- [权限系统](../organization/README.md) - 权限控制

---

## 🚀 快速开始

### 环境变量配置

```bash
# ==================== LLM Provider 配置 ====================
# 选择使用的模型提供商
# 可选值: openai | qwen | mock | auto (默认 auto)
# auto 模式优先级: qwen > openai > mock
LLM_PROVIDER=auto

# 强制使用 Mock 模式（开发测试）
LLM_USE_MOCK=false

# ==================== 通义千问 (阿里云百炼) ====================
# 推荐使用！国内访问稳定，响应快速
DASHSCOPE_API_KEY=sk-xxx

# 模型选择（可选，默认 qwen-plus）
# 可选: qwen-turbo, qwen-plus, qwen-max, qwen-max-longcontext
QWEN_MODEL=qwen-plus

# API 地址（可选，默认阿里云官方地址）
# QWEN_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1

# ==================== OpenAI ====================
OPENAI_API_KEY=sk-xxx

# 模型选择（可选，默认 gpt-4-turbo）
OPENAI_MODEL=gpt-4-turbo

# 自定义 API 地址（可选，用于代理或 Azure）
# OPENAI_BASE_URL=https://api.openai.com/v1

# ==================== Azure OpenAI (可选) ====================
# AZURE_OPENAI_API_KEY=xxx
# AZURE_OPENAI_ENDPOINT=https://xxx.openai.azure.com
# AZURE_OPENAI_DEPLOYMENT=gpt-4
```

### API 路径

| 功能 | 路径 |
|------|------|
| 对话管理 | `/api/v1/ai-assistant/conversations` |
| 消息发送 | `/api/v1/ai-assistant/conversations/:id/messages` |
| 流式响应 | `/api/v1/ai-assistant/conversations/:id/messages/stream` |
| 反馈提交 | `/api/v1/ai-assistant/messages/:id/feedback` |
| 工单升级 | `/api/v1/ai-assistant/tickets` |
| 知识纠正 | `/api/v1/ai-assistant/knowledge-fixes` |
| Prompt 管理 | `/api/v1/ai-assistant/prompts` |
| 管理仪表盘 | `/api/v1/ai-assistant/stats/dashboard` |

### 权限标识

| 权限 | 说明 |
|------|------|
| `ai:conversation:create` | 创建对话、发送消息 |
| `ai:conversation:read` | 查看自己的对话 |
| `ai:conversation:delete` | 删除自己的对话 |
| `ai:ticket:create` | 创建工单 |
| `ai:ticket:read` | 查看工单 |
| `ai:ticket:update` | 处理工单 |
| `ai:ticket:admin` | 查看所有工单 |
| `ai:knowledge:create` | 提交知识纠正 |
| `ai:knowledge:review` | 审核知识纠正 |
| `ai:prompt:manage` | Prompt 模板管理 |
| `ai:config:manage` | 配置管理 |
| `ai:stats:read` | 查看统计/仪表盘 |

### 模型提供商对比

| 提供商 | 优势 | 模型 | 适用场景 |
|--------|------|------|----------|
| **通义千问** | 国内访问快、性价比高 | qwen-turbo, qwen-plus, qwen-max | 🌟 **推荐** 国内环境 |
| **OpenAI** | 模型能力强 | gpt-4-turbo, gpt-3.5-turbo | 海外环境、复杂任务 |
| **Mock** | 无需 API Key | - | 开发测试 |

---

## 📅 开发状态

| 阶段 | 状态 | 说明 |
|------|------|------|
| Phase 1: MVP | ✅ 已完成 | 基础对话 + 问题升级 + 安全防护 + 多模型支持 |
| Phase 2: LangChain | ✅ 已完成 | LangChain 集成 + 对话记忆 + 统一 Provider |
| Phase 3: 知识库 | ⚪ 待规划 | RAG 检索增强 + Tool Calling |

---

## 🧪 测试

详见 `docs/modules/ai-assistant/10-e2e-test-spec.md`

---

## 🔧 技术架构

### LangChain 集成架构

```
┌─────────────────────────────────────────────────────────────┐
│                      LLMService                              │
│  ┌─────────────────────────────────────────────────────┐   │
│  │  安全层: PII 脱敏 | Prompt 注入检测 | 输出过滤       │   │
│  └─────────────────────────────────────────────────────┘   │
│                           │                                  │
│                           ▼                                  │
│  ┌─────────────────────────────────────────────────────┐   │
│  │                LangChainProvider                     │   │
│  │  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐  │   │
│  │  │   OpenAI    │  │  通义千问   │  │    Mock     │  │   │
│  │  │ gpt-4-turbo │  │  qwen-plus  │  │  (测试用)   │  │   │
│  │  └─────────────┘  └─────────────┘  └─────────────┘  │   │
│  └─────────────────────────────────────────────────────┘   │
│                           │                                  │
│                           ▼                                  │
│  ┌─────────────────────────────────────────────────────┐   │
│  │                  MemoryService                       │   │
│  │  对话记忆 | 上下文窗口管理 | Token 限制               │   │
│  └─────────────────────────────────────────────────────┘   │
└─────────────────────────────────────────────────────────────┘
```

---

## 📖 相关链接

- [后端规范入口](../../../.agents/skills/backend-main/references/backend-standards.md)
- [LangChain.js 文档](https://js.langchain.com/docs/)

---

## 👥 贡献者

- **创建者**: FFOA Team
- **维护者**: Backend Team

---

**创建时间**: 2025-12-11  
**更新时间**: 2025-12-25  
**状态**: ✅ 已完成  
**版本**: v2.0 (LangChain)
