deving
This commit is contained in:
+96
-1
@@ -132,6 +132,101 @@ async def debug_tasks():
|
||||
}
|
||||
|
||||
|
||||
@router.get("/api/history")
|
||||
async def get_file_history():
|
||||
"""获取按文件名分组的文件历史记录"""
|
||||
# 按文件名分组
|
||||
file_groups = {}
|
||||
for task_id, task in tasks.items():
|
||||
filename = task.get("filename", "unknown")
|
||||
if filename not in file_groups:
|
||||
file_groups[filename] = []
|
||||
file_groups[filename].append(task)
|
||||
|
||||
# 构建返回数据
|
||||
files = []
|
||||
for filename, file_tasks in file_groups.items():
|
||||
# 按上传时间排序
|
||||
file_tasks.sort(key=lambda x: x.get("upload_time", ""), reverse=True)
|
||||
|
||||
files.append({
|
||||
"filename": filename,
|
||||
"record_count": len(file_tasks),
|
||||
"last_upload": file_tasks[0].get("upload_time", ""),
|
||||
"first_upload": file_tasks[-1].get("upload_time", "") if len(file_tasks) > 1 else ""
|
||||
})
|
||||
|
||||
# 按最后上传时间排序
|
||||
files.sort(key=lambda x: x["last_upload"], reverse=True)
|
||||
|
||||
return {
|
||||
"total_files": len(files),
|
||||
"files": files
|
||||
}
|
||||
|
||||
|
||||
@router.get("/api/history/{filename}")
|
||||
async def get_file_records(filename: str):
|
||||
"""获取指定文件名的所有记录"""
|
||||
# URL解码文件名
|
||||
import urllib.parse
|
||||
decoded_filename = urllib.parse.unquote(filename)
|
||||
|
||||
# 查找匹配的文件记录
|
||||
file_records = []
|
||||
for task_id, task in tasks.items():
|
||||
if task.get("filename", "") == decoded_filename:
|
||||
file_records.append({
|
||||
"task_id": task_id,
|
||||
"filename": task.get("filename", ""),
|
||||
"file_size": task.get("file_size", 0),
|
||||
"upload_time": task.get("upload_time", ""),
|
||||
"status": task.get("status", "unknown"),
|
||||
"completed_at": task.get("completed_at", ""),
|
||||
"geometry_data": task.get("geometry_data"),
|
||||
"cavity_data": task.get("cavity_data")
|
||||
})
|
||||
|
||||
# 按上传时间排序(最新的在前)
|
||||
file_records.sort(key=lambda x: x.get("upload_time", ""), reverse=True)
|
||||
|
||||
return file_records
|
||||
|
||||
|
||||
@router.get("/history")
|
||||
async def history_page(request: Request):
|
||||
"""历史记录页面"""
|
||||
from fastapi.templating import Jinja2Templates
|
||||
import os
|
||||
templates_dir = os.path.join(os.path.dirname(os.path.dirname(os.path.dirname(__file__))), "templates")
|
||||
templates = Jinja2Templates(directory=templates_dir)
|
||||
return templates.TemplateResponse("history.html", {
|
||||
"request": request,
|
||||
"pythonocc_available": True,
|
||||
"version": "3.0.0"
|
||||
})
|
||||
|
||||
|
||||
@router.get("/result/{task_id}")
|
||||
async def result_page(request: Request, task_id: str):
|
||||
"""结果详情页面"""
|
||||
if task_id not in tasks:
|
||||
raise HTTPException(404, "任务不存在")
|
||||
|
||||
task = tasks[task_id]
|
||||
|
||||
from fastapi.templating import Jinja2Templates
|
||||
import os
|
||||
templates_dir = os.path.join(os.path.dirname(os.path.dirname(os.path.dirname(__file__))), "templates")
|
||||
templates = Jinja2Templates(directory=templates_dir)
|
||||
return templates.TemplateResponse("result.html", {
|
||||
"request": request,
|
||||
"task": task,
|
||||
"pythonocc_available": True,
|
||||
"version": "3.0.0"
|
||||
})
|
||||
|
||||
|
||||
async def process_file_with_storage(
|
||||
task_id: str,
|
||||
file_path: str,
|
||||
@@ -289,7 +384,7 @@ async def process_file_core(
|
||||
"width": int(mold_width),
|
||||
"height": int(mold_height)
|
||||
},
|
||||
"mold_material": "Aluminum Alloy 7075",
|
||||
"mold_material": "铝合金7075",
|
||||
"mold_hardness": "HB 150-170",
|
||||
"surface_finish": "Ra 0.8 μm",
|
||||
"parting_line_length": f"{parting_line_length:.2f} mm",
|
||||
|
||||
Reference in New Issue
Block a user