diff --git a/src/api/routes.py b/src/api/routes.py index 0e90d45..9803f4a 100644 --- a/src/api/routes.py +++ b/src/api/routes.py @@ -246,12 +246,37 @@ async def history_page(request: Request): @router.get("/result/{task_id}") @router.post("/result/{task_id}") -async def result_page(request: Request, task_id: str): +async def result_page(request: Request, task_id: str, db_session: AsyncSession = Depends(get_db_session)): """结果详情页面""" - if task_id not in tasks: + from sqlalchemy import select + from models.database import ProcessingTask, STPFile + + # 从数据库查询任务详情 + result = await db_session.execute( + select(ProcessingTask, STPFile) + .join(STPFile, ProcessingTask.stp_file_id == STPFile.id) + .where(ProcessingTask.task_id == task_id) + ) + + task_record = result.first() + + if not task_record: raise HTTPException(404, "任务不存在") - task = tasks[task_id] + task, stp_file = task_record + + # 构建任务详情数据 + task_data = { + "task_id": task.task_id, + "filename": stp_file.original_filename if stp_file else "", + "file_size": stp_file.file_size if stp_file else 0, + "status": task.status, + "progress": task.progress, + "current_step": task.current_step, + "created_at": task.created_time.isoformat() if task.created_time else "", + "completed_at": task.completed_time.isoformat() if task.completed_time else "", + "error": task.error_message if task.error_message else "" + } from fastapi.templating import Jinja2Templates import os @@ -260,7 +285,7 @@ async def result_page(request: Request, task_id: str): templates = Jinja2Templates(directory=templates_dir) return templates.TemplateResponse("result.html", { "request": request, - "task": task, + "task": task_data, "pythonocc_available": True, "version": "3.0.0" })