Backend (FastAPI + SQLAlchemy + Claude API + RAG): - Config management with Pydantic v2 - Database engine with connection pooling and SQL injection prevention - AI engine with Claude API integration (support custom base URL) - RAG engine with ChromaDB and sentence-transformers - Requirement analysis service - Config generation service - Executor engine with SQL validation - REST API endpoints: /analyze, /generate, /execute Frontend (Vue 3 + Element Plus + Pinia): - Complete 3-step workflow: analyze → generate → execute - Step indicator with progress visualization - Analysis result display with field table - SQL preview with monospace font - Execute confirmation dialog with safety warning - Execution result display - State management with Pinia - API service integration Security: - SQL injection prevention with parameterized queries - Dangerous SQL operation blocking - Database password URL encoding - Transaction auto-rollback - Pydantic config validation Features: - Natural language requirement analysis - Automated SQL configuration generation - Safe execution with human review - LAN access support - Custom Claude API endpoint support Documentation: - README with quick start guide - Quick start guide - LAN access configuration - Dependency fixes guide - Claude API configuration - Git operation guide - Implementation report Dependencies fixed: - numpy<2.0.0 for chromadb compatibility - sentence-transformers==2.7.0 for huggingface_hub compatibility Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1077 lines
26 KiB
Markdown
1077 lines
26 KiB
Markdown
# ERP智能助手系统设计文档
|
||
|
||
**版本**: 1.0
|
||
**日期**: 2026-03-21
|
||
**项目**: 一零软件结构化开发平台AI助手
|
||
**架构方案**: 单体内核架构
|
||
|
||
---
|
||
|
||
## 一、项目概述
|
||
|
||
### 1.1 项目目标
|
||
|
||
开发一个AI助手系统,自动化操作一零软件结构化开发平台,实现:
|
||
|
||
1. **自动化功能开发** - 根据自然语言或结构化需求,自动配置页面、菜单、控件、权限等
|
||
2. **错误排查** - 监控SQL日志、识别错误、定位问题(Phase 2)
|
||
3. **系统优化** - 性能分析、缓存管理、权限优化(Phase 2)
|
||
|
||
### 1.2 核心价值
|
||
|
||
- **提升开发效率** - 从需求到配置上线,从数小时缩短到几分钟
|
||
- **降低技术门槛** - 业务人员也能通过自然语言开发功能
|
||
- **保证配置质量** - AI遵循最佳实践,减少人为错误
|
||
- **知识沉淀** - 自动积累配置案例,持续优化
|
||
|
||
### 1.3 项目范围
|
||
|
||
**Phase 1(当前)**:前台Web交互界面 + 自动化功能开发
|
||
**Phase 2(未来)**:后台自动化服务 + 错误排查 + 系统优化
|
||
|
||
---
|
||
|
||
## 二、系统架构
|
||
|
||
### 2.1 总体架构
|
||
|
||
采用**单体内核架构**,Python + Vue 3技术栈:
|
||
|
||
```
|
||
┌─────────────────────────────────────┐
|
||
│ 前端层 - Vue 3 │
|
||
│ - 需求输入模块 │
|
||
│ - 配置预览模块 │
|
||
│ - 执行监控模块 │
|
||
└─────────────┬───────────────────────┘
|
||
│ HTTP/WebSocket
|
||
┌─────────────▼───────────────────────┐
|
||
│ 后端层 - FastAPI │
|
||
│ ├─ API网关层 │
|
||
│ ├─ 业务逻辑层 │
|
||
│ │ ├─ 需求解析引擎 │
|
||
│ │ ├─ 知识库引擎(RAG) │
|
||
│ │ ├─ 配置生成引擎 │
|
||
│ │ └─ 执行引擎 │
|
||
│ └─ 数据访问层 │
|
||
└─────────────┬───────────────────────┘
|
||
│
|
||
┌──────▼──────┐
|
||
│ SQL Server │
|
||
│ (ERP数据库) │
|
||
└─────────────┘
|
||
```
|
||
|
||
### 2.2 技术栈选型
|
||
|
||
**前端**:
|
||
- Vue 3.3 + Vite 5
|
||
- Element Plus 2.4(UI组件库)
|
||
- Monaco Editor(SQL编辑器,语法高亮)
|
||
- Axios(HTTP客户端)
|
||
- Pinia(状态管理)
|
||
|
||
**后端**:
|
||
- FastAPI 0.104(Web框架)
|
||
- SQLAlchemy 2.0(ORM)
|
||
- pyodbc 5.0(SQL Server连接)
|
||
- Claude API(AI引擎)
|
||
- ChromaDB 0.4(向量数据库)
|
||
- sentence-transformers(文本向量化)
|
||
|
||
**部署**:
|
||
- Docker + Docker Compose
|
||
- Nginx(前端静态托管)
|
||
|
||
---
|
||
|
||
## 三、核心数据流
|
||
|
||
### 3.1 完整工作流程
|
||
|
||
```
|
||
用户输入需求(自然语言/表单)
|
||
↓
|
||
步骤1: 需求解析
|
||
- 调用Claude API + 知识库检索
|
||
- 输出:结构化需求文档
|
||
↓
|
||
步骤2: 配置生成
|
||
- 知识库检索:相似案例 + 平台规则
|
||
- 生成配置方案(建表SQL + 配置SQL)
|
||
↓
|
||
步骤3: 人工审核
|
||
- Web界面展示配置预览
|
||
- 用户确认/修改/重新生成
|
||
↓
|
||
步骤4: 执行配置
|
||
- 开启数据库事务
|
||
- 按序执行SQL
|
||
- 记录执行日志
|
||
- 成功提交/失败回滚
|
||
↓
|
||
步骤5: 结果反馈
|
||
- 显示执行结果
|
||
- 提供后续操作建议
|
||
```
|
||
|
||
### 3.2 关键设计原则
|
||
|
||
- **事务保护**:所有数据库操作在一个事务中,失败自动回滚
|
||
- **执行日志**:记录每步操作,便于审计和排查
|
||
- **预览机制**:执行前让用户确认,避免误操作
|
||
- **知识驱动**:所有配置基于知识库,确保符合规范
|
||
|
||
---
|
||
|
||
## 四、知识库系统设计
|
||
|
||
### 4.1 三层知识结构
|
||
|
||
**层次1: 文档知识库**
|
||
- 平台介绍文档(窗体类型、控件类型、配置流程)
|
||
- 操作说明书(各类单据配置案例)
|
||
- 实施文档(真实项目实施记录)
|
||
- 数据库设计文档
|
||
|
||
处理方式:文档 → 分块(500字) → 向量化 → ChromaDB
|
||
|
||
**层次2: 数据库元数据**
|
||
- 表结构信息(表名、字段、主键、外键、索引)
|
||
- 配置表数据(已有功能号、页面配置、菜单配置、IKEY配置)
|
||
- 存储过程和函数(名称、参数、用途)
|
||
|
||
获取方式:实时查询 `INFORMATION_SCHEMA` 系统视图
|
||
|
||
**层次3: 案例知识库**
|
||
- 成功案例(完整配置流程、SQL脚本、配置参数)
|
||
- 失败案例(错误信息、原因分析、解决方案)
|
||
- 最佳实践(命名规范、字段设计规范、性能优化建议)
|
||
|
||
索引方式:向量化 → ChromaDB,标签化 → 功能标签
|
||
|
||
### 4.2 知识检索策略
|
||
|
||
```
|
||
用户需求: "创建销售订单管理页面"
|
||
↓
|
||
并行查询三个知识库:
|
||
1. 文档知识库 → 检索销售订单相关文档
|
||
2. 元数据库 → 查询现有销售相关表和功能号
|
||
3. 案例库 → 检索相似的销售订单案例
|
||
↓
|
||
知识融合 → 发送给Claude API生成配置方案
|
||
```
|
||
|
||
### 4.3 知识库更新机制
|
||
|
||
- **初始构建**:首次启动时扫描所有文档和数据库
|
||
- **增量更新**:
|
||
- 每次成功配置后,自动保存为新案例
|
||
- 监控数据库结构变更,更新元数据缓存
|
||
- 定期(每天)重新索引文档
|
||
|
||
---
|
||
|
||
## 五、数据库操作与安全机制
|
||
|
||
### 5.1 数据库操作引擎
|
||
|
||
**核心组件**:
|
||
|
||
1. **连接管理**
|
||
- 连接池配置(最大20连接,最小5连接)
|
||
- 多数据库支持(主数据库DMPF_HY + 系统库master)
|
||
- 权限隔离(读操作只读账号,写操作管理员账号)
|
||
|
||
2. **事务管理**
|
||
- 事务流程:开启 → 执行SQL列表 → 记录日志 → 提交/回滚
|
||
- 嵌套事务处理:使用SAVEPOINT支持部分回滚
|
||
- 超时控制:单个事务最长5分钟
|
||
|
||
3. **SQL执行引擎**
|
||
- SQL类型识别(DDL/DML/DQL)
|
||
- 执行策略:
|
||
- DDL: 独立事务,执行前备份
|
||
- DML: 批量事务,失败回滚
|
||
- DQL: 只读事务,使用NOLOCK
|
||
- 性能监控:记录执行时间,慢查询告警(>1秒)
|
||
|
||
4. **安全机制**
|
||
- SQL注入防护:参数化查询、SQL白名单校验、危险操作拦截
|
||
- 权限校验:表级、字段级权限检查
|
||
- 数据备份:执行前自动备份,保留7天
|
||
- 操作审计:记录所有SQL操作
|
||
|
||
### 5.2 执行日志表设计
|
||
|
||
```sql
|
||
CREATE TABLE AI_ASSISTANT_LOG (
|
||
LOG_ID INT IDENTITY(1,1) PRIMARY KEY,
|
||
SESSION_ID VARCHAR(50), -- 会话ID
|
||
USER_ID VARCHAR(50), -- 操作用户
|
||
ACTION_TYPE VARCHAR(50), -- 操作类型
|
||
SQL_CONTENT NVARCHAR(MAX), -- SQL内容
|
||
STATUS VARCHAR(20), -- SUCCESS/FAILED
|
||
ERROR_MESSAGE NVARCHAR(MAX), -- 错误信息
|
||
EXECUTION_TIME INT, -- 执行时间(毫秒)
|
||
CREATE_TIME DATETIME DEFAULT GETDATE()
|
||
)
|
||
```
|
||
|
||
### 5.3 风险控制策略
|
||
|
||
**高风险操作**(需要二次确认):
|
||
- DROP TABLE
|
||
- ALTER TABLE(删除字段)
|
||
- 删除功能号
|
||
- 修改系统配置
|
||
|
||
**中风险操作**(需要审核):
|
||
- CREATE TABLE
|
||
- INSERT配置数据
|
||
- 创建存储过程
|
||
|
||
**低风险操作**(自动执行):
|
||
- SELECT查询
|
||
- 查看配置信息
|
||
|
||
---
|
||
|
||
## 六、前端界面设计
|
||
|
||
### 6.1 主界面布局
|
||
|
||
**三栏式布局**:
|
||
|
||
```
|
||
顶部导航栏
|
||
├─ Logo: ERP智能助手
|
||
├─ 当前数据库连接状态
|
||
├─ 用户信息
|
||
└─ 系统设置
|
||
|
||
左侧边栏(功能导航)
|
||
├─ 💬 新建功能
|
||
├─ 📋 历史记录
|
||
├─ 📚 知识库管理
|
||
├─ ⚙️ 系统设置
|
||
└─ 📊 统计分析
|
||
|
||
主内容区(动态切换)
|
||
```
|
||
|
||
### 6.2 核心页面
|
||
|
||
**页面1: 新建功能**
|
||
|
||
步骤指示器:
|
||
```
|
||
① 输入需求 → ② 生成配置 → ③ 审核确认 → ④ 执行 → ⑤ 完成
|
||
```
|
||
|
||
输入方式:
|
||
- 自然语言输入框(ChatGPT风格对话)
|
||
- 结构化表单(字段、类型、验证规则)
|
||
|
||
表单字段:
|
||
- 功能名称、功能号、窗体类型
|
||
- 主表字段列表(字段名、类型、必填、说明)
|
||
- 从表字段列表
|
||
- 业务需求(审核流程、打印功能、关联表等)
|
||
|
||
**页面2: 配置预览**
|
||
|
||
Tab切换:
|
||
- SQL脚本(语法高亮显示)
|
||
- 表结构(图示)
|
||
- 页面配置
|
||
- 执行计划
|
||
|
||
风险提示:
|
||
- 将创建的表数量
|
||
- 将插入的配置记录数量
|
||
- 操作可回滚提示
|
||
|
||
操作按钮:
|
||
- 返回修改
|
||
- 保存为模板
|
||
- 确认执行
|
||
|
||
**页面3: 执行监控**
|
||
|
||
执行状态:进度条 + 当前步骤
|
||
|
||
执行日志:
|
||
- 实时滚动显示
|
||
- 每步显示:时间、步骤名称、状态、耗时
|
||
- 颜色标识:成功(绿色)、失败(红色)、执行中(蓝色)
|
||
|
||
**页面4: 执行结果**
|
||
|
||
摘要信息:
|
||
- 创建的表数量
|
||
- 创建的功能号
|
||
- 创建的菜单
|
||
- 总耗时
|
||
|
||
快速操作:
|
||
- 打开新页面
|
||
- 查看配置
|
||
- 继续配置权限
|
||
|
||
建议后续操作:
|
||
- 配置按钮
|
||
- 配置公式
|
||
- 配置权限
|
||
|
||
**页面5: 历史记录**
|
||
|
||
筛选条件:时间范围、状态
|
||
|
||
记录列表:时间、功能名称、状态、操作按钮
|
||
|
||
### 6.3 交互细节
|
||
|
||
- **实时验证**:字段名输入时自动检查重名
|
||
- **智能提示**:字段类型下拉时显示常用类型
|
||
- **快捷操作**:支持键盘快捷键(Ctrl+Enter提交)
|
||
- **错误高亮**:SQL错误时红色标记错误行
|
||
|
||
---
|
||
|
||
## 七、后端API设计
|
||
|
||
### 7.1 基础信息
|
||
|
||
- 基础URL: `http://localhost:8000/api/v1`
|
||
- 认证方式: JWT Token
|
||
- 返回格式: JSON
|
||
- 错误处理: 统一错误响应格式
|
||
|
||
### 7.2 核心API接口
|
||
|
||
**需求解析API**
|
||
```
|
||
POST /api/analyze
|
||
请求体: {
|
||
"input_type": "natural_language" | "structured",
|
||
"content": "需求描述"
|
||
}
|
||
响应: 结构化需求文档(JSON)
|
||
```
|
||
|
||
**配置生成API**
|
||
```
|
||
POST /api/generate
|
||
请求体: {
|
||
"session_id": "uuid",
|
||
"requirements": { ... }
|
||
}
|
||
响应: 完整配置方案(SQL + 风险评估)
|
||
```
|
||
|
||
**执行配置API**
|
||
```
|
||
POST /api/execute
|
||
请求体: {
|
||
"session_id": "uuid",
|
||
"confirmed": true,
|
||
"backup_enabled": true
|
||
}
|
||
响应: 执行状态
|
||
```
|
||
|
||
**执行状态查询API**
|
||
```
|
||
GET /api/execution/{execution_id}
|
||
响应: 执行进度、日志、状态
|
||
```
|
||
|
||
**回滚API**
|
||
```
|
||
POST /api/rollback/{execution_id}
|
||
响应: 回滚结果
|
||
```
|
||
|
||
**历史记录API**
|
||
```
|
||
GET /api/history?start_date=&end_date=&status=&page=&page_size=
|
||
响应: 历史记录列表
|
||
```
|
||
|
||
**知识库管理API**
|
||
```
|
||
POST /api/knowledge/documents - 上传文档
|
||
GET /api/knowledge/search?query=&top_k= - 搜索知识库
|
||
```
|
||
|
||
**数据库元数据API**
|
||
```
|
||
GET /api/metadata/tables - 查询表列表
|
||
GET /api/metadata/tables/{table_name} - 查询表结构详情
|
||
GET /api/metadata/functions - 查询现有功能号列表
|
||
```
|
||
|
||
### 7.3 统一错误响应格式
|
||
|
||
```json
|
||
{
|
||
"error": {
|
||
"code": "ERROR_CODE",
|
||
"message": "错误描述",
|
||
"details": { ... }
|
||
}
|
||
}
|
||
```
|
||
|
||
### 7.4 错误码定义
|
||
|
||
```
|
||
1000-1999: 客户端错误(参数验证、认证、权限)
|
||
2000-2999: 业务逻辑错误(功能号已存在、配置冲突)
|
||
3000-3999: 数据库错误(SQL执行失败、连接超时、事务回滚)
|
||
4000-4999: AI服务错误(Claude API、知识库检索、需求解析)
|
||
5000-5999: 系统错误(内部服务器错误、服务不可用)
|
||
```
|
||
|
||
### 7.5 API中间件
|
||
|
||
1. 认证中间件 - 验证JWT Token,提取用户信息
|
||
2. 日志中间件 - 记录请求时间、参数、响应时间、状态
|
||
3. 错误处理中间件 - 捕获所有异常,返回统一格式错误
|
||
4. 速率限制中间件 - 限制每分钟请求数,防止API滥用
|
||
|
||
---
|
||
|
||
## 八、AI引擎设计
|
||
|
||
### 8.1 核心组件
|
||
|
||
- Claude API客户端
|
||
- Prompt模板管理
|
||
- RAG检索引擎
|
||
- 上下文管理器
|
||
|
||
### 8.2 Prompt工程设计
|
||
|
||
**System Prompt**:
|
||
```
|
||
你是一个ERP平台配置专家助手,专门帮助开发人员配置一零软件结构化开发平台。
|
||
|
||
你的职责:
|
||
1. 理解用户的功能需求
|
||
2. 设计合理的数据库表结构
|
||
3. 生成符合平台规范的配置方案
|
||
4. 提供最佳实践建议
|
||
|
||
平台核心知识:
|
||
- 窗体类型:0-普通、3-单树、4-树表、5-单据列表、11-一对多等
|
||
- 标准字段:IKEY(主键)、COMPANYID、DOCCODE、DOCDATE、DOCSTATUS等
|
||
- 配置流程:建表 → 配置功能号 → 配置页面 → 配置菜单 → 配置IKEY
|
||
- 命名规范:SA_销售、PU_采购、ST_库存、FI_财务
|
||
|
||
输出要求:
|
||
- 必须提供完整的SQL脚本
|
||
- 必须遵循平台配置规范
|
||
- 必须包含风险评估
|
||
- 使用JSON格式输出
|
||
```
|
||
|
||
**需求解析Prompt模板**:
|
||
```
|
||
用户需求:{user_input}
|
||
|
||
参考知识:
|
||
{knowledge_context}
|
||
|
||
现有相关表:
|
||
{existing_tables}
|
||
|
||
请分析用户需求,输出结构化需求文档(JSON格式)
|
||
```
|
||
|
||
**配置生成Prompt模板**:
|
||
```
|
||
结构化需求:
|
||
{requirements}
|
||
|
||
平台配置规范:
|
||
{platform_rules}
|
||
|
||
相似案例:
|
||
{similar_cases}
|
||
|
||
请生成完整的配置方案,包括:
|
||
1. 建表SQL(主表、从表、日志表)
|
||
2. 功能号配置SQL
|
||
3. 页面配置SQL
|
||
4. 菜单配置SQL
|
||
5. IKEY配置SQL
|
||
```
|
||
|
||
**错误诊断Prompt模板**:
|
||
```
|
||
错误信息:
|
||
{error_message}
|
||
|
||
执行的SQL:
|
||
{sql_content}
|
||
|
||
数据库上下文:
|
||
{db_context}
|
||
|
||
请分析错误原因,并提供解决方案
|
||
```
|
||
|
||
### 8.3 RAG检索策略
|
||
|
||
**为需求分析检索知识**:
|
||
```python
|
||
def retrieve_for_analysis(user_input: str):
|
||
# 1. 从文档库检索配置流程、控件说明
|
||
docs = vector_search(query=user_input, collection="documents", top_k=3)
|
||
|
||
# 2. 从案例库检索相似案例
|
||
cases = vector_search(query=user_input, collection="cases", top_k=2)
|
||
|
||
# 3. 查询相关表结构
|
||
tables = metadata_query(keyword=extract_keyword(user_input))
|
||
|
||
return merge_results(docs, cases, tables)
|
||
```
|
||
|
||
**为配置生成检索知识**:
|
||
```python
|
||
def retrieve_for_generation(requirements: dict):
|
||
# 1. 检索平台配置规范
|
||
rules = get_platform_rules(form_type=requirements["窗体类型"])
|
||
|
||
# 2. 检索相似功能的完整配置
|
||
similar = find_similar_functions(keywords=requirements["功能名称"])
|
||
|
||
# 3. 获取标准字段模板
|
||
std_fields = get_standard_fields(form_type=requirements["窗体类型"])
|
||
|
||
return merge_results(rules, similar, std_fields)
|
||
```
|
||
|
||
### 8.4 上下文管理
|
||
|
||
```python
|
||
class ContextManager:
|
||
max_tokens = 200000 # Claude最大上下文
|
||
reserved_tokens = 50000 # 预留给输出
|
||
|
||
def build_context(session_id, user_input):
|
||
messages = []
|
||
|
||
# 1. System prompt
|
||
messages.append({"role": "user", "content": SYSTEM_PROMPT})
|
||
|
||
# 2. 历史对话
|
||
messages.extend(get_session_history(session_id))
|
||
|
||
# 3. 检索知识
|
||
knowledge = retriever.retrieve_for_analysis(user_input)
|
||
knowledge_text = format_knowledge(knowledge)
|
||
|
||
# 4. 当前问题
|
||
messages.append({
|
||
"role": "user",
|
||
"content": format_prompt(user_input, knowledge_text)
|
||
})
|
||
|
||
# 5. 检查token数量,必要时截断
|
||
if count_tokens(messages) > max_tokens - reserved_tokens:
|
||
messages = truncate_messages(messages)
|
||
|
||
return messages
|
||
```
|
||
|
||
### 8.5 Claude API调用封装
|
||
|
||
```python
|
||
class ClaudeEngine:
|
||
def analyze_requirements(messages):
|
||
response = client.messages.create(
|
||
model="claude-sonnet-4-6",
|
||
max_tokens=8192,
|
||
temperature=0.7,
|
||
messages=messages
|
||
)
|
||
return parse_json_response(response.content[0].text)
|
||
|
||
def generate_config(requirements):
|
||
response = client.messages.create(
|
||
model="claude-sonnet-4-6",
|
||
max_tokens=8192,
|
||
temperature=0.5, # 生成配置时降低随机性
|
||
messages=build_context(requirements)
|
||
)
|
||
return parse_json_response(response.content[0].text)
|
||
```
|
||
|
||
### 8.6 智能建议引擎
|
||
|
||
```python
|
||
def suggest_next_steps(execution_result: dict):
|
||
suggestions = []
|
||
|
||
# 检查是否配置了按钮
|
||
if not has_buttons(execution_result["form_id"]):
|
||
suggestions.append({
|
||
"type": "配置按钮",
|
||
"priority": "high",
|
||
"description": "配置保存、审核、打印按钮"
|
||
})
|
||
|
||
# 检查是否需要公式
|
||
if needs_formulas(execution_result):
|
||
suggestions.append({
|
||
"type": "配置公式",
|
||
"priority": "medium",
|
||
"description": "配置金额计算公式"
|
||
})
|
||
|
||
# 检查权限
|
||
if not has_permissions(execution_result["form_id"]):
|
||
suggestions.append({
|
||
"type": "配置权限",
|
||
"priority": "high",
|
||
"description": "为角色分配操作权限"
|
||
})
|
||
|
||
return suggestions
|
||
```
|
||
|
||
---
|
||
|
||
## 九、项目结构
|
||
|
||
### 9.1 目录结构
|
||
|
||
```
|
||
erp-ai-assistant/
|
||
├── frontend/ # Vue3前端
|
||
│ ├── src/
|
||
│ │ ├── views/ # 页面组件
|
||
│ │ │ ├── CreateFunction.vue
|
||
│ │ │ ├── History.vue
|
||
│ │ │ ├── Knowledge.vue
|
||
│ │ │ └── Settings.vue
|
||
│ │ ├── components/ # 可复用组件
|
||
│ │ │ ├── RequirementInput.vue
|
||
│ │ │ ├── ConfigPreview.vue
|
||
│ │ │ ├── ExecutionMonitor.vue
|
||
│ │ │ └── SqlEditor.vue
|
||
│ │ ├── api/ # API调用封装
|
||
│ │ ├── store/ # 状态管理
|
||
│ │ ├── router/ # 路由配置
|
||
│ │ ├── utils/ # 工具函数
|
||
│ │ └── App.vue
|
||
│ ├── package.json
|
||
│ └── vite.config.js
|
||
│
|
||
├── backend/ # FastAPI后端
|
||
│ ├── app/
|
||
│ │ ├── main.py # FastAPI应用入口
|
||
│ │ ├── api/ # API路由
|
||
│ │ ├── core/ # 核心引擎
|
||
│ │ │ ├── ai_engine.py
|
||
│ │ │ ├── rag_engine.py
|
||
│ │ │ ├── db_engine.py
|
||
│ │ │ └── executor.py
|
||
│ │ ├── models/ # 数据模型
|
||
│ │ ├── services/ # 业务逻辑层
|
||
│ │ ├── utils/ # 工具函数
|
||
│ │ └── config.py # 配置管理
|
||
│ ├── requirements.txt
|
||
│ └── .env
|
||
│
|
||
├── knowledge_base/ # 知识库数据
|
||
│ ├── documents/ # 原始文档
|
||
│ ├── cases/ # 配置案例
|
||
│ └── chroma_db/ # 向量数据库
|
||
│
|
||
├── scripts/ # 工具脚本
|
||
│ ├── init_knowledge.py
|
||
│ ├── import_docs.py
|
||
│ └── backup_db.py
|
||
│
|
||
├── tests/ # 测试
|
||
├── docker-compose.yml
|
||
├── Dockerfile.backend
|
||
├── Dockerfile.frontend
|
||
└── README.md
|
||
```
|
||
|
||
### 9.2 核心配置
|
||
|
||
**后端依赖**(requirements.txt):
|
||
```
|
||
fastapi==0.104.1
|
||
uvicorn[standard]==0.24.0
|
||
sqlalchemy==2.0.23
|
||
pyodbc==5.0.1
|
||
anthropic==0.18.1
|
||
chromadb==0.4.18
|
||
sentence-transformers==2.2.2
|
||
pydantic==2.5.0
|
||
loguru==0.7.2
|
||
python-jose[cryptography]==3.3.0
|
||
```
|
||
|
||
**前端依赖**(package.json):
|
||
```json
|
||
{
|
||
"dependencies": {
|
||
"vue": "^3.3.8",
|
||
"vue-router": "^4.2.5",
|
||
"pinia": "^2.1.7",
|
||
"axios": "^1.6.2",
|
||
"element-plus": "^2.4.3",
|
||
"monaco-editor": "^0.44.0",
|
||
"sql-formatter": "^13.0.0"
|
||
}
|
||
}
|
||
```
|
||
|
||
**配置文件**(.env):
|
||
```
|
||
APP_NAME=ERP AI Assistant
|
||
DB_SERVER=192.168.120.19
|
||
DB_NAME=DMPF_HY
|
||
ANTHROPIC_API_KEY=your-key
|
||
CLAUDE_MODEL=claude-sonnet-4-6
|
||
KNOWLEDGE_BASE_PATH=./knowledge_base
|
||
CHROMA_DB_PATH=./knowledge_base/chroma_db
|
||
EMBEDDING_MODEL=all-MiniLM-L6-v2
|
||
```
|
||
|
||
---
|
||
|
||
## 十、部署方案
|
||
|
||
### 10.1 开发环境
|
||
|
||
```
|
||
前端: http://localhost:5173 (Vite开发服务器)
|
||
后端: http://localhost:8000 (Uvicorn)
|
||
数据库: SQL Server (192.168.120.19)
|
||
知识库: 本地ChromaDB
|
||
```
|
||
|
||
### 10.2 生产环境
|
||
|
||
使用Docker Compose部署:
|
||
|
||
```yaml
|
||
version: '3.8'
|
||
services:
|
||
backend:
|
||
build: ./backend
|
||
ports: ["8000:8000"]
|
||
environment:
|
||
- APP_ENV=production
|
||
- ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY}
|
||
volumes:
|
||
- ./knowledge_base:/app/knowledge_base
|
||
- ./logs:/app/logs
|
||
|
||
frontend:
|
||
build: ./frontend
|
||
ports: ["80:80"]
|
||
depends_on: [backend]
|
||
```
|
||
|
||
前端使用Nginx托管静态文件,反向代理API请求到后端。
|
||
|
||
---
|
||
|
||
## 十一、测试策略
|
||
|
||
### 11.1 单元测试
|
||
|
||
- 测试范围:工具函数、数据验证、SQL解析
|
||
- 工具:pytest
|
||
- 覆盖率要求:>80%
|
||
|
||
### 11.2 集成测试
|
||
|
||
- 测试范围:API接口、数据库操作、AI引擎
|
||
- 工具:pytest + httpx
|
||
- 测试数据库:专用测试库
|
||
|
||
### 11.3 端到端测试
|
||
|
||
- 测试范围:完整的用户流程
|
||
- 工具:Playwright
|
||
- 场景:新建功能完整流程(输入→生成→审核→执行→验证)
|
||
|
||
### 11.4 性能测试
|
||
|
||
- 测试范围:API响应时间、并发能力
|
||
- 工具:Locust
|
||
- 指标:
|
||
- API平均响应 < 500ms
|
||
- 支持10并发用户
|
||
- SQL执行 < 1s
|
||
|
||
---
|
||
|
||
## 十二、开发路线图
|
||
|
||
### Phase 1: MVP核心功能(4周)
|
||
|
||
**Week 1-2: 基础架构**
|
||
- 项目初始化
|
||
- 数据库连接池实现
|
||
- FastAPI基础框架搭建
|
||
- Vue3项目搭建
|
||
- 基础API实现
|
||
|
||
**Week 3: AI引擎集成**
|
||
- Claude API集成
|
||
- Prompt模板设计
|
||
- 知识库构建(文档导入)
|
||
- RAG检索实现
|
||
|
||
**Week 4: 核心功能实现**
|
||
- 需求解析功能
|
||
- 配置生成功能
|
||
- 执行引擎实现
|
||
- 前端界面完成
|
||
|
||
**交付成果**:
|
||
✓ 可以通过自然语言生成简单功能
|
||
✓ Web界面可用
|
||
✓ 核心流程打通
|
||
|
||
### Phase 2: 完善功能(3周)
|
||
|
||
**Week 5-6: 知识库完善**
|
||
- 导入所有文档资料
|
||
- 提取数据库元数据
|
||
- 收集配置案例
|
||
- 优化检索效果
|
||
|
||
**Week 7: 安全与优化**
|
||
- SQL注入防护
|
||
- 事务回滚机制
|
||
- 执行日志完善
|
||
- 性能优化
|
||
|
||
**交付成果**:
|
||
✓ 知识库覆盖主要场景
|
||
✓ 安全机制完善
|
||
✓ 稳定性提升
|
||
|
||
### Phase 3: 生产就绪(2周)
|
||
|
||
**Week 8: 测试与部署**
|
||
- 编写测试用例
|
||
- Docker化部署
|
||
- 监控告警配置
|
||
- 文档完善
|
||
|
||
**Week 9: 试运行**
|
||
- 内部测试
|
||
- Bug修复
|
||
- 用户反馈收集
|
||
- 优化改进
|
||
|
||
**交付成果**:
|
||
✓ 测试覆盖充分
|
||
✓ 可生产部署
|
||
✓ 文档齐全
|
||
|
||
---
|
||
|
||
## 十三、监控与运维
|
||
|
||
### 13.1 日志系统
|
||
|
||
**日志级别**:
|
||
- ERROR: 系统错误、SQL执行失败
|
||
- WARNING: 性能警告、配置冲突
|
||
- INFO: API调用、配置执行
|
||
- DEBUG: 详细调试信息
|
||
|
||
**日志格式**:
|
||
```json
|
||
{
|
||
"timestamp": "2026-03-21 10:23:01",
|
||
"level": "INFO",
|
||
"module": "executor",
|
||
"message": "执行SQL成功",
|
||
"details": {
|
||
"sql": "CREATE TABLE...",
|
||
"duration": "125ms"
|
||
}
|
||
}
|
||
```
|
||
|
||
**日志存储**:
|
||
- 本地文件: logs/app.log
|
||
- 自动轮转: 按天分割
|
||
- 保留时间: 30天
|
||
|
||
### 13.2 性能优化策略
|
||
|
||
**数据库优化**:
|
||
- 连接池复用
|
||
- 批量SQL执行
|
||
- 使用索引查询元数据
|
||
- 缓存表结构信息
|
||
|
||
**AI调用优化**:
|
||
- 上下文压缩
|
||
- 并行检索知识库
|
||
- 缓存相似问题的回答
|
||
- 使用流式响应
|
||
|
||
**前端优化**:
|
||
- 代码分割
|
||
- SQL编辑器异步加载
|
||
- WebSocket实时推送
|
||
- 请求防抖节流
|
||
|
||
**知识库优化**:
|
||
- 向量索引优化
|
||
- 分块策略优化
|
||
- 增量更新索引
|
||
- 预热常用查询
|
||
|
||
### 13.3 安全加固
|
||
|
||
**认证与授权**:
|
||
- JWT Token认证
|
||
- API速率限制
|
||
- 操作权限校验
|
||
- 敏感操作二次确认
|
||
|
||
**SQL安全**:
|
||
- 参数化查询
|
||
- SQL白名单校验
|
||
- 危险操作拦截
|
||
- 执行前备份
|
||
|
||
**数据安全**:
|
||
- 数据库密码加密存储
|
||
- API Key不在日志中明文
|
||
- HTTPS传输加密
|
||
- 定期备份
|
||
|
||
**审计与监控**:
|
||
- 所有操作可追溯
|
||
- 异常行为告警
|
||
- 定期安全审计
|
||
- 访问日志分析
|
||
|
||
---
|
||
|
||
## 十四、后续演进方向
|
||
|
||
### 14.1 Phase 2功能(后台自动化服务)
|
||
|
||
- 错误排查:监控SQL日志、自动识别错误、定位问题
|
||
- 系统优化:性能分析、缓存管理、权限优化
|
||
- 自动化任务:定期清理、自动备份、性能报告
|
||
|
||
### 14.2 功能增强
|
||
|
||
- **模板库**:预定义常用业务模板(销售订单、采购入库等)
|
||
- **批量操作**:批量配置多个功能
|
||
- **配置对比**:对比不同配置的差异
|
||
- **版本控制**:配置版本管理和回滚
|
||
|
||
### 14.3 架构演进
|
||
|
||
- 当用户量增长时,前后端分离部署,后端水平扩展
|
||
- 当需要后台自动化时,拆分执行引擎为独立服务
|
||
- 引入消息队列(Redis/RabbitMQ)处理异步任务
|
||
|
||
---
|
||
|
||
## 十五、成功指标
|
||
|
||
### 15.1 开发效率指标
|
||
|
||
- **配置时间**:从需求到上线,从平均4小时降至10分钟
|
||
- **开发门槛**:非技术人员也能完成简单功能开发
|
||
- **错误率**:配置错误率降低80%
|
||
|
||
### 15.2 系统质量指标
|
||
|
||
- **API可用性**:>99.5%
|
||
- **API响应时间**:平均<500ms
|
||
- **SQL执行成功率**:>95%(有回滚保护)
|
||
|
||
### 15.3 知识库指标
|
||
|
||
- **文档覆盖率**:平台文档100%导入
|
||
- **案例数量**:第一个月积累50+成功案例
|
||
- **检索准确率**:Top-3检索准确率>80%
|
||
|
||
---
|
||
|
||
## 十六、风险与应对
|
||
|
||
### 16.1 技术风险
|
||
|
||
**风险**:Claude API调用失败或延迟
|
||
**应对**:
|
||
- 实现重试机制(tenacity库)
|
||
- 设置合理超时
|
||
- 提供降级方案(规则引擎)
|
||
|
||
**风险**:SQL执行导致数据损坏
|
||
**应对**:
|
||
- 事务保护机制
|
||
- 执行前自动备份
|
||
- 提供一键回滚功能
|
||
|
||
**风险**:知识库检索不准确
|
||
**应对**:
|
||
- 持续优化分块策略
|
||
- 收集用户反馈,优化检索
|
||
- 定期评估和调整
|
||
|
||
### 16.2 业务风险
|
||
|
||
**风险**:AI理解需求偏差导致配置错误
|
||
**应对**:
|
||
- 人工审核机制
|
||
- 配置预览和确认
|
||
- 执行日志和回滚
|
||
|
||
**风险**:开发人员不信任AI助手
|
||
**应对**:
|
||
- 渐进式推广,先从简单功能开始
|
||
- 完整的执行日志,操作透明
|
||
- 持续优化,提高准确性
|
||
|
||
---
|
||
|
||
## 十七、总结
|
||
|
||
本设计文档详细描述了ERP智能助手系统的架构、功能、技术实现和部署方案。系统采用单体内核架构,使用Python + Vue 3技术栈,集成Claude API和RAG知识库,实现自动化功能开发。
|
||
|
||
**核心特点**:
|
||
- 知识驱动:三层知识库(文档+元数据+案例)
|
||
- 安全可靠:事务保护、执行日志、回滚机制
|
||
- 人机协同:人工审核、配置预览、智能建议
|
||
- 易用友好:自然语言输入、Web界面、实时监控
|
||
|
||
**开发计划**:9周完成MVP,分三阶段推进(基础架构→功能完善→生产就绪)
|
||
|
||
**预期效果**:大幅提升开发效率,降低技术门槛,保证配置质量,沉淀知识资产。
|
||
|
||
---
|
||
|
||
**文档版本历史**:
|
||
|
||
| 版本 | 日期 | 作者 | 说明 |
|
||
|------|------|------|------|
|
||
| 1.0 | 2026-03-21 | Claude Code | 初始设计文档 | |