notes
This commit is contained in:
57
app.py
57
app.py
@@ -71,6 +71,7 @@ Si une phrase contient plusieurs choses a enregistrer, utilise :
|
||||
{"actions": [{...}, {...}]}
|
||||
|
||||
Quand l'utilisateur demande ce que tu sais d'un client, d'un projet, d'une tache ou d'un depot, utilise chercher_memoire.
|
||||
Si l'utilisateur dit "pour CLIENT" en ajoutant une tache, renseigne toujours le champ client avec CLIENT.
|
||||
|
||||
Pour tout le reste, reponds en francais naturel, avec des phrases courtes.
|
||||
N'utilise pas d'anglais sauf si l'utilisateur le demande explicitement.
|
||||
@@ -186,13 +187,21 @@ def detecter_action_directe(texte):
|
||||
{
|
||||
"action": "ajouter_client",
|
||||
"nom": nom,
|
||||
"notes": "Ajoute depuis une liste dictee par Laurent.",
|
||||
"notes": "Ajoute depuis une liste fournie par Laurent.",
|
||||
"statut": "actif",
|
||||
}
|
||||
for nom in clients_a_ajouter
|
||||
]
|
||||
}
|
||||
|
||||
tache_client = detecter_tache_client(texte_nettoye)
|
||||
if tache_client:
|
||||
return tache_client
|
||||
|
||||
recherche_taches = detecter_recherche_taches(texte_nettoye)
|
||||
if recherche_taches:
|
||||
return recherche_taches
|
||||
|
||||
recherche_match = re.search(
|
||||
r"(?:qu(?:'| )?est[- ]?ce que tu sais sur|que sais[- ]?tu sur|cherche dans la memoire|memoire sur)\s+(.+)",
|
||||
texte_nettoye,
|
||||
@@ -261,6 +270,45 @@ def detecter_action_directe(texte):
|
||||
return {"actions": actions}
|
||||
|
||||
|
||||
def detecter_tache_client(texte):
|
||||
if not re.search(r"\b(note|notes|noter|tache|doit|dois|a faire|à faire)\b", texte, flags=re.IGNORECASE):
|
||||
return None
|
||||
|
||||
match = re.search(
|
||||
r"\bpour\s+(?:mon\s+client\s+|le\s+client\s+)?([A-Z0-9][A-Z0-9&.\- ]{1,40}?)[,\s]+(?:on\s+)?(?:doit|dois|devra|faut)\s+(.+?)(?:\s+tu\s+peux\s+noter.*|\s+note.*|\s+notes.*|\s*$)",
|
||||
texte,
|
||||
flags=re.IGNORECASE,
|
||||
)
|
||||
if not match:
|
||||
return None
|
||||
|
||||
client_nom = nettoyer_nom_client(match.group(1))
|
||||
titre = nettoyer_titre_tache(match.group(2))
|
||||
if not client_nom or not titre:
|
||||
return None
|
||||
|
||||
return {
|
||||
"action": "ajouter_tache",
|
||||
"titre": titre,
|
||||
"client": client_nom,
|
||||
"details": texte,
|
||||
}
|
||||
|
||||
|
||||
def detecter_recherche_taches(texte):
|
||||
match = re.search(
|
||||
r"\b(?:que\s+dois[- ]?je\s+faire|quoi\s+faire|taches?|a faire|à faire)\b.*\b(?:pour|sur)\s+(?:mon\s+client\s+|le\s+client\s+)?([A-Z0-9][A-Z0-9&.\- ]{1,40})",
|
||||
texte,
|
||||
flags=re.IGNORECASE,
|
||||
)
|
||||
if not match:
|
||||
return None
|
||||
client_nom = nettoyer_nom_client(match.group(1))
|
||||
if not client_nom:
|
||||
return None
|
||||
return {"action": "chercher_memoire", "requete": client_nom}
|
||||
|
||||
|
||||
def extraire_liste_clients(texte):
|
||||
if not re.search(r"\bclients?\b", texte, flags=re.IGNORECASE):
|
||||
return []
|
||||
@@ -316,6 +364,13 @@ def nettoyer_nom_client(nom):
|
||||
return nom
|
||||
|
||||
|
||||
def nettoyer_titre_tache(titre):
|
||||
titre = titre.strip(" -\t\r.,;:?")
|
||||
titre = re.sub(r"^de\s+", "", titre, flags=re.IGNORECASE)
|
||||
titre = re.sub(r"\s+", " ", titre)
|
||||
return titre[:1].upper() + titre[1:] if titre else ""
|
||||
|
||||
|
||||
def transcrire_audio(fichier):
|
||||
suffix = Path(fichier.filename or "voice.webm").suffix or ".webm"
|
||||
with tempfile.NamedTemporaryFile(delete=False, suffix=suffix) as tmp:
|
||||
|
||||
Reference in New Issue
Block a user