refactor(task): 拆分 TaskService 并重构任务生命周期

- 将 task 公共协议/上下文/异常/schema 下沉到 core,并迁移 polling 目录
- 新增 execute/submit/video 子模块,拆分同步执行、异步提交流程、错误处理与视频任务操作
- 收敛 TaskService 为门面编排,内部委派到 SyncTaskExecutionService、AsyncTaskSubmitService、VideoTaskOperationsService
- 重构 main 生命周期管理:引入 LifecycleState,拆分启动与关闭流程
- 删除未使用的 TaskExecuteFacadeService 与 TaskSubmitFacadeService

Closes #201

Co-authored-by: AAEE86 <ppk0227@hotmail.com>
This commit is contained in:
fawney19
2026-03-07 15:33:29 +08:00
parent 4cd6e0d10f
commit 239238fe47
47 changed files with 3988 additions and 2447 deletions

View File

@@ -1956,11 +1956,14 @@ async def test_model_failover(
- direct: 直接测试 provider_model_name在当前 Provider 内多 Key 故障转移
"""
from src.core.exceptions import ProviderNotAvailableException
from src.services.candidate.failover import FailoverEngine
from src.services.candidate.policy import RetryMode, RetryPolicy, SkipPolicy
from src.services.candidate.recorder import CandidateRecorder
from src.services.scheduling.candidate_builder import CandidateBuilder
from src.services.scheduling.candidate_sorter import CandidateSorter
from src.services.scheduling.scheduling_config import SchedulingConfig
from src.services.task import TaskService
from src.services.task.core.protocol import AttemptKind, AttemptResult
provider = (
db.query(Provider)

View File

@@ -557,7 +557,7 @@ class ChatHandlerBase(BaseMessageHandler, ABC):
# 统一入口:总是通过 TaskService
from src.services.task import TaskService
from src.services.task.context import TaskMode
from src.services.task.core.context import TaskMode
exec_result = await TaskService(self.db, self.redis).execute(
task_type="chat",

View File

@@ -161,7 +161,7 @@ class ChatSyncExecutor:
# 统一入口:总是通过 TaskService
from src.services.task import TaskService
from src.services.task.context import TaskMode
from src.services.task.core.context import TaskMode
exec_result = await TaskService(handler.db, handler.redis).execute(
task_type="chat",

View File

@@ -162,7 +162,7 @@ class CliStreamMixin:
# 统一入口:总是通过 TaskService
from src.services.task import TaskService
from src.services.task.context import TaskMode
from src.services.task.core.context import TaskMode
exec_result = await TaskService(self.db, self.redis).execute(
task_type="cli",

View File

@@ -482,7 +482,7 @@ class CliSyncMixin:
# 统一入口:总是通过 TaskService
from src.services.task import TaskService
from src.services.task.context import TaskMode
from src.services.task.core.context import TaskMode
exec_result = await TaskService(self.db, self.redis).execute(
task_type="cli",