/**
 * Data Completeness Types
 * 
 * TypeScript interfaces for the comprehensive data completeness analysis system
 */

export type EntityType = 'park' | 'ride' | 'company' | 'ride_model';

export type MissingFieldCategory = 'critical' | 'important' | 'valuable' | 'supplementary';

export interface MissingFields {
  critical: string[];
  important: string[];
  valuable: string[];
  supplementary: string[];
}

export interface EntityCompleteness {
  id: string;
  name: string;
  slug: string;
  entity_type: EntityType;
  updated_at: string;
  completeness_score: number;
  missing_fields: MissingFields;
}

export interface CompletenessSummary {
  total_entities: number;
  avg_completeness_score: number;
  entities_below_50: number;
  entities_100_complete: number;
  by_entity_type: {
    parks: number;
    rides: number;
    companies: number;
    ride_models: number;
  };
}

export interface CompletenessAnalysis {
  summary: CompletenessSummary;
  entities: {
    parks: EntityCompleteness[];
    rides: EntityCompleteness[];
    companies: EntityCompleteness[];
    ride_models: EntityCompleteness[];
  };
  generated_at: string;
}

export interface CompletenessFilters {
  entityType?: EntityType;
  minScore?: number;
  maxScore?: number;
  missingCategory?: MissingFieldCategory;
  searchQuery?: string;
}
