فهرست منبع

fix: related-paragraph 查无关联段落时返回空集而不是 500

RelatedParagraphController::index 取到的 $first 可能为 null,紧接着
$first->book_name 就抛异常。实测 book=216&para=99999 返回 500。

related_paragraphs 覆盖 217 部书 63 万行,但抽查六部书的段落覆盖率是
97.9%–99.9%——**每 50 段左右就有 1 段没有 cs6 锚点**,研究流程里撞上是
常态,不是异常输入。返回裸 500 会让客户端分不清「这段没有对应的注释」
和「服务挂了」,这两者的下一步完全不同。

改为返回 ok(rows: [], count: 0),与仓库既有约定一致(ChannelController
::index 查不到时也是空集而非 404)。参数缺失走同一分支。

实测:
  book=216&para=99999  500 → 200 {"rows":[],"count":0}
  book=216&para=512    200,仍返回 3 本关联书(141 义注 / 202 复注 / 216 本文)
  不给参数              500 → 200 空集
visuddhinanda 1 هفته پیش
والد
کامیت
be7fe528a0
1فایلهای تغییر یافته به همراه5 افزوده شده و 0 حذف شده
  1. 5 0
      api-v13/app/Http/Controllers/RelatedParagraphController.php

+ 5 - 0
api-v13/app/Http/Controllers/RelatedParagraphController.php

@@ -51,6 +51,11 @@ class RelatedParagraphController extends Controller
             ->where('para', $request->input('para'))
             ->where('cs_para', '>', 0)
             ->first();
+        if (! $first) {
+            // 该段没有 cs6 锚点(约 2% 的段落如此),或 book/para 传错。
+            // 「没有关联段落」是正常结果,不是错误——返回空集,让客户端能与故障区分开
+            return $this->ok(['rows' => [], 'count' => 0]);
+        }
         $result = RelatedParagraph::where('book_name', $first->book_name)
             ->where('cs_para', $first->cs_para)
             ->orderBy('book_id')