Explorar o código

优化所有模型的展示名(去平台化)

lh hai 1 mes
pai
achega
3030c4d6bf
Modificáronse 2 ficheiros con 47 adicións e 4 borrados
  1. 16 3
      app/Http/Controllers/Anime/AnimeController.php
  2. 31 1
      app/Libs/PointsDisplay.php

+ 16 - 3
app/Http/Controllers/Anime/AnimeController.php

@@ -9,6 +9,7 @@ use App\Consts\ErrorConst;
 use App\Exceptions\ApiException;
 use App\Libs\ApiResponse;
 use App\Libs\GenerationContext;
+use App\Libs\PointsDisplay;
 use App\Libs\Utils;
 use App\Models\MpGenerateVideoTask;
 use App\Services\AIGeneration\AIImageGenerationService;
@@ -65,7 +66,11 @@ class AnimeController extends BaseController
         }
         
         $models = $query->select('model', 'name', 'is_multimodal')->orderBy('order', 'desc')->orderBy('id', 'desc')->get()->map(function ($value) {
-            return (array)$value;
+            $item = (array)$value;
+            // 对外展示名:隐藏供应商字样(如 百度Glm-5.2 → Glm-5.2),备渠道模型追加“(备)”
+            $item['name'] = PointsDisplay::modelName($item['model']);
+
+            return $item;
         })->toArray();
         
         return $this->success($models);
@@ -91,7 +96,11 @@ class AnimeController extends BaseController
         }
         
         $models = $query->select('model', 'name', 'is_multimodal')->orderBy('order', 'desc')->orderBy('id', 'desc')->get()->map(function ($value) {
-            return (array)$value;
+            $item = (array)$value;
+            // 对外展示名:隐藏供应商字样(如 百度Glm-5.2 → Glm-5.2),备渠道模型追加“(备)”
+            $item['name'] = PointsDisplay::modelName($item['model']);
+
+            return $item;
         })->toArray();
         
         return $this->success($models);
@@ -161,7 +170,11 @@ class AnimeController extends BaseController
         }
         
         $models = $query->select('model', 'name', 'is_multimodal')->orderBy('order', 'desc')->orderBy('id', 'desc')->get()->map(function ($value) {
-            return (array)$value;
+            $item = (array)$value;
+            // 对外展示名:隐藏供应商字样(如 百度Glm-5.2 → Glm-5.2),备渠道模型追加“(备)”
+            $item['name'] = PointsDisplay::modelName($item['model']);
+
+            return $item;
         })->toArray();
         
         return $this->success($models);

+ 31 - 1
app/Libs/PointsDisplay.php

@@ -12,6 +12,7 @@ use Illuminate\Support\Facades\DB;
  * - 模型名:隐藏供应商字样(百度/快快AI/智帧/字节跳动等),如百度Seedance2.0 → Seedance2.0
  *   模型展示名优先取配置表(mp_video_models / mp_image_models / mp_text_models)的 name,
  *   配置缺失时回退内置映射,仍未命中则仅剥离供应商前缀原样返回。
+ *   备渠道模型(seed-2 开头)追加“(备)”,避免与主渠道模型同名。
  * - 分辨率:视频显示 480p/720p/1080p/4k 与 超分720p/超分1080p;图片显示 实际宽*高(如 1600*2848);
  *   其他类型(AI对话/积分发放等)返回空串。
  */
@@ -38,6 +39,13 @@ class PointsDisplay
     ];
 
     /**
+     * 备渠道模型前缀(模型ID):展示名统一追加“(备)”,与主渠道模型区分
+     */
+    const RESERVE_MODEL_PREFIXES = [
+        'seed-2',
+    ];
+
+    /**
      * 配置表缺失时的内置兜底映射(模型ID => 展示名)
      */
     const MODEL_NAME_FALLBACK = [
@@ -112,7 +120,29 @@ class PointsDisplay
             $name = $model;
         }
 
-        return self::stripVendor($name);
+        return self::markReserveChannel($model, self::stripVendor($name));
+    }
+
+    /**
+     * 备渠道标记:命中备渠道前缀(seed-2 开头)的模型,展示名追加“(备)”
+     *
+     * @param string $model 模型ID
+     * @param string $name  已剥离供应商字样的展示名
+     * @return string
+     */
+    private static function markReserveChannel(string $model, string $name): string
+    {
+        if ($name === '' || mb_strpos($name, '(备用)') !== false) {
+            return $name;
+        }
+
+        foreach (self::RESERVE_MODEL_PREFIXES as $prefix) {
+            if ($prefix !== '' && stripos($model, $prefix) === 0) {
+                return $name . '(备用)';
+            }
+        }
+
+        return $name;
     }
 
     /**