From 36e05896e52c0f94a2a02b7306e0baf13c14a852 Mon Sep 17 00:00:00 2001 From: mediabot-pt <295750538+mediabot-pt@users.noreply.github.com> Date: Mon, 6 Jul 2026 22:45:16 +0800 Subject: [PATCH] refactor: remove redundant template import dialog, keep only quick-add dropdown Quick-add dropdown already serves the same purpose with fewer clicks --- web/src/views/RiskRules.vue | 68 ------------------------------------- 1 file changed, 68 deletions(-) diff --git a/web/src/views/RiskRules.vue b/web/src/views/RiskRules.vue index b3675c0..c2773e9 100644 --- a/web/src/views/RiskRules.vue +++ b/web/src/views/RiskRules.vue @@ -35,7 +35,6 @@ {{ parsed.length }} 条规则
- 从模板导入 保存 上传 返回列表 @@ -189,33 +188,6 @@
- - - -
-

规则体系:等级豁免 → 账号存活 → 新人考核 → 流量监控 → H&R 惩罚 → 分享率

-

满足豁免条件的用户不受任何规则影响。系统会自动根据风险百分比触发告警(riskPct > 80%)。

-
-
-
{{ cat.title }}
- -
- - {{ p.name }} - - {{ p.type==='EXEMPT' ? '保号' : p.type==='RATIO'||p.type==='DRATIO' ? '缓刑7天' : '封号' }} - {{ presetDesc(p) }} - (已添加) -
-
-
- -
@@ -350,31 +322,10 @@ const presets = [ { name:'等级豁免', type:'EXEMPT', permRank:'Elite User', sealExemptRank:'Power User', description:'达到等级的账号可豁免清理' }, ] -const presetCategories = [ - { title:'四、账号存活策略', items: presets.filter(p => p.name.includes('不登录') || p.name.includes('账号清理')) }, - { title:'五、零活跃新用户清理', items: presets.filter(p => p.name.includes('零活跃')) }, - { title:'流量监控', items: presets.filter(p => p.type === 'TRAFFIC') }, - { title:'H&R 惩罚', items: presets.filter(p => p.type === 'HD') }, - { title:'新人考核', items: presets.filter(p => p.type === 'TASK') }, - { title:'分享率', items: presets.filter(p => p.type === 'DRATIO') }, - { title:'等级豁免', items: presets.filter(p => p.type === 'EXEMPT') }, -] - -const presetDesc = (p) => { - if (p.type === 'TASK') return `考核周期 ${p.threshold||30} 天,需满足上传/下载/魔力值/做种积分/做种时间要求` - if (p.type === 'DRATIO') return `下载量 ≥ ${p.threshold||100}GB 时分享率 ≥ ${p.minRatio||1.0}` - if (p.type === 'EXEMPT') return `永久保留 ≥ ${rankDisplay(p.permRank)} / 封存豁免 ≥ ${rankDisplay(p.sealExemptRank)}` - const condLabel = condOptions.find(c => c.value === p.condition)?.label || p.condition - const appLabel = applicableOptions.find(a => a.value === p.applicable)?.label || '' - return `${metricOptions.find(m=>m.value===p.metric)?.label||p.metric} ${condLabel} ${p.threshold}${p.unit||''}${appLabel?' ('+appLabel+')':''}` -} - // ============ 状态 ============ const loading = ref(false), saving = ref(false), uploading = ref(false) const sites = ref([]), rulesMap = ref({}) const editType = ref(''), editorJson = ref('[]') -const showPresets = ref(false) -const selectedPresets = ref([]) const dragIdx = ref(null) const fmt = (t) => t ? (t.substring(0,19)||'').replace('T',' ') : '-' @@ -487,25 +438,6 @@ const addPreset = (p) => { parsed.value = [...parsed.value, r] } -const importPresets = () => { - const items = presets.filter(p => selectedPresets.value.includes(p.name)).map(p => { - const r = { ...p, _fold: false } - ensureTaskReqs(r) - return r - }) - const dupes = items.filter(r => existsRule(r)) - if (dupes.length) { - ElMessage.warning(`跳过 ${dupes.length} 条重复规则`) - } - const newItems = items.filter(r => !existsRule(r)) - if (newItems.length) { - parsed.value = [...parsed.value, ...newItems] - ElMessage.success(`已导入 ${newItems.length} 条规则`) - } - selectedPresets.value = [] - showPresets.value = false -} - // 拖拽排序 const onDragStart = (e, idx) => { dragIdx.value = idx; e.dataTransfer.effectAllowed = 'move' } const onDragOver = (e, idx) => {