diff --git a/alembic/versions/003_add_project_titles.py b/alembic/versions/003_add_project_titles.py index 2b5b09d1a..bd62caa32 100644 --- a/alembic/versions/003_add_project_titles.py +++ b/alembic/versions/003_add_project_titles.py @@ -8,6 +8,7 @@ Create Date: 2026-06-24 from typing import Sequence, Union import sqlalchemy as sa + from alembic import op revision: str = "003" diff --git a/alembic/versions/004_add_project_title_favorite.py b/alembic/versions/004_add_project_title_favorite.py index 7f2cbc2e1..aa24bbeba 100644 --- a/alembic/versions/004_add_project_title_favorite.py +++ b/alembic/versions/004_add_project_title_favorite.py @@ -8,6 +8,7 @@ Create Date: 2026-06-24 from typing import Sequence, Union import sqlalchemy as sa + from alembic import op revision: str = "004" diff --git a/alembic/versions/005_add_generated_video_management_fields.py b/alembic/versions/005_add_generated_video_management_fields.py index 86d3a3b81..242e97248 100644 --- a/alembic/versions/005_add_generated_video_management_fields.py +++ b/alembic/versions/005_add_generated_video_management_fields.py @@ -8,6 +8,7 @@ Create Date: 2026-06-24 from typing import Sequence, Union import sqlalchemy as sa + from alembic import op revision: str = "005" diff --git a/alembic/versions/006_add_edit_plan_tables.py b/alembic/versions/006_add_edit_plan_tables.py index 6a69919b7..1042e8831 100644 --- a/alembic/versions/006_add_edit_plan_tables.py +++ b/alembic/versions/006_add_edit_plan_tables.py @@ -1,6 +1,7 @@ -from alembic import op import sqlalchemy as sa +from alembic import op + revision = "006" down_revision = "005" branch_labels = None diff --git a/apps/api/app/api/routes/assets.py b/apps/api/app/api/routes/assets.py index 5f5e4c833..76d5c050a 100644 --- a/apps/api/app/api/routes/assets.py +++ b/apps/api/app/api/routes/assets.py @@ -1,7 +1,7 @@ from typing import Any -from app.auth import AuthenticatedUser, get_current_user from app.api.routes.permissions import require_workspace_member +from app.auth import AuthenticatedUser, get_current_user from app.dependencies import ( get_asset_library_repository, get_asset_repository, diff --git a/apps/api/app/api/routes/generated_videos.py b/apps/api/app/api/routes/generated_videos.py index f85489a90..a50b1eb41 100644 --- a/apps/api/app/api/routes/generated_videos.py +++ b/apps/api/app/api/routes/generated_videos.py @@ -1,7 +1,7 @@ from typing import Any -from app.auth import AuthenticatedUser, get_current_user from app.api.routes.permissions import require_workspace_member +from app.auth import AuthenticatedUser, get_current_user from app.core.storage import OSSStorageService, get_storage_service from app.dependencies import get_generated_video_repository, get_project_repository, get_workspace_member_repository from app.schemas.generated_video import ( diff --git a/apps/api/app/api/routes/generation_tasks.py b/apps/api/app/api/routes/generation_tasks.py index 3d9c0e454..14e9b5e41 100644 --- a/apps/api/app/api/routes/generation_tasks.py +++ b/apps/api/app/api/routes/generation_tasks.py @@ -1,7 +1,7 @@ from typing import Any -from app.auth import AuthenticatedUser, get_current_user from app.api.routes.permissions import require_workspace_member +from app.auth import AuthenticatedUser, get_current_user from app.core.celery_app import celery_app from app.dependencies import ( get_asset_library_repository, diff --git a/apps/api/app/api/routes/task_center.py b/apps/api/app/api/routes/task_center.py index 95d7b5e41..b20e6f94f 100644 --- a/apps/api/app/api/routes/task_center.py +++ b/apps/api/app/api/routes/task_center.py @@ -2,6 +2,7 @@ from typing import Any from app.api.routes.permissions import require_workspace_member from app.auth import AuthenticatedUser, get_current_user +from app.core.celery_app import celery_app from app.dependencies import ( get_generation_task_repository, get_ingest_job_repository, @@ -9,7 +10,6 @@ from app.dependencies import ( get_workspace_member_repository, ) from app.schemas.task_center import ListProjectTasksResponse, ProjectTaskResponse -from app.core.celery_app import celery_app from fastapi import APIRouter, Depends, HTTPException from packages.application import ( diff --git a/apps/api/app/api/routes/upload.py b/apps/api/app/api/routes/upload.py index e064b8328..e0ee6fd4d 100644 --- a/apps/api/app/api/routes/upload.py +++ b/apps/api/app/api/routes/upload.py @@ -2,6 +2,7 @@ from typing import Any from uuid import uuid4 from app.auth import AuthenticatedUser, get_current_user +from app.config import get_settings from app.core.celery_app import celery_app from app.core.storage import OSSStorageService, get_storage_service from app.dependencies import ( @@ -21,7 +22,6 @@ from fastapi import APIRouter, Depends, File, Form, HTTPException, UploadFile, s from packages.application import GetProjectUseCase, SubmitIngestJobCommand, SubmitIngestJobUseCase from packages.ports.workspace_member_repository import WorkspaceMemberRepository -from app.config import get_settings router = APIRouter() diff --git a/apps/api/app/schemas/edit_plan.py b/apps/api/app/schemas/edit_plan.py index 4610e4bac..445659fd2 100644 --- a/apps/api/app/schemas/edit_plan.py +++ b/apps/api/app/schemas/edit_plan.py @@ -1,4 +1,5 @@ from datetime import datetime + from pydantic import BaseModel, Field diff --git a/apps/api/app/schemas/task_center.py b/apps/api/app/schemas/task_center.py index 44841e449..8873f7010 100644 --- a/apps/api/app/schemas/task_center.py +++ b/apps/api/app/schemas/task_center.py @@ -1,4 +1,5 @@ from datetime import datetime + from pydantic import BaseModel, Field diff --git a/apps/worker/worker_app/tasks/generation.py b/apps/worker/worker_app/tasks/generation.py index 791058811..159253a05 100644 --- a/apps/worker/worker_app/tasks/generation.py +++ b/apps/worker/worker_app/tasks/generation.py @@ -9,9 +9,9 @@ from pathlib import Path from urllib.parse import urlparse import oss2 +from worker_app.celery_app import celery_app from worker_app.core.asset_usage import mark_asset_used_for_generation from worker_app.core.title_usage import mark_title_used_for_generation -from worker_app.celery_app import celery_app from worker_app.db import SessionLocal from packages.adapters.sqlalchemy_impl import ( diff --git a/apps/worker/worker_app/tasks/ingest.py b/apps/worker/worker_app/tasks/ingest.py index babb9a53b..f6ffe9965 100644 --- a/apps/worker/worker_app/tasks/ingest.py +++ b/apps/worker/worker_app/tasks/ingest.py @@ -1,6 +1,7 @@ from datetime import datetime, timezone from worker_app.celery_app import celery_app +from worker_app.core.asset_types import infer_mime_type_from_storage_key from worker_app.db import SessionLocal from packages.adapters.sqlalchemy_impl import ( @@ -8,7 +9,6 @@ from packages.adapters.sqlalchemy_impl import ( SQLAlchemyIngestJobRepository, ) from packages.domain import Asset, AssetStatus, IngestJobStatus -from worker_app.core.asset_types import infer_mime_type_from_storage_key @celery_app.task(name="worker.ingest_asset") diff --git a/scripts/alembic_preflight.py b/scripts/alembic_preflight.py index d8be2b093..08640f8a4 100644 --- a/scripts/alembic_preflight.py +++ b/scripts/alembic_preflight.py @@ -5,7 +5,6 @@ from __future__ import annotations import argparse import os from dataclasses import dataclass - from pathlib import Path from sqlalchemy import create_engine, text diff --git a/scripts/init_phase4_tasks.py b/scripts/init_phase4_tasks.py index 8947c2244..30e8f3cfd 100644 --- a/scripts/init_phase4_tasks.py +++ b/scripts/init_phase4_tasks.py @@ -5,15 +5,16 @@ Phase 4 任务数据初始化脚本 将认证、权限、订阅计费的所有任务录入推进器 """ -import sys import io +import sys sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding="utf-8") -import requests import json from datetime import datetime, timedelta +import requests + API_BASE = "http://47.98.113.167:8089/api/v1" PROJECT_ID = "00000000-0000-0000-0000-000000000001" WORKSPACE_ID = "00000000-0000-0000-0000-000000000001" diff --git a/scripts/init_tracker_data.py b/scripts/init_tracker_data.py index 2cbc77257..c80cbca4c 100644 --- a/scripts/init_tracker_data.py +++ b/scripts/init_tracker_data.py @@ -5,15 +5,16 @@ 将当前项目状态、规则、待办事项录入推进器 """ -import sys import io +import sys sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding="utf-8") -import requests import json from datetime import datetime, timedelta +import requests + API_BASE = "http://47.98.113.167:8089/api/v1" # 临时创建项目和工作空间(实际应该从数据库获取) diff --git a/tests/unit/test_asset_diagnosis.py b/tests/unit/test_asset_diagnosis.py index b62a402bc..555af670b 100644 --- a/tests/unit/test_asset_diagnosis.py +++ b/tests/unit/test_asset_diagnosis.py @@ -4,6 +4,7 @@ from pathlib import Path sys.path.insert(0, str(Path(__file__).resolve().parents[2] / "apps" / "api")) from app.api.routes.asset_diagnosis import _build_diagnosis + from packages.domain import Asset, AssetStatus, ClassificationStatus diff --git a/tests/unit/test_asset_review.py b/tests/unit/test_asset_review.py index 80eb7c99d..d6f27fc3e 100644 --- a/tests/unit/test_asset_review.py +++ b/tests/unit/test_asset_review.py @@ -4,6 +4,7 @@ from pathlib import Path sys.path.insert(0, str(Path(__file__).resolve().parents[2] / "apps" / "api")) from app.api.routes.assets import _apply_asset_review_status + from packages.domain import Asset, AssetStatus diff --git a/tests/unit/test_generation_asset_usage.py b/tests/unit/test_generation_asset_usage.py index c8970825b..0c90fa9ca 100644 --- a/tests/unit/test_generation_asset_usage.py +++ b/tests/unit/test_generation_asset_usage.py @@ -3,9 +3,10 @@ from pathlib import Path sys.path.insert(0, str(Path(__file__).resolve().parents[2] / "apps" / "worker")) -from packages.domain import Asset, AssetStatus from worker_app.core.asset_usage import mark_asset_used_for_generation +from packages.domain import Asset, AssetStatus + def _asset() -> Asset: return Asset.create( diff --git a/tests/unit/test_generation_preflight.py b/tests/unit/test_generation_preflight.py index a0eab4849..58195e5de 100644 --- a/tests/unit/test_generation_preflight.py +++ b/tests/unit/test_generation_preflight.py @@ -7,6 +7,7 @@ from fastapi import HTTPException sys.path.insert(0, str(Path(__file__).resolve().parents[2] / "apps" / "api")) from app.api.routes.generation_tasks import _ensure_library_has_ready_video_assets + from packages.domain import Asset, AssetStatus diff --git a/tests/unit/test_project_title_generation.py b/tests/unit/test_project_title_generation.py index 5488cb00a..09b2dbe92 100644 --- a/tests/unit/test_project_title_generation.py +++ b/tests/unit/test_project_title_generation.py @@ -6,13 +6,13 @@ from types import SimpleNamespace sys.path.insert(0, str(Path(__file__).resolve().parents[2] / "apps" / "api")) sys.path.insert(0, str(Path(__file__).resolve().parents[2] / "apps" / "worker")) +from app.api.routes.generation_tasks import _select_title_id from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker +from worker_app.core.title_usage import mark_title_used_for_generation -from app.api.routes.generation_tasks import _select_title_id from packages.adapters.sqlalchemy_impl.models import Base, ProjectTitleModel from packages.adapters.sqlalchemy_impl.project_title_repository import SQLAlchemyProjectTitleRepository -from worker_app.core.title_usage import mark_title_used_for_generation def _session_and_repository(): diff --git a/tests/unit/test_task_center.py b/tests/unit/test_task_center.py index e9f2adaca..84fcedef1 100644 --- a/tests/unit/test_task_center.py +++ b/tests/unit/test_task_center.py @@ -4,6 +4,7 @@ from pathlib import Path sys.path.insert(0, str(Path(__file__).resolve().parents[2] / "apps" / "api")) from app.api.routes.task_center import _humanize_task_error, _ingest_step + from packages.domain import IngestJob, IngestJobStatus