feat: auto fetch upstream models (#2979)
* feat: add upstream model update detection with scheduled sync and manual apply flows * feat: support upstream model removal sync and selectable deletes in update modal * feat: add detect-only upstream updates and show compact +/- model badges * feat: improve upstream model update UX * feat: improve upstream model update UX * fix: respect model_mapping in upstream update detection * feat: improve upstream update modal to prevent missed add/remove actions * feat: add admin upstream model update notifications with digest and truncation * fix: avoid repeated partial-submit confirmation in upstream update modal * feat: improve ui/ux * feat: suppress upstream update alerts for unchanged channel-count within 24h * fix: submit upstream update choices even when no models are selected * feat: improve upstream model update flow and split frontend updater * fix merge conflict
This commit is contained in:
@@ -86,6 +86,7 @@ const PersonalSetting = () => {
|
||||
gotifyUrl: '',
|
||||
gotifyToken: '',
|
||||
gotifyPriority: 5,
|
||||
upstreamModelUpdateNotifyEnabled: false,
|
||||
acceptUnsetModelRatioModel: false,
|
||||
recordIpLog: false,
|
||||
});
|
||||
@@ -158,6 +159,8 @@ const PersonalSetting = () => {
|
||||
gotifyToken: settings.gotify_token || '',
|
||||
gotifyPriority:
|
||||
settings.gotify_priority !== undefined ? settings.gotify_priority : 5,
|
||||
upstreamModelUpdateNotifyEnabled:
|
||||
settings.upstream_model_update_notify_enabled === true,
|
||||
acceptUnsetModelRatioModel:
|
||||
settings.accept_unset_model_ratio_model || false,
|
||||
recordIpLog: settings.record_ip_log || false,
|
||||
@@ -426,6 +429,8 @@ const PersonalSetting = () => {
|
||||
const parsed = parseInt(notificationSettings.gotifyPriority);
|
||||
return isNaN(parsed) ? 5 : parsed;
|
||||
})(),
|
||||
upstream_model_update_notify_enabled:
|
||||
notificationSettings.upstreamModelUpdateNotifyEnabled === true,
|
||||
accept_unset_model_ratio_model:
|
||||
notificationSettings.acceptUnsetModelRatioModel,
|
||||
record_ip_log: notificationSettings.recordIpLog,
|
||||
|
||||
@@ -58,6 +58,7 @@ const NotificationSettings = ({
|
||||
const formApiRef = useRef(null);
|
||||
const [statusState] = useContext(StatusContext);
|
||||
const [userState] = useContext(UserContext);
|
||||
const isAdminOrRoot = (userState?.user?.role || 0) >= 10;
|
||||
|
||||
// 左侧边栏设置相关状态
|
||||
const [sidebarLoading, setSidebarLoading] = useState(false);
|
||||
@@ -470,6 +471,21 @@ const NotificationSettings = ({
|
||||
]}
|
||||
/>
|
||||
|
||||
{isAdminOrRoot && (
|
||||
<Form.Switch
|
||||
field='upstreamModelUpdateNotifyEnabled'
|
||||
label={t('接收上游模型更新通知')}
|
||||
checkedText={t('开')}
|
||||
uncheckedText={t('关')}
|
||||
onChange={(value) =>
|
||||
handleFormChange('upstreamModelUpdateNotifyEnabled', value)
|
||||
}
|
||||
extraText={t(
|
||||
'仅管理员可用。开启后,当系统定时检测全部渠道发现上游模型变更或检测异常时,将按你选择的通知方式发送汇总通知;渠道或模型过多时会自动省略部分明细。',
|
||||
)}
|
||||
/>
|
||||
)}
|
||||
|
||||
{/* 邮件通知设置 */}
|
||||
{notificationSettings.warningType === 'email' && (
|
||||
<Form.Input
|
||||
|
||||
Reference in New Issue
Block a user