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