fix(ai-moderation): downgrade operational logs to debug and add missing debug logs to silent early-return paths
This commit is contained in:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user