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>
179 lines
4.4 KiB
Python
179 lines
4.4 KiB
Python
#!/usr/bin/env python3
|
|
"""Initialize knowledge base with sample documents.
|
|
|
|
This script adds sample knowledge documents to the RAG engine
|
|
for the ERP AI Assistant.
|
|
"""
|
|
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
# NOTE: Development workaround to enable direct script execution.
|
|
# For production, use: python -m backend.scripts.init_knowledge
|
|
sys.path.insert(0, str(Path(__file__).parent.parent))
|
|
|
|
from loguru import logger
|
|
from app.core.rag_engine import RAGEngine
|
|
|
|
# Sample document: Platform basics
|
|
PLATFORM_BASICS_CONTENT = """
|
|
# ERP 平台基础知识
|
|
|
|
## 窗体类型 (Form Types)
|
|
|
|
ERP 系统支持以下几种窗体类型:
|
|
|
|
1. **标准窗体 (Standard Form)**
|
|
- 用于单一数据实体的 CRUD 操作
|
|
- 包含字段、按钮、表格等基本控件
|
|
- 适用于简单的数据录入和查询场景
|
|
|
|
2. **列表窗体 (List Form)**
|
|
- 用于展示多条记录的列表
|
|
- 支持排序、筛选、分页功能
|
|
- 可配置列显示和隐藏
|
|
|
|
3. **报表窗体 (Report Form)**
|
|
- 用于生成统计报表
|
|
- 支持图表展示
|
|
- 可导出 Excel、PDF 格式
|
|
|
|
4. **流程窗体 (Workflow Form)**
|
|
- 用于业务流程处理
|
|
- 包含审批、流转、会签等功能
|
|
- 支持流程状态跟踪
|
|
|
|
## 标准字段 (Standard Fields)
|
|
|
|
系统预定义以下标准字段类型:
|
|
|
|
1. **文本字段**
|
|
- ShortText: 短文本 (最多 255 字符)
|
|
- LongText: 长文本 (最多 4000 字符)
|
|
- Memo: 备注文本 (不限长度)
|
|
|
|
2. **数值字段**
|
|
- Integer: 整数
|
|
- Decimal: 小数 (可配置精度)
|
|
- Currency: 货币 (带币种符号)
|
|
|
|
3. **日期字段**
|
|
- Date: 日期
|
|
- DateTime: 日期时间
|
|
- Time: 时间
|
|
|
|
4. **选择字段**
|
|
- Dropdown: 下拉选择
|
|
- Radio: 单选
|
|
- Checkbox: 复选框
|
|
- MultiSelect: 多选
|
|
|
|
5. **关联字段**
|
|
- Lookup: 查找关联
|
|
- Reference: 引用关联
|
|
- Master-Detail: 主从关联
|
|
|
|
## 配置流程 (Configuration Process)
|
|
|
|
### 1. 需求分析
|
|
- 明确业务场景
|
|
- 确定窗体类型
|
|
- 梳理字段清单
|
|
|
|
### 2. 窗体设计
|
|
- 创建新窗体
|
|
- 配置窗体属性
|
|
- 添加字段控件
|
|
|
|
### 3. 字段配置
|
|
- 选择字段类型
|
|
- 设置字段属性 (必填、只读、默认值等)
|
|
- 配置验证规则
|
|
|
|
### 4. 权限设置
|
|
- 配置角色权限
|
|
- 设置数据访问范围
|
|
- 配置操作权限
|
|
|
|
### 5. 测试验证
|
|
- 功能测试
|
|
- 权限测试
|
|
- 性能测试
|
|
|
|
### 6. 发布上线
|
|
- 提交发布申请
|
|
- 通过审批流程
|
|
- 正式发布
|
|
|
|
## 常用术语 (Common Terms)
|
|
|
|
- **窗体 (Form)**: 用户界面的基本单元,用于数据展示和操作
|
|
- **字段 (Field)**: 窗体中的数据项,对应数据库列
|
|
- **控件 (Control)**: 窗体上的可视化元素
|
|
- **数据源 (Data Source)**: 窗体绑定的数据表或查询
|
|
- **动作 (Action)**: 窗体上的操作按钮
|
|
- **验证 (Validation)**: 数据输入的合法性检查
|
|
- **权限 (Permission)**: 用户对资源的访问控制
|
|
- **工作流 (Workflow)**: 业务流程的自动化流转
|
|
|
|
## 最佳实践 (Best Practices)
|
|
|
|
1. **字段命名规范**
|
|
- 使用英文命名,遵循下划线分隔
|
|
- 字段名应清晰表达业务含义
|
|
- 避免使用系统保留字
|
|
|
|
2. **性能优化**
|
|
- 列表窗体配置合理的分页大小
|
|
- 为常用查询字段建立索引
|
|
- 避免在窗体中加载过多数据
|
|
|
|
3. **用户体验**
|
|
- 必填字段应明确标识
|
|
- 提供清晰的错误提示
|
|
- 常用操作应放在明显位置
|
|
|
|
4. **安全性**
|
|
- 敏感数据应设置访问权限
|
|
- 用户输入应进行验证
|
|
- 定期审计权限配置
|
|
"""
|
|
|
|
|
|
def main() -> None:
|
|
"""Initialize knowledge base with sample documents."""
|
|
logger.info("Starting knowledge base initialization...")
|
|
|
|
try:
|
|
# Initialize RAG engine
|
|
logger.info("Initializing RAG engine...")
|
|
rag = RAGEngine()
|
|
|
|
# Add platform basics document
|
|
logger.info("Adding platform basics document...")
|
|
metadata = {
|
|
"title": "平台基础知识",
|
|
"category": "platform",
|
|
"language": "zh-CN",
|
|
"version": "1.0"
|
|
}
|
|
|
|
chunks_added = rag.add_document(
|
|
doc_id="platform_basics",
|
|
content=PLATFORM_BASICS_CONTENT,
|
|
metadata=metadata
|
|
)
|
|
|
|
logger.success(
|
|
f"Knowledge base initialized successfully! "
|
|
f"Added {chunks_added} chunks from 'platform_basics' document."
|
|
)
|
|
|
|
except Exception as e:
|
|
logger.error(f"Failed to initialize knowledge base: {e}")
|
|
raise
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|