refactor: remove unused AI columns from messages table

Drop 3 columns that were written but never read:
- ai_moderation_raw: raw LLM JSON response (~KB per message, never consumed)
- ai_policy_version: hardcoded 'default-2026-05-30', never used for decisions
- ai_evidence: JSON evidence array, never read after write

Changes:
- schema.ts: remove columns from both Postgres and SQLite table definitions
- messageStore.ts: remove from AIAnalysisUpdate interface and SET clauses
- aiAnalyzer.ts: remove from individual fallback update calls
- aiAnalysisWorker.ts: remove raw write, add missing fields (categories, severity, etc.)
- types.ts: remove from MessageRecord interface
- analysisRoutes.ts: remove from reset analysis call
- New migration: src/database/migrations/001_drop_unused_ai_columns.sql
- Migration applied to live DB: 27 columns → 24 columns

Kept ai_error (useful for future debugging, currently 0 non-null)
Kept metadata (1.9MB total, used for AI sticker/embed evidence analysis)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
MythEclipse
2026-05-30 16:06:37 +07:00
co-authored by Claude Opus 4.8
parent 551d11ba82
commit a00a5a508f
7 changed files with 14 additions and 24 deletions
+4 -1
View File
@@ -103,8 +103,11 @@ export default async function processAnalysisRequest({
status: analysisResult.status,
flags: JSON.stringify(analysisResult.flags),
score: analysisResult.score,
raw: JSON.stringify(result.raw),
analysis: analysisResult.analysis,
categories: analysisResult.categories,
severity: analysisResult.severity,
confidence: analysisResult.confidence,
recommendedAction: analysisResult.recommendedAction,
analyzedAt: Date.now(),
error: null,
},
-6
View File
@@ -304,14 +304,11 @@ async function processIndividualFallback(
status: r.status,
flags: JSON.stringify(r.flags),
score: r.score,
raw: JSON.stringify(analysisResult.raw),
analysis: r.analysis,
categories: r.categories,
severity: r.severity,
confidence: r.confidence,
recommendedAction: r.recommendedAction,
policyVersion: r.policyVersion,
evidence: r.evidence,
analyzedAt: Date.now(),
error: null,
},
@@ -361,15 +358,12 @@ async function processIndividualFallback(
status: "error",
flags: JSON.stringify(["individual_analysis_exhausted"]),
score: 0,
raw: null,
analysis:
"Individual fallback exhausted all retries: LLM consistently dropped this message even in single-target mode",
categories: ["individual_analysis_exhausted"],
severity: "none",
confidence: 0,
recommendedAction: "review",
policyVersion: "default-2026-05-30",
evidence: [],
analyzedAt: Date.now(),
error: lastError,
},
-7
View File
@@ -184,7 +184,6 @@ export async function updateMessageAsEdited(
ai_status: "pending",
ai_moderation_flags: null,
ai_moderation_score: null,
ai_moderation_raw: null,
ai_analysis: null,
ai_analyzed_at: null,
ai_error: null,
@@ -392,14 +391,11 @@ interface AIAnalysisUpdate {
status: "pending" | "clean" | "warn" | "flagged" | "error";
flags?: string | null;
score?: number | null;
raw?: string | null;
analysis?: string | null;
categories?: string[] | string | null;
severity?: MessageRecord["ai_severity"] | null;
confidence?: number | null;
recommendedAction?: MessageRecord["ai_recommended_action"] | null;
policyVersion?: string | null;
evidence?: string[] | string | null;
analyzedAt?: number | null;
error?: string | null;
}
@@ -423,14 +419,11 @@ export async function updateMessageAIAnalysis(
ai_status: result.status,
ai_moderation_flags: result.flags ?? null,
ai_moderation_score: result.score ?? null,
ai_moderation_raw: result.raw ?? null,
ai_analysis: result.analysis ?? null,
ai_categories: stringifyAIList(result.categories),
ai_severity: result.severity ?? null,
ai_confidence: result.confidence ?? result.score ?? null,
ai_recommended_action: result.recommendedAction ?? null,
ai_policy_version: result.policyVersion ?? null,
ai_evidence: stringifyAIList(result.evidence),
ai_analyzed_at: result.analyzedAt ?? Date.now(),
ai_error: result.error ?? null,
})
-3
View File
@@ -33,14 +33,11 @@ export interface MessageRecord {
ai_status?: AIStatus | null;
ai_moderation_flags?: string | null;
ai_moderation_score?: number | null;
ai_moderation_raw?: string | null;
ai_analysis?: string | null;
ai_categories?: string | null;
ai_severity?: AISeverity | null;
ai_confidence?: number | null;
ai_recommended_action?: AIRecommendedAction | null;
ai_policy_version?: string | null;
ai_evidence?: string | null;
ai_analyzed_at?: number | null;
ai_error?: string | null;
}