[Bug] DatasetSegmentListApi in Service API returns invalid has_more and metadata when page or limit is non-positive
まだ誰も着手していません。
評価
- 難易度
- 2/5
- 見積もり時間
- 1〜3時間
- 初心者へのやさしさ
- 86/100
調査の方向性
api/controllers/service_api/dataset/segment.py の DatasetSegmentListApi.get から始め、api/controllers/service_api/app/annotation.py の AnnotationListApi とページネーション処理を比較します。limit=0 および 0 以下の page 値でリクエストを再現し、返されるデータと has_more、limit、page のメタデータが正規化されたページネーション値を使用していることを確認します。
索引モデルが issue の本文から書いたものです。
説明
Self Checks
- I have read the Contributing Guide and Language Policy.
- This is only for bug report, if you would like to ask a question, please head to Discussions.
- I have searched for existing issues search for existing issues, including closed ones.
- I confirm that I am using English to submit this report, otherwise it will be closed.
- 【中文用户 & Non English User】请使用英语提交,否则会被关闭 :)
- Please do not modify this template :) and fill in all the required fields.
Dify version
1.0.0-dev (main)
Cloud or Self Hosted
Self Hosted (Docker)
Steps to reproduce
- Inspect
DatasetSegmentListApi.getinapi/controllers/service_api/dataset/segment.py. - Notice
pageandlimit = min(args.limit, 100)are read from query arguments without callingclamp_pagination(args.page, args.limit, 100). - Send a GET request to
/v1/datasets/{dataset_id}/documents/{document_id}/segments?limit=0using a valid dataset API key for a document with existing chunks. - Inspect the returned JSON response payload.
✔️ Expected Behavior
DatasetSegmentListApi.get should normalize page and limit using clamp_pagination(args.page, args.limit, 100) (matching sibling endpoints like AnnotationListApi in api/controllers/service_api/app/annotation.py), ensuring effective_page and effective_limit are used consistently for query execution and response metadata fields (has_more, limit, page).
❌ Actual Behavior
Unclamped variables are passed directly to the response metadata:
response["has_more"]evaluates0 * 0 < total, returningtruefor any non-empty document (total > 0).- API consumers using
has_morefor pagination get trapped in infinite request loops. response["limit"]andresponse["page"]return unclamped non-positive numbers (0or negative integers), contradicting the actual returned data array.
- 主要言語
- TypeScript
- スター
- 157k
- フォーク
- 24.7k
- 平均マージ
- 22時間 32分
- マージ済み PR(30日)
- 611
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
langgenius/dify のほかの issue
-
Annotation Reply: a stored score threshold of 0.0 is silently replaced with 1, disabling the feature オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 88/100
langgenius/dify#42639 · コメント 1 件 · リアクション 1 件 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
langgenius/dify#42468 · コメント 1 件 · リアクション 1 件 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 88/100
langgenius/dify#42355 · コメント 1 件 · リアクション 1 件 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 88/100
langgenius/dify#42350 · コメント 1 件 · リアクション 1 件 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
langgenius/dify#42326 · コメント 1 件 · リアクション 1 件 ·
langgenius/dify の issue をすべて見る
似ている issue
-
calcite-components needs triage refactor
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
Esri/calcite-design-system#15203 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 91/100
-
community first-timers-only good first issue hacktoberfest help wanted low hanging fruit up-for-grabs
難易度 1/5 1時間未満 初心者へのやさしさ 95/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
Automattic/studio#4908 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 90/100