From 496161b1f1705fd14a6e508c28dcc235f8ee20d0 Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Mon, 19 Jan 2026 21:52:01 +0800 Subject: [PATCH] =?UTF-8?q?```=20chore(annotation):=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E8=B0=83=E8=AF=95=E6=97=A5=E5=BF=97=E5=88=B0=E6=98=A0=E5=B0=84?= =?UTF-8?q?=E6=9C=8D=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 _to_response_from_row 方法中添加配置和标签配置的调试日志 - 在 _to_response 方法中添加映射ID和配置信息的调试日志 - 添加响应数据键名的调试日志 - 优化配置解析逻辑以确保字典类型的正确检查 ``` --- .../module/annotation/interface/project.py | 5 ++-- .../app/module/annotation/service/mapping.py | 25 ++++++++++++++++--- 2 files changed, 24 insertions(+), 6 deletions(-) diff --git a/runtime/datamate-python/app/module/annotation/interface/project.py b/runtime/datamate-python/app/module/annotation/interface/project.py index 1cd0ce5..efe6121 100644 --- a/runtime/datamate-python/app/module/annotation/interface/project.py +++ b/runtime/datamate-python/app/module/annotation/interface/project.py @@ -225,8 +225,9 @@ async def get_mapping( except HTTPException: raise except Exception as e: - logger.error(f"Error getting mapping: {e}") - raise HTTPException(status_code=500, detail="Internal server error") + import traceback + logger.error(f"Error getting mapping: {e}\n{traceback.format_exc()}") + raise HTTPException(status_code=500, detail=f"Internal server error: {str(e)}") @router.get("/by-source/{dataset_id}", response_model=StandardResponse[PaginatedData[DatasetMappingResponse]]) async def get_mappings_by_source( diff --git a/runtime/datamate-python/app/module/annotation/service/mapping.py b/runtime/datamate-python/app/module/annotation/service/mapping.py index 18b788a..7be5bee 100644 --- a/runtime/datamate-python/app/module/annotation/service/mapping.py +++ b/runtime/datamate-python/app/module/annotation/service/mapping.py @@ -49,13 +49,21 @@ class DatasetMappingService: mapping = row[0] # LabelingProject object dataset_name = row[1] # dataset_name from join + logger.debug(f"_to_response_from_row: mapping.id={mapping.id}") + # Get template_id from mapping template_id = getattr(mapping, 'template_id', None) # 从 configuration JSON 字段中提取 label_config 和 description configuration = getattr(mapping, 'configuration', None) or {} - label_config = configuration.get('label_config') if isinstance(configuration, dict) else None - description = configuration.get('description') if isinstance(configuration, dict) else None + logger.debug(f"_to_response_from_row: configuration type={type(configuration)}, value={configuration}") + + label_config = None + description = None + if isinstance(configuration, dict): + label_config = configuration.get('label_config') + description = configuration.get('description') + logger.debug(f"_to_response_from_row: label_config={label_config[:100] if label_config else None}...") # Optionally fetch full template details template_response = None @@ -94,6 +102,8 @@ class DatasetMappingService: mapping: LabelingProject ORM object include_template: If True, fetch and include full template details """ + logger.debug(f"_to_response: mapping.id={mapping.id}") + # Fetch dataset name dataset_name = None dataset_id = getattr(mapping, 'dataset_id', None) @@ -108,8 +118,14 @@ class DatasetMappingService: # 从 configuration JSON 字段中提取 label_config 和 description configuration = getattr(mapping, 'configuration', None) or {} - label_config = configuration.get('label_config') if isinstance(configuration, dict) else None - description = configuration.get('description') if isinstance(configuration, dict) else None + logger.debug(f"_to_response: configuration type={type(configuration)}, value={configuration}") + + label_config = None + description = None + if isinstance(configuration, dict): + label_config = configuration.get('label_config') + description = configuration.get('description') + logger.debug(f"_to_response: label_config={label_config[:100] if label_config else None}...") # Optionally fetch full template details template_response = None @@ -135,6 +151,7 @@ class DatasetMappingService: "deleted_at": mapping.deleted_at, } + logger.debug(f"_to_response: response_data keys={response_data.keys()}") return DatasetMappingResponse(**response_data) async def create_mapping(