16 Commits

Author SHA1 Message Date
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
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
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
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
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
255361e9aa Améliorations 2025-06-03 12:52:33 +02:00
92bfd442c2 Modification du formulaire des tickets pour le réinitaliser après la
création
2025-05-16 06:36:53 +02:00
fc08a00a6c Ajout du widget html_expander en lieu et place de st.expander 2025-05-15 21:44:59 +02:00
f4a28db6f7 Modification internationalisation 2025-05-14 12:39:24 +02:00
Fabrication du Numérique
059e94b0f3 Préparation à l'internationalisation 2025-05-13 16:31:53 +02:00
Fabrication du Numérique
96682783b6 Diverses modifications 2025-05-12 21:52:28 +02:00
Fabrication du Numérique
120f5a7af8 Modifications mineures 2025-05-11 22:48:13 +02:00
Fabrication du Numérique
1beb357e57 Restructuration pour simplification 2025-05-11 15:47:54 +02:00