From 0a804f0e703917ee2138d4af6fcd08c04cb3be23 Mon Sep 17 00:00:00 2001 From: Seefs Date: Tue, 3 Mar 2026 14:00:48 +0800 Subject: [PATCH] fix: refine upstream update ignore UX and detect behavior --- controller/channel_upstream_update.go | 8 ------ .../table/channels/ChannelsColumnDefs.jsx | 4 --- .../channels/modals/EditChannelModal.jsx | 25 +++++++++---------- .../channels/useChannelUpstreamUpdates.jsx | 23 ++++++++++++++++- 4 files changed, 34 insertions(+), 26 deletions(-) diff --git a/controller/channel_upstream_update.go b/controller/channel_upstream_update.go index 701bef78b..1062adb1e 100644 --- a/controller/channel_upstream_update.go +++ b/controller/channel_upstream_update.go @@ -730,14 +730,6 @@ func DetectChannelUpstreamModelUpdates(c *gin.Context) { } settings := channel.GetOtherSettings() - if !settings.UpstreamModelUpdateCheckEnabled { - c.JSON(http.StatusOK, gin.H{ - "success": false, - "message": "该渠道未开启上游模型更新检测", - }) - return - } - modelsChanged, autoAdded, err := checkAndPersistChannelUpstreamModelUpdates(channel, &settings, true, false) if err != nil { common.ApiError(c, err) diff --git a/web/src/components/table/channels/ChannelsColumnDefs.jsx b/web/src/components/table/channels/ChannelsColumnDefs.jsx index e205a729c..e4bb17d15 100644 --- a/web/src/components/table/channels/ChannelsColumnDefs.jsx +++ b/web/src/components/table/channels/ChannelsColumnDefs.jsx @@ -723,10 +723,6 @@ export const getChannelsColumns = ({ name: t('仅检测上游模型更新'), type: 'tertiary', onClick: () => { - if (!upstreamUpdateMeta.enabled) { - showInfo(t('该渠道未开启上游模型更新检测')); - return; - } detectChannelUpstreamUpdates(record); }, }); diff --git a/web/src/components/table/channels/modals/EditChannelModal.jsx b/web/src/components/table/channels/modals/EditChannelModal.jsx index 6f9f699ce..7f89120b9 100644 --- a/web/src/components/table/channels/modals/EditChannelModal.jsx +++ b/web/src/components/table/channels/modals/EditChannelModal.jsx @@ -3291,6 +3291,18 @@ const EditChannelModal = (props) => { inputs.upstream_model_update_last_check_time, )} + + handleInputChange( + 'upstream_model_update_ignored_models', + value, + ) + } + showClear + /> )} @@ -3460,19 +3472,6 @@ const EditChannelModal = (props) => { )} /> - - handleInputChange( - 'upstream_model_update_ignored_models', - value, - ) - } - showClear - /> -
{t('上次检测到可加入模型')}:  {upstreamDetectedModels.length === 0 ? ( diff --git a/web/src/hooks/channels/useChannelUpstreamUpdates.jsx b/web/src/hooks/channels/useChannelUpstreamUpdates.jsx index cdf694330..8569a644e 100644 --- a/web/src/hooks/channels/useChannelUpstreamUpdates.jsx +++ b/web/src/hooks/channels/useChannelUpstreamUpdates.jsx @@ -21,6 +21,23 @@ import { useRef, useState } from 'react'; import { API, showError, showInfo, showSuccess } from '../../helpers'; import { normalizeModelList } from './upstreamUpdateUtils'; +const getManualIgnoredModelCountFromSettings = (settings) => { + let parsed = null; + if (settings && typeof settings === 'object') { + parsed = settings; + } else if (typeof settings === 'string') { + try { + parsed = JSON.parse(settings); + } catch (error) { + parsed = null; + } + } + if (!parsed || typeof parsed !== 'object') { + return 0; + } + return normalizeModelList(parsed.upstream_model_update_ignored_models).length; +}; + export const useChannelUpstreamUpdates = ({ t, refresh }) => { const [showUpstreamUpdateModal, setShowUpstreamUpdateModal] = useState(false); const [upstreamUpdateChannel, setUpstreamUpdateChannel] = useState(null); @@ -115,13 +132,17 @@ export const useChannelUpstreamUpdates = ({ t, refresh }) => { const addedCount = data?.added_models?.length || 0; const removedCount = data?.removed_models?.length || 0; const ignoredCount = data?.ignored_models?.length || 0; + const totalIgnoredCount = getManualIgnoredModelCountFromSettings( + data?.settings, + ); showSuccess( t( - '已处理上游模型更新:加入 {{added}} 个,删除 {{removed}} 个,忽略 {{ignored}} 个', + '已处理上游模型更新:加入 {{added}} 个,删除 {{removed}} 个,本次忽略 {{ignored}} 个,当前已忽略模型 {{totalIgnored}} 个', { added: addedCount, removed: removedCount, ignored: ignoredCount, + totalIgnored: totalIgnoredCount, }, ), );