/** * Rating management system for element evaluation and feedback processing. * Handles both AI evaluation and user feedback to drive continuous improvement. */ import { IElement, UserFeedback, FeedbackContext } from './IElement.js'; import { ElementType } from '../../portfolio/types.js'; export interface IRatingManager { evaluateElement(element: IElement, metrics: PerformanceMetrics): Promise; processFeedback(element: IElement, feedback: string, context?: FeedbackContext): Promise; analyzeDelta(element: IElement): DeltaAnalysis; suggestImprovements(element: IElement): Improvement[]; getAggregateRatings(elementType?: ElementType): AggregateRatings; getRatingHistory(elementId: string): RatingHistoryEntry[]; evaluateMany(elements: IElement[], metrics: PerformanceMetrics): Promise>; } export interface PerformanceMetrics { taskCompletion: number; responseTime: number; errorRate: number; resourceUsage?: ResourceMetrics; customMetrics?: Record; } export interface ResourceMetrics { tokenCount?: number; apiCalls?: number; computeTime?: number; memoryUsage?: number; } export interface DeltaAnalysis { delta: number; significance: 'high' | 'medium' | 'low' | 'none'; possibleReasons: string[]; recommendations: string[]; confidence: number; } export interface Improvement { area: string; currentScore: number; targetScore: number; suggestion: string; priority: 'high' | 'medium' | 'low'; estimatedImpact: number; } export interface AggregateRatings { elementType?: ElementType; count: number; averageAiRating: number; averageUserRating: number; averageDelta: number; topRated: ElementRatingSummary[]; bottomRated: ElementRatingSummary[]; mostImproved: ElementRatingSummary[]; distribution: RatingDistribution; } export interface ElementRatingSummary { elementId: string; elementName: string; aiRating: number; userRating?: number; ratingCount: number; trend: 'improving' | 'declining' | 'stable'; } export interface RatingDistribution { stars1: number; stars2: number; stars3: number; stars4: number; stars5: number; } export interface RatingHistoryEntry { timestamp: Date; aiRating: number; userRating?: number; metrics?: PerformanceMetrics; feedback?: UserFeedback; version: string; } export interface IFeedbackProcessor { process(feedback: string): Promise; analyzeSentiment(text: string): Promise<'positive' | 'negative' | 'neutral'>; inferRating(text: string): Promise; extractSuggestions(text: string): Promise; } export interface ProcessedFeedback { originalFeedback: string; sentiment: 'positive' | 'negative' | 'neutral'; inferredRating?: number; confidence: number; keywords: string[]; suggestions: string[]; entities: FeedbackEntity[]; } export interface FeedbackEntity { type: 'feature' | 'issue' | 'praise' | 'criticism'; text: string; relevance: number; } export interface IRatingCalculator { calculate(element: T, metrics: PerformanceMetrics): number; getWeights(): RatingWeights; adjustWeights(feedback: ProcessedFeedback[]): RatingWeights; } export interface RatingWeights { effectiveness: number; reliability: number; usability: number; [key: string]: number; } //# sourceMappingURL=IRatingManager.d.ts.map