|
|
|
@@ -2175,7 +2175,13 @@ class SegmentService: |
|
|
|
|
|
|
|
@classmethod |
|
|
|
def get_segments( |
|
|
|
cls, document_id: str, tenant_id: str, status_list: list[str] | None = None, keyword: str | None = None |
|
|
|
cls, |
|
|
|
document_id: str, |
|
|
|
tenant_id: str, |
|
|
|
status_list: list[str] | None = None, |
|
|
|
keyword: str | None = None, |
|
|
|
page: int = 1, |
|
|
|
limit: int = 20, |
|
|
|
): |
|
|
|
"""Get segments for a document with optional filtering.""" |
|
|
|
query = DocumentSegment.query.filter( |
|
|
|
@@ -2188,10 +2194,11 @@ class SegmentService: |
|
|
|
if keyword: |
|
|
|
query = query.filter(DocumentSegment.content.ilike(f"%{keyword}%")) |
|
|
|
|
|
|
|
segments = query.order_by(DocumentSegment.position.asc()).all() |
|
|
|
total = len(segments) |
|
|
|
paginated_segments = query.order_by(DocumentSegment.position.asc()).paginate( |
|
|
|
page=page, per_page=limit, max_per_page=100, error_out=False |
|
|
|
) |
|
|
|
|
|
|
|
return segments, total |
|
|
|
return paginated_segments.items, paginated_segments.total |
|
|
|
|
|
|
|
@classmethod |
|
|
|
def update_segment_by_id( |