103 lines
2.2 KiB
TypeScript
103 lines
2.2 KiB
TypeScript
/**
|
|
* Logging types for monitoring and debugging
|
|
*/
|
|
|
|
import type { ChatMode } from '@/lib/ai/chat-modes';
|
|
|
|
/**
|
|
* Log entry for project-related events
|
|
*
|
|
* Stored in Firestore `project_logs` collection for monitoring,
|
|
* debugging, and prompt iteration.
|
|
*/
|
|
export interface ProjectLogEntry {
|
|
/** Firestore document ID */
|
|
id: string;
|
|
|
|
/** Project this log belongs to */
|
|
projectId: string;
|
|
|
|
/** User who triggered the event (if available) */
|
|
userId: string | null;
|
|
|
|
/** Event type for filtering */
|
|
eventType:
|
|
| 'chat_interaction'
|
|
| 'extraction'
|
|
| 'vision_generation'
|
|
| 'mvp_generation'
|
|
| 'marketing_generation'
|
|
| 'knowledge_import'
|
|
| 'batch_extraction'
|
|
| 'mode_transition'
|
|
| 'error';
|
|
|
|
/** Chat mode (if applicable) */
|
|
mode: ChatMode | null;
|
|
|
|
/** Project phase (if applicable) */
|
|
phase: string | null;
|
|
|
|
/** Which artifacts were used in this interaction */
|
|
artifactsUsed: string[];
|
|
|
|
/** Whether vector search was used */
|
|
usedVectorSearch: boolean;
|
|
|
|
/** Number of vector chunks retrieved (if applicable) */
|
|
vectorChunkCount?: number;
|
|
|
|
/** Prompt version identifier (for A/B testing) */
|
|
promptVersion: string | null;
|
|
|
|
/** Model used (e.g., 'gemini-2.0-flash-exp') */
|
|
modelUsed: string | null;
|
|
|
|
/** Whether the operation succeeded */
|
|
success: boolean;
|
|
|
|
/** Error message (if failed) */
|
|
errorMessage: string | null;
|
|
|
|
/** Additional metadata (flexible for future use) */
|
|
metadata?: Record<string, any>;
|
|
|
|
/** When this log was created */
|
|
createdAt: Date | string;
|
|
}
|
|
|
|
/**
|
|
* Input for creating a new log entry
|
|
* (id and createdAt are auto-generated)
|
|
*/
|
|
export type CreateProjectLogInput = Omit<ProjectLogEntry, 'id' | 'createdAt'>;
|
|
|
|
/**
|
|
* Filters for querying logs
|
|
*/
|
|
export interface ProjectLogFilters {
|
|
projectId?: string;
|
|
userId?: string;
|
|
eventType?: ProjectLogEntry['eventType'];
|
|
mode?: ChatMode;
|
|
phase?: string;
|
|
success?: boolean;
|
|
startDate?: Date;
|
|
endDate?: Date;
|
|
limit?: number;
|
|
}
|
|
|
|
/**
|
|
* Aggregated log stats for monitoring
|
|
*/
|
|
export interface ProjectLogStats {
|
|
totalLogs: number;
|
|
successCount: number;
|
|
errorCount: number;
|
|
byEventType: Record<string, number>;
|
|
byMode: Record<string, number>;
|
|
avgVectorChunks: number;
|
|
vectorSearchUsageRate: number;
|
|
}
|
|
|