feat: implement ERP AI Assistant Phase 1

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>
This commit is contained in:
2026-03-21 14:23:20 +00:00
commit acd73431ae
60 changed files with 11284 additions and 0 deletions

319
docs/LAN_ACCESS.md Normal file
View File

@@ -0,0 +1,319 @@
# 局域网访问配置指南
## 🌐 配置说明
本项目已配置支持局域网访问,允许团队在同一局域网内访问前端和后端服务。
## ✅ 已完成的配置
### 1. 前端配置 (Vite)
**文件**: `frontend/vite.config.js`
```javascript
server: {
host: '0.0.0.0', // 监听所有网络接口,允许局域网访问
port: 5173,
proxy: {
'/api': {
target: 'http://localhost:8000',
changeOrigin: true
}
}
}
```
### 2. 后端配置 (FastAPI)
**文件**: `backend/app/main.py`
- **服务监听**: `host="0.0.0.0"` (已配置,监听所有网络接口)
- **CORS 策略**:
- 开发模式 (`DEBUG=True`): 允许所有来源 (`allow_origins=["*"]`)
- 生产模式: 仅允许 localhost
## 🚀 使用步骤
### 1. 获取服务器 IP 地址
在运行服务的机器上执行:
**Windows:**
```bash
ipconfig
```
查找 "IPv4 地址",例如:`192.168.1.100`
**Linux/Mac:**
```bash
ifconfig
# 或
ip addr show
```
查找 `inet` 地址,例如:`inet 192.168.1.100`
### 2. 启动服务
**启动后端:**
```bash
cd backend
source venv/bin/activate # Windows: venv\Scripts\activate
python -m app.main
```
后端将监听:
- `http://0.0.0.0:8000` (所有网络接口)
- 可通过 `http://localhost:8000``http://192.168.1.100:8000` 访问
**启动前端:**
```bash
cd frontend
npm run dev
```
Vite 将输出:
```
VITE v5.0.4 ready in xxx ms
➜ Local: http://localhost:5173/
➜ Network: http://192.168.1.100:5173/
```
### 3. 局域网访问
在同一局域网的其他设备上,使用服务器 IP 地址访问:
- **前端**: `http://192.168.1.100:5173`
- **后端 API**: `http://192.168.1.100:8000`
- **API 文档**: `http://192.168.1.100:8000/docs`
## 🔥 防火墙配置
如果局域网内无法访问,需要检查防火墙设置。
### Windows 防火墙
**方法 1: 允许端口**
```powershell
# 以管理员身份运行 PowerShell
netsh advfirewall firewall add rule name="ERP AI Assistant - Frontend" dir=in action=allow protocol=tcp localport=5173
netsh advfirewall firewall add rule name="ERP AI Assistant - Backend" dir=in action=allow protocol=tcp localport=8000
```
**方法 2: 允许应用**
1. 打开 "Windows Defender 防火墙"
2. 点击 "允许应用通过防火墙"
3. 添加 `node.exe``python.exe`
### Linux 防火墙
**UFW (Ubuntu):**
```bash
sudo ufw allow 5173/tcp
sudo ufw allow 8000/tcp
sudo ufw reload
```
**Firewalld (CentOS/RHEL):**
```bash
sudo firewall-cmd --permanent --add-port=5173/tcp
sudo firewall-cmd --permanent --add-port=8000/tcp
sudo firewall-cmd --reload
```
### 云服务器安全组
如果运行在云服务器上,需要在安全组中开放端口:
- 入站规则: 允许 TCP 端口 5173 和 8000
## 📱 测试访问
### 1. 本地测试
在服务器机器上测试:
```bash
# 测试后端
curl http://localhost:8000/health
# 测试前端(浏览器访问)
http://localhost:5173
```
### 2. 局域网测试
在其他设备上测试:
```bash
# 测试后端(替换为实际 IP
curl http://192.168.1.100:8000/health
# 测试前端(浏览器访问)
http://192.168.1.100:5173
```
## ⚠️ 安全注意事项
### 开发环境
当前配置适合开发环境:
- ✅ CORS 允许所有来源 (`allow_origins=["*"]`)
- ✅ 方便团队协作和测试
### 生产环境
**强烈建议**生产环境进行以下调整:
1. **设置 `DEBUG=False`**
```bash
# .env
DEBUG=False
```
2. **配置具体允许的域名**
修改 `backend/app/main.py`:
```python
allow_origins=[
"https://your-domain.com",
"https://erp.your-company.com",
]
```
3. **使用 HTTPS**
- 配置 SSL 证书
- 使用 Nginx 反向代理
4. **使用环境变量管理 CORS**
在 `.env` 中配置:
```bash
ALLOWED_ORIGINS=https://domain1.com,https://domain2.com
```
## 🔧 高级配置
### 自定义端口
如果默认端口被占用,可以修改:
**前端** (`frontend/vite.config.js`):
```javascript
server: {
host: '0.0.0.0',
port: 3000, // 自定义端口
// ...
}
```
**后端** (`backend/app/main.py`):
```python
uvicorn.run(
"app.main:app",
host="0.0.0.0",
port=8888, # 自定义端口
reload=settings.DEBUG
)
```
### 使用 Nginx 反向代理
生产环境推荐使用 Nginx
```nginx
server {
listen 80;
server_name erp.your-company.com;
# 前端
location / {
proxy_pass http://127.0.0.1:5173;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
# 后端 API
location /api/ {
proxy_pass http://127.0.0.1:8000/api/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
```
## 📊 访问日志
查看访问日志,确认服务正常运行:
**前端日志:**
```bash
# Vite 会显示访问日志
npm run dev
```
**后端日志:**
```bash
# FastAPI/Uvicorn 会显示请求日志
python -m app.main
```
## 🐛 故障排查
### 问题 1: 无法访问
**症状**: 局域网内其他设备无法访问
**检查清单:**
- ✅ 服务器 IP 地址是否正确
- ✅ 防火墙是否开放端口
- ✅ 服务是否正在运行
- ✅ 是否在同一局域网内
**诊断命令:**
```bash
# 测试端口是否开放
telnet 192.168.1.100 5173
telnet 192.168.1.100 8000
# 或使用 nc
nc -zv 192.168.1.100 5173
nc -zv 192.168.1.100 8000
```
### 问题 2: CORS 错误
**症状**: 浏览器控制台显示 CORS 错误
**解决方案:**
- 确认 `DEBUG=True` 在 `.env` 中
- 检查后端 CORS 配置
- 查看浏览器控制台错误详情
### 问题 3: API 代理失败
**症状**: 前端无法调用后端 API
**解决方案:**
- 检查后端是否在 `localhost:8000` 运行
- 确认 Vite proxy 配置正确
- 查看浏览器网络请求
## 📝 快速命令参考
```bash
# 查看本机 IP
ipconfig # Windows
ifconfig # Linux/Mac
ip addr show # Linux
# 测试端口
netstat -an | grep 5173 # Linux/Mac
netstat -an | findstr 5173 # Windows
# 开放防火墙端口
sudo ufw allow 5173/tcp # Ubuntu
sudo firewall-cmd --add-port=5173/tcp # CentOS
```
---
**更新时间**: 2026-03-21
**适用版本**: v1.0.0+