127 Commits

Author SHA1 Message Date
cf91d0b69e
test(integration): 3 scénarios E2E Playwright (Fiches, Analyse, Plan d'action)
- Infrastructure test : StreamlitApp helper, réinitialisation session, serveur dédié port 8502
- Scénario Fiches : sélection dossier Assemblage + fiche casques VR
- Scénario Analyse : Serveur→Pays géo, Germanium, Chine, filtre IHH Pays, vérification Sankey
- Scénario Plan d'action : Serveur + Germanium, vérification dashboard criticités

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 11:52:40 +01:00
8e2556c2b0
test(unit): +381 tests unitaires — couverture 16%→35%
- 9 nouveaux fichiers de tests (persistance, translations, fiches, indices, IHH)
- Enrichissement des tests existants (graph_utils, gitea, widgets, tickets)
- 67→448 tests, tous passent

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 11:52:21 +01:00
6d2e877341
feat(audit): audit qualité complet — 907→0 erreurs ruff + fix multiselect labels
- Correction des 907 erreurs ruff (pathlib, imports, nommage, simplifications, docstrings)
- Fix déduplication labels dans multiselect nœuds d'arrivée (analyse)
- Expansion 1→N label→IDs pour le Sankey (Pays d'opération)
- Ajout CLAUDE.md et document de design de l'audit
- Mise à jour .gitignore (artefacts tests exploratoires)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 11:52:01 +01:00
b97bbfe0ed
fix(analyse): afficher les libellés au lieu des IDs dans la sélection fine des nœuds
Problème:
- Dans l'onglet Analyse, la sélection fine des nœuds affichait les clés
  techniques (ex: "Chine_geographique") au lieu des libellés lisibles
  (ex: "Chine")

Solution:
- Création de mappings bidirectionnels ID↔Label pour chaque niveau
- Affichage des labels dans les multiselect pour l'utilisateur
- Stockage et utilisation des IDs en interne pour la logique métier
- Préservation de la compatibilité avec le système de persistance

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-02-08 09:40:33 +01:00
273f409a55
fix(pdf): Support des caractères Unicode (indices) dans génération PDF
Problème:
- Warning lors de la génération PDF: Missing character U+2083 (₃)
- La police Latin Modern Roman ne supporte pas les indices Unicode

Cause:
- XeLaTeX utilise par défaut lmroman10-regular qui ne contient pas
  les caractères Unicode étendus (indices, exposants, symboles)

Solution:
- Configuration de polices Liberation qui supportent pleinement Unicode
  * mainfont=Liberation Serif (texte principal)
  * sansfont=Liberation Sans (titres, interface)
  * monofont=Liberation Mono (code, technique)
- Polices Liberation sont des équivalents open-source de Times/Arial/Courier
- Pré-installées sur Fedora/RHEL et disponibles sur toutes distributions

Avantages:
- Support complet Unicode (indices ₀₁₂₃, exposants ⁰¹²³, etc.)
- Polices open-source et largement disponibles
- Meilleur rendu pour caractères scientifiques et mathématiques
- Compatibles avec la métrique des polices Microsoft

Impact:
- Plus de warnings pour les caractères Unicode
- PDF générés avec caractères spéciaux correctement affichés
2026-02-08 09:29:31 +01:00
64f041f04f
fix(fiches): Correction bug sélection fiche nécessitant double-clic
Problème:
- Lors du changement de fiche dans le selectbox, l'ancienne fiche
  restait affichée et il fallait cliquer 2 fois pour changer

Cause:
- Le code assignait manuellement la valeur du selectbox au session_state
  AVANT l'affichage du widget, créant un conflit avec l'index forcé
- Streamlit réexécutait le script avec l'ancienne valeur stockée

Solution:
- Utilisation du paramètre 'key' pour lier automatiquement le selectbox
  au session_state au lieu d'une assignation manuelle
- Suppression des lignes redondantes d'assignation

Changements:
- app/fiches/interface.py: Ajout key pour les 2 selectbox
- .gitignore: Précision /Fiches/ pour ne pas ignorer app/fiches/

Impact:
- Sélection de fiche fonctionne maintenant au premier clic
- Comportement Streamlit standard et prévisible
2026-02-08 09:23:49 +01:00
77b6bedd6f
fix(gitignore): Exclure fichiers temporaires batch_ia
- Ajout batch_ia/temp_sections/ dans .gitignore
- Retrait des fichiers temporaires du versioning
- Ajout rapports bandit dans .gitignore
2026-02-08 09:17:53 +01:00
cef9c9d67b
feat(security): Analyse et corrections de sécurité complète
Corrections de sécurité (Bandit):
- Fix vulnérabilité HIGH Jinja2 XSS avec documentation de sécurité
- Ajout timeouts sur toutes les requêtes HTTP (17 occurrences)
  * utils/gitea.py: 3 timeouts (10s)
  * app/fiches/interface.py: 1 timeout (10s)
  * scripts/auto_ingest.py: 2 timeouts (10-30s)
  * scripts/generer_analyse.py: 10 timeouts (10-120s)
  * Corpus/generer_analyse.py: 2 timeouts (30-120s)

Documentation et configuration:
- docs/SECURITY.md: Guide complet de sécurité avec analyse Bandit
- docs/GUIDE_GITDOC.md: Guide d'utilisation GitDoc pour autocommit
- Configuration GitDoc complète dans settings.json.example
- Configuration .gitignore pour .vscode/settings.json
- Recommandations extensions VSCode (SonarLint, Snyk, GitDoc)
- Mise à jour README avec statut sécurité

Résultats Bandit:
- 0 vulnérabilités HIGH
- 0 vulnérabilités MEDIUM
- Tests: 67 passent, couverture 16%

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-02-08 08:57:22 +01:00
4949517c78
merge: Integration ameliorations structure dans dev
Integration de la branche refactor/ameliorations-structure contenant:
- Extension couverture tests (8% -> 16%)
- Documentation architecture complete
- Reorganisation documentation dans docs/
- Configuration Ruff et qualite du code
2026-02-08 08:20:49 +01:00
31bdd749db
fix: Retirer .vscode/settings.json du versioning et creer fichier exemple
- Retrait de .vscode/settings.json du tracking git
- Creation de .vscode/settings.json.example comme reference
- Mise a jour .gitignore avec commentaire explicatif
- Ajout htmlcov/ et .coverage dans .gitignore

Chaque developpeur peut maintenant copier settings.json.example
vers settings.json et adapter selon ses preferences.
2026-02-08 08:20:22 +01:00
f812fac89e
feat: Amelioration structure - tests, documentation et qualite du code
Cette mise a jour complete ameliore significativement la qualite et la maintenabilite du projet.

1. Extension de la couverture de tests

Couverture globale passee de 8% a 16% (+100%)
- Ajout de 25 nouveaux tests (total: 67 tests, 100% passent)
- Nouveaux fichiers de tests:
  * tests/unit/test_gitea.py (17 tests)
  * tests/unit/test_fiches_tickets.py (8 tests)

Etat de la couverture par module:
- utils/gitea.py: 100%
- utils/widgets.py: 100%
- utils/logger.py: 94%
- app/fiches/utils/tickets/core.py: 77%
- utils/graph_utils.py: 59%

2. Documentation d'architecture complete

Creation de 3 nouveaux documents (30 Ko total):
- docs/ARCHITECTURE.md (15 Ko)
  * Architecture complete du projet
  * Flux de donnees detailles
  * Indices de vulnerabilite (IHH, ISG, ICS, IVC)
  * Structure du graphe NetworkX

- docs/MODULES.md (15 Ko)
  * Guide des 11 modules principaux
  * Exemples de code (15+ snippets)
  * Bonnes pratiques
  * Guide de depannage

- docs/README.md (4 Ko)
  * Index de toute la documentation

Contenu documente:
- 5 modules applicatifs
- 6 modules utilitaires
- 4 indices de vulnerabilite avec formules et seuils
- Conventions de code

3. Reorganisation de la documentation

Structure finale optimisee:
- Racine: README.md (mis a jour) + Instructions.md
- docs/: 11 documents organises par categorie

Fichiers deplaces vers docs/:
- README_connexion.md -> docs/CONNEXION.md
- GUIDE_LOGS.md -> docs/
- GUIDE_RUFF.md -> docs/
- RAPPORT_RUFF.md -> docs/
- RAPPORT_CORRECTIONS_AUTO.md -> docs/
- REFACTORING_REPORT.md -> docs/
- VERIFICATION_LOGS.md -> docs/
- TODO_IA_BATCH.md -> docs/

4. Ajout de docstrings

52 fonctions documentees en style Google (100%)
Documentation en francais avec Args, Returns, Raises

5. Corrections automatiques Ruff

Application de 347 corrections automatiques:
- Formatage du code (line-length: 120)
- Organisation des imports
- Simplifications syntaxiques
- Suppressions de code mort
- Ameliorations de performance

6. Configuration qualite du code

Nouveaux fichiers:
- pyproject.toml: configuration Ruff complete
- .vscode/settings.json: integration Ruff avec formatOnSave
- GUIDE_RUFF.md: documentation du linter
- GUIDE_LOGS.md: documentation du logging
- .gitignore: ajout htmlcov/ pour rapports de couverture

Etat final du projet:
- Linter: Ruff configure (15 regles actives)
- Tests: 67 tests (100% passent)
- Couverture de code: 16%
- Docstrings: 52/52 (100%)
- Documentation: 11 fichiers organises

Impact:
- Tests plus robustes et maintenables
- Documentation technique complete
- Meilleure organisation des fichiers
- Workflow optimise avec Ruff
- Code pret pour integration continue

References:
- Architecture: docs/ARCHITECTURE.md
- Guide modules: docs/MODULES.md
- Tests: tests/unit/
- Configuration: pyproject.toml

Co-Authored-By: Claude <noreply@anthropic.com>
2026-02-07 19:00:49 +01:00
bd8b51b315
fix(batch_ia): gestion robuste du cas edge hafnium dans generate_operations_section
Ajout d'un try/except pour gérer l'erreur lorsque l'hafnium est relié
à des composants ET au procédé EUV (connexe), ce qui génère une exception
lors du traitement de la section assemblage.

Impact:
- Module IA'nalyse: génération de rapports plus robuste
- Module Plan d'action: génération de rapports plus robuste
- Pas d'impact sur les autres modules de l'application

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-02-07 15:56:59 +01:00
6c1465bd6b
fix(ISG en dur) : l'isg était défini en dur et non à partir du fichier
config.yaml
2025-07-31 10:29:29 +02:00
a9bf92a4bc
feat(design) : intégration dans l'Observatoire des Polycrises 2025-06-25 08:42:41 +02:00
2846403860 fix(pda) : résolution de l'affichage tronqué pour les génériques
Oubli de concaténation de la chaîne à afficher pour les préconisations
et les indicateurs génériques.
2025-06-15 18:01:41 +02:00
f259d6b3e3 style(css) : mise à jour de la bonne indentation 2025-06-15 12:02:33 +02:00
c24898bf02 fix(pgpt) : suite à montée de version de docker
régénération du docker-compose.yaml pour pouvoir relancer le service
2025-06-15 12:02:33 +02:00
359d17f628 fix(session) : problème de cache de persistance.py
mise en place de la génération dynamique de toutes les variables
dépendant de session_id
2025-06-15 12:02:33 +02:00
c0ab1f1591 Adaptation pour la gestion des thèmes sur tout le site 2025-06-11 17:31:11 +02:00
67182d8b53 Finalisation de la persistance 2025-06-11 17:05:05 +02:00
8efc016014 Ajout de la persistance 2025-06-11 14:57:53 +02:00
Fabrication du Numérique
4d511cbe23 Continuation dans le typage et la documentation pour les autres app's 2025-06-05 09:28:49 +02:00
Fabrication du Numérique
35aa7d12fa Typage des fonctions de pda et documentation 2025-06-04 21:24:56 +02:00
Fabrication du Numérique
4bb06a4801 Amélioration avec __init__.py 2025-06-04 14:21:55 +02:00
Fabrication du Numérique
c55d478660 Ajout des sélection par chaines critique dans pda 2025-06-03 21:48:38 +02:00
Fabrication du Numérique
9ca623aef1 Découpage modulaire de plan_da_action 2025-06-03 14:53:41 +02:00
Fabrication du Numérique
16b1ad37d7 Create 8d44b9fe.md 2025-06-03 12:52:39 +02:00
Fabrication du Numérique
255361e9aa Améliorations 2025-06-03 12:52:33 +02:00
Fabrication du Numérique
69272a44d6 Améliorations et corrections 2025-06-02 17:00:08 +02:00
Fabrication du Numérique
d47e8608cc Nouvelle analyse avec plan d'actions et correction de schema.txt pour le
traitement du béryllium.
2025-06-02 10:32:09 +02:00
Fabrication du Numérique
8a601aa24a Dernières modifications 2025-05-28 21:13:50 +02:00
Fabrication du Numérique
c2cf505b48 Corrections mineures 2025-05-28 15:29:16 +02:00
Fabrication du Numérique
959e2be867 Modification de TEMP_SECTIONS 2025-05-28 14:41:02 +02:00
Fabrication du Numérique
c5d854b165 Découpage de analyse_ia.py pour faciliter la maintenance 2025-05-28 14:36:30 +02:00
Fabrication du Numérique
95ede9c6f1 Import de private_gpt et amléiorations de l'analyse IA 2025-05-27 17:21:49 +02:00
Fabrication du Numérique
c4fffb829c Modifications suite à analyses 2025-05-26 21:46:47 +02:00
Fabrication du Numérique
981c473204 Ajout du batch de traitement de l'IA 2025-05-26 17:27:59 +02:00
Fabrication du Numérique
5839098db6 Mise à jour et nettoyage 2025-05-25 21:18:38 +02:00
Fabrication du Numérique
81f5bb3b66 Corrections diverses 2025-05-23 21:57:27 +02:00
Fabrication du Numérique
ec00ec3a9b Mise à jour schema, et ajustements en conséquence 2025-05-23 13:35:27 +02:00
Fabrication du Numérique
c5482c3033 Générateur de rapport 2025-05-22 21:19:26 +02:00
Fabrication du Numérique
4809661b0f Amélioration de la génération du rapport 2025-05-22 12:49:54 +02:00
813fb5684e Processus pour IA 2025-05-20 16:52:46 +02:00
b2c47048c7 Delete rag_md.py 2025-05-19 14:27:38 +02:00
54c6a309e6 Update rag_md.py 2025-05-19 14:22:39 +02:00
952f0dd92d Update rag_md.py 2025-05-19 14:17:37 +02:00
d5fffdce14 Create rag_md.py 2025-05-19 14:16:53 +02:00
d8bc030a52 Update rag.py 2025-05-19 13:49:43 +02:00
f8baf851ae On continue avec l'IA 2025-05-19 13:38:30 +02:00
747c56f252 Update rag.py 2025-05-19 09:25:27 +02:00