From 28a30736aeee2c55142a56c88375e887a7fefe16 Mon Sep 17 00:00:00 2001 From: cjw <792430652@qq.com> Date: Mon, 16 Feb 2026 00:52:29 +0800 Subject: [PATCH] deving --- src/api/routes.py | 97 +++++++++++++++++++++++++++++++++++++++++++- static/script.js | 10 ++++- templates/index.html | 9 +++- 3 files changed, 112 insertions(+), 4 deletions(-) diff --git a/src/api/routes.py b/src/api/routes.py index 2a080f5..e7c1350 100644 --- a/src/api/routes.py +++ b/src/api/routes.py @@ -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", diff --git a/static/script.js b/static/script.js index 6a9672f..2a1ba38 100644 --- a/static/script.js +++ b/static/script.js @@ -513,11 +513,17 @@ function getPriorityText(priority) { } function formatParameters(parameters) { + const parameterMap = { + 'min_angle': '最小角度', + 'preferred_angle': '推荐角度' + }; + return Object.entries(parameters).map(([key, value]) => { + const displayKey = parameterMap[key] || key; if (typeof value === 'number') { - return `${key}: ${value.toFixed(2)}`; + return `${displayKey}: ${value.toFixed(2)}`; } - return `${key}: ${value}`; + return `${displayKey}: ${value}`; }).join('; '); } diff --git a/templates/index.html b/templates/index.html index fcf08b0..bce1006 100644 --- a/templates/index.html +++ b/templates/index.html @@ -114,7 +114,14 @@
-

PythonOCC 可用: {{ pythonocc_available }} | 服务版本: 2.0.0

+
+

PythonOCC 可用: {{ pythonocc_available }} | 服务版本: 3.0.0

+
+ +
+