tasks get their own module and list support

This commit is contained in:
estevez.sebastian@gmail.com 2025-07-30 15:56:36 -04:00
parent 4d8748ec75
commit c175eefe8e
3 changed files with 31 additions and 12 deletions

View file

@ -66,13 +66,3 @@ async def upload_context(request: Request, document_service, chat_service, sessi
return JSONResponse(response_data)
async def task_status(request: Request, task_service, session_manager):
"""Get the status of an upload task"""
task_id = request.path_params.get("task_id")
user = request.state.user
task_status_result = task_service.get_task_status(user.user_id, task_id)
if not task_status_result:
return JSONResponse({"error": "Task not found"}, status_code=404)
return JSONResponse(task_status_result)

View file

@ -30,7 +30,7 @@ from session_manager import SessionManager
from auth_middleware import require_auth, optional_auth
# API endpoints
from api import upload, search, chat, auth, connectors
from api import upload, search, chat, auth, connectors, tasks
print("CUDA available:", torch.cuda.is_available())
print("CUDA version PyTorch was built with:", torch.version.cuda)
@ -133,7 +133,14 @@ def create_app():
Route("/tasks/{task_id}",
require_auth(services['session_manager'])(
partial(upload.task_status,
partial(tasks.task_status,
task_service=services['task_service'],
session_manager=services['session_manager'])
), methods=["GET"]),
Route("/tasks",
require_auth(services['session_manager'])(
partial(tasks.all_tasks,
task_service=services['task_service'],
session_manager=services['session_manager'])
), methods=["GET"]),

View file

@ -168,6 +168,28 @@ class TaskService:
"files": file_statuses
}
def get_all_tasks(self, user_id: str) -> list:
"""Get all tasks for a user"""
if user_id not in self.task_store:
return []
tasks = []
for task_id, upload_task in self.task_store[user_id].items():
tasks.append({
"task_id": upload_task.task_id,
"status": upload_task.status.value,
"total_files": upload_task.total_files,
"processed_files": upload_task.processed_files,
"successful_files": upload_task.successful_files,
"failed_files": upload_task.failed_files,
"created_at": upload_task.created_at,
"updated_at": upload_task.updated_at
})
# Sort by creation time, most recent first
tasks.sort(key=lambda x: x["created_at"], reverse=True)
return tasks
def shutdown(self):
"""Cleanup process pool"""
if hasattr(self, 'process_pool'):