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:
张鹏
2026-04-29 01:20:12 +08:00
commit f9f4560459
808 changed files with 151724 additions and 0 deletions

View 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())