Optimize AI system with batching, token tracking, and GDPR compliance
- Add AIUsageLog model for persistent token/cost tracking - Implement batched processing for all AI services: - Assignment: 15 projects/batch - Filtering: 20 projects/batch - Award eligibility: 20 projects/batch - Mentor matching: 15 projects/batch - Create unified error classification (ai-errors.ts) - Enhance anonymization with comprehensive project data - Add AI usage dashboard to Settings page - Add usage stats endpoints to settings router - Create AI system documentation (5 files) - Create GDPR compliance documentation (2 files) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -684,6 +684,46 @@ model AuditLog {
|
||||
@@index([timestamp])
|
||||
}
|
||||
|
||||
// =============================================================================
|
||||
// AI USAGE TRACKING
|
||||
// =============================================================================
|
||||
|
||||
model AIUsageLog {
|
||||
id String @id @default(cuid())
|
||||
createdAt DateTime @default(now())
|
||||
|
||||
// Who/what triggered it
|
||||
userId String?
|
||||
action String // ASSIGNMENT, FILTERING, AWARD_ELIGIBILITY, MENTOR_MATCHING
|
||||
entityType String? // Round, Project, Award
|
||||
entityId String?
|
||||
|
||||
// What was used
|
||||
model String // gpt-4o, gpt-4o-mini, o1, etc.
|
||||
promptTokens Int
|
||||
completionTokens Int
|
||||
totalTokens Int
|
||||
|
||||
// Cost tracking
|
||||
estimatedCostUsd Decimal? @db.Decimal(10, 6)
|
||||
|
||||
// Request context
|
||||
batchSize Int?
|
||||
itemsProcessed Int?
|
||||
|
||||
// Status
|
||||
status String // SUCCESS, PARTIAL, ERROR
|
||||
errorMessage String?
|
||||
|
||||
// Detailed data (optional)
|
||||
detailsJson Json? @db.JsonB
|
||||
|
||||
@@index([userId])
|
||||
@@index([action])
|
||||
@@index([createdAt])
|
||||
@@index([model])
|
||||
}
|
||||
|
||||
// =============================================================================
|
||||
// NOTIFICATION LOG (Phase 2)
|
||||
// =============================================================================
|
||||
|
||||
Reference in New Issue
Block a user