Skip to content

Global code improvement#17

Merged
raynaldlao merged 11 commits intomasterfrom
global-code-improvement
Mar 1, 2026
Merged

Global code improvement#17
raynaldlao merged 11 commits intomasterfrom
global-code-improvement

Conversation

@raynaldlao
Copy link
Owner

@raynaldlao raynaldlao commented Feb 28, 2026

Optimisation Globale, Sécurité et Standardisation Qualité

Cette Pull Request marque une étape majeure dans la maturité technique du projet. L'objectif était de transformer le prototype initial en une application robuste, strictement typée, documentée et protégée par une intégration continue (CI).

🚀 Résumé des Changements

1. Refactorisation Architecture & Code (SOLID/DRY)

  • Contrôleurs & Services : Refonte complète pour séparer la logique métier (Services) des points d'entrée HTTP (Contrôleurs).
  • Organisation des Décorateurs : Déplacement des outils de sécurité de app/utils vers app/controllers/decorators.py pour isoler les dépendances Web (Flask) dans la couche appropriée et nettoyage du dossier utils.
  • Injection de Dépendances : Généralisation de l'utilisation de la session de base de données injectée dans les services.
  • Enums & Constantes : Suppression des "magic strings" et "magic numbers" au profit des enums Role, SessionKey et PaginationConfig.

2. Sécurité & Contrôle d'Accès

  • Décorateurs Personnalisés : Implémentation de @login_required et @roles_accepted pour centraliser la gestion de l'authentification et des rôles (Admin, Author, User).
  • Nettoyage des Routes : Suppression des vérifications répétitives directement dans les fonctions des contrôleurs.

3. Qualité, Typage & Modernisation

  • Typage Strict (Pyright) : Résolution de toutes les erreurs de typage statique (0 erreur). Utilisation systématique de str | Response pour les retours de contrôleurs.
  • Syntaxe Python 3.10+ : Modernisation globale de la syntaxe de typage vers l'opérateur | (pipe) pour les Unions et Optionals.
  • Standardisation des Docstrings : Documentation de l'intégralité des classes et fonctions selon les standards Google/Senior (sections Args: et Returns: exhaustives).

4. Infrastructure & Standardisation

  • Intégration Continue (GitHub Actions) : Mise en place d'un pipeline automatique validant pytest, pyright et ruff sur chaque Pull Request.
  • Standardisation des Packages : Audit et ajout des fichiers __init__.py manquants pour garantir une structure de package Python cohérente.
  • Linting (Ruff) : Nettoyage complet des imports inutilisés et réorganisation des blocs d'imports selon la PEP8.

🛠️ Validation Technique

  • Unit Tests : 53/53 tests passés avec succès (pytest).
  • Static Analysis : 0 erreur rapportée par pyright.
  • Linting : 0 erreur rapportée par ruff.

📦 Contenu de la PR (Fichiers clés)

  • app/controllers/decorators.py : Nouveaux outils de sécurité (Relocalisés).
  • app/constants.py : Centralisation des configurations et rôles.
  • .github/workflows/continuous-integration.yml : Configuration de la CI.
  • Refonte des controllers dans app/controllers/ et des services dans app/services/.

+ Remove @staticmethod from services (Article, Comment, Login) to enable constructor‑based db_session injection.

+ Add type hints (PEP 484) and Google‑style docstrings across all service methods.

+ Introduce app/constants.py with a Role enum to eliminate magic strings (e.g., "admin").

+ Update controllers to instantiate services with an injected database session.

+ Update the test_services/ suite to support the new DI pattern and maintain full test pass rate.
…484 type hints across the entire codebase, covering models, controllers, utilities, Flask routes, database configuration, and test factories/fixtures to improve clarity, consistency and maintainability
…ic strings with enums, extract pagination config, streamline controller logic and update tests to align with new standards
…sues (Pyright/Pylance errors, unified Google-style docs, stricter controller return types)
@raynaldlao raynaldlao self-assigned this Feb 28, 2026
@raynaldlao raynaldlao force-pushed the global-code-improvement branch from 90e06d1 to f6f914d Compare February 28, 2026 05:03
@hlargitte hlargitte self-assigned this Mar 1, 2026
@raynaldlao raynaldlao requested a review from hlargitte March 1, 2026 00:19
@raynaldlao raynaldlao merged commit 8270b79 into master Mar 1, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants