From 1442f92732d7c5311a627a7ba3aaa0bb8ffc539f Mon Sep 17 00:00:00 2001
From: Bin <bin.zheng@slooong.com>
Date: 星期三, 17 十二月 2025 10:49:15 +0800
Subject: [PATCH] 测试脚本

---
 test_coco_export.py |  111 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 111 insertions(+), 0 deletions(-)

diff --git a/test_coco_export.py b/test_coco_export.py
new file mode 100644
index 0000000..14693ac
--- /dev/null
+++ b/test_coco_export.py
@@ -0,0 +1,111 @@
+#!/usr/bin/env python
+"""
+COCO 导出测试脚本
+用于测试 COCO 导出功能并打印详细信息
+"""
+import os
+import sys
+
+# 添加项目路径
+sys.path.insert(0, '/data/label-studio')
+os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'label_studio.core.settings.label_studio')
+
+import django
+django.setup()
+
+from django.conf import settings
+from projects.models import Project
+from data_export.models import DataExport
+from data_export.serializers import ExportDataSerializer
+
+def test_coco_export():
+    """测试 COCO 导出功能"""
+    print("=" * 80)
+    print("COCO 导出测试脚本")
+    print("=" * 80)
+    
+    # 1. 检查配置
+    print("\n[1] 检查配置:")
+    print(f"MEDIA_ROOT: {settings.MEDIA_ROOT}")
+    print(f"UPLOAD_DIR: {settings.UPLOAD_DIR}")
+    print(f"完整上传路径: {os.path.join(settings.MEDIA_ROOT, settings.UPLOAD_DIR)}")
+    print(f"路径是否存在: {os.path.exists(os.path.join(settings.MEDIA_ROOT, settings.UPLOAD_DIR))}")
+    print(f"CONVERTER_DOWNLOAD_RESOURCES 默认值: {settings.CONVERTER_DOWNLOAD_RESOURCES}")
+    
+    upload_dir = os.path.join(settings.MEDIA_ROOT, settings.UPLOAD_DIR)
+    if os.path.exists(upload_dir):
+        print(f"上传目录内容: {os.listdir(upload_dir)}")
+        # 检查项目1的文件夹
+        project1_dir = os.path.join(upload_dir, '1')
+        if os.path.exists(project1_dir):
+            files = os.listdir(project1_dir)
+            print(f"项目1的文件数量: {len(files)}")
+            if files:
+                print(f"示例文件: {files[0]}")
+    
+    # 2. 检查项目
+    print("\n[2] 检查项目:")
+    try:
+        project = Project.objects.get(id=1)
+        print(f"项目 ID: {project.id}")
+        print(f"项目标题: {project.title}")
+        print(f"任务数量: {project.tasks.count()}")
+        print(f"标注数量: {sum(t.annotations.count() for t in project.tasks.all())}")
+    except Project.DoesNotExist:
+        print("错误:项目1不存在")
+        return
+    
+    # 3. 获取任务数据
+    print("\n[3] 获取任务数据:")
+    tasks = project.tasks.all()
+    if tasks.exists():
+        first_task = tasks.first()
+        print(f"第一个任务 ID: {first_task.id}")
+        print(f"任务数据: {first_task.data}")
+        
+        # 检查图片路径
+        if 'image' in first_task.data:
+            image_path = first_task.data['image']
+            print(f"图片路径(在数据中): {image_path}")
+            
+            # 尝试解析路径
+            if image_path.startswith('/data/'):
+                # 移除 /data/ 前缀
+                relative_path = image_path.replace('/data/', '')
+                full_path = os.path.join(settings.MEDIA_ROOT, relative_path)
+                print(f"完整文件路径: {full_path}")
+                print(f"文件是否存在: {os.path.exists(full_path)}")
+                if os.path.exists(full_path):
+                    print(f"文件大小: {os.path.getsize(full_path)} 字节")
+    else:
+        print("警告:项目中没有任务")
+        return
+    
+    # 4. 测试导出
+    print("\n[4] 测试导出:")
+    print("正在序列化任务数据...")
+    task_data = ExportDataSerializer(tasks, many=True).data
+    print(f"序列化的任务数量: {len(task_data)}")
+    
+    if task_data:
+        print("\n第一个任务的数据结构:")
+        first_task_keys = list(task_data[0].keys())
+        print(f"字段: {', '.join(first_task_keys)}")
+        
+        if 'data' in task_data[0]:
+            print(f"data 字段内容: {task_data[0]['data']}")
+    
+    # 5. 检查 label-studio-sdk 版本
+    print("\n[5] 检查依赖:")
+    try:
+        import label_studio_sdk
+        print(f"label-studio-sdk 版本: {label_studio_sdk.__version__}")
+    except:
+        print("警告:无法导入 label_studio_sdk")
+    
+    print("\n" + "=" * 80)
+    print("测试完成")
+    print("=" * 80)
+
+if __name__ == '__main__':
+    test_coco_export()

--
Gitblit v1.9.3