semantics
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
# #region TasksRouter [C:3] [TYPE Module] [SEMANTICS fastapi, task, api, search, create-task-request, resolve-task-request]
|
||||
# @BRIEF Defines the FastAPI router for task-related endpoints, allowing clients to create, list, and get the status of tasks.
|
||||
# @LAYER: API
|
||||
# @LAYER API
|
||||
# @RELATION DEPENDS_ON -> [TaskManager]
|
||||
# @RELATION DEPENDS_ON -> [ConfigManager]
|
||||
# @RELATION DEPENDS_ON -> [LLMProviderService]
|
||||
@@ -49,8 +49,8 @@ class ResumeTaskRequest(BaseModel):
|
||||
|
||||
# #region create_task [C:3] [TYPE Function]
|
||||
# @BRIEF Create and start a new task for a given plugin.
|
||||
# @PRE: plugin_id must exist and params must be valid for that plugin.
|
||||
# @POST: A new task is created and started.
|
||||
# @PRE plugin_id must exist and params must be valid for that plugin.
|
||||
# @POST A new task is created and started.
|
||||
# @RELATION CALLS -> [TaskManager]
|
||||
# @RELATION DEPENDS_ON -> [ConfigManager]
|
||||
# @RELATION DEPENDS_ON -> [LLMProviderService]
|
||||
@@ -125,10 +125,10 @@ async def create_task(
|
||||
|
||||
# #region list_tasks [C:2] [TYPE Function]
|
||||
# @BRIEF Retrieve a list of tasks with pagination and optional status filter.
|
||||
# @PRE: task_manager must be available.
|
||||
# @POST: Returns a list of tasks.
|
||||
# @PRE task_manager must be available.
|
||||
# @POST Returns a list of tasks.
|
||||
# @RELATION CALLS -> [TaskManager]
|
||||
# @RELATION BINDS_TO -> [TASK_TYPE_PLUGIN_MAP]
|
||||
# @RELATION BINDS_TO -> [EXT:method:TASK_TYPE_PLUGIN_MAP]
|
||||
@router.get("", response_model=list[Task])
|
||||
async def list_tasks(
|
||||
limit: int = 10,
|
||||
@@ -170,8 +170,8 @@ async def list_tasks(
|
||||
|
||||
# #region get_task [C:2] [TYPE Function]
|
||||
# @BRIEF Retrieve the details of a specific task.
|
||||
# @PRE: task_id must exist.
|
||||
# @POST: Returns task details or raises 404.
|
||||
# @PRE task_id must exist.
|
||||
# @POST Returns task details or raises 404.
|
||||
# @RELATION CALLS -> [TaskManager]
|
||||
@router.get("/{task_id}", response_model=Task)
|
||||
async def get_task(
|
||||
@@ -193,17 +193,17 @@ async def get_task(
|
||||
|
||||
# #region get_task_logs [C:5] [TYPE Function]
|
||||
# @BRIEF Retrieve logs for a specific task with optional filtering.
|
||||
# @PRE: task_id must exist.
|
||||
# @POST: Returns a list of log entries or raises 404.
|
||||
# @PRE task_id must exist.
|
||||
# @POST Returns a list of log entries or raises 404.
|
||||
# @RELATION CALLS -> [TaskManager]
|
||||
# @RELATION DEPENDS_ON -> [LogFilter]
|
||||
# @TEST_CONTRACT: TaskLogQueryInput -> List[LogEntry]
|
||||
# @TEST_SCENARIO: existing_task_logs_filtered -> Returns filtered logs by level/source/search with pagination.
|
||||
# @TEST_FIXTURE: valid_task_with_mixed_logs -> backend/tests/fixtures/task_logs/valid_task_with_mixed_logs.json
|
||||
# @TEST_EDGE: missing_task -> Unknown task_id returns 404 Task not found.
|
||||
# @TEST_EDGE: invalid_level_type -> Non-string/invalid level query rejected by validation or yields empty result.
|
||||
# @TEST_EDGE: pagination_bounds -> offset=0 and limit=1000 remain within API bounds and do not overflow.
|
||||
# @TEST_INVARIANT: logs_only_for_existing_task -> VERIFIED_BY: [existing_task_logs_filtered, missing_task]
|
||||
# @TEST_CONTRACT TaskLogQueryInput -> List[LogEntry]
|
||||
# @TEST_SCENARIO existing_task_logs_filtered -> Returns filtered logs by level/source/search with pagination.
|
||||
# @TEST_FIXTURE valid_task_with_mixed_logs -> backend/tests/fixtures/task_logs/valid_task_with_mixed_logs.json
|
||||
# @TEST_EDGE missing_task -> Unknown task_id returns 404 Task not found.
|
||||
# @TEST_EDGE invalid_level_type -> Non-string/invalid level query rejected by validation or yields empty result.
|
||||
# @TEST_EDGE pagination_bounds -> offset=0 and limit=1000 remain within API bounds and do not overflow.
|
||||
# @TEST_INVARIANT logs_only_for_existing_task -> VERIFIED_BY: [existing_task_logs_filtered, missing_task]
|
||||
@router.get("/{task_id}/logs")
|
||||
async def get_task_logs(
|
||||
task_id: str,
|
||||
@@ -240,8 +240,8 @@ async def get_task_logs(
|
||||
|
||||
# #region get_task_log_stats [C:2] [TYPE Function]
|
||||
# @BRIEF Get statistics about logs for a task (counts by level and source).
|
||||
# @PRE: task_id must exist.
|
||||
# @POST: Returns log statistics or raises 404.
|
||||
# @PRE task_id must exist.
|
||||
# @POST Returns log statistics or raises 404.
|
||||
# @RELATION CALLS -> [TaskManager]
|
||||
# @RELATION DEPENDS_ON -> [LogStats]
|
||||
@router.get("/{task_id}/logs/stats", response_model=LogStats)
|
||||
@@ -285,8 +285,8 @@ async def get_task_log_stats(
|
||||
|
||||
# #region get_task_log_sources [C:2] [TYPE Function]
|
||||
# @BRIEF Get unique sources for a task's logs.
|
||||
# @PRE: task_id must exist.
|
||||
# @POST: Returns list of unique source names or raises 404.
|
||||
# @PRE task_id must exist.
|
||||
# @POST Returns list of unique source names or raises 404.
|
||||
# @RELATION CALLS -> [TaskManager]
|
||||
@router.get("/{task_id}/logs/sources", response_model=list[str])
|
||||
async def get_task_log_sources(
|
||||
@@ -307,8 +307,8 @@ async def get_task_log_sources(
|
||||
|
||||
# #region resolve_task [C:2] [TYPE Function]
|
||||
# @BRIEF Resolve a task that is awaiting mapping.
|
||||
# @PRE: task must be in AWAITING_MAPPING status.
|
||||
# @POST: Task is resolved and resumes execution.
|
||||
# @PRE task must be in AWAITING_MAPPING status.
|
||||
# @POST Task is resolved and resumes execution.
|
||||
# @RELATION CALLS -> [TaskManager]
|
||||
@router.post("/{task_id}/resolve", response_model=Task)
|
||||
async def resolve_task(
|
||||
@@ -330,8 +330,8 @@ async def resolve_task(
|
||||
|
||||
# #region resume_task [C:2] [TYPE Function]
|
||||
# @BRIEF Resume a task that is awaiting input (e.g., passwords).
|
||||
# @PRE: task must be in AWAITING_INPUT status.
|
||||
# @POST: Task resumes execution with provided input.
|
||||
# @PRE task must be in AWAITING_INPUT status.
|
||||
# @POST Task resumes execution with provided input.
|
||||
# @RELATION CALLS -> [TaskManager]
|
||||
@router.post("/{task_id}/resume", response_model=Task)
|
||||
async def resume_task(
|
||||
@@ -353,8 +353,8 @@ async def resume_task(
|
||||
|
||||
# #region clear_tasks [C:2] [TYPE Function]
|
||||
# @BRIEF Clear tasks matching the status filter.
|
||||
# @PRE: task_manager is available.
|
||||
# @POST: Tasks are removed from memory/persistence.
|
||||
# @PRE task_manager is available.
|
||||
# @POST Tasks are removed from memory/persistence.
|
||||
# @RELATION CALLS -> [TaskManager]
|
||||
@router.delete("", status_code=status.HTTP_204_NO_CONTENT)
|
||||
async def clear_tasks(
|
||||
|
||||
Reference in New Issue
Block a user