game_manager_lib/services/recommendation.rs
1//! Sistema de Recomendação v4.0 - Content-Based com Role-Based Tag System
2//!
3//! Este módulo implementa um sistema de recomendação híbrido que combina
4//! filtragem baseada em conteúdo (content-based) com filtragem colaborativa (collaborative).
5//!
6//! **Organização dos Módulos:**
7//! - `core`: Estruturas e tipos fundamentais
8//! - `cf_aggregator`: Collaborative-filtering (CF) pré-computado
9//! - `profile`: Cálculo de perfil de usuário
10//! - `scoring`: Lógica de cálculo de scores
11//! - `filtering`: Filtros e regras de diversidade
12//! - `ranking`: Algoritmos de ranqueamento
13//! - `analysis`: Análise detalhada e debugging
14//! - `reports`: Exportação de relatórios
15//!
16//! **Melhorias v4.0:**
17//! - Sistema de roles para tags (Affinity, Context, Filter, Diversity)
18//! - Separação de estágios de recomendação
19//! - Filtros duros antes do ranqueamento
20//! - Penalização de séries/gêneros por seleção estrutural, não score
21//! - CF puro sem penalizações matemáticas
22//! - Cap individual por tag affinity
23//! - Aumento de peso dos gêneros
24
25pub mod analysis;
26pub mod cf_aggregator;
27pub mod core;
28pub mod filtering;
29pub mod profile;
30pub mod ranking;
31pub mod reports;
32pub mod scoring;
33
34// Reexportar os tipos e funções mais usados
35pub use analysis::{
36 generate_analysis_report, AnalysisStats, DetailedScoreBreakdown, GenreInfluence, ProfileStats,
37 RecommendationAnalysisReport, TagInfluence, UserSettingsReport,
38};
39pub use core::{
40 calculate_game_weight, parse_release_year, GameWithDetails, RecommendationConfig,
41 RecommendationReason, SeriesLimit, UserPreferenceVector, UserSettings,
42};
43pub use filtering::{apply_diversity_rules, apply_hard_filters};
44pub use profile::calculate_user_profile;
45pub use ranking::{rank_games_collaborative, rank_games_content_based, rank_games_hybrid};
46pub use reports::{export_games_csv, export_report_json, export_report_txt};
47pub use scoring::{normalize_score, score_game_cb, score_game_cb_detailed, DetailedScoreComponents};