24b28bfc89
CI/CD Pipeline / Dedup Check - skip PR tests when covered by push pipeline (pull_request) Successful in 1s
CI/CD Pipeline / Check push changed paths (pull_request) Has been skipped
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 1s
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Frontend Lint (pull_request) Has been skipped
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / PR Build Web Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been skipped
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 17s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 51s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 1m5s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m44s
CI/CD Pipeline / Validate - Style (pull_request) Successful in 1m58s
CI/CD Pipeline / Validate - Python (mypy + alembic) (pull_request) Successful in 1m59s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 2m59s
CI/CD Pipeline / Unit Tests (pull_request) Failing after 6m16s
AI Code Review / AI Code Review (pull_request) Successful in 6m23s
CI/CD Pipeline / Validate - Security (pull_request) Has been cancelled
CI/CD Pipeline / Build Production API Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Production Web Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been cancelled
CI/CD Pipeline / Deploy Production (pull_request) Has been cancelled
CI/CD Pipeline / Production Browser E2E (pull_request) Has been cancelled
CI/CD Pipeline / Canary Release to Production (pull_request) Has been cancelled
CI/CD Pipeline / CI Gate (pull_request) Has been cancelled
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 5m28s
- 新建 ScriptModel (packages/adapters/sqlalchemy_impl/models.py) 字段: id, user_id(indexed), title, content, segments(JSON), tags(JSON), created_at, updated_at - 新建 script_service.py: CRUD 封装,用户隔离,tag 筛选,分页 - 新建 schemas/script.py: Pydantic request/response schemas - 新建 routes/scripts.py: RESTful API (GET/POST/PUT/DELETE /api/v1/scripts) - 新建 alembic 070_add_scripts_table.py: scripts 表 + user_id 索引 - 注册路由到 router.py (prefix=/scripts, tag=ScriptLibrary) - 35 单元测试: service 15 + schema/route 20
180 lines
5.0 KiB
Python
Executable File
180 lines
5.0 KiB
Python
Executable File
from app.api.routes.ai import router as ai_router
|
|
from app.api.routes.asset_diagnosis import router as asset_diagnosis_router
|
|
from app.api.routes.asset_libraries import router as asset_libraries_router
|
|
from app.api.routes.assets import router as assets_router
|
|
from app.api.routes.auth import router as auth_router
|
|
from app.api.routes.chunked_upload import router as chunked_upload_router
|
|
from app.api.routes.classification_jobs import router as classification_jobs_router
|
|
from app.api.routes.cover_templates import router as cover_templates_router
|
|
from app.api.routes.duplication import router as duplication_router
|
|
from app.api.routes.feature_flags import router as feature_flags_router
|
|
from app.api.routes.generation_cover import router as generation_cover_router
|
|
from app.api.routes.generation_preview import router as generation_preview_router
|
|
from app.api.routes.generation_tasks import router as generation_tasks_router
|
|
from app.api.routes.generation_variant_plans import router as generation_variant_plans_router
|
|
from app.api.routes.health import router as health_check_router
|
|
from app.api.routes.ingest_jobs import router as ingest_jobs_router
|
|
from app.api.routes.internal_render import router as internal_render_router
|
|
from app.api.routes.projects import router as projects_router
|
|
from app.api.routes.scripts import router as scripts_router
|
|
from app.api.routes.share import router as share_router
|
|
from app.api.routes.subscription import router as subscription_router
|
|
from app.api.routes.tags import router as tags_router
|
|
from app.api.routes.task_center import router as task_center_router
|
|
from app.api.routes.templates import router as templates_router
|
|
from app.api.routes.templates_editor import router as templates_editor_router
|
|
from app.api.routes.titles import router as titles_router
|
|
from app.api.routes.tts import router as tts_router
|
|
from app.api.routes.upload import router as upload_router
|
|
from app.api.routes.videos import router as videos_router
|
|
from app.api.routes.voice_clones import router as voice_clones_router
|
|
from app.api.routes.voices import router as voices_router
|
|
from fastapi import APIRouter
|
|
|
|
api_router = APIRouter(prefix="/api/v1")
|
|
health_router = APIRouter()
|
|
health_router.include_router(health_check_router)
|
|
|
|
api_router.include_router(
|
|
auth_router,
|
|
tags=["Auth"],
|
|
)
|
|
api_router.include_router(
|
|
projects_router,
|
|
prefix="/projects",
|
|
tags=["Project"],
|
|
)
|
|
api_router.include_router(
|
|
tags_router,
|
|
prefix="/tags",
|
|
tags=["Tag"],
|
|
)
|
|
api_router.include_router(
|
|
cover_templates_router,
|
|
tags=["CoverTemplate"],
|
|
)
|
|
api_router.include_router(
|
|
task_center_router,
|
|
tags=["TaskCenter"],
|
|
)
|
|
api_router.include_router(
|
|
asset_diagnosis_router,
|
|
tags=["AssetDiagnosis"],
|
|
)
|
|
api_router.include_router(
|
|
asset_libraries_router,
|
|
prefix="/asset-libraries",
|
|
tags=["AssetLibrary"],
|
|
)
|
|
api_router.include_router(
|
|
assets_router,
|
|
prefix="/assets",
|
|
tags=["Asset"],
|
|
)
|
|
api_router.include_router(
|
|
ingest_jobs_router,
|
|
prefix="/ingest-jobs",
|
|
tags=["IngestJob"],
|
|
)
|
|
api_router.include_router(
|
|
classification_jobs_router,
|
|
prefix="/classification-jobs",
|
|
tags=["ClassificationJob"],
|
|
)
|
|
api_router.include_router(
|
|
upload_router,
|
|
prefix="/upload",
|
|
tags=["Upload"],
|
|
)
|
|
api_router.include_router(
|
|
chunked_upload_router,
|
|
prefix="/upload/chunk",
|
|
tags=["ChunkedUpload"],
|
|
)
|
|
api_router.include_router(
|
|
generation_tasks_router,
|
|
prefix="/generation",
|
|
tags=["Generation"],
|
|
)
|
|
api_router.include_router(
|
|
generation_preview_router,
|
|
prefix="/generation",
|
|
tags=["Generation"],
|
|
)
|
|
api_router.include_router(
|
|
generation_variant_plans_router,
|
|
prefix="/generation",
|
|
tags=["Generation"],
|
|
)
|
|
api_router.include_router(
|
|
generation_cover_router,
|
|
prefix="/generation",
|
|
tags=["Generation"],
|
|
)
|
|
api_router.include_router(
|
|
titles_router,
|
|
prefix="/titles",
|
|
tags=["TitleLibrary"],
|
|
)
|
|
api_router.include_router(
|
|
voices_router,
|
|
prefix="/voices",
|
|
tags=["VoiceLibrary"],
|
|
)
|
|
api_router.include_router(
|
|
voice_clones_router,
|
|
prefix="/voice-clones",
|
|
tags=["VoiceClone"],
|
|
)
|
|
api_router.include_router(
|
|
videos_router,
|
|
tags=["VideoCenter"],
|
|
)
|
|
api_router.include_router(
|
|
share_router,
|
|
tags=["Share"],
|
|
)
|
|
api_router.include_router(
|
|
duplication_router,
|
|
prefix="/duplication",
|
|
tags=["Duplication"],
|
|
)
|
|
api_router.include_router(
|
|
subscription_router,
|
|
prefix="/subscription",
|
|
tags=["Subscription"],
|
|
)
|
|
api_router.include_router(
|
|
templates_router,
|
|
prefix="/templates",
|
|
tags=["Template"],
|
|
)
|
|
api_router.include_router(
|
|
templates_editor_router,
|
|
prefix="/templates/{template_id}/editor",
|
|
tags=["TemplateEditor"],
|
|
)
|
|
api_router.include_router(
|
|
tts_router,
|
|
prefix="/tts",
|
|
tags=["TTS"],
|
|
)
|
|
api_router.include_router(
|
|
ai_router,
|
|
prefix="/ai",
|
|
tags=["AI"],
|
|
)
|
|
api_router.include_router(
|
|
feature_flags_router,
|
|
tags=["Internal"],
|
|
)
|
|
api_router.include_router(
|
|
internal_render_router,
|
|
tags=["Internal"],
|
|
)
|
|
api_router.include_router(
|
|
scripts_router,
|
|
prefix="/scripts",
|
|
tags=["ScriptLibrary"],
|
|
)
|