Spaces:
Running
Running
Commit History
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
11 days ago
-
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
-
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
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
-
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
-
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
-
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
-
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
-
Etend le widget JASMINE aux 6 modules restants
Integre render_scoped_widget sur Dashboard, USIS, Check Loan, Demandes Prets, Init Loan et Onboarding, chacun avec son propre contexte (client selectionne, pret en cours, scores KYC...). Complete le deploiement commence sur Repayments, Digital Twin, Optimizer et le simulateur client. Corrige au passage une 3e copie codee en dur de l'objectif annuel (ml_dashboard.py, "objectif_2026 = 2_200_000") qui avait echappe a la Phase 1 : elle lit maintenant la meme source de verite unique (vortex_params.get_objectif_annuel) que l'Optimizer et les Rapports IA. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>54b48aa
-
Update src/modules/Check_Up_Loans.py
Verified signature679a3a2 -
Update src/modules/Check_Up_Loans.py
Verified signaturebcd03cb -
Update src/modules/Check_Up_Loans.py
Verified signaturea30205d
-
Update src/modules/Check_Up_Loans.py
Verified signature7e6116c
-
Update src/modules/Check_Up_Loans.py
Verified signature5c91a95
-
Update src/modules/Check_Up_Loans.py
Verified signature89eec79
-
Update src/modules/Check_Up_Loans.py
Verified signature59a73ad -
Update src/modules/Check_Up_Loans.py
Verified signature811ae41
-
Update src/modules/Check_Up_Loans.py
Verified signature8ba5762
-
Update src/modules/Check_Up_Loans.py
Verified signature0f8ec9d -
Update src/modules/Check_Up_Loans.py
Verified signature6a0beb2 -
Update src/modules/Check_Up_Loans.py
Verified signaturecbbc6c2 -
Update src/modules/Check_Up_Loans.py
Verified signature2981f15 -
Update src/modules/Check_Up_Loans.py
Verified signature33439b6 -
Update src/modules/Check_Up_Loans.py
Verified signaturea3aefee
-
Update src/modules/Check_Up_Loans.py
Verified signaturea9d5c28 -
Update src/modules/Check_Up_Loans.py
Verified signature6b2ef27
-
Update src/modules/Check_Up_Loans.py
Verified signatureededd7b
-
Update src/modules/Check_Up_Loans.py
Verified signaturecfd6d98
-
Update src/modules/Check_Up_Loans.py
Verified signaturee9b6ddb
-
Update src/modules/Check_Up_Loans.py
Verified signaturebb7f612 -
Update src/modules/Check_Up_Loans.py
Verified signature5f3a7e9 -
Update src/modules/Check_Up_Loans.py
Verified signature9e2cf70 -
Update src/modules/Check_Up_Loans.py
Verified signatureb5fbb97 -
Update src/modules/Check_Up_Loans.py
Verified signature7879e34 -
Update src/modules/Check_Up_Loans.py
Verified signature0f863c7
-
Update src/modules/Check_Up_Loans.py
Verified signature1e01ea0 -
Update src/modules/Check_Up_Loans.py
Verified signature5a63cae -
Update src/modules/Check_Up_Loans.py
Verified signature79cf76b -
Update src/modules/Check_Up_Loans.py
Verified signature918fdfd -
Update src/modules/Check_Up_Loans.py
Verified signaturec7fecbd -
Update src/modules/Check_Up_Loans.py
Verified signature9e6ea19 -
Update src/modules/Check_Up_Loans.py
Verified signature4eb58a2 -
Update src/modules/Check_Up_Loans.py
Verified signature839bc69 -
Update src/modules/Check_Up_Loans.py
Verified signaturecf7bccf
-
Create Check_Up_Loans.py
Verified signature10f86ec