jihuaqiang 1 месяц назад
Родитель
Сommit
9e9edc1411
2 измененных файлов с 37 добавлено и 23 удалено
  1. 29 0
      start.sh
  2. 8 23
      tasks/detail.py

+ 29 - 0
start.sh

@@ -0,0 +1,29 @@
+#!/usr/bin/env bash
+
+set -e
+
+# 切到项目根目录(当前脚本所在目录)
+PROJECT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
+cd "$PROJECT_ROOT"
+
+# 选择 Python 命令
+if command -v python3 >/dev/null 2>&1; then
+  PYTHON=python3
+else
+  PYTHON=python
+fi
+
+# 如果存在虚拟环境则自动激活
+if [ -d ".venv" ]; then
+  # shellcheck source=/dev/null
+  source ".venv/bin/activate"
+fi
+
+# 如果有依赖文件则安装依赖(已安装会自动跳过)
+if [ -f "requirements.txt" ]; then
+  "$PYTHON" -m pip install -r requirements.txt
+fi
+
+echo "Starting FastAPI server on http://localhost:8000 ..."
+"$PYTHON" -m uvicorn main:app --host 0.0.0.0 --port 8100 --reload
+

+ 8 - 23
tasks/detail.py

@@ -38,31 +38,16 @@ def _parse_result_payload(payload: Optional[str]) -> Any:
         return payload
 
 
-def _parse_web_url(web_url: Optional[str]) -> Optional[Dict[str, str]]:
-    """解析结果表中的 web_url 字段,拆分出 pointUrl 和 weightUrl"""
+def _parse_web_url(web_url: Optional[str]) -> Any:
+    """解析结果表中的 web_url 字段(JSON 字符串 -> 对象)"""
     if not web_url:
         return None
 
-    segments = [segment.strip() for segment in web_url.split(",") if segment.strip()]
-    if not segments:
-        return None
-
-    point_url: Optional[str] = None
-    weight_url: Optional[str] = None
-
-    for segment in segments:
-        if "weight_visualization" in segment:
-            weight_url = segment
-        else:
-            point_url = segment
-
-    if not point_url and not weight_url:
-        return None
-
-    return {
-        "pointUrl": point_url or "",
-        "weightUrl": weight_url or ""
-    }
+    try:
+        return json.loads(web_url)
+    except (json.JSONDecodeError, TypeError):
+        # 如果不是合法 JSON,则原样返回,避免接口直接报错
+        return web_url
 
 
 def _fetch_decode_result(task_id: str) -> Optional[Dict[str, Any]]:
@@ -85,7 +70,7 @@ def _build_result_data(
     status: int,
     result: Any = None,
     reason: Optional[str] = None,
-    url: Optional[Dict[str, str]] = None
+    url: Any = None
 ) -> Dict[str, Any]:
     """构建结果数据"""
     data: Dict[str, Any] = {