agent
This commit is contained in:
74
agent/app/api/tasks.py
Normal file
74
agent/app/api/tasks.py
Normal file
@@ -0,0 +1,74 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from fastapi import APIRouter, HTTPException
|
||||
|
||||
from app.storage.repository import Repository
|
||||
|
||||
|
||||
router = APIRouter(prefix="/tasks", tags=["tasks"])
|
||||
repository = Repository()
|
||||
|
||||
|
||||
def _task_response(row: dict) -> dict:
|
||||
return {
|
||||
"taskId": row["id"],
|
||||
"type": row["type"],
|
||||
"appId": row["app_id"],
|
||||
"appName": row["app_name"],
|
||||
"status": row["status"],
|
||||
"progress": row["progress"],
|
||||
"currentStep": row["current_step"],
|
||||
"currentComponentId": row["current_component_id"],
|
||||
"errorMessage": row["error_message"],
|
||||
"createdAt": row["created_at"],
|
||||
"startedAt": row["started_at"],
|
||||
"finishedAt": row["finished_at"],
|
||||
}
|
||||
|
||||
|
||||
@router.get("/{task_id}")
|
||||
def get_task(task_id: str) -> dict:
|
||||
task = repository.get_task(task_id)
|
||||
if not task:
|
||||
raise HTTPException(status_code=404, detail="Task not found")
|
||||
return _task_response(task)
|
||||
|
||||
|
||||
@router.get("/{task_id}/logs")
|
||||
def get_task_logs(task_id: str) -> dict:
|
||||
if not repository.get_task(task_id):
|
||||
raise HTTPException(status_code=404, detail="Task not found")
|
||||
return {
|
||||
"taskId": task_id,
|
||||
"logs": [
|
||||
{
|
||||
"time": item["timestamp"],
|
||||
"level": item["level"],
|
||||
"message": item["message"],
|
||||
}
|
||||
for item in repository.get_task_logs(task_id)
|
||||
],
|
||||
}
|
||||
|
||||
|
||||
@router.get("/{task_id}/components")
|
||||
def get_task_components(task_id: str) -> dict:
|
||||
if not repository.get_task(task_id):
|
||||
raise HTTPException(status_code=404, detail="Task not found")
|
||||
return {
|
||||
"taskId": task_id,
|
||||
"components": [
|
||||
{
|
||||
"componentId": item["component_id"],
|
||||
"type": item["type"],
|
||||
"status": item["status"],
|
||||
"progress": item["progress"],
|
||||
"currentStep": item["current_step"],
|
||||
"errorMessage": item["error_message"],
|
||||
"startedAt": item["started_at"],
|
||||
"finishedAt": item["finished_at"],
|
||||
}
|
||||
for item in repository.get_task_components(task_id)
|
||||
],
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user