Skip to content

Commit 609ced0

Browse files
committed
feat(segment): 添加更新文档片段的API接口
在`segment_handler.py`中新增`update_segment`方法,用于更新文档片段信息。同时在`router.py`中添加对应的路由规则,并在`schema/__init__.py`中引入`UpdateSegmentReq`模型。这些改动使得客户端能够通过API更新文档片段的内容。
1 parent e94e8e3 commit 609ced0

4 files changed

Lines changed: 71 additions & 0 deletions

File tree

internal/handler/segment_handler.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
GetSegmentResp,
99
UpdateSegmentEnabledReq,
1010
CreateSegmentReq,
11+
UpdateSegmentReq,
1112
)
1213
from internal.service.segment_service import SegmentService
1314
from pkg.response.response import validate_error_json, success_json, success_message
@@ -68,3 +69,15 @@ def update_segment_enabled(
6869
)
6970

7071
return success_message("修改片段状态成功")
72+
73+
def update_segment(self, dataset_id: UUID, document_id: UUID, segment_id: UUID):
74+
"""根据传递的信息更新文档片段信息"""
75+
# 1.提取请求并校验
76+
req = UpdateSegmentReq()
77+
if not req.validate():
78+
return validate_error_json(req.errors)
79+
80+
# 2.调用服务更新文档片段信息
81+
self.segment_service.update_segment(dataset_id, document_id, segment_id, req)
82+
83+
return success_message("更新文档片段成功")

internal/router/router.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -209,5 +209,11 @@ def register_router(self, app: Flask):
209209
view_func=self.segment_handler.update_segment_enabled,
210210
)
211211

212+
bp.add_url_rule(
213+
"/datasets/<uuid:dataset_id>/documents/<uuid:document_id>/segments/<uuid:segment_id>",
214+
methods=["POST"],
215+
view_func=self.segment_handler.update_segment,
216+
)
217+
212218
# 在应用上去注册蓝图
213219
app.register_blueprint(bp)

internal/schema/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
from .segment_schema import (
1515
GetSegmentsWithPageReq,
1616
GetSegmentsWithPageResp,
17+
UpdateSegmentReq,
1718
)
1819

1920
__all__ = [
@@ -33,4 +34,5 @@
3334
"GetSegmentsWithPageResp",
3435
"HitReq",
3536
"GetDatasetQueriesResp",
37+
"UpdateSegmentReq",
3638
]

storage/log/app.log

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3263,3 +3263,53 @@ WHERE document.dataset_id = %(dataset_id_1)s::UUID
32633263
[2025-05-05 18:59:48,820.820] base.py -> _execute_context line:1843 [INFO]: [cached since 140.7s ago] {'coalesce_2': 0, 'dataset_id_1': UUID('46e14707-57d6-421e-8e6d-fff953592f2b')}
32643264
[2025-05-05 18:59:48,821.821] base.py -> _connection_rollback_impl line:2702 [INFO]: ROLLBACK
32653265
[2025-05-05 18:59:48,821.821] _internal.py -> _log line:97 [INFO]: 127.0.0.1 - - [05/May/2025 18:59:48] "GET /datasets HTTP/1.1" 200 -
3266+
[2025-05-05 19:02:50,917.917] base.py -> _connection_begin_impl line:2699 [INFO]: BEGIN (implicit)
3267+
[2025-05-05 19:02:50,920.920] base.py -> _execute_context line:1843 [INFO]: SELECT api_tool_provider.id AS api_tool_provider_id, api_tool_provider.account_id AS api_tool_provider_account_id, api_tool_provider.name AS api_tool_provider_name, api_tool_provider.icon AS api_tool_provider_icon, api_tool_provider.description AS api_tool_provider_description, api_tool_provider.openapi_schema AS api_tool_provider_openapi_schema, api_tool_provider.headers AS api_tool_provider_headers, api_tool_provider.updated_at AS api_tool_provider_updated_at, api_tool_provider.created_at AS api_tool_provider_created_at
3268+
FROM api_tool_provider
3269+
WHERE api_tool_provider.account_id = %(account_id_1)s::UUID ORDER BY api_tool_provider.created_at DESC
3270+
LIMIT %(param_1)s OFFSET %(param_2)s
3271+
[2025-05-05 19:02:50,920.920] base.py -> _execute_context line:1843 [INFO]: [generated in 0.00028s] {'account_id_1': 'f47ac10b-58cc-4372-a567-0e02b2c3d479', 'param_1': 20, 'param_2': 0}
3272+
[2025-05-05 19:02:50,975.975] base.py -> _execute_context line:1843 [INFO]: SELECT count(*) AS count_1
3273+
FROM (SELECT api_tool_provider.id AS id, api_tool_provider.account_id AS account_id, api_tool_provider.name AS name, api_tool_provider.icon AS icon, api_tool_provider.description AS description, api_tool_provider.openapi_schema AS openapi_schema, api_tool_provider.headers AS headers, api_tool_provider.updated_at AS updated_at, api_tool_provider.created_at AS created_at
3274+
FROM api_tool_provider
3275+
WHERE api_tool_provider.account_id = %(account_id_1)s::UUID) AS anon_1
3276+
[2025-05-05 19:02:50,978.978] base.py -> _execute_context line:1843 [INFO]: [generated in 0.00253s] {'account_id_1': 'f47ac10b-58cc-4372-a567-0e02b2c3d479'}
3277+
[2025-05-05 19:02:50,985.985] base.py -> _execute_context line:1843 [INFO]: SELECT api_tool.id AS api_tool_id, api_tool.account_id AS api_tool_account_id, api_tool.provider_id AS api_tool_provider_id, api_tool.name AS api_tool_name, api_tool.description AS api_tool_description, api_tool.url AS api_tool_url, api_tool.method AS api_tool_method, api_tool.parameters AS api_tool_parameters, api_tool.updated_at AS api_tool_updated_at, api_tool.created_at AS api_tool_created_at
3278+
FROM api_tool
3279+
WHERE api_tool.provider_id = %(provider_id_1)s::UUID
3280+
[2025-05-05 19:02:50,985.985] base.py -> _execute_context line:1843 [INFO]: [generated in 0.00022s] {'provider_id_1': UUID('d9e7c9a8-706a-46f1-9eaa-4c0f060be94a')}
3281+
[2025-05-05 19:02:51,011.011] base.py -> _execute_context line:1843 [INFO]: SELECT api_tool.id AS api_tool_id, api_tool.account_id AS api_tool_account_id, api_tool.provider_id AS api_tool_provider_id, api_tool.name AS api_tool_name, api_tool.description AS api_tool_description, api_tool.url AS api_tool_url, api_tool.method AS api_tool_method, api_tool.parameters AS api_tool_parameters, api_tool.updated_at AS api_tool_updated_at, api_tool.created_at AS api_tool_created_at
3282+
FROM api_tool
3283+
WHERE api_tool.provider_id = %(provider_id_1)s::UUID
3284+
[2025-05-05 19:02:51,011.011] base.py -> _execute_context line:1843 [INFO]: [cached since 0.02611s ago] {'provider_id_1': UUID('634fdfb2-9614-4138-97b4-c1040d1c4ab4')}
3285+
[2025-05-05 19:02:51,013.013] base.py -> _connection_rollback_impl line:2702 [INFO]: ROLLBACK
3286+
[2025-05-05 19:02:51,014.014] _internal.py -> _log line:97 [INFO]: 127.0.0.1 - - [05/May/2025 19:02:51] "GET /api-tools?current_page=1&page_size=20&search_word= HTTP/1.1" 200 -
3287+
[2025-05-05 19:07:34,931.931] base.py -> _connection_begin_impl line:2699 [INFO]: BEGIN (implicit)
3288+
[2025-05-05 19:07:34,932.932] base.py -> _execute_context line:1843 [INFO]: SELECT api_tool_provider.id AS api_tool_provider_id, api_tool_provider.account_id AS api_tool_provider_account_id, api_tool_provider.name AS api_tool_provider_name, api_tool_provider.icon AS api_tool_provider_icon, api_tool_provider.description AS api_tool_provider_description, api_tool_provider.openapi_schema AS api_tool_provider_openapi_schema, api_tool_provider.headers AS api_tool_provider_headers, api_tool_provider.updated_at AS api_tool_provider_updated_at, api_tool_provider.created_at AS api_tool_provider_created_at
3289+
FROM api_tool_provider
3290+
WHERE api_tool_provider.account_id = %(account_id_1)s::UUID ORDER BY api_tool_provider.created_at DESC
3291+
LIMIT %(param_1)s OFFSET %(param_2)s
3292+
[2025-05-05 19:07:34,932.932] base.py -> _execute_context line:1843 [INFO]: [cached since 99.06s ago] {'account_id_1': 'f47ac10b-58cc-4372-a567-0e02b2c3d479', 'param_1': 20, 'param_2': 0}
3293+
[2025-05-05 19:07:34,934.934] base.py -> _execute_context line:1843 [INFO]: SELECT count(*) AS count_1
3294+
FROM (SELECT api_tool_provider.id AS id, api_tool_provider.account_id AS account_id, api_tool_provider.name AS name, api_tool_provider.icon AS icon, api_tool_provider.description AS description, api_tool_provider.openapi_schema AS openapi_schema, api_tool_provider.headers AS headers, api_tool_provider.updated_at AS updated_at, api_tool_provider.created_at AS created_at
3295+
FROM api_tool_provider
3296+
WHERE api_tool_provider.account_id = %(account_id_1)s::UUID) AS anon_1
3297+
[2025-05-05 19:07:34,934.934] base.py -> _execute_context line:1843 [INFO]: [cached since 99s ago] {'account_id_1': 'f47ac10b-58cc-4372-a567-0e02b2c3d479'}
3298+
[2025-05-05 19:07:34,936.936] base.py -> _execute_context line:1843 [INFO]: SELECT api_tool.id AS api_tool_id, api_tool.account_id AS api_tool_account_id, api_tool.provider_id AS api_tool_provider_id, api_tool.name AS api_tool_name, api_tool.description AS api_tool_description, api_tool.url AS api_tool_url, api_tool.method AS api_tool_method, api_tool.parameters AS api_tool_parameters, api_tool.updated_at AS api_tool_updated_at, api_tool.created_at AS api_tool_created_at
3299+
FROM api_tool
3300+
WHERE api_tool.provider_id = %(provider_id_1)s::UUID
3301+
[2025-05-05 19:07:34,936.936] base.py -> _execute_context line:1843 [INFO]: [cached since 98.99s ago] {'provider_id_1': UUID('d9e7c9a8-706a-46f1-9eaa-4c0f060be94a')}
3302+
[2025-05-05 19:07:34,937.937] base.py -> _execute_context line:1843 [INFO]: SELECT api_tool.id AS api_tool_id, api_tool.account_id AS api_tool_account_id, api_tool.provider_id AS api_tool_provider_id, api_tool.name AS api_tool_name, api_tool.description AS api_tool_description, api_tool.url AS api_tool_url, api_tool.method AS api_tool_method, api_tool.parameters AS api_tool_parameters, api_tool.updated_at AS api_tool_updated_at, api_tool.created_at AS api_tool_created_at
3303+
FROM api_tool
3304+
WHERE api_tool.provider_id = %(provider_id_1)s::UUID
3305+
[2025-05-05 19:07:34,937.937] base.py -> _execute_context line:1843 [INFO]: [cached since 99s ago] {'provider_id_1': UUID('634fdfb2-9614-4138-97b4-c1040d1c4ab4')}
3306+
[2025-05-05 19:07:34,939.939] base.py -> _connection_rollback_impl line:2702 [INFO]: ROLLBACK
3307+
[2025-05-05 19:07:34,940.940] _internal.py -> _log line:97 [INFO]: 127.0.0.1 - - [05/May/2025 19:07:34] "GET /api-tools?current_page=1&page_size=20&search_word= HTTP/1.1" 200 -
3308+
[2025-05-05 20:09:08,372.372] _internal.py -> _log line:97 [INFO]: * Detected change in '/Users/wangqun/Desktop/ai/llmops/llmops-api/internal/router/router.py', reloading
3309+
[2025-05-05 20:09:10,050.050] _internal.py -> _log line:97 [INFO]: * Restarting with stat
3310+
[2025-05-05 20:12:15,679.679] _internal.py -> _log line:97 [INFO]: WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
3311+
* Running on http://127.0.0.1:5000
3312+
[2025-05-05 20:12:15,679.679] _internal.py -> _log line:97 [INFO]: Press CTRL+C to quit
3313+
[2025-05-05 20:12:15,680.680] _internal.py -> _log line:97 [INFO]: * Restarting with stat
3314+
[2025-05-05 20:12:39,148.148] _internal.py -> _log line:97 [WARNING]: * Debugger is active!
3315+
[2025-05-05 20:12:39,170.170] _internal.py -> _log line:97 [INFO]: * Debugger PIN: 129-308-032

0 commit comments

Comments
 (0)