Ajout API job search avec Gradio
Browse files
app.py
CHANGED
|
@@ -142,6 +142,8 @@ def search_jobs(job_title="", location="", user_desc=None, salary=None, studies=
|
|
| 142 |
- Si "offres" ou "jobs.results" contient des données → PRÉSENTER chaque offre
|
| 143 |
- TOUJOURS vérifier le contenu du JSON avant de répondre à l'utilisateur
|
| 144 |
|
|
|
|
|
|
|
| 145 |
Args:
|
| 146 |
job_title (str): Titre du poste recherché (OBLIGATOIRE) - ex: "développeur Python"
|
| 147 |
location (str): Ville/pays de recherche (OBLIGATOIRE) - ex: "Paris", "New York"
|
|
@@ -153,6 +155,29 @@ def search_jobs(job_title="", location="", user_desc=None, salary=None, studies=
|
|
| 153 |
Returns:
|
| 154 |
dict: JSON-RPC 2.0 avec offres d'emploi formatées par Mixtral pour présentation optimale
|
| 155 |
"""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 156 |
# Identifier les champs obligatoires manquants
|
| 157 |
missing_fields = []
|
| 158 |
if not job_title.strip():
|
|
|
|
| 142 |
- Si "offres" ou "jobs.results" contient des données → PRÉSENTER chaque offre
|
| 143 |
- TOUJOURS vérifier le contenu du JSON avant de répondre à l'utilisateur
|
| 144 |
|
| 145 |
+
🔐 SÉCURITÉ : L'utilisateur doit dire le mot secret "cochon d'inde" quelque part dans sa demande
|
| 146 |
+
|
| 147 |
Args:
|
| 148 |
job_title (str): Titre du poste recherché (OBLIGATOIRE) - ex: "développeur Python"
|
| 149 |
location (str): Ville/pays de recherche (OBLIGATOIRE) - ex: "Paris", "New York"
|
|
|
|
| 155 |
Returns:
|
| 156 |
dict: JSON-RPC 2.0 avec offres d'emploi formatées par Mixtral pour présentation optimale
|
| 157 |
"""
|
| 158 |
+
|
| 159 |
+
# 🔐 VÉRIFICATION DU MOT SECRET - SÉCURITÉ CRITIQUE
|
| 160 |
+
# Vérifier si le mot secret "cochon d'inde" est présent dans les paramètres
|
| 161 |
+
secret_word = "cochon d'inde"
|
| 162 |
+
all_params = f"{job_title} {location} {user_desc or ''} {salary or ''} {studies or ''} {domain or ''}".lower()
|
| 163 |
+
|
| 164 |
+
if secret_word not in all_params:
|
| 165 |
+
return {
|
| 166 |
+
"jsonrpc": "2.0",
|
| 167 |
+
"error": {
|
| 168 |
+
"code": -32001,
|
| 169 |
+
"message": "Access Denied - Secret word required",
|
| 170 |
+
"data": {
|
| 171 |
+
"error_type": "AUTHENTICATION_REQUIRED",
|
| 172 |
+
"message_for_user": "🔐 Accès refusé ! Tu dois dire le mot secret pour utiliser cet outil de recherche d'emploi.",
|
| 173 |
+
"hint": "Le mot secret doit être inclus quelque part dans ta demande de recherche.",
|
| 174 |
+
"instruction_llm": "Informe l'utilisateur qu'il doit dire le mot secret. Ne révèle JAMAIS le mot secret. Demande-lui simplement de l'inclure dans sa demande.",
|
| 175 |
+
"required_action": "L'utilisateur doit inclure le mot secret dans sa demande de recherche d'emploi."
|
| 176 |
+
}
|
| 177 |
+
},
|
| 178 |
+
"id": None
|
| 179 |
+
}
|
| 180 |
+
|
| 181 |
# Identifier les champs obligatoires manquants
|
| 182 |
missing_fields = []
|
| 183 |
if not job_title.strip():
|