Files
xiaoxia-saas/packages/application/project_management_use_cases.py
T
API文档维护Agent e3fb518ab2
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Has been cancelled
CI/CD Pipeline / Frontend Lint (pull_request) Has been cancelled
refactor: remove all workspace_id references from codebase
- Remove workspace_id from Pydantic models in project_management routes
- Remove workspace_id from SQLAlchemy and SQLite project management repos
- Remove workspace_id from worker tasks (storage keys, entity creation)
- Remove workspace_id from video dedup and title usage modules
- Remove workspace_id from generation and ingest worker tasks
- Clean workspace_id from all test files and scripts
- Remove workspace-specific test files (list_workspaces, workspace repos)

Task: #14 workspace_id 残留清理
2026-06-27 22:52:09 +08:00

147 lines
4.0 KiB
Python

"""项目管理 Use Cases"""
from packages.domain import Milestone, Task, TaskIssue, TaskPriority, TaskStatus
from packages.ports import MilestoneRepository, TaskIssueRepository, TaskRepository
class CreateTaskUseCase:
"""创建任务用例"""
def __init__(self, task_repo: TaskRepository):
self.task_repo = task_repo
def execute(
self,
project_id: str,
name: str,
description: str = "",
priority: TaskPriority = TaskPriority.MEDIUM,
parent_task_id: str = "",
assignee_user_id: str = "",
) -> Task:
task = Task.create(
project_id=project_id,
name=name,
description=description,
priority=priority,
parent_task_id=parent_task_id,
assignee_user_id=assignee_user_id,
)
return self.task_repo.create(task)
class ListProjectTasksUseCase:
"""获取项目任务列表用例"""
def __init__(self, task_repo: TaskRepository):
self.task_repo = task_repo
def execute(self, project_id: str) -> list[Task]:
return self.task_repo.list_by_project(project_id)
class UpdateTaskStatusUseCase:
"""更新任务状态用例"""
def __init__(self, task_repo: TaskRepository):
self.task_repo = task_repo
def execute(self, task_id: str, new_status: TaskStatus) -> Task:
task = self.task_repo.get_by_id(task_id)
if not task:
raise ValueError(f"Task {task_id} not found")
task.update_status(new_status)
return self.task_repo.update(task)
class UpdateTaskProgressUseCase:
"""更新任务进度用例"""
def __init__(self, task_repo: TaskRepository):
self.task_repo = task_repo
def execute(self, task_id: str, progress: float) -> Task:
task = self.task_repo.get_by_id(task_id)
if not task:
raise ValueError(f"Task {task_id} not found")
task.update_progress(progress)
return self.task_repo.update(task)
class CreateMilestoneUseCase:
"""创建里程碑用例"""
def __init__(self, milestone_repo: MilestoneRepository):
self.milestone_repo = milestone_repo
def execute(
self,
project_id: str,
name: str,
description: str = "",
) -> Milestone:
milestone = Milestone.create(
project_id=project_id,
name=name,
description=description,
)
return self.milestone_repo.create(milestone)
class ListProjectMilestonesUseCase:
"""获取项目里程碑列表用例"""
def __init__(self, milestone_repo: MilestoneRepository):
self.milestone_repo = milestone_repo
def execute(self, project_id: str) -> list[Milestone]:
return self.milestone_repo.list_by_project(project_id)
class CreateTaskIssueUseCase:
"""创建任务问题用例"""
def __init__(self, issue_repo: TaskIssueRepository):
self.issue_repo = issue_repo
def execute(
self,
task_id: str,
project_id: str,
title: str,
description: str = "",
created_by_user_id: str = "",
) -> TaskIssue:
issue = TaskIssue.create(
task_id=task_id,
project_id=project_id,
title=title,
description=description,
created_by_user_id=created_by_user_id,
)
return self.issue_repo.create(issue)
class ListTaskIssuesUseCase:
"""获取任务问题列表用例"""
def __init__(self, issue_repo: TaskIssueRepository):
self.issue_repo = issue_repo
def execute(self, task_id: str) -> list[TaskIssue]:
return self.issue_repo.list_by_task(task_id)
class ResolveTaskIssueUseCase:
"""解决任务问题用例"""
def __init__(self, issue_repo: TaskIssueRepository):
self.issue_repo = issue_repo
def execute(self, issue_id: str) -> TaskIssue:
issue = self.issue_repo.get_by_id(issue_id)
if not issue:
raise ValueError(f"TaskIssue {issue_id} not found")
issue.mark_resolved()
return self.issue_repo.update(issue)