lxylxy123321 1 час назад
Родитель
Сommit
943b218f60
1 измененных файлов с 29 добавлено и 1 удалено
  1. 29 1
      backend/app/services/annotation_platform_service.py

+ 29 - 1
backend/app/services/annotation_platform_service.py

@@ -219,7 +219,7 @@ async def import_project_dataset(
     3. 保存到 uploads 目录
     4. 写入 DatasetRecord 数据库
     """
-    # 1. 请求导出
+    # 1. 请求导出(先尝试只导出已完成,若为空则回退导出全部)
     export_data = await _request(
         "POST",
         f"/api/v1/open/projects/{project_id}/datasets/download",
@@ -230,6 +230,27 @@ async def import_project_dataset(
     file_name = export_data.get("file_name", f"{project_id}_{format}.json")
     total_exported = export_data.get("total_exported", 0)
 
+    logger.info(
+        f"Annotation export (completed_only=True): total_exported={total_exported}, "
+        f"file_url={file_url}, file_name={file_name}"
+    )
+
+    # 如果已完成数据为空,回退导出全部(包括未完成的)
+    if total_exported == 0 or not file_url:
+        logger.info(f"No completed items found, retrying with completed_only=False")
+        export_data = await _request(
+            "POST",
+            f"/api/v1/open/projects/{project_id}/datasets/download",
+            json={"format": format, "completed_only": False},
+        )
+        file_url = export_data.get("file_url", "")
+        file_name = export_data.get("file_name", f"{project_id}_{format}.json")
+        total_exported = export_data.get("total_exported", 0)
+        logger.info(
+            f"Annotation export (completed_only=False): total_exported={total_exported}, "
+            f"file_url={file_url}, file_name={file_name}"
+        )
+
     if not file_url:
         raise RuntimeError("标注平台未返回下载链接")
 
@@ -254,6 +275,11 @@ async def import_project_dataset(
         resp.raise_for_status()
         file_content = resp.content
 
+    logger.info(
+        f"Downloaded annotation file: {len(file_content)} bytes, "
+        f"content_type={resp.headers.get('content-type', 'unknown')}"
+    )
+
     # 4. 保存到 uploads 目录
     upload_dir = settings.uploads_dir
     upload_dir.mkdir(parents=True, exist_ok=True)
@@ -269,6 +295,8 @@ async def import_project_dataset(
     jsonl_path = _convert_to_jsonl(file_path)
     record_count = _count_records(jsonl_path, "jsonl")
 
+    logger.info(f"Annotation file converted: {jsonl_path.name}, record_count={record_count}")
+
     # 6. 写入数据库(格式统一为 jsonl)
     record_id = str(uuid.uuid4())
     record = DatasetRecord(