diff --git a/apps/api/app/api/routes/lipsync.py b/apps/api/app/api/routes/lipsync.py index 2d6a98bd2..d13ce50dd 100644 --- a/apps/api/app/api/routes/lipsync.py +++ b/apps/api/app/api/routes/lipsync.py @@ -17,8 +17,6 @@ from datetime import UTC from app.auth import AuthenticatedUser, get_current_user from app.config import settings -from packages.domain.points_rules import calculate_points_cost -from packages.domain.points_service import PointsService from app.dependencies import ( get_db_session, get_voice_clone_profile_repository, @@ -34,6 +32,9 @@ from app.services.mediakit_client import MediaKitError from fastapi import APIRouter, BackgroundTasks, Depends, HTTPException, Query from sqlalchemy.orm import Session +from packages.domain.points_rules import calculate_points_cost +from packages.domain.points_service import PointsService + logger = logging.getLogger(__name__) router = APIRouter() diff --git a/apps/api/app/api/routes/tts.py b/apps/api/app/api/routes/tts.py index 6782a1d33..a01c33d12 100644 --- a/apps/api/app/api/routes/tts.py +++ b/apps/api/app/api/routes/tts.py @@ -41,8 +41,6 @@ from sqlalchemy.orm import Session from packages.adapters.sqlalchemy_impl.tts_job_repository import ( SQLAlchemyTTSJobRepository, ) -from packages.domain.points_rules import calculate_points_cost -from packages.domain.points_service import PointsService from packages.application.cosyvoice_service import CosyVoiceError, CosyVoiceService from packages.application.tts_job.streaming_service import TTSStreamingService from packages.application.tts_job.use_cases import ( @@ -55,6 +53,8 @@ from packages.application.tts_job.use_cases import ( ) from packages.application.tts_job.workflow import TTSWorkflowService from packages.domain import Asset, AssetLibrary, AssetLibraryKind, AssetStatus, ClassificationStatus +from packages.domain.points_rules import calculate_points_cost +from packages.domain.points_service import PointsService from packages.domain.voice_presets import list_voices from packages.ports.asset_library_repository import AssetLibraryRepository from packages.ports.asset_repository import AssetRepository diff --git a/apps/api/app/api/routes/voice_clones.py b/apps/api/app/api/routes/voice_clones.py index fb60e84cc..25a35e041 100755 --- a/apps/api/app/api/routes/voice_clones.py +++ b/apps/api/app/api/routes/voice_clones.py @@ -25,6 +25,7 @@ from app.schemas.voice_clone import ( VoiceCloneStatusResponse, ) from fastapi import APIRouter, Depends, HTTPException, Query, Response, status +from sqlalchemy.orm import Session from packages.adapters.sqlalchemy_impl.voice_clone_profile_repository import ( SQLAlchemyVoiceCloneProfileRepository, @@ -43,7 +44,6 @@ from packages.application.voice_clone.workflow import ( ) from packages.domain.points_rules import calculate_points_cost from packages.domain.points_service import PointsService -from sqlalchemy.orm import Session # remove duplicate _DUMMY_DELETED = () diff --git a/packages/middleware/points_gate.py b/packages/middleware/points_gate.py index 54f8b7187..405fa35ee 100644 --- a/packages/middleware/points_gate.py +++ b/packages/middleware/points_gate.py @@ -81,10 +81,10 @@ def points_gate( return decorator - def _filter_kwargs(func: Callable, kwargs: dict) -> dict: """过滤掉目标函数签名不接受的 kwargs(避免 TypeError)。""" import inspect + try: sig = inspect.signature(func) params = sig.parameters @@ -95,6 +95,7 @@ def _filter_kwargs(func: Callable, kwargs: dict) -> dict: except (ValueError, TypeError): return kwargs + def _extract_kwargs(func: Callable, args: tuple, kwargs: dict) -> dict: """将位置参数映射到函数签名中的参数名,便于统一按 kwargs 提取。""" sig = inspect.signature(func)