Files
erp-ass/backend/app/models/response.py
dazhuang acd73431ae 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>
2026-03-21 14:23:20 +00:00

133 lines
3.4 KiB
Python

"""Response models for ERP AI Assistant API.
This module defines Pydantic models for API response formatting.
"""
from typing import Any, Optional
from pydantic import BaseModel, Field
class AnalyzeResponse(BaseModel):
"""Response model for requirement analysis.
Attributes:
session_id: Session ID for this analysis
status: Processing status
data: Structured requirement analysis result
"""
session_id: str = Field(..., description="会话ID")
status: str = Field(..., description="处理状态")
data: dict = Field(..., description="结构化需求分析结果")
model_config = {
"json_schema_extra": {
"examples": [
{
"session_id": "session-123",
"status": "success",
"data": {
"功能名称": "销售订单管理",
"功能类型": "列表页面"
}
}
]
}
}
class GenerateResponse(BaseModel):
"""Response model for config generation.
Attributes:
session_id: Session ID
status: Processing status
data: Generated SQL configuration
"""
session_id: str = Field(..., description="会话ID")
status: str = Field(..., description="处理状态")
data: dict = Field(..., description="生成的SQL配置")
model_config = {
"json_schema_extra": {
"examples": [
{
"session_id": "session-123",
"status": "success",
"data": {
"sql_list": ["INSERT INTO SYS_FORM ...", "INSERT INTO SYS_MENU ..."]
}
}
]
}
}
class ExecuteResponse(BaseModel):
"""Response model for config execution.
Attributes:
execution_id: Unique execution ID
status: Execution status
message: Human-readable result message
"""
execution_id: str = Field(..., description="执行ID")
status: str = Field(..., description="执行状态")
message: str = Field(..., description="执行结果消息")
model_config = {
"json_schema_extra": {
"examples": [
{
"execution_id": "exec-456",
"status": "success",
"message": "成功执行 5 条SQL"
}
]
}
}
class ErrorResponse(BaseModel):
"""Response model for errors.
Attributes:
error: Error details dictionary
"""
error: dict = Field(..., description="错误详情")
model_config = {
"json_schema_extra": {
"examples": [
{
"error": {
"code": "VALIDATION_ERROR",
"message": "Invalid input",
"details": "Field 'input_type' must be 'natural_language' or 'structured'"
}
}
]
}
}
class HealthResponse(BaseModel):
"""Response model for health check.
Attributes:
status: Service health status
version: Application version
"""
status: str = Field(..., description="服务状态")
version: str = Field(default="1.0.0", description="版本号")
model_config = {
"json_schema_extra": {
"examples": [{"status": "healthy", "version": "1.0.0"}]
}
}