瀏覽代碼

fix(api-v13): 补全 makeContentObj 的 wbwChannels 填充,修复 wbw 保存 403

编辑模式下 origin 句子的 channel.id 一直停留在系统 channel _System_Wbw_VRI_,
导致前端提交 wbw 时 channel_id 指向系统 channel,非 owner 用户被 403 拒绝。

根因:把 CorpusController 抽成 PaliContentService 时,wbwChannels 的填充逻辑
被留在了 CorpusController(且填的是它自己的属性,从不生效),PaliContentService
里的 wbwChannels 从未赋值。这里按原意图补上:取第一个 translation channel 作为
wbw 的读写目标,无 translation channel 时回落到系统原文。

顺带:恢复 CorpusController 里那份死代码本应表达的「默认 wbw channel 是第一个
translation channel」行为。
visuddhinanda 2 周之前
父節點
當前提交
73590a65e5
共有 1 個文件被更改,包括 12 次插入 和 0 次删除
  1. 12 0
      api-v13/app/Services/PaliContentService.php

+ 12 - 0
api-v13/app/Services/PaliContentService.php

@@ -178,6 +178,18 @@ class PaliContentService
     {
         $content = [];
 
+        // 逐词解析(wbw)默认使用第一个 translation channel 的数据。
+        // 系统原文 channel 固定在末尾(见 CorpusController / ChapterContentController 的约定),
+        // 这里从 indexChannel 挑出 translation channel 作为 wbw 的读写目标;
+        // 没有 translation channel 时(如直接编辑系统原文)保持为空,回落到系统原文。
+        $this->wbwChannels = [];
+        foreach ($indexChannel as $channelId => $info) {
+            if ($info->type === 'translation') {
+                $this->wbwChannels[] = $channelId;
+                break;
+            }
+        }
+
         // 获取句子编号列表
         $paraIndex = [];
         foreach ($record as $value) {