ソースを参照

add Log::error

visuddhinanda 1 年間 前
コミット
1f7785790c
1 ファイル変更24 行追加12 行削除
  1. 24 12
      api-v8/app/Http/Api/AiTaskPrepare.php

+ 24 - 12
api-v8/app/Http/Api/AiTaskPrepare.php

@@ -34,6 +34,7 @@ class AiTaskPrepare
             }
         }
         if (!isset($params['type'])) {
+            Log::error('no $params.type');
             return false;
         }
 
@@ -43,12 +44,14 @@ class AiTaskPrepare
         switch ($params['type']) {
             case 'sentence':
                 if (!isset($params['id'])) {
+                    Log::error('no $params.id');
                     return false;
                 }
                 $sentences[] = explode('-', $params['id']);
                 break;
             case 'para':
                 if (!isset($params['book']) || !isset($params['paragraphs'])) {
+                    Log::error('no $params.book or paragraphs');
                     return false;
                 }
                 $sent = PaliSentence::where('book', $params['book'])
@@ -67,13 +70,14 @@ class AiTaskPrepare
                 }
                 break;
             case 'chapter':
-                if (!isset($params['book']) || !isset($params['para'])) {
+                if (!isset($params['book']) || !isset($params['paragraphs'])) {
+                    Log::error('no $params.book or paragraphs');
                     return false;
                 }
                 $chapterLen = PaliText::where('book', $params['book'])
-                    ->where('paragraph', $params['para'])->value('chapter_len');
+                    ->where('paragraph', $params['paragraphs'])->value('chapter_len');
                 $sent = PaliSentence::where('book', $params['book'])
-                    ->whereBetween('paragraph', [$params['para'], $params['para'] + $chapterLen - 1])
+                    ->whereBetween('paragraph', [$params['paragraphs'], $params['paragraphs'] + $chapterLen - 1])
                     ->orderBy('paragraph')
                     ->orderBy('word_begin')->get();
                 foreach ($sent as $key => $value) {
@@ -115,15 +119,19 @@ class AiTaskPrepare
             $sumLen += $sentence['strlen'];
             $sid = implode('-', $sentence['id']);
             Log::debug($sid);
+            $sentChannelInfo = explode('@', $params['channel']);
+            $channelId = $sentChannelInfo[0];
+            $data = [];
             $data['origin'] = '{{' . $sid . '}}';
             $data['translation'] = '{{sent|id=' . $sid;
-            $data['translation'] .= '|channel=' . $params['channel'];
+            $data['translation'] .= '|channel=' . $channelId;
             $data['translation'] .= '|text=translation}}';
-            if (isset($params['nissaya'])) {
-                $data['nissaya'] = [];
+            if (isset($params['nissaya']) && !empty($params['nissaya'])) {
+                $nissayaArray = [];
                 $nissayaChannels = explode(',', $params['nissaya']);
                 foreach ($nissayaChannels as $key => $channel) {
-                    $channelInfo = ChannelApi::getById($channel);
+                    $nissayaChannel = explode('@', $channel);
+                    $channelInfo = ChannelApi::getById($nissayaChannel[0]);
                     if (!$channelInfo) {
                         continue;
                     }
@@ -132,7 +140,7 @@ class AiTaskPrepare
                         ->where('paragraph', $sentence['id'][1])
                         ->where('word_start', $sentence['id'][2])
                         ->where('word_end', $sentence['id'][3])
-                        ->where('channel_uid', $channel)->first();
+                        ->where('channel_uid', $nissayaChannel[0])->first();
                     if (!$nissayaSent) {
                         continue;
                     }
@@ -142,11 +150,15 @@ class AiTaskPrepare
                     $nissayaData = [];
                     $nissayaData['channel'] = $channelInfo;
                     $nissayaData['data'] = '{{sent|id=' . $sid;
-                    $nissayaData['data'] .= '|channel=' . $channel;
+                    $nissayaData['data'] .= '|channel=' . $nissayaChannel[0];
                     $nissayaData['data'] .= '|text=translation}}';
-                    $data['nissaya'][] = $nissayaData;
+                    $nissayaArray[] = $nissayaData;
                 }
             }
+            if (isset($nissayaArray) && count($nissayaArray) > 0) {
+                $data['nissaya'] = $nissayaArray;
+            }
+            Log::debug('mustache render', ['tpl' => $description, 'data' => $data]);
             $content = $m->render($description, $data);
             $prompt = $mdRender->convert($content, []);
             //gen mq
@@ -165,10 +177,10 @@ class AiTaskPrepare
                     'paragraph' => $sentence['id'][1],
                     'word_start' => $sentence['id'][2],
                     'word_end' => $sentence['id'][3],
-                    'channel_uid' => $params['channel'],
+                    'channel_uid' => $channelId,
                     'content' => $prompt,
                     'content_type' => 'markdown',
-                    'access_token' => $params['token'],
+                    'access_token' => $sentChannelInfo[1] ?? $params['token'],
                 ],
             ];
             array_push($mqData, $aiMqData);