fix: store risk rules per siteId instead of shared siteType

This commit is contained in:
mediabot-pt
2026-07-06 23:50:23 +08:00
parent dde14cb73f
commit 5a7b218944
4 changed files with 47 additions and 21 deletions

View File

@@ -299,7 +299,7 @@ const parsed = computed({
const editSiteName = computed(() => {
if (!editType.value) return ''
const site = (sites.value||[]).find(s => s.siteType === editType.value)
const site = (sites.value||[]).find(s => s.siteId === editType.value)
return site ? (site.names||[]).join('/') || site.siteId || editType.value : editType.value
})
@@ -334,8 +334,8 @@ const ruleText = (r) => {
}
const merged = computed(() => (Array.isArray(sites.value)?sites.value:[]).map(s => ({
siteId: s.siteId, names: s.names, siteType: s.siteType,
ruleCount: rulesMap.value[s.siteType]?.ruleCount || 0, version: rulesMap.value[s.siteType]?.version || null,
updatedAt: rulesMap.value[s.siteType]?.updatedAt || null, rulesJson: rulesMap.value[s.siteType]?.rulesJson || null,
ruleCount: rulesMap.value[s.siteId]?.ruleCount || 0, version: rulesMap.value[s.siteId]?.version || null,
updatedAt: rulesMap.value[s.siteId]?.updatedAt || null, rulesJson: rulesMap.value[s.siteId]?.rulesJson || null,
})))
// ============ 数据操作 ============
@@ -348,17 +348,18 @@ const fetchAll = async () => {
const map = {}
for (const r of rulesData) {
const cnt = (() => { try { return JSON.parse(r.rulesJson||'[]').length } catch { return 0 } })()
if (!map[r.siteType] || r.version > map[r.siteType].version)
map[r.siteType] = { ruleCount: cnt, version: r.version, updatedAt: r.updatedAt, rulesJson: r.rulesJson }
const key = r.siteId || r.siteType // siteId is the new key, fallback to siteType
if (!map[key] || r.version > map[key].version)
map[key] = { ruleCount: cnt, version: r.version, updatedAt: r.updatedAt, rulesJson: r.rulesJson }
}
rulesMap.value = map
} finally { loading.value = false }
}
const editRule = async (row) => {
editType.value = row.siteType
editType.value = row.siteId
try {
const r = await api.raw.get('/admin/risk-rules/'+row.siteType)
const r = await api.raw.get('/admin/risk-rules/'+row.siteId)
editorJson.value = (r?.data||r)?.rules ? JSON.stringify((r.data||r).rules, null, 2) : '[]'
} catch { editorJson.value = '[]' }
}