fix(agent-chat): ajouter handler QUERY pour les infos workflow
Le chat listait les workflows mais répondait "Je n'ai pas d'information" quand l'utilisateur demandait des détails. Le handler QUERY utilise maintenant SemanticMatcher.find_workflow() + get_workflow_help() pour retourner description, tags et paramètres supportés. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -530,10 +530,15 @@ def api_chat():
|
|||||||
result = {"error": "Pas de workflow spécifié"}
|
result = {"error": "Pas de workflow spécifié"}
|
||||||
|
|
||||||
elif intent.intent_type == IntentType.LIST:
|
elif intent.intent_type == IntentType.LIST:
|
||||||
# Lister les workflows
|
# Lister les workflows avec métadonnées enrichies
|
||||||
if matcher:
|
if matcher:
|
||||||
workflows = [
|
workflows = [
|
||||||
{"name": wf.name, "description": wf.description}
|
{
|
||||||
|
"name": wf.name,
|
||||||
|
"description": wf.description or "Workflow appris automatiquement",
|
||||||
|
"tags": wf.tags[:3] if wf.tags else [],
|
||||||
|
"id": wf.workflow_id,
|
||||||
|
}
|
||||||
for wf in matcher.get_all_workflows()
|
for wf in matcher.get_all_workflows()
|
||||||
]
|
]
|
||||||
result = {"workflows": workflows}
|
result = {"workflows": workflows}
|
||||||
@@ -558,6 +563,33 @@ def api_chat():
|
|||||||
result = {"history": command_history[-10:]}
|
result = {"history": command_history[-10:]}
|
||||||
action_taken = "history_shown"
|
action_taken = "history_shown"
|
||||||
|
|
||||||
|
elif intent.intent_type == IntentType.QUERY:
|
||||||
|
# Rechercher des infos sur le workflow demandé
|
||||||
|
topic = intent.workflow_hint or intent.raw_query
|
||||||
|
if matcher and topic:
|
||||||
|
# Tenter de trouver le workflow correspondant
|
||||||
|
match = matcher.find_workflow(topic, min_confidence=0.3)
|
||||||
|
if match:
|
||||||
|
help_text = matcher.get_workflow_help(match.workflow_id)
|
||||||
|
result = {"answer": help_text}
|
||||||
|
else:
|
||||||
|
# Peut-être une question générale sur les workflows dispo
|
||||||
|
all_wf = matcher.get_all_workflows()
|
||||||
|
if all_wf:
|
||||||
|
wf_list = "\n".join(
|
||||||
|
f"• **{wf.name}**: {wf.description or 'Pas de description'}"
|
||||||
|
for wf in all_wf[:10]
|
||||||
|
)
|
||||||
|
result = {
|
||||||
|
"answer": f"Je n'ai pas trouvé de workflow '{topic}', "
|
||||||
|
f"mais voici les workflows disponibles :\n{wf_list}"
|
||||||
|
}
|
||||||
|
else:
|
||||||
|
result = {}
|
||||||
|
else:
|
||||||
|
result = {}
|
||||||
|
action_taken = "query_answered"
|
||||||
|
|
||||||
elif intent.intent_type == IntentType.HELP:
|
elif intent.intent_type == IntentType.HELP:
|
||||||
result = {}
|
result = {}
|
||||||
action_taken = "help_shown"
|
action_taken = "help_shown"
|
||||||
|
|||||||
Reference in New Issue
Block a user