diff --git a/ai-summary-query.php b/ai-summary-query.php
index cb1461d..3b853e1 100644
--- a/ai-summary-query.php
+++ b/ai-summary-query.php
@@ -1,6 +1,6 @@
get_var($wpdb->prepare(
"SELECT post_id FROM {$wpdb->postmeta} WHERE meta_key = '_argon_ai_summary_code' AND meta_value = %s",
@@ -160,7 +162,9 @@ if (!empty($query_code)) {
if ($post_id) {
$post = get_post($post_id);
if ($post && $post->post_status === 'publish') {
+ $query_type = 'summary';
$result = [
+ 'type' => 'summary',
'post_id' => $post_id,
'post_title' => get_the_title($post_id),
'post_url' => get_permalink($post_id),
@@ -194,7 +198,65 @@ if (!empty($query_code)) {
$error = __('文章不存在或未发布', 'argon');
}
} else {
- $error = __('未找到对应的 AI 生成内容记录', 'argon');
+ // 查询垃圾评论检测记录
+ $comment_id = $wpdb->get_var($wpdb->prepare(
+ "SELECT comment_id FROM {$wpdb->commentmeta}
+ WHERE meta_key = '_argon_spam_detection_code' AND meta_value = %s",
+ $query_code
+ ));
+
+ if ($comment_id) {
+ $comment = get_comment($comment_id);
+ if ($comment) {
+ $query_type = 'spam_detection';
+ $detection_result = get_comment_meta($comment_id, '_argon_spam_detection_result', true);
+ $detection_time = get_comment_meta($comment_id, '_argon_spam_detection_time', true);
+
+ $result = [
+ 'type' => 'spam_detection',
+ 'comment_id' => $comment_id,
+ 'comment_author' => $comment->comment_author,
+ 'comment_email' => $comment->comment_author_email,
+ 'comment_content' => $comment->comment_content,
+ 'comment_date' => $comment->comment_date,
+ 'comment_status' => wp_get_comment_status($comment_id),
+ 'post_id' => $comment->comment_post_ID,
+ 'post_title' => get_the_title($comment->comment_post_ID),
+ 'post_url' => get_permalink($comment->comment_post_ID),
+ 'comment_url' => get_comment_link($comment),
+ 'is_spam' => isset($detection_result['is_spam']) ? $detection_result['is_spam'] : false,
+ 'reason' => isset($detection_result['reason']) ? $detection_result['reason'] : '',
+ 'action' => isset($detection_result['action']) ? $detection_result['action'] : '',
+ 'detection_time' => $detection_time,
+ 'code' => $query_code
+ ];
+
+ // 获取 AI 配置信息
+ $result['provider'] = get_option('argon_ai_summary_provider', 'openai');
+ $result['model'] = get_option('argon_ai_summary_model', '');
+
+ $provider_names = [
+ 'openai' => 'OpenAI',
+ 'anthropic' => 'Anthropic',
+ 'deepseek' => 'DeepSeek',
+ 'qianwen' => '通义千问',
+ 'wenxin' => '文心一言',
+ 'doubao' => '豆包',
+ 'kimi' => 'Kimi',
+ 'zhipu' => '智谱',
+ 'siliconflow' => 'SiliconFlow'
+ ];
+
+ $result['provider_display'] = isset($provider_names[$result['provider']]) ? $provider_names[$result['provider']] : $result['provider'];
+
+ // 缓存结果(1小时)
+ set_transient($cache_key, $result, 3600);
+ } else {
+ $error = __('评论不存在', 'argon');
+ }
+ } else {
+ $error = __('未找到对应的 AI 生成内容记录', 'argon');
+ }
}
}
}
@@ -368,7 +430,7 @@ html.darkmode .ai-verify-subtitle { color: #aaa; }
⚠
-
+
@@ -426,11 +488,118 @@ html.darkmode .ai-verify-subtitle { color: #aaa; }
+
+
+
+
+
+
+ :
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ __('已通过', 'argon'),
+ 'hold' => __('待审核', 'argon'),
+ 'trash' => __('回收站', 'argon'),
+ 'spam' => __('垃圾评论', 'argon')
+ ];
+ echo isset($status_labels[$result['comment_status']]) ? esc_html($status_labels[$result['comment_status']]) : esc_html($result['comment_status']);
+ ?>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ __('已移入回收站', 'argon'),
+ 'hold' => __('已标记为待审核', 'argon'),
+ 'mark' => __('仅标记', 'argon')
+ ];
+ echo isset($action_labels[$result['action']]) ? esc_html($action_labels[$result['action']]) : esc_html($result['action']);
+ ?>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/functions.php b/functions.php
index b9cd75a..ad1245c 100644
--- a/functions.php
+++ b/functions.php
@@ -7680,6 +7680,10 @@ function argon_async_spam_detection_handler($comment_id) {
// 记录检测时间(无论成功失败都记录,避免重复检测)
update_comment_meta($comment_id, '_argon_spam_detection_time', time());
+ // 生成识别码
+ $detection_code = argon_generate_detection_code($comment_id);
+ update_comment_meta($comment_id, '_argon_spam_detection_code', $detection_code);
+
if ($result && isset($result['is_spam'])) {
// 更新用户统计
argon_update_user_spam_stats($comment, $result['is_spam']);
@@ -7718,6 +7722,36 @@ function argon_async_spam_detection_handler($comment_id) {
}
add_action('argon_async_spam_detection', 'argon_async_spam_detection_handler');
+/**
+ * 生成检测识别码(8位大写字母数字,不含 I、O)
+ * @param int $comment_id 评论 ID
+ * @return string 识别码
+ */
+function argon_generate_detection_code($comment_id) {
+ $chars = '0123456789ABCDEFGHJKLMNPQRSTUVWXYZ'; // 排除 I 和 O
+ $code = '';
+ $seed = $comment_id . time() . wp_rand();
+
+ for ($i = 0; $i < 8; $i++) {
+ $index = abs(crc32($seed . $i)) % strlen($chars);
+ $code .= $chars[$index];
+ }
+
+ // 确保唯一性
+ global $wpdb;
+ $exists = $wpdb->get_var($wpdb->prepare(
+ "SELECT comment_id FROM {$wpdb->commentmeta} WHERE meta_key = '_argon_spam_detection_code' AND meta_value = %s",
+ $code
+ ));
+
+ if ($exists) {
+ // 如果重复,递归生成新的
+ return argon_generate_detection_code($comment_id + 1);
+ }
+
+ return $code;
+}
+
/**
* AJAX: 开始批量扫描(一次性发送所有评论)
*/
@@ -7790,6 +7824,10 @@ function argon_spam_detection_scan() {
// 记录检测时间
update_comment_meta($comment_id, '_argon_spam_detection_time', time());
+ // 生成识别码
+ $detection_code = argon_generate_detection_code($comment_id);
+ update_comment_meta($comment_id, '_argon_spam_detection_code', $detection_code);
+
if (isset($item['is_spam']) && $item['is_spam']) {
$comment = get_comment($comment_id);
if ($comment) {
@@ -7797,7 +7835,8 @@ function argon_spam_detection_scan() {
'comment_id' => $comment_id,
'author' => $comment->comment_author,
'content' => mb_substr(strip_tags($comment->comment_content), 0, 100),
- 'reason' => isset($item['reason']) ? $item['reason'] : __('未知原因', 'argon')
+ 'reason' => isset($item['reason']) ? $item['reason'] : __('未知原因', 'argon'),
+ 'detection_code' => $detection_code
];
// 保存检测结果
@@ -7819,6 +7858,8 @@ function argon_spam_detection_scan() {
foreach ($comments_data as $comment_data) {
if (!in_array($comment_data['id'], $checked_ids)) {
update_comment_meta($comment_data['id'], '_argon_spam_detection_time', time());
+ $detection_code = argon_generate_detection_code($comment_data['id']);
+ update_comment_meta($comment_data['id'], '_argon_spam_detection_code', $detection_code);
}
}