Преглед на файлове

fix: 修复关系保存失败的问题

问题:Python 返回的关系数据使用 snake_case 字段名,
而 Java 期望 camelCase 字段名(fromEntityId, toEntityId)

修复:
- 在 Pydantic 模型 Config 中添加 by_alias=True
- 确保 .dict() 调用时使用 by_alias=True
- 涉及 EntityInfo, PositionInfo, RelationInfo, NerResponse
何文松 преди 1 месец
родител
ревизия
3482332cba

+ 2 - 0
python-services/ner-service/app/models/request.py

@@ -15,6 +15,7 @@ class PositionInfo(BaseModel):
     
     class Config:
         populate_by_name = True
+        by_alias = True
 
 
 class EntityInfo(BaseModel):
@@ -29,6 +30,7 @@ class EntityInfo(BaseModel):
     
     class Config:
         populate_by_name = True
+        by_alias = True
 
 
 class NerRequest(BaseModel):

+ 4 - 0
python-services/ner-service/app/models/response.py

@@ -17,6 +17,8 @@ class RelationInfo(BaseModel):
     
     class Config:
         populate_by_name = True
+        # 序列化时默认使用 alias (camelCase)
+        by_alias = True
 
 
 class NerResponse(BaseModel):
@@ -32,6 +34,8 @@ class NerResponse(BaseModel):
     
     class Config:
         populate_by_name = True
+        # 序列化时默认使用 alias (camelCase)
+        by_alias = True
 
     @classmethod
     def success_response(cls, document_id: str, entities: List[EntityInfo], 

+ 1 - 1
python-services/ner-service/app/routers/ner.py

@@ -270,7 +270,7 @@ async def _process_ner_task(
             _tasks[task_id]["status"] = "completed"
             _tasks[task_id]["progress"] = 100
             _tasks[task_id]["message"] = f"处理完成: {len(all_entities)} 个实体, {len(all_relations)} 个关系"
-            _tasks[task_id]["result"] = response.dict()
+            _tasks[task_id]["result"] = response.dict(by_alias=True)
             _tasks[task_id]["updated_at"] = time.time()
         
         logger.info(f"异步 NER 任务完成: task_id={task_id}, document_id={document_id}, "