deving
This commit is contained in:
+36
-4
@@ -246,12 +246,44 @@ async def history_page(request: Request):
|
|||||||
|
|
||||||
@router.get("/result/{task_id}")
|
@router.get("/result/{task_id}")
|
||||||
@router.post("/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, "任务不存在")
|
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
|
from fastapi.templating import Jinja2Templates
|
||||||
import os
|
import os
|
||||||
@@ -260,7 +292,7 @@ async def result_page(request: Request, task_id: str):
|
|||||||
templates = Jinja2Templates(directory=templates_dir)
|
templates = Jinja2Templates(directory=templates_dir)
|
||||||
return templates.TemplateResponse("result.html", {
|
return templates.TemplateResponse("result.html", {
|
||||||
"request": request,
|
"request": request,
|
||||||
"task": task,
|
"task": task_data,
|
||||||
"pythonocc_available": True,
|
"pythonocc_available": True,
|
||||||
"version": "3.0.0"
|
"version": "3.0.0"
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user