File size: 3,175 Bytes
ba2cd16
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
import streamlit as st
import requests

# URL de votre Google Cloud Function déployée (vous pouvez la modifier ici si elle change)
CLOUD_FUNCTION_URL = "https://us-central1-projet-10-498214.cloudfunctions.net/api-recommandation"

# --- Page Config ---
st.set_page_config(
    page_title="My Content — Recommandations",
    page_icon="📚",
    layout="centered",
)

# --- Header ---
st.title("📚 My Content")
st.subheader("Système de Recommandation d'Articles")
st.markdown("---")

# --- Interface utilisateur ---
col1, col2 = st.columns(2)

with col1:
    st.markdown("### 👤 Sélectionner un utilisateur")
    # L'utilisateur choisit un ID entre 0 et 1000 pour tester
    selected_user = st.number_input(
        "ID de l'utilisateur (ex: 0)", 
        min_value=0, 
        max_value=100000, 
        value=0, 
        step=1
    )

with col2:
    st.markdown("### ⚙️ Modèle de recommandation")
    # Choix entre Collaboratif et Content-based
    model_choice = st.radio(
        "Choisissez l'algorithme :",
        options=["Filtrage Collaboratif", "Content-Based"],
        index=0
    )

# Conversion du choix en booléen pour l'API
is_collaborative = True if model_choice == "Filtrage Collaboratif" else False

st.markdown("---")

# --- Bouton d'action ---
if st.button("🔍 Obtenir les recommandations", type="primary", use_container_width=True):
    with st.spinner("Génération des recommandations en cours... (Appel Serverless)"):
        try:
            # Paramètres de la requête
            params = {
                "user_id": selected_user,
                "is_collaborative": str(is_collaborative).lower() # 'true' ou 'false'
            }
            
            # Appel à la Cloud Function
            response = requests.get(CLOUD_FUNCTION_URL, params=params, timeout=15)
            
            if response.status_code == 200:
                data = response.json()
                recommendations = data.get("recommendations", [])
                model_used = data.get("model", "inconnu")

                # Affichage des résultats
                st.success(f"✅ Recommandations générées avec succès via **{model_used}**")
                
                st.markdown(f"### Top 5 des articles pour l'utilisateur {selected_user} :")
                
                for i, article_id in enumerate(recommendations, 1):
                    # Affichage visuel amélioré
                    st.info(f"**Recommandation #{i}** : Article ID `{article_id}`")
                    
            elif response.status_code == 404:
                st.warning(f"⚠️ L'utilisateur {selected_user} n'a pas été trouvé dans la matrice de données.")
            else:
                st.error(f"❌ Erreur de l'API (Code {response.status_code}) : {response.text}")

        except requests.exceptions.RequestException as e:
            st.error(f"❌ Impossible de se connecter à la Google Cloud Function. Erreur : {e}")

# --- Footer ---
st.markdown("---")
st.markdown(
    "<div style='text-align: center; color: #888;'>"
    "My Content MVP — Démo Serverless Google Cloud Functions"
    "</div>",
    unsafe_allow_html=True,
)