Spaces:
Running
Running
Commit History
2 days ago
-
feat(jasmine): chat et contenu de la carte Logistique (Mapbox) transmis au chat
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>57c9004
3 days ago
-
fix(logistique): lecture des feuilles tolerante aux onglets absents, quota remonte au bandeau 429
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>5ba382e
4 days ago
-
feat(logistique): carte de renseignement — liens adresses/IP/tel/email/piece entre clients et garants
- core/liens_logistique.py : croisement pur (adresses normalisees + GPS, IP publiques, telephones, emails, pieces, employeurs, garants). IP d'audit limitees aux sessions publiques. - modules/carte_html.py : carte plein ecran noire, clic = dossier du lieu + liens, recherche, alertes. - map_dashboard : retrait du bloc ANSD (donnees externes) et des KPI codes en dur. - sheets_quota : invalidation par onglet (l'audit ne vide plus les autres feuilles). Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>1030d8c
5 days ago
-
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
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
28 days ago
-
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 -
Garde anti double-clic sur les boutons d'écriture restants
Complète la protection déjà posée (core/ui_guards.py, voir commit précédent sur kyc_form/repayments/request_loans/client_simulator) sur les boutons restants qui écrivent dans Google Sheets ou envoient un email : - Check_Up_Loans.py : validation d'une renégociation de prêt, envoi du contrat mis à jour. - loans_engine.py : octroi direct d'un prêt, envoi du contrat. - communications.py : envoi groupé de communications. - logistique.py : déclenchement manuel du digest admin. - map_dashboard.py : envoi du lien de vérification géolocalisation. - jasmine_optimizer.py : enregistrement de l'objectif annuel et application de la marge globale. - regles_metier.py : formulaires d'édition de règle et du barème de pénalité retard (fermeture de la fenêtre de double-clic déjà réduite par la vérification "valeur inchangée"). Les actions ponctuelles par dossier (octroi, encaissement, renégociation, KYC) restent désactivées après usage avec la mention "Bouton déjà utilisé" ; les actions répétabl…95313e0
-
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
-
Corrige module Communications invisible, visibilite des liens de proximite, et donnees mensuelles pour JASMINE (Dashboard)
- Communications manquait du forcage de droits superadmin (comme les autres modules admin), donc invisible tant que PERMISSIONS n'etait pas mis a jour manuellement. - Lignes de proximite TACTICAL MAP : halo + trait plus epais et plus opaque, peu visibles par-dessus le fond satellite avec les valeurs initiales. - Dashboard (ml_dashboard.py) : ajoute une repartition mensuelle (nb prets, benefices, capital sorti) au contexte JASMINE — sans ca aucune question temporelle ("meilleur mois") n'etait repondable, le contexte ne contenait que des totaux agreges sans axe temporel. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>3faf47b
-
Ajoute detection de proximite/geolocalisation verifiee et module Communications
- Corrige l'agent ontologie (rdfs:label != nom) et cable les donnees manquantes des widgets JASMINE (USIS, onboarding). - TACTICAL MAP : lignes de proximite plus-proche-voisin (detection de collusion), geocodage sur adresse complete + pays dynamique au lieu du Senegal force, correction manuelle persistante par client. - Onboarding : capture GPS navigateur + comparaison IP (non bloquant pour l'instant, le temps de confirmer que la permission navigateur fonctionne sur l'environnement de deploiement). - Nouveau : lien de verification de localisation par email (usage unique, declenchement manuel par client) et module Communications pour l'envoi groupe a une selection de clients/garants. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>6916dd5
-
Reactive et fiabilise les notifications et la carte, ajoute la page Logistique
notifications.py etait du code mort : demarrer_scheduler() n'etait appele nulle part. Le branche desormais au demarrage de l'app (streamlit_app.py), corrige envoyer_email_rappel pour utiliser une vraie copie cachee admin (un seul email, plus de message separe ni de fallback admin@vortex.com), et ajoute un digest quotidien (_job_digest_admin) couvrant les dossiers KYC en attente de revue et les demandes de pret en attente depuis plus de 3 jours. map_dashboard.py etait egalement inatteignable (aucune entree de menu). Deplace les cles LocationIQ et Mapbox codees en dur vers les secrets, colore les marqueurs par statut de pret reel (rouge = retard/litige), remplace le panneau LIVE FEED fictif par des compteurs reels, et ajoute une tournee prioritaire (plus proche voisin) pour les clients a risque. Nouvelle page unifiee "Logistique" (src/modules/logistique.py) avec 3 onglets : carte terrain, dossiers a traiter (KYC + demandes en attente), et relances (statut + declenchement manuel du dige…6f4a72e
-
Update src/modules/map_dashboard.py
Verified signature4d7a465 -
Update src/modules/map_dashboard.py
Verified signature8bd2309 -
Update src/modules/map_dashboard.py
Verified signature2026e60
-
Update src/modules/map_dashboard.py
Verified signature5735847
-
Update src/modules/map_dashboard.py
Verified signature8536923 -
Update src/modules/map_dashboard.py
Verified signature779e212 -
Update src/modules/map_dashboard.py
Verified signature944c89c -
Update src/modules/map_dashboard.py
Verified signature40abc9c -
Update src/modules/map_dashboard.py
Verified signature90ed3c2
-
Update src/modules/map_dashboard.py
Verified signature0d57f2a -
Update src/modules/map_dashboard.py
Verified signature2cffa8f
-
Update src/modules/map_dashboard.py
Verified signaturea6627e0
-
Update src/modules/map_dashboard.py
Verified signatured5a050b -
Update src/modules/map_dashboard.py
Verified signature99d9d70 -
Update src/modules/map_dashboard.py
Verified signature8dadb15 -
Update src/modules/map_dashboard.py
Verified signature1023ae4 -
Update src/modules/map_dashboard.py
Verified signature3f8300e -
Update src/modules/map_dashboard.py
Verified signature7453c6d -
Update src/modules/map_dashboard.py
Verified signatured2832cf -
Update src/modules/map_dashboard.py
Verified signature4dbcdf0 -
Update src/modules/map_dashboard.py
Verified signature8f066dd -
Update src/modules/map_dashboard.py
Verified signaturebec67a7 -
Update src/modules/map_dashboard.py
Verified signaturecd68b4a -
Update src/modules/map_dashboard.py
Verified signature5cea090 -
Update src/modules/map_dashboard.py
Verified signaturebcbc303 -
Update src/modules/map_dashboard.py
Verified signature59055d8 -
Update src/modules/map_dashboard.py
Verified signature82794f7 -
Create map_dashboard.py
Verified signature7d8f0ad