Initial commit: Pixel AI comic/video creation platform
- FastAPI backend with SQLModel, Alembic migrations, AgentScope agents - Next.js 15 frontend with React 19, Tailwind, Zustand, React Flow - Multi-provider AI system (DashScope, Kling, MiniMax, Volcengine, OpenAI, etc.) - All HTTP clients migrated from sync requests to async httpx - Admin-managed API keys via environment variables - SSRF vulnerability fixed in ensure_url()
This commit is contained in:
84
backend/scripts/generate_error_codes_ts.py
Normal file
84
backend/scripts/generate_error_codes_ts.py
Normal file
@@ -0,0 +1,84 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Generate TypeScript ErrorCode enum from Python ErrorCode enum
|
||||
|
||||
Usage:
|
||||
python scripts/generate_error_codes_ts.py > ../frontend/src/lib/errors.ts
|
||||
|
||||
This script synchronizes the frontend ErrorCode enum with the backend definition
|
||||
to ensure consistency across the project.
|
||||
"""
|
||||
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
# Add src to path
|
||||
sys.path.insert(0, str(Path(__file__).parent.parent / "src"))
|
||||
|
||||
from src.utils.errors import ErrorCode
|
||||
|
||||
|
||||
def generate_typescript():
|
||||
lines = [
|
||||
"import { logger } from './utils/logger';",
|
||||
"",
|
||||
"/**",
|
||||
" * Frontend Error Handling Module",
|
||||
" * Provides standardized error codes, user-friendly messages, and retry logic",
|
||||
" *",
|
||||
" * Error codes are synchronized with backend:",
|
||||
" * Format: 4-digit string",
|
||||
" * - 0000: Success",
|
||||
" * - 1xxx: General errors",
|
||||
" * - 2xxx: Business errors",
|
||||
" * - 3xxx: Task errors",
|
||||
" * - 4xxx: AI service errors",
|
||||
" * - 5xxx: Storage errors",
|
||||
" */",
|
||||
"",
|
||||
"/**",
|
||||
" * Error codes matching backend error responses",
|
||||
" * Auto-synchronized with backend/src/utils/errors.py",
|
||||
" */",
|
||||
"export enum ErrorCode {",
|
||||
]
|
||||
|
||||
# Group error codes by category for better organization
|
||||
categories = {
|
||||
"0000": "Success",
|
||||
"1": "General errors",
|
||||
"2": "Business errors",
|
||||
"3": "Task errors",
|
||||
"4": "AI service errors",
|
||||
"5": "Storage errors",
|
||||
}
|
||||
|
||||
current_category = None
|
||||
|
||||
# Add backend error codes
|
||||
for code in ErrorCode:
|
||||
category = code.value[0] if code.value != "0000" else "0000"
|
||||
|
||||
if category != current_category:
|
||||
if current_category is not None:
|
||||
lines.append("")
|
||||
if category in categories:
|
||||
lines.append(f" // {categories[category]} ({category}xxx)")
|
||||
current_category = category
|
||||
|
||||
lines.append(f" {code.name} = '{code.value}',")
|
||||
|
||||
# Add frontend-specific error codes
|
||||
lines.extend([
|
||||
"",
|
||||
" // Frontend-specific errors (not from backend)",
|
||||
" NETWORK_ERROR = 'NET01',",
|
||||
" TIMEOUT_ERROR = 'TIM01',",
|
||||
"}",
|
||||
])
|
||||
|
||||
return "\n".join(lines)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
print(generate_typescript())
|
||||
Reference in New Issue
Block a user