@@ -790,6 +831,8 @@ export const ModelRatioVisualEditor = memo(
prevProps.audioCompletionRatio === nextProps.audioCompletionRatio &&
prevProps.billingMode === nextProps.billingMode &&
prevProps.billingExpr === nextProps.billingExpr &&
+ prevProps.candidateModelNames === nextProps.candidateModelNames &&
+ prevProps.filterMode === nextProps.filterMode &&
prevProps.onChange === nextProps.onChange &&
prevProps.onSave === nextProps.onSave &&
prevProps.isSaving === nextProps.isSaving
diff --git a/web/default/src/features/system-settings/models/ratio-settings-card.tsx b/web/default/src/features/system-settings/models/ratio-settings-card.tsx
index 767b8dfe..d705dfae 100644
--- a/web/default/src/features/system-settings/models/ratio-settings-card.tsx
+++ b/web/default/src/features/system-settings/models/ratio-settings-card.tsx
@@ -136,7 +136,12 @@ const createGroupSchema = (t: Translate) =>
type ModelFormValues = z.infer>
type GroupFormValues = z.infer>
-type RatioTabId = 'models' | 'groups' | 'tool-prices' | 'upstream-sync'
+type RatioTabId =
+ | 'models'
+ | 'unset-models'
+ | 'groups'
+ | 'tool-prices'
+ | 'upstream-sync'
type RatioSettingsCardProps = {
modelDefaults: ModelFormValues
@@ -392,6 +397,7 @@ export function RatioSettingsCard({
const tabLabels: Record = {
models: 'Model prices',
+ 'unset-models': 'Unset price models',
groups: 'Group ratios',
'tool-prices': 'Tool prices',
'upstream-sync': 'Upstream price sync',
@@ -402,11 +408,12 @@ export function RatioSettingsCard({
2: 'grid-cols-2',
3: 'grid-cols-3',
4: 'grid-cols-4',
+ 5: 'grid-cols-5',
}[visibleTabs.length] ?? 'grid-cols-4'
const defaultTab = visibleTabs[0] ?? 'models'
const renderTabContent = (tab: RatioTabId) => {
- if (tab === 'models') {
+ if (tab === 'models' || tab === 'unset-models') {
return (
)
}
diff --git a/web/default/src/i18n/locales/en.json b/web/default/src/i18n/locales/en.json
index 2d0687f7..a9f5cec0 100644
--- a/web/default/src/i18n/locales/en.json
+++ b/web/default/src/i18n/locales/en.json
@@ -2925,6 +2925,7 @@
"No models to add": "No models to add",
"No models to copy": "No models to copy",
"No models to remove": "No models to remove",
+ "No models with unset prices": "No models with unset prices",
"No new models to add": "No new models to add",
"No new models yet": "No new models yet",
"No nodes": "No nodes",
@@ -4764,6 +4765,7 @@
"Unlimited Quota": "Unlimited Quota",
"Unsaved changes": "Unsaved changes",
"Unset price": "Unset price",
+ "Unset price models": "Unset price models",
"Until": "Until",
"Untitled": "Untitled",
"Untrusted upstream data:": "Untrusted upstream data:",
diff --git a/web/default/src/i18n/locales/fr.json b/web/default/src/i18n/locales/fr.json
index dbb6b7c1..72157673 100644
--- a/web/default/src/i18n/locales/fr.json
+++ b/web/default/src/i18n/locales/fr.json
@@ -2925,6 +2925,7 @@
"No models to add": "Aucun modèle à ajouter",
"No models to copy": "Aucun modèle à copier",
"No models to remove": "Aucun modèle à supprimer",
+ "No models with unset prices": "Aucun modèle sans prix",
"No new models to add": "Aucun nouveau modèle à ajouter",
"No new models yet": "Pas encore de nouveaux modèles",
"No nodes": "Aucun nœud",
@@ -4764,6 +4765,7 @@
"Unlimited Quota": "Quota illimité",
"Unsaved changes": "Modifications non enregistrées",
"Unset price": "Prix non défini",
+ "Unset price models": "Modèles sans prix",
"Until": "Jusqu'au",
"Untitled": "Sans titre",
"Untrusted upstream data:": "Données amont non fiables :",
diff --git a/web/default/src/i18n/locales/ja.json b/web/default/src/i18n/locales/ja.json
index 08354711..9845303e 100644
--- a/web/default/src/i18n/locales/ja.json
+++ b/web/default/src/i18n/locales/ja.json
@@ -2925,6 +2925,7 @@
"No models to add": "追加するモデルがありません",
"No models to copy": "コピーするモデルがありません",
"No models to remove": "削除するモデルがありません",
+ "No models with unset prices": "価格未設定のモデルはありません",
"No new models to add": "追加する新しいモデルはありません",
"No new models yet": "新しいモデルはまだありません",
"No nodes": "ノードなし",
@@ -4764,6 +4765,7 @@
"Unlimited Quota": "無制限のクォータ",
"Unsaved changes": "未保存の変更",
"Unset price": "価格未設定",
+ "Unset price models": "価格が未設定のモデル",
"Until": "まで",
"Untitled": "無題",
"Untrusted upstream data:": "信頼されていないアップストリームデータ:",
diff --git a/web/default/src/i18n/locales/ru.json b/web/default/src/i18n/locales/ru.json
index 724896b7..9765f086 100644
--- a/web/default/src/i18n/locales/ru.json
+++ b/web/default/src/i18n/locales/ru.json
@@ -2925,6 +2925,7 @@
"No models to add": "Нет моделей для добавления",
"No models to copy": "Нет моделей для копирования",
"No models to remove": "Нет моделей для удаления",
+ "No models with unset prices": "Нет моделей без цены",
"No new models to add": "Нет новых моделей для добавления",
"No new models yet": "Новых моделей пока нет",
"No nodes": "Нет узлов",
@@ -4764,6 +4765,7 @@
"Unlimited Quota": "Неограниченная квота",
"Unsaved changes": "Несохранённые изменения",
"Unset price": "Цена не задана",
+ "Unset price models": "Модели с неустановленной ценой",
"Until": "До",
"Untitled": "Без названия",
"Untrusted upstream data:": "Недоверенные вышестоящие данные:",
diff --git a/web/default/src/i18n/locales/vi.json b/web/default/src/i18n/locales/vi.json
index ab15a0d0..bcef090c 100644
--- a/web/default/src/i18n/locales/vi.json
+++ b/web/default/src/i18n/locales/vi.json
@@ -2925,6 +2925,7 @@
"No models to add": "Không có mô hình để thêm",
"No models to copy": "Không có mô hình nào để sao chép",
"No models to remove": "Không có mô hình để xóa",
+ "No models with unset prices": "Không có mô hình chưa thiết lập giá",
"No new models to add": "Không có mô hình mới để thêm",
"No new models yet": "Chưa có mô hình mới",
"No nodes": "Không có nút",
@@ -4764,6 +4765,7 @@
"Unlimited Quota": "Hạn mức không giới hạn",
"Unsaved changes": "Thay đổi chưa được lưu",
"Unset price": "Chưa đặt giá",
+ "Unset price models": "Mô hình chưa thiết lập giá",
"Until": "Cho đến",
"Untitled": "Không có tiêu đề",
"Untrusted upstream data:": "Dữ liệu nguồn không đáng tin cậy:",
diff --git a/web/default/src/i18n/locales/zh-TW.json b/web/default/src/i18n/locales/zh-TW.json
index e317e742..26addcd7 100644
--- a/web/default/src/i18n/locales/zh-TW.json
+++ b/web/default/src/i18n/locales/zh-TW.json
@@ -2925,6 +2925,7 @@
"No models to add": "無待新增模型",
"No models to copy": "沒有模型可複製",
"No models to remove": "無待刪除模型",
+ "No models with unset prices": "沒有未設定定價的模型",
"No new models to add": "沒有新模型可新增",
"No new models yet": "暫無新模型",
"No nodes": "無節點",
@@ -4764,6 +4765,7 @@
"Unlimited Quota": "無限配額",
"Unsaved changes": "未儲存的變更",
"Unset price": "未設定價格",
+ "Unset price models": "未設定價格模型",
"Until": "至",
"Untitled": "未命名",
"Untrusted upstream data:": "不受信任的上游數據:",
diff --git a/web/default/src/i18n/locales/zh.json b/web/default/src/i18n/locales/zh.json
index 1a12c09f..3da71a04 100644
--- a/web/default/src/i18n/locales/zh.json
+++ b/web/default/src/i18n/locales/zh.json
@@ -2925,6 +2925,7 @@
"No models to add": "无待新增模型",
"No models to copy": "没有模型可复制",
"No models to remove": "无待删除模型",
+ "No models with unset prices": "没有未设置定价的模型",
"No new models to add": "没有新模型可添加",
"No new models yet": "暂无新模型",
"No nodes": "无节点",
@@ -4764,6 +4765,7 @@
"Unlimited Quota": "无限配额",
"Unsaved changes": "未保存的更改",
"Unset price": "未设置价格",
+ "Unset price models": "未设置价格模型",
"Until": "至",
"Untitled": "未命名",
"Untrusted upstream data:": "不受信任的上游数据:",