fix(ai-moderation): downgrade operational logs to debug and add missing debug logs to silent early-return paths

This commit is contained in:
MythEclipse
2026-06-04 13:13:55 +07:00
parent d568cab88f
commit e55ee342b1
3 changed files with 26 additions and 15 deletions
@@ -27,7 +27,10 @@ import type {
ModerationBroadcaster,
} from "../message-capture/types.js";
import { attemptAutoDeleteFlaggedMessage } from "./autoDeleteManager.js";
import { buildConversationContext, estimateTokens } from "./conversationContext.js";
import {
buildConversationContext,
estimateTokens,
} from "./conversationContext.js";
import { runModerationAnalysis } from "./llmModerationClient.js";
import { logModerationError } from "./responseLogger.js";
@@ -449,7 +452,7 @@ async function processIndividualFallback(
// Reset individual CB on success.
individualConsecutiveErrors = 0;
logger.info(
logger.debug(
{ messageId, status: analysisResult.results[0]?.status },
"Individual fallback analysis complete",
);
@@ -584,7 +587,7 @@ function enqueueIndividualFallbacks(messages: MessageRecord[]): void {
.slice(0, availableSlots);
if (newMessages.length === 0) return;
logger.info(
logger.debug(
{
count: newMessages.length,
messageIds: newMessages.map((m) => m.id),
@@ -878,7 +881,7 @@ export async function queueMessageAnalysis(messageId: string): Promise<void> {
if (updated) {
broadcastAnalysisCompleted(updated);
}
logger.info(
logger.debug(
{ messageId },
"Skipped AI analysis for age-restricted message",
);
@@ -51,7 +51,7 @@ function isAutoDeleteEligible(message: MessageRecord): boolean {
const confidence = message.ai_confidence ?? message.ai_moderation_score ?? 0;
if (confidence < config.AUTO_DELETE_MIN_CONFIDENCE) {
logger.info(
logger.debug(
{
messageId: message.id,
confidence,
@@ -68,7 +68,7 @@ function isAutoDeleteEligible(message: MessageRecord): boolean {
.map((s) => s.trim())
.filter(Boolean);
if (allowedSeverities.length > 0 && !allowedSeverities.includes(severity)) {
logger.info(
logger.debug(
{ messageId: message.id, severity, allowed: allowedSeverities },
"Auto-delete skipped: severity not in allowed list",
);
@@ -77,7 +77,7 @@ function isAutoDeleteEligible(message: MessageRecord): boolean {
const recommendedAction = deriveRecommendedAction(message);
if (recommendedAction !== "delete" && recommendedAction !== "escalate") {
logger.info(
logger.debug(
{ messageId: message.id, recommendedAction },
"Auto-delete skipped: recommended action is not delete/escalate",
);
@@ -95,7 +95,7 @@ function isAutoDeleteEligible(message: MessageRecord): boolean {
allowedCategories.includes(cat),
);
if (!hasAllowedCategory) {
logger.info(
logger.debug(
{
messageId: message.id,
categories: messageCategories,
@@ -113,7 +113,7 @@ function isAutoDeleteEligible(message: MessageRecord): boolean {
if (excludedChannels.length > 0) {
const channelId = message.thread_id ?? message.channel_id;
if (excludedChannels.includes(channelId)) {
logger.info(
logger.debug(
{ messageId: message.id, channelId },
"Auto-delete skipped: channel excluded",
);
@@ -123,7 +123,7 @@ function isAutoDeleteEligible(message: MessageRecord): boolean {
const excludedUsers = parseStringList(config.AUTO_DELETE_EXCLUDED_USER_IDS);
if (excludedUsers.length > 0 && excludedUsers.includes(message.user_id)) {
logger.info(
logger.debug(
{ messageId: message.id, userId: message.user_id },
"Auto-delete skipped: user excluded",
);
@@ -221,6 +221,10 @@ export async function attemptAutoDeleteFlaggedMessage(
}
if (message.ai_status !== "flagged" && message.ai_status !== "warn") {
logger.debug(
{ messageId: message.id, status: message.ai_status },
"Auto-delete skipped: message not flagged or warned",
);
const result = {
deleted: false,
skipped: true,
@@ -231,6 +235,10 @@ export async function attemptAutoDeleteFlaggedMessage(
}
if (!isAutoDeleteEligible(message)) {
logger.debug(
{ messageId: message.id },
"Auto-delete skipped: not eligible (confidence/severity/action/category filter)",
);
const result = {
deleted: false,
skipped: true,
@@ -987,7 +987,7 @@ async function runTextOnlyBatch(
}
if (groupMapping.size > 0) {
log.info(
log.debug(
{
originalCount: targets.length,
deduplicatedCount: deduplicatedTargets.length,
@@ -1004,7 +1004,7 @@ async function runTextOnlyBatch(
}
if (subBatches.length > 1) {
log.info(
log.debug(
{
totalTargets: targets.length,
subBatchCount: subBatches.length,
@@ -1111,7 +1111,7 @@ async function runTextOnlyBatch(
);
}
log.info(
log.debug(
{
targetCount: targets.length,
resultCount: allResults.length,
@@ -1615,7 +1615,7 @@ export async function runModerationAnalysis(
}
}
log.info(
log.debug(
{
total: targets.length,
textOnly: textOnlyTargets.length,
@@ -1647,7 +1647,7 @@ export async function runModerationAnalysis(
textBatchResult.raw ??
(mediaResults.length > 0 ? mediaResults[0].raw : null);
log.info(
log.debug(
{
targetCount: targets.length,
resultCount: allResults.length,