Services Layer¶
The following API reference is generated directly from the project's Python docstrings.
Data loading¶
Data loading and preprocessing service for the Mangetamain application.
This module centralizes all CSV file reading operations from the data/ folder. All loading functions use standardized paths and consistent parameters.
filter_recipes ¶
filter_recipes(
recipes_df,
prep_range=(0, 180),
ingredients_range=(1, 30),
calories_range=(0, 1000),
vegetarian_only=False,
nutrition_grades=None,
)
Filters recipes according to specified criteria.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
recipes_df
|
DataFrame
|
Recipes DataFrame |
required |
prep_range
|
tuple
|
Tuple (min, max) for preparation time |
(0, 180)
|
ingredients_range
|
tuple
|
Tuple (min, max) for number of ingredients |
(1, 30)
|
calories_range
|
tuple
|
Tuple (min, max) for calories |
(0, 1000)
|
vegetarian_only
|
bool
|
Filter only vegetarian recipes |
False
|
nutrition_grades
|
list
|
List of accepted nutritional grades (A, B, C, D, E) |
None
|
Returns:
| Type | Description |
|---|---|
DataFrame
|
Filtered DataFrame |
get_recipe_details ¶
get_recipe_details(recipe_id, recipes_df)
Retrieves all details of a recipe.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
recipe_id
|
int
|
Recipe ID |
required |
recipes_df
|
DataFrame
|
Recipes DataFrame |
required |
Returns:
| Type | Description |
|---|---|
dict
|
Dictionary with recipe details |
get_recipe_name ¶
get_recipe_name(recipe_id, recipes_df)
Retrieves the readable name of a recipe from its tokens.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
recipe_id
|
int
|
Recipe ID |
required |
recipes_df
|
DataFrame
|
Recipes DataFrame |
required |
Returns:
| Type | Description |
|---|---|
str
|
Recipe name (approximate based on tokens) |
get_recipe_stats ¶
get_recipe_stats(recipes_df)
Calculates global statistics on recipes.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
recipes_df
|
DataFrame
|
Recipes DataFrame |
required |
Returns:
| Type | Description |
|---|---|
dict
|
Dictionary with statistics |
load_recipes ¶
load_recipes(data_dir=None)
Loads and preprocesses recipe data from preprocessed_recipes.csv
The file now includes popularity statistics (review_count, average_rating, popularity_score) calculated from RAW_interactions.csv.
Returns:
| Type | Description |
|---|---|
DataFrame
|
DataFrame with preprocessed columns including popularity statistics |
read_csv_file ¶
read_csv_file(
filename,
data_dir=None,
usecols=None,
dtype=None,
nrows=None,
**kwargs,
)
Centralized function to read any CSV file from the data/ folder. In production mode (ENV=prod), reads from Google Drive. In development mode, reads from local data/ directory.
This function standardizes CSV reading with error handling and integrated Streamlit caching.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
filename
|
str
|
Name of the CSV file (e.g., "preprocessed_recipes.csv") |
required |
data_dir
|
Optional[str]
|
Directory containing the data (default: "data/") |
None
|
usecols
|
Optional[List[str]]
|
List of columns to load (default: all) |
None
|
dtype
|
Optional[dict]
|
Dictionary of column types |
None
|
nrows
|
Optional[int]
|
Maximum number of rows to read |
None
|
**kwargs
|
Additional arguments for pd.read_csv() |
{}
|
Returns:
| Type | Description |
|---|---|
DataFrame
|
pd.DataFrame: DataFrame containing the data |
Raises:
| Type | Description |
|---|---|
FileNotFoundError
|
If the file does not exist |
read_pickle_file ¶
read_pickle_file(filename, data_dir=None)
Centralized function to read any pickle file from the data/ folder. In production mode (ENV=prod), reads from Google Drive. In development mode, reads from local data/ directory.
This function standardizes pickle reading with error handling and integrated Streamlit caching.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
filename
|
str
|
Name of the pickle file (e.g., "similarity_matrix.pkl") |
required |
data_dir
|
Optional[str]
|
Directory containing the data (default: "data/") |
None
|
Returns:
| Type | Description |
|---|---|
Dict[str, Any]
|
Dict[str, Any]: Dictionary containing the pickled data |
Raises:
| Type | Description |
|---|---|
FileNotFoundError
|
If the file does not exist |
Recommendation engine¶
Système de recommandations basé sur une matrice de similarité pré-calculée.
RecipeRecommender ¶
RecipeRecommender(recipes_df)
Système de recommandations de recettes utilisant une matrice de similarité pré-calculée.
Initialise le système de recommandations.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
recipes_df
|
DataFrame
|
DataFrame contenant les recettes |
required |
get_similar_recipes ¶
get_similar_recipes(recipe_id, k=10)
Trouve les k recettes les plus similaires à une recette donnée. Utilise uniquement la matrice de similarité pré-calculée.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
recipe_id
|
int
|
ID de la recette de référence |
required |
k
|
int
|
Nombre de recommandations à retourner |
10
|
Returns:
| Type | Description |
|---|---|
List[Tuple[Series, float]]
|
Liste de tuples (recette, score de similarité) |
recommend_by_filters ¶
recommend_by_filters(
prep_range,
ingredients_range,
calories_range,
vegetarian_only=False,
k=12,
)
Recommande des recettes basées sur des filtres.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
prep_range
|
Tuple[int, int]
|
Tuple (min, max) pour le temps de préparation |
required |
ingredients_range
|
Tuple[int, int]
|
Tuple (min, max) pour le nombre d'ingrédients |
required |
calories_range
|
Tuple[int, int]
|
Tuple (min, max) pour les calories |
required |
vegetarian_only
|
bool
|
Filtrer uniquement les recettes végétariennes |
False
|
k
|
int
|
Nombre de recommandations |
12
|
Returns:
| Type | Description |
|---|---|
List[Series]
|
Liste de recettes recommandées |
format_recommendations_for_display ¶
format_recommendations_for_display(recommendations)
Formate les recommandations pour l'affichage.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
recommendations
|
List[Tuple[Series, float]]
|
Liste de tuples (recette, score) |
required |
Returns:
| Type | Description |
|---|---|
List[dict]
|
Liste de dictionnaires avec les informations formatées |
get_recommender ¶
get_recommender(recipes_df)
Crée et met en cache le système de recommandations.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
recipes_df
|
DataFrame
|
DataFrame des recettes |
required |
Returns:
| Type | Description |
|---|---|
RecipeRecommender
|
Instance de RecipeRecommender |
Search utilities¶
Moteur de recherche optimisé pour les recettes. Utilise la recherche textuelle et le ranking par pertinence.
format_description ¶
format_description(recipe, max_length=180)
Génère une description courte pour une recette.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
recipe
|
Series
|
Série pandas de la recette |
required |
max_length
|
int
|
Longueur maximale de la description |
180
|
Returns:
| Type | Description |
|---|---|
str
|
Description formatée |
format_recipe_title ¶
format_recipe_title(recipe)
Génère un titre lisible pour une recette.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
recipe
|
Series
|
Série pandas de la recette |
required |
Returns:
| Type | Description |
|---|---|
str
|
Titre formaté |
get_recipe_by_id ¶
get_recipe_by_id(recipes_df, recipe_id)
Récupère une recette par son ID.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
recipes_df
|
DataFrame
|
DataFrame des recettes |
required |
recipe_id
|
int
|
ID de la recette |
required |
Returns:
| Type | Description |
|---|---|
Optional[Series]
|
Série pandas de la recette ou None |
get_trending_recipes ¶
get_trending_recipes(recipes_df, limit=20)
Récupère les recettes "tendances" (fallback quand pas de recherche). Tri par health score ou random.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
recipes_df
|
DataFrame
|
DataFrame des recettes |
required |
limit
|
int
|
Nombre de recettes à retourner |
20
|
Returns:
| Type | Description |
|---|---|
DataFrame
|
DataFrame des recettes tendances |
search_recipes ¶
search_recipes(
recipes_df,
query="",
prep_time_max=180,
ingredients_max=30,
calories_max=1000,
vegetarian_only=False,
nutrition_grades=None,
sort_by="relevance",
page=1,
page_size=20,
)
Recherche et filtre les recettes avec pagination.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
recipes_df
|
DataFrame
|
DataFrame complet des recettes |
required |
query
|
str
|
Texte de recherche |
''
|
prep_time_max
|
int
|
Temps de préparation maximum |
180
|
ingredients_max
|
int
|
Nombre d'ingrédients maximum |
30
|
calories_max
|
int
|
Calories maximum |
1000
|
vegetarian_only
|
bool
|
Filtrer les recettes végétariennes uniquement |
False
|
nutrition_grades
|
List[str]
|
Liste des grades nutritionnels acceptés |
None
|
sort_by
|
str
|
Tri (relevance, health_score, prep_time) |
'relevance'
|
page
|
int
|
Numéro de page |
1
|
page_size
|
int
|
Nombre de résultats par page |
20
|
Returns:
| Type | Description |
|---|---|
Tuple[DataFrame, int]
|
Tuple (DataFrame paginé, nombre total de résultats) |