/** * DTO: RatingSummaryDto * * Comprehensive rating summary with platform and external game ratings. * Pragmatic read model - direct repo DTOs, no domain logic. */ export interface PlatformRatingDimension { value: number; confidence: number; sampleSize: number; trend: 'rising' | 'stable' | 'falling'; lastUpdated: string; // ISO date string } export interface ExternalGameRating { gameKey: string; type: string; value: number; lastUpdated: string; // ISO date string } export interface ExternalGameRatings { gameKey: string; ratings: Map; // type -> value source: string; lastSyncedAt: string; // ISO date string verified: boolean; } export interface RatingSummaryDto { userId: string; // Platform ratings (from internal calculations) platform: { driving: PlatformRatingDimension; admin: PlatformRatingDimension; steward: PlatformRatingDimension; trust: PlatformRatingDimension; fairness: PlatformRatingDimension; overallReputation: number; }; // External game ratings (from third-party sources) external: { // gameKey -> { type -> value } [gameKey: string]: { [type: string]: number; }; }; // Timestamps createdAt: string; // ISO date string updatedAt: string; // ISO date string lastRatingEventAt?: string; // ISO date string (optional) }