diff --git a/data_chain/apps/base/convertor.py b/data_chain/apps/base/convertor.py index fdd2e6f09876e8558efbc22d1e6d720322030a4b..1f14b444901cd8ed8dbc6e8224bb1903bae2ff53 100644 --- a/data_chain/apps/base/convertor.py +++ b/data_chain/apps/base/convertor.py @@ -402,9 +402,11 @@ class Convertor: """将更新分片请求转换为字典""" try: req_dict = { - 'text': req.text, - 'enabled': req.enabled } + if req.text is not None: + req_dict['text'] = req.text + if req.enabled is not None: + req_dict['enabled'] = req.enabled return req_dict except Exception as e: err = "更新分片请求转换为字典失败" @@ -419,7 +421,8 @@ class Convertor: chunk = Chunk( chunkId=chunk_entity.id, chunkType=ChunkType(chunk_entity.type), - text=chunk_entity.text + text=chunk_entity.text, + enabled=chunk_entity.enabled, ) return chunk except Exception as e: diff --git a/data_chain/apps/router/chunk.py b/data_chain/apps/router/chunk.py index f456843123b9c7f006afe78ccb651e7e7d4e3348..990930f598431dff60df9000ffaecf1927898b1c 100644 --- a/data_chain/apps/router/chunk.py +++ b/data_chain/apps/router/chunk.py @@ -44,10 +44,10 @@ async def search_chunks( return SearchChunkResponse(result=search_chunk_msg) -@router.put('/', response_model=UpdateChunkResponse, dependencies=[Depends(verify_user)]) +@router.put('', response_model=UpdateChunkResponse, dependencies=[Depends(verify_user)]) async def update_chunk_by_id(user_sub: Annotated[str, Depends(get_user_sub)], action: Annotated[str, Depends(get_route_info)], - chunk_id: Annotated[list[UUID], Query(alias="chunkId")], + chunk_id: Annotated[UUID, Query(alias="chunkId")], req: Annotated[UpdateChunkRequest, Body()]): if not (await ChunkService.validate_user_action_to_chunk(user_sub, chunk_id, action)): raise Exception("用户没有权限访问该文档的分片") diff --git a/data_chain/apps/service/chunk_service.py b/data_chain/apps/service/chunk_service.py index 49cf06df61f045243d406228c7334b1f15a5d69d..6b843957748f26c2eb384a39837ee45d7dd86922 100644 --- a/data_chain/apps/service/chunk_service.py +++ b/data_chain/apps/service/chunk_service.py @@ -131,8 +131,9 @@ class ChunkService: async def update_chunk_by_id(chunk_id: uuid.UUID, req: UpdateChunkRequest) -> uuid.UUID: try: chunk_dict = await Convertor.convert_update_chunk_request_to_dict(req) - vector = await Embedding.get_embedding(req.text) - chunk_dict["text_vector"] = vector + if req.text: + vector = await Embedding.vectorize_embedding(req.text) + chunk_dict["text_vector"] = vector chunk_entity = await ChunkManager.update_chunk_by_chunk_id(chunk_id, chunk_dict) return chunk_entity.id except Exception as e: diff --git a/data_chain/entities/request_data.py b/data_chain/entities/request_data.py index 52a9153da9208de15384eb94b023109c9a0c5818..4d6f798ee4cae1999176d258487f699e9bd91fe3 100644 --- a/data_chain/entities/request_data.py +++ b/data_chain/entities/request_data.py @@ -131,8 +131,8 @@ class ListChunkRequest(BaseModel): class UpdateChunkRequest(BaseModel): - text: str = Field(default='这是一个默认的分块文本', description="分块文本内容", alias="text") - enabled: bool = Field(default=True, description="分块是否启用") + text: Optional[str] = Field(default=None, description="分块文本内容", alias="text") + enabled: Optional[bool] = Field(default=None, description="分块是否启用") class SearchChunkRequest(BaseModel): diff --git a/data_chain/entities/response_data.py b/data_chain/entities/response_data.py index 820ad638eb29a80048d5f6d1e0f003ec27364c4a..a0cd035e08b697d0b1e244d32b0d2515e6b6f558 100644 --- a/data_chain/entities/response_data.py +++ b/data_chain/entities/response_data.py @@ -279,6 +279,7 @@ class Chunk(BaseModel): chunk_id: uuid.UUID = Field(description="分片ID", alias="chunkId") chunk_type: ChunkType = Field(description="分片类型", alias="chunkType") text: str = Field(description="分片文本") + enabled: bool = Field(description="分片是否启用", alias="enabled") class ListChunkMsg(BaseModel):