From 2dcd7ce9f6e8515e4c36076d70d9e72ec919f151 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E6=AD=A3=E8=88=AA?= <1915581435@qq.com> Date: Wed, 22 Apr 2026 21:52:17 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=B0=8F=E7=A8=8B=E5=BA=8F=E5=89=8D?= =?UTF-8?q?=E7=AB=AF=E6=98=BE=E7=A4=BA=E5=88=86=E7=B1=BB=E6=A0=87=E7=AD=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 各页面增加垃圾信息分类标签显示: - 检测结果页显示分类标签 - 批量识别页和CSV导出增加分类标签列 - 历史记录页显示分类标签 - 管理后台审核页显示分类标签 Co-Authored-By: Claude Opus 4.6 --- miniprogram/pages/admin-review/index.js | 11 ++++++++++- miniprogram/pages/admin-review/index.wxml | 2 ++ miniprogram/pages/batch/index.js | 5 +++-- miniprogram/pages/batch/index.wxml | 4 ++++ miniprogram/pages/detect/index.wxml | 5 +++++ miniprogram/pages/history/index.js | 10 +++++++++- miniprogram/pages/history/index.wxml | 5 +++++ 7 files changed, 38 insertions(+), 4 deletions(-) diff --git a/miniprogram/pages/admin-review/index.js b/miniprogram/pages/admin-review/index.js index 4a15119..6e1404e 100644 --- a/miniprogram/pages/admin-review/index.js +++ b/miniprogram/pages/admin-review/index.js @@ -35,6 +35,13 @@ const APPEAL_STATUS_TEXT = { rejected: '已驳回' } +const CATEGORY_LABELS = { + fraud: '疑似诈骗', + harassment: '疑似骚扰', + advertisement: '疑似广告', + spam: '疑似垃圾' +} + function buildPager(total, page, pageSize) { const totalValue = Number(total || 0) const totalPages = Math.max(Math.ceil(totalValue / pageSize), 1) @@ -105,7 +112,8 @@ Page({ created_text: (item.created_at || '').replace('T', ' ').slice(0, 19), review_status_text: REVIEW_STATUS_TEXT[item.manual_review_status] || item.manual_review_status, spam_probability_text: this.formatPercent(item.spam_probability, 2), - appeal_status_text: APPEAL_STATUS_TEXT[item.appeal_status] || item.appeal_status + appeal_status_text: APPEAL_STATUS_TEXT[item.appeal_status] || item.appeal_status, + category_label: CATEGORY_LABELS[item.category] || '' })) }, @@ -116,6 +124,7 @@ Page({ ...item, created_text: (item.created_at || '').replace('T', ' ').slice(0, 19), appeal_status_text: APPEAL_STATUS_TEXT[item.appeal_status] || item.appeal_status, + category_label: CATEGORY_LABELS[item.category] || '', appeal_evidence_urls: (item.appeal_evidence_urls || []).map((url) => url.startsWith('http') ? url : `${serverBase}${url}` ) diff --git a/miniprogram/pages/admin-review/index.wxml b/miniprogram/pages/admin-review/index.wxml index 81c5053..2493e97 100644 --- a/miniprogram/pages/admin-review/index.wxml +++ b/miniprogram/pages/admin-review/index.wxml @@ -51,6 +51,7 @@ {{item.text}} 用户:{{item.nickname || item.username}} · 垃圾概率:{{item.spam_probability_text}} + 分类标签:{{item.category_label}} 复核状态:{{item.review_status_text}} · 申诉状态:{{item.appeal_status_text}} 发布时间:{{item.created_text}} @@ -100,6 +101,7 @@ {{item.text}} 申诉人:{{item.nickname || item.username}} · 当前状态:{{item.appeal_status_text}} + 分类标签:{{item.category_label}} 申诉理由类型:{{item.appeal_reason_type || '未选择'}} 申诉理由:{{item.appeal_reason || '未填写'}} 时间:{{item.created_text}} diff --git a/miniprogram/pages/batch/index.js b/miniprogram/pages/batch/index.js index 3c4d090..a1b9c1c 100644 --- a/miniprogram/pages/batch/index.js +++ b/miniprogram/pages/batch/index.js @@ -85,9 +85,10 @@ Page({ const items = this.data.items if (!items.length) return '' - const headers = ['文本', '判定结果', '置信度', '垃圾概率', '正常概率', '风险关键词'] + const headers = ['文本', '判定结果', '分类标签', '置信度', '垃圾概率', '正常概率', '风险关键词'] const rows = items.map((item) => { const prediction = item.prediction === 'spam' ? '垃圾信息' : '正常信息' + const categoryLabel = item.category_label || '' const confidence = item.confidence_text || '0%' const spamProb = this.formatPercent(item.spam_probability, 4) const hamProb = this.formatPercent(item.ham_probability, 4) @@ -95,7 +96,7 @@ Page({ // CSV 转义:文本中的逗号和换行需要处理 const text = (item.text || '').replace(/"/g, '""') const tokensEscaped = tokens.replace(/"/g, '""') - return `"${text}","${prediction}","${confidence}","${spamProb}","${hamProb}","${tokensEscaped}"` + return `"${text}","${prediction}","${categoryLabel}","${confidence}","${spamProb}","${hamProb}","${tokensEscaped}"` }) return [headers.join(','), ...rows].join('\n') diff --git a/miniprogram/pages/batch/index.wxml b/miniprogram/pages/batch/index.wxml index ea6d8e0..1193072 100644 --- a/miniprogram/pages/batch/index.wxml +++ b/miniprogram/pages/batch/index.wxml @@ -66,6 +66,10 @@ 判定结果 {{item.prediction_text}} + + 分类标签 + {{item.category_label}} + 置信度 {{item.confidence_text}} diff --git a/miniprogram/pages/detect/index.wxml b/miniprogram/pages/detect/index.wxml index 0f38c45..5accf3f 100644 --- a/miniprogram/pages/detect/index.wxml +++ b/miniprogram/pages/detect/index.wxml @@ -46,6 +46,11 @@ {{result.publish_allowed ? '发布成功' : '已拦截,需申诉'}} + + 分类标签 + {{result.detect.category_label}} + + 模型判断 {{result.detect.prediction_text}} diff --git a/miniprogram/pages/history/index.js b/miniprogram/pages/history/index.js index 9bfacc5..70c8d09 100644 --- a/miniprogram/pages/history/index.js +++ b/miniprogram/pages/history/index.js @@ -26,6 +26,13 @@ const APPEAL_STATUS_TEXT = { rejected: '已驳回' } +const CATEGORY_LABELS = { + fraud: '疑似诈骗', + harassment: '疑似骚扰', + advertisement: '疑似广告', + spam: '疑似垃圾' +} + const REASON_TYPE_OPTIONS = [ { value: '', label: '请选择申诉理由类型' }, { value: '正常活动文案', label: '正常活动文案' }, @@ -86,7 +93,8 @@ Page({ created_text: (item.created_at || '').replace('T', ' ').slice(0, 19), spam_probability_text: this.formatPercent(item.spam_probability, 2), visibility_text: VIS_LABEL[item.visibility] || item.visibility, - appeal_status_text: APPEAL_STATUS_TEXT[item.appeal_status] || item.appeal_status + appeal_status_text: APPEAL_STATUS_TEXT[item.appeal_status] || item.appeal_status, + category_label: CATEGORY_LABELS[item.category] || '' })) this.setData({ list }) } finally { diff --git a/miniprogram/pages/history/index.wxml b/miniprogram/pages/history/index.wxml index 0ee4201..6885dc7 100644 --- a/miniprogram/pages/history/index.wxml +++ b/miniprogram/pages/history/index.wxml @@ -35,6 +35,11 @@ {{item.status === 'blocked' ? '已拦截' : '已发布'}} + + 分类标签 + {{item.category_label}} + + 垃圾概率 {{item.spam_probability_text}}