Spaces:
Running
Running
Commit History
2 days ago
-
feat(simulateur): score de remboursement sans Jev, selon la qualite du modele Running
Le score s'affiche si le modele a passe ses controles (historique mature, classes equilibrees, test chronologique, Brier, AUC). Jev reste pour l'analyse Jasmine et Ontology. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>2278cb0
3 days ago
-
docs(onboarding): mail insiste sur localisation obligatoire
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>bb9984f
5 days ago
-
feat(tarif): forfait duree minimale = plancher, taux machine si plus eleve
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>8661ddc -
style(ui): emojis remplaces par des balises tactiques sobres
- [OK] [ECHEC] [ATTENTION] [ALERTE] [REFUS] [STOP] [ANALYSE] [IA] [DOSSIER]... a la place des emojis dans tous les libelles, messages et journaux - puces d'etat (couleurs) remplacees par des carres/ronds geometriques - aucun changement de logique : les tests et la detection des messages suivent la nouvelle forme Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>495d60d
11 days ago
-
feat: journal d'audit, pénalités, cohérence remboursements et signature
- Journal d'audit (core/audit_log.py, module audit_viewer) : traces des envois d'email, connexions et jobs - Pénalités : consommation de l'occurrence à l'octroi uniquement, idempotente - Correctifs remboursements, rappels et décimaux du Sheet (virgule française) - Pages et module de signature électronique restants (voir commit précédent) Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>56277f7 -
feat(signature): signature electronique des contrats (lien email + 4 derniers car. ID_Officiel + OTP + case a cocher)
- Pret cree EN_ATTENTE_SIGNATURE (bloque), ACTIF quand client (et garant) ont signe - Pages publiques ?sign=<token> et ?verifysig=<ID> ; bloc de signature electronique en fin de PDF - PDF deterministes (invariant=1) + snapshot JSON : documents reconstituables sans stockage de fichier - Sceau HMAC (secret SIGNATURE_SECRET), token et OTP jamais stockes en clair, journal append-only - Relances 24 h, re-emission automatique apres expiration (3 max), alerte admin - Module admin Signatures : suivi, rattrapage des prets sans remboursement, actions, journal - Branche sur octroi direct, demandes approuvees et Check-Up ; EN_ATTENTE_SIGNATURE compte dans la limite de prets - 79 tests (faux classeur Sheets, AppTest Streamlit) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>de5e25f
13 days ago
-
perf+fix(simulateur): Jasmine plus rapide, capacite de remboursement lue par la grille
LLM : modeles non textuels exclus (image, audio, deep-research...) ; un modele en echec est ecarte un moment (15 min quota, 6 h modele absent, 2 min panne) au lieu d'etre reessaye a chaque appel ; mode rapide (modeles flash d'abord) et delai de 25 s par modele pour l'analyse Jasmine. Jev : Jasmine recoit la capacite de remboursement calculee par la grille de l'entreprise et doit la recopier ; la trace envoyee a Jev contient cette lecture et la grille. Mots de decision interdits dans le rapport, phrase de non-garantie imposee. Outil tools/jev_diagnostic.py pour tester quelles formulations passent. Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>5183195 -
fix: journalisation des refus Jev et ajustements du remboursement
- Simulateur : chaque refus Jev de l'analyse est écrit dans les logs avec les contrôles échoués, le score, l'erreur et le début du rapport, pour diagnostiquer les boucles de réécriture Jasmine - Remboursements et penalites : modifications en cours de la session de suivi (AnalyseRepayment, repayments) Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>238c4a3 -
fix(simulateur): meme seuil de blocage a l'affichage et a la soumission (LIMITE_PRETS_EN_COURS = 3)
Le garde-fou de soumission bloquait a 2 prets/demandes en cours alors que l'affichage bloque a 3 : un client avec 2 prets etait refuse a tort. Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>e50b6fd -
feat(simulateur): progression de l'analyse IA en une ligne et durée dans Demandes Prêts
Sous le bouton d'analyse, une seule ligne remplacée à chaque étape (taux ML, Jasmine, contrôles Jev, modèle de remboursement) avec le temps écoulé, puis "Analyse terminée en X s". Durée totale et détail par étape enregistrés dans Prets_Requests (Duree_Analyse_IA_s, Detail_Analyse_IA) et affichés dans la fiche de la demande. Chronométrage de chaque étape aussi écrit dans les logs ([CHRONO simulation]). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>f40f505 -
perf(simulator): stabilize ML cache hash, remove cosmetic KYC upload delays
- client_simulator.py: drop UI-only 'label' column before passing df_clients/df_garants to get_trained_model_cached and train_repayment_model_cached. That column was hashed by st.cache_resource on every click of LANCER L'ANALYSE DU DOSSIER, causing XGBoost/repayment model retraining even when nothing relevant had changed. - kyc_form.py: remove artificial time.sleep() calls in the per-document upload progress loop (~1.35s/doc with zero functional effect). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>7d8fe7c -
fix: remboursements, pénalités, rappels et cohérence des calculs
Remboursements (AnalyseRepayment, repayments): - Un paiement en retard qui ne couvre pas les pénalités est PARTIEL et ne clôture plus le prêt tant qu'un solde reste dû (garde-fou 1 %) - Pénalités dues une seule fois par échéance (celles déjà encaissées sont retirées), prélevées en premier dans la limite du versement : plus d'intérêts négatifs ; trop-perçu refusé avec message ; la dernière échéance absorbe le reliquat cumulé ; scénario de pénalités obligatoire en cas de retard - Registre des retards pardonnés : une échéance qui a déjà encaissé des pénalités n'est plus comptée comme pardonnée - Numéro de reçu et ID de transaction : plus grand numéro émis + 1, lus du même instantané juste avant l'écriture - Rappels : pénalités annoncées = pénalités encaissées (une seule règle pour le bouton, le tir groupé et le job de 12 h) ; bilan du tir groupé conservé après rechargement, clients sans email journalisés - Reçu PDF : adresse échappée (balisage dans l'adresse ne casse plus …92d7dac -
fix(simulator): add missing charge_mensuelle_equivalente definition
Previous commit shipped calls to charge_mensuelle_equivalente without its definition (NameError on LANCER L'ANALYSE DU DOSSIER). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>3ee9a2a -
fix(simulator): use ML rate instead of silent 5% fallback
get_trained_model_cached returns (model, dossier_type) but the simulator kept the whole tuple, so predict() raised and every client got the 5% fallback rate. Unpack the model and log each fallback (import, training, unavailable model, prediction) via log_swallowed / vortex logger. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>ab935d4 -
Augmente limite prêts simultanés de 2 à 3
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>84013b8
16 days ago
-
fix: lien d'onboarding valable 48 heures, precise dans le mail
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>52546c7
17 days ago
-
fix: parcours client plus fiable (onboarding, KYC, demande de pret)
- Noms avec accents acceptes dans le formulaire KYC (client et contact d'urgence) - Lien d'onboarding verifie a l'ouverture mais consomme seulement apres l'enregistrement du dossier (validite 7 jours) ; lien simulateur reouvrable pendant 2 h - Documents KYC repartis en plusieurs e-mails selon la taille, resultat journalise dans l'onglet Audit_Documents, client prevenu en cas d'echec - Mail de confirmation de demande de pret : echec sans fausse erreur - ID du dossier releve a l'envoi, apercu en cache, erreurs lisibles - Mail d'onboarding : liste des documents et informations a preparer, conseil d'ouvrir le lien dans Chrome ou Safari - APP_BASE_URL : valeur par defaut partagee par tous les liens - Attente forcee par document reduite de 4 s a 1 s Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>bba08b3
18 days ago
-
fix: APP_BASE_URL sans fallback bloquait l'envoi des liens onboarding
Erreur d'envoi. silencieuse pour client et garant : get_credential n'avait pas de valeur par defaut si le secret APP_BASE_URL etait absent. Ajout du meme fallback que sim_gate.py (URL du Space) et message d'erreur precis (credential manquant, echec Sheets, echec Brevo) au lieu du message generique. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>bd36912 -
fix: corrige le parcours inscription client/garant via lien onboarding
Bouton Créer un nouveau client était mort (aucun flux derrière). Email garant vide soumis en silence. Échec envoi Brevo pas détecté (status non vérifié). Exceptions de validation de token avalées sans log. Bouton Enregistrer un nouveau dossier disparaissait après le premier rerun, bloquant le formulaire. Radio Client/Garant ne préselectionnait jamais le bon type pour qui arrive par lien email. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>8b67c91
22 days ago
-
fix: consolide get_credential, log silences critiques, securise MIME/SPARQL/Mapbox
- Rapport IA : filtre mois/trimestres multi-select par cases a cocher (union exacte des mois coches, non contigu) - get_credential() centralisee dans core/email_client.py : supprime 10 copies dupliquees (client_simulator, Check_Up_Loans, loans_engine, repayments x2, notifications, geoip_client, sim_gate, map_dashboard, geoloc_verify) - except Exception: pass nus remplaces par log_swallowed() ou Weitere silences critiques (demarrage scheduler, cache Usis, schema_cache AIP, prediction ML post-reentrainement) - Logs InvoiceRepayment.py : retrait numero_recu/trans_id des print() (fuite potentielle dans les logs du Space) - validation_engine.py : validation du format cls/prop avant interpolation SPARQL - map_dashboard.py : token Mapbox echappe via json.dumps au lieu de concatenation brute en JS - document_validator.py : verification magic bytes avant Docling (fichier renomme ne passe plus silencieusement) - Ajout tests/ (62 tests : penalites_retard, AnalyseFinance, doc…2fe4365
24 days ago
-
Clarify client/guarantor creation buttons in simulator
Changed button labels from "Vous n'êtes pas dans la liste ? Cliquez ici..." to "Créer un nouveau client/garant" for clarity. Buttons trigger onboarding flow to send access link (existing behavior unchanged). Note: Current implementation sends onboarding link only; actual profile creation happens when user completes KYC form. No data validation after link consumption.29dcfdc
26 days ago
-
Corriger le pourcentage et diagnostiquer les refus Jev
e3cb468 -
Ajouter les validations Jev et l'estimation de remboursement
e07d8ff -
Empêcher le client d'être son propre garant
5c82d58
28 days ago
-
Add email gate for public simulator access
7258df9 -
Capture request origin for fraud review
5b425ba -
Réduit la consommation de quota Google Sheets : lectures groupées + cache étendu
- core/sheets_cache.py : ajoute get_cached_dfs_batch() (1 appel API via values_batch_get au lieu de N appels par feuille), tout en reproduisant la numérisation par défaut de get_all_records() pour un résultat identique. - request_loans.py, client_simulator.py, Usis.py, map_dashboard.py, logistique.py, communications.py, ml_dashboard.py : lectures regroupées en un seul appel (avec repli feuille par feuille si une feuille optionnelle manque), ou mises en cache quand elles ne l'étaient pas. - regles_metier.py : cache la lecture de Clients_KYC (liste déroulante), inchangé pour les lectures qui doivent rester immédiates (règles de tarification en direct). - Laissé volontairement sans cache : Check_Up_Loans.py (désactive la numérisation gspread pour éviter une corruption des décimales françaises — incompatible avec le nouveau cache groupé), les lectures juste après une écriture (forecasting, règles métier), et les tâches planifiées en arrière-plan (notifications).c20487a -
Fix simulator and loan request flows
8cbb101 -
Score_Jasmine en Markdown sûr (plus de HTML brut stocké/affiché), et garde anti double-clic sur les boutons d'écriture
- client_simulator.py : l'audit financier/algorithmique stocké dans Score_Jasmine est généré en Markdown standard au lieu de HTML brut, pour ne plus persister de balises dans Prets_Requests. - request_loans.py : affichage du rapport JASMINE via st.markdown() natif (sans unsafe_allow_html) au lieu d'un échappement manuel qui cassait la mise en forme de l'audit. - core/ui_guards.py (nouveau) : garde-fou générique anti double-soumission pour les boutons qui écrivent dans Google Sheets ou envoient un email, appliqué à l'octroi de prêt, à l'encaissement de remboursement, à l'envoi de rappels/reçus et à la validation KYC.c638843 -
Réduit la taille du bouton de suppression d'échéance personnalisée
Le bouton "[ X ]" prenait toute la largeur de sa colonne, à la même hauteur que le champ de date à côté. Remplacé par un bouton compact "✕" aligné en bas de ligne. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>39b91d2 -
Barème de majoration par montant, détail des frais, et fix quota 429
Barème : la majoration pour retard pardonné dépend désormais du montant du prêt simulé (5% < 50k, 2,5% entre 50k et 150k, 2% > 150k XOF), remplaçant le forfait unique précédent. Pilotable dans Règles Métier. Détail des frais : le simulateur écrit maintenant la composition du taux (frais de transfert, risque brut IA, marge, majoration retard) dans de nouvelles colonnes de Prets_Requests, affichées dans le module Demandes Prêts. Quota 429 : l'initialisation du registre de pénalités ouvrait la feuille et écrivait une ligne par client/occurrence, épuisant le quota de lecture Google Sheets. Elle n'ouvre désormais la feuille qu'une fois et écrit toutes les lignes en un seul appel. Nouvelle fonction afficher_erreur_sheets() (bandeau jaune 429 / rouge générique) appliquée au chargement du simulateur et aux appels Sheets de Règles Métier ; la majoration se dégrade silencieusement en cas d'échec plutôt que de casser la page du client. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>4d00d77 -
Seuil de retard inclusif (>=) et message de blocage plus direct
Un retard de exactement 3 jours (le seuil) compte désormais comme occurrence éligible, au lieu d'exiger strictement plus de 3 jours. Le message "2 prêts en cours" invite maintenant directement à rembourser un prêt en cours, plutôt que de renvoyer vers le conseiller. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>3b3da67 -
Ajoute la majoration forfaitaire pour retards pardonnés (simulateur uniquement)
Un retard pardonné (Statut_Paiement EN_RETARD, Jours_Retard > seuil, Penalites_Retard = 0) dans Remboursements devient une occurrence facturable dans le simulateur de prêts, jamais une réécriture rétroactive des prêts déjà soldés. Nouveau registre append-only Suivi_Penalites_Retard (détection par ID_Transaction, aucun doublon même en relançant la détection) : chaque prêt soumis consomme une seule occurrence et porte une majoration forfaitaire fixe (pas multipliée par le solde), répartissant la pénalité sur plusieurs prêts plutôt que de tout charger sur un seul. Le seuil de jours et le pourcentage de majoration sont pilotables depuis le module Règles Métier (historisés, sans redéploiement), qui gagne aussi un bouton d'initialisation volontaire pour construire le solde de départ de tous les clients déjà concernés, avant mise en service. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>c922ea2
29 days ago
-
fix(ui): simplify "AJOUTER ECHEANCE" button label
Remove the brackets and leading plus sign, keeping just the two words.f0eec26
30 days ago
-
Simplifie le libelle telephone et retire l'expander DESCRIPTIONS DES OFFRES
- "Numero de telephone (si plusieurs resultats)" -> "Numero de telephone" - L'expander "DESCRIPTIONS DES OFFRES (Cliquez pour derouler)" est retire : son contenu etait deja duplique dans le GUIDE D'UTILISATION juste en dessous, qui reste la seule source pour ces descriptions. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>01e23a1 -
Reduit et deuppercase les boutons "pas dans la liste" (onboarding)
Ces deux boutons heritaient du style .stButton global (gros, gras, tout en majuscules) prevu pour les actions principales. Ce sont des liens secondaires vers l'onboarding : nouvelle classe .btn-lien-discret (texte normal, plus petit, souligne, sans majuscules forcees). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>91ab58c
-
Restaure l'identification par nom, avec desambiguisation sans liste
La recherche par Identifiant Client + telephone (exacts, 2 champs) protegeait bien la confidentialite mais degradait l'UX : le client doit desormais retenir un identifiant technique. Remplace par une recherche par nom complet (comme avant la correction de securite), mais sans jamais afficher la liste des profils correspondants : - 0 resultat -> "aucun profil trouve" - exactement 1 resultat -> profil valide automatiquement - plusieurs resultats -> demande explicite de completer le nom/prenom ou d'ajouter le numero de telephone pour ne garder qu'un seul resultat, sans jamais reveler combien de profils correspondent ni lesquels. Meme logique appliquee a la recherche du garant, par coherence. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>38976f5 -
Securite et fiabilite : corrections sur l'ensemble du simulateur/octroi/notifications
Relecture complete (17 fichiers modifies + 4 nouveaux) des corrections suivantes, apportees en parallele sur le poste : Securite : - Simulateur public : recherche client remplacee (ne liste plus toute la base), mot de passe partage remplace par un lien d'onboarding a usage unique, outils JASMINE (portefeuille reel) retires cote page publique (allowed_tools=[]). - Mots de passe hashes PBKDF2-HMAC-SHA256 (core/auth.py), compatible avec les comptes pas encore migres, comparaison en temps constant y compris pour un identifiant inconnu (anti-enumeration). - Verrouillage apres 5 tentatives de connexion echouees (5 min). - IP client lue depuis le dernier maillon de X-Forwarded-For (celui ajoute par le proxy de confiance) plutot que le premier (falsifiable par le client) ; bug qui empechait l'enregistrement du GPS corrige. - Motif libre du client (et l'analyse JASMINE qui en decoule) traite comme une donnee a citer, jamais une instruction, avec echappement HTML avant afficha…397b23d -
fix(security): remove client-list exposure, shared onboarding password, and public JASMINE portfolio access
- client_simulator.py: identify client/guarantor by ID + phone (exact match) instead of a substring name search that listed the whole client base - client_simulator.py/streamlit_app.py: replace hardcoded client/ClientPass onboarding credentials with a single-use emailed token, consumed via a new public /?onboard= route - jasmine_widget.py: add an allowed_tools whitelist enforced server-side (not just via the system prompt), and scope the public simulator's JASMINE widget to no portfolio-wide tools7409b3e -
Corrige le tableau d'amortissement et le Taux_Hebdo stocke quand le forfait duree minimale s'applique
Quand la regle duree minimale (10% forfait) est active, le tableau d'amortissement continuait a utiliser le taux hebdo normal (ignore par la regle) pour repartir Capital/Interets, produisant un cout du credit affiche dans le tableau incoherent avec le Cout_Credit reellement facture. Le Taux_Hebdo enregistre dans Prets_Requests etait lui aussi le taux ignore, faussant la meme regeneration du tableau cote module Demandes Prets. Les deux utilisent desormais le taux effectif (10%) quand le forfait est actif. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>80bcd4a
-
Ajoute la regle de duree minimale (2 semaines) : forfait fixe 10% du capital
Si la duree reelle du pret (calendaire ou choisie) est inferieure a 2 semaines, le taux hebdomadaire normal (IA + regles) n'est plus applique : le client paie un forfait fixe de 10% du capital finance (= 2 semaines x 5%/semaine), quel que soit le type de remboursement. Applique de maniere coherente au calcul d'endettement transmis a l'IA (etape 2) et au resultat final (etape 3), avec mention visible dans l'audit et dans les resultats affiches. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>f207abf -
Ameliore l'UX du simulateur : espacement, tableau ouvert par defaut, blocage 3e pret actif
- Espace ajoute entre l'alerte de risque / l'historique et les cartes metriques suivantes (margin-bottom). - Le tableau d'amortissement previsionnel s'affiche deroule par defaut. - Encapsule "Taux applique par l'IA" et "Configurez les dates de versement" dans un encadre bleu, meme style que l'historique de remboursement. - Bloque toute nouvelle demande si le client a deja 2 prets actifs (ACTIF/EN_RETARD/LITIGE), avec notification immediate et sans possibilite de poursuivre le parcours. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>998f263 -
Rendre non bloquante l'alerte de risque d'endettement (>130%)
L'alerte reste affichee (theme jaune/Gotham) mais ne bloque plus la soumission de la demande : le gerant garde la decision finale. Ajoute un affichage de l'historique de remboursement (retards passes) du client, visible cote simulateur public et cote module Demandes Prets, pour aider a evaluer le risque reel du dossier. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>3d15e49
-
Nettoie les imports et fonctions mortes detectes par audit statique
Scan AST (imports jamais references) + scan par occurrences (fonctions jamais appelees) sur tout src/, verifie manuellement pour ecarter les faux positifs (accents cassant les limites de mot dans un grep de controle). Retire ~35 imports inutilises repartis sur 24 fichiers, et 3 fonctions mortes : get_form_elapsed_time (doublon d'un calcul deja fait dans kyc_form.py), get_select_index (jamais appelee), et refresh_data (dupliquee a l'identique dans Check_Up_Loans.py et loans_engine.py, jamais branchee a un bouton). Laisse de cote apply_ai_algorithms, detect_fraud_logic, is_closed et build_from_networkx -- a activer, pas a supprimer (suite dans un prochain commit). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>5b0dd39 -
Deplace le widget JASMINE du simulateur juste apres le guide d'utilisation
Etait affiche tout en bas, apres les resultats de simulation. Le deplacer en haut suppose qu'il soit visible avant que les valeurs de simulation existent : les derniers resultats connus sont maintenant stockes en session_state des qu'ils sont calcules, et le widget (place juste apres GUIDE D'UTILISATION) les lit depuis la, avec un message explicite tant qu'aucune simulation n'a encore ete lancee. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>18a8f2a
-
Corrige 4 problemes releves sur les widgets JASMINE et l'agent Ontology
- client_simulator.py : les definitions d'offres/types de remboursement reprennent maintenant le texte officiel deja affiche sur la page (au lieu d'un resume trop vague), et le guide precise explicitement que le taux/mensualite sont des resultats calcules, pas des champs a modifier directement (le visiteur doit changer offre/montant/type). - digital_twin.py : le widget JASMINE etait invisible tant qu'aucune simulation n'avait ete lancee (contexte construit apres un retour anticipe). Deplace le contexte + les actions avant ce retour, en le derivant de st.session_state plutot que des variables locales, pour qu'il soit toujours visible et puisse lancer lui-meme une simulation. - kyc_form.py : widget JASMINE deplace en haut de la page (juste apres l'ID du dossier), au lieu du bas du formulaire. - jasmine_agent.py : ajoute une regle de coherence des variables SPARQL (SELECT ?x WHERE {?y ...} sans lier ?x renvoie toujours vide) avec le pattern BIND(STRAFTER(...)) pour e…525ec96 -
Enrichit le contexte JASMINE de 9 modules avec guide et definitions de champs
Chaque widget JASMINE ne recevait que des valeurs brutes sans aucune explication de ce qu'elles representent ni du role de la page — meme cause racine que le bug "meilleur mois" et "CRITIQUES" deja corriges sur Dashboard et USIS. Ajoute systematiquement guide_page (role de la page, workflow) et definitions_champs (definition metier de chaque valeur transmise, y compris les enumerations type_pret/statut_analyse/ statut_echeance) sur : request_loans, loans_engine, Check_Up_Loans, repayments, client_simulator, jasmine_optimizer, digital_twin, et complete ml_dashboard/Usis deja touches precedemment. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>25c2bcc
-
Centralise les appels IA et ajoute des outils de calcul agentiques a JASMINE
Remplace 7 points d'appel Gemini/Groq duppliques (jasmine_agent, AI_Reports, digital_twin, jasmine_optimizer, document_validator, kyc_form, client_simulator) par un client LLM unique (src/core/llm_client.py) avec une seule cascade de repli texte-only. Migre du SDK google-generativeai (deprecie par Google) vers le nouveau SDK officiel google-genai. Ajoute 3 outils de calcul partages (src/agent/calc_tools.py) - previsions de tresorerie, simulation de portefeuille, prediction de taux - branches sur l'agent JASMINE global (Ontology) et corrige au passage l'outil highlight_node qui existait sans etre annonce au LLM. Ajoute un widget JASMINE leger (src/modules/jasmine_widget.py), sans moteur RDF/SPARQL, integre sur Repayments, Digital Twin, Optimizer et le simulateur client public - scope aux donnees deja chargees par la page. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>e3e63b6
-
Update src/modules/client_simulator.py
Verified signature7a1c73d -
Update src/modules/client_simulator.py
Verified signatureda5f68d