diff --git a/web/api.py b/web/api.py index 5588eda..a9e004d 100644 --- a/web/api.py +++ b/web/api.py @@ -782,8 +782,15 @@ async def api_spam_test(data: SpamTestPayload): "rule_counts": {"keywords": len(spam_detector.EXTERNAL_KEYWORD_RULES), "regex": len(spam_detector.EXTERNAL_REGEX_RULES), "adblock_domains": len(spam_detector.ADBLOCK_DOMAINS)}, } if use_ai: - ai_is_spam, ai_reason = await spam_detector.detect(text) - result.update({"ai_is_spam": ai_is_spam, "ai_reason": ai_reason, "final_is_spam": ai_is_spam}) + if decision is True: + result.update({"ai_is_spam": None, "ai_reason": "本地强规则已判定为垃圾,未额外调用 AI", "final_is_spam": True}) + else: + ai_is_spam, ai_reason = await spam_detector.ai_classify(text) + final_is_spam = True if ai_is_spam else (bool(decision) if decision is not None else False) + if ai_is_spam and score < 75: + result["score"] = 80 + result["reason"] = f"{reason}; AI加权判定" + result.update({"ai_is_spam": ai_is_spam, "ai_reason": ai_reason, "final_is_spam": final_is_spam}) else: result["final_is_spam"] = bool(decision) if decision is not None else None return JSONResponse(result)