问题:Python 返回的关系数据使用 snake_case 字段名, 而 Java 期望 camelCase 字段名(fromEntityId, toEntityId) 修复: - 在 Pydantic 模型 Config 中添加 by_alias=True - 确保 .dict() 调用时使用 by_alias=True - 涉及 EntityInfo, PositionInfo, RelationInfo, NerResponse
@@ -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 NerRequest(BaseModel):
@@ -17,6 +17,8 @@ class RelationInfo(BaseModel):
+ # 序列化时默认使用 alias (camelCase)
class NerResponse(BaseModel):
@@ -32,6 +34,8 @@ class NerResponse(BaseModel):
@classmethod
def success_response(cls, document_id: str, entities: List[EntityInfo],
@@ -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}, "