From 9e20b102f42d6420eac6600d0fb315db0f78b404 Mon Sep 17 00:00:00 2001 From: cjw <792430652@qq.com> Date: Mon, 16 Feb 2026 02:25:45 +0800 Subject: [PATCH] deving --- src/api/routes.py | 40 ++++++++++++++++++++++++++++++++++++---- 1 file changed, 36 insertions(+), 4 deletions(-) diff --git a/src/api/routes.py b/src/api/routes.py index 0e90d45..b9e6822 100644 --- a/src/api/routes.py +++ b/src/api/routes.py @@ -246,12 +246,44 @@ 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, GeometryData, MoldCavityData, HtmlFile + + # 从数据库查询任务详情 + result = await db_session.execute( + select(ProcessingTask, STPFile, GeometryData, MoldCavityData, HtmlFile) + .select_from(ProcessingTask) + .join(STPFile, ProcessingTask.stp_file_id == STPFile.id) + .outerjoin(GeometryData, STPFile.id == GeometryData.stp_file_id) + .outerjoin(MoldCavityData, STPFile.id == MoldCavityData.stp_file_id) + .outerjoin(HtmlFile, STPFile.id == HtmlFile.stp_file_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, geometry_data, cavity_data, html_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 "", + "geometry_data": geometry_data.geometry_json if geometry_data else {}, + "cavity_data": cavity_data.cavity_json if cavity_data else {}, + "html_file": html_file.file_path if html_file else "" + } from fastapi.templating import Jinja2Templates import os @@ -260,7 +292,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" })