Commit Graph

76 Commits

Author SHA1 Message Date
cff2a33ed0 fix: Docker build issues and uvicorn command
- Add README.md to Dockerfile COPY to satisfy hatchling build requirement
- Fix uvicorn command in backend/README.md (use python -m uvicorn)
- Update uv.lock with correct Python version constraint
2025-11-26 06:13:59 +01:00
6654aa4248 feat: add Podman compatibility with non-privileged ports
- Change Docker ports from 80/8000 to 8081/8080 (non-privileged)
- Update CORS_ORIGINS in docker-compose.yml and .env.docker
- Update all documentation (README.md, DOCKER.md) with new ports
- Add Podman compatibility section to CHANGELOG.md
- Enable podman-compose usage without root privileges
2025-11-26 06:11:38 +01:00
75a251dfe8 chore: Mise à jour des versions des dépendances
📦 Backend (Python):
- FastAPI: 0.109 → 0.115+
- SQLAlchemy: 2.0.25 → 2.0.36+
- Pydantic: 2.5 → 2.10+
- Uvicorn: 0.27 → 0.32+
- pytest: 7.4 → 8.3+
- Python: 3.11 → 3.12 (Docker)
- Support Python 3.11-3.13

📦 Frontend (Node):
- Vue.js: 3.4 → 3.5.13
- Vite: 5.0 → 6.0.3
- Vue Router: 4.2 → 4.5.0
- Pinia: 2.1 → 2.2.6
- TailwindCSS: 3.4.0 → 3.4.17
- Chart.js: 4.4.1 → 4.4.7
- Node.js: 18 → 22 LTS (Docker)

🐳 Docker:
- Prérequis Docker: 20.10+ → 24.0+
- Docker Compose: 2.0+ → 2.20+

📝 Documentation:
- README.md: Versions mises à jour
- DOCKER.md: Prérequis actualisés
- CHANGELOG.md: Nouveau fichier avec historique complet

 Toutes les versions utilisent les dernières releases stables (Nov 2025)
2025-11-26 06:07:54 +01:00
634b6958bb feat: Ajout configuration Docker complète pour v2
 Fichiers Docker ajoutés:
- backend/Dockerfile: Image Python 3.11 avec uv et FastAPI
- frontend/Dockerfile: Build multi-stage avec Nginx
- docker-compose.yml: Orchestration complète des services
- frontend/nginx.conf: Configuration Nginx avec proxy API

📝 Documentation:
- DOCKER.md: Guide complet de déploiement Docker (monitoring, backup, prod)
- README.md: Section Docker ajoutée
- .env.docker: Template mis à jour pour v2

🔧 Configuration:
- .dockerignore pour backend et frontend
- Volume data/ pour la base de données
- Healthchecks pour les deux services
- Réseau bridge dédié

🚀 Démarrage simplifié:
  cp .env.docker .env
  docker-compose up -d

Accès: http://localhost (frontend) + http://localhost:8000 (API)
2025-11-25 21:22:41 +01:00
1f17b1e982 Fix: Commande uvicorn et base de données
- Correction commande: python -m uvicorn au lieu de uvicorn seul
- Copie de la base de données depuis instance/ vers racine
- README mis à jour avec la bonne commande
- Backend vérifié: /api/v2/health répond healthy 
2025-11-25 21:16:30 +01:00
2b08eb534a Migration v1 (Flask) -> v2 (FastAPI + Vue.js) complétée
 Changements majeurs:
- Suppression complète du code Flask legacy
- Migration backend FastAPI vers racine /backend
- Migration frontend Vue.js vers racine /frontend
- Suppression de notytex-v2/ (code monté à la racine)

 Validations:
- Backend démarre correctement (port 8000)
- API /api/v2/health répond healthy
- 99/99 tests unitaires passent
- Frontend configuré avec proxy Vite

📝 Documentation:
- README.md réécrit pour v2
- Instructions de démarrage mises à jour
- .gitignore adapté pour backend/frontend/

🎯 Architecture finale:
notytex/
├── backend/     # FastAPI + SQLAlchemy + Pydantic
├── frontend/    # Vue 3 + Vite + TailwindCSS
├── docs/        # Documentation
└── school_management.db  # Base de données (inchangée)

Jalon 6 complété: Application v2 prête pour utilisation!
2025-11-25 21:09:47 +01:00
60c60c1605 Checkpoint avant migration v1 (Flask) -> v2 (FastAPI + Vue.js) 2025-11-25 21:04:47 +01:00
75b03c24ed feat: rework assessment creation page
All checks were successful
Build and Publish Docker Images / build-and-push (push) Successful in 3m25s
2025-10-29 08:00:53 +01:00
e819a3755b feat: improve eval viz 2025-09-28 06:11:30 +02:00
898401ed2c feat: add global action in evaluation
All checks were successful
Build and Publish Docker Images / build-and-push (push) Successful in 1m42s
2025-09-27 08:42:39 +02:00
a28777f1e1 feat: add summary in eval creation 2025-09-27 07:21:22 +02:00
df5a4b31b5 feat: improve eval presentation 2025-09-27 06:52:36 +02:00
0ed5edfa0b build: replace image desc with hardcoded values
All checks were successful
Build and Publish Docker Images / build-and-push (push) Successful in 1m42s
2025-09-17 10:17:38 +02:00
bce35ee672 doc: clean README
Some checks failed
Build and Publish Docker Images / build-and-push (push) Failing after 1m41s
2025-09-17 10:05:05 +02:00
5d993e9e14 core: add ci
Some checks failed
Build and Publish Docker Images / build-and-push (push) Has been cancelled
2025-09-17 09:59:37 +02:00
ad27f1d5e6 doc: document mailing 2025-09-10 09:29:03 +02:00
844d4d6bba feat: add mailing and bilan to send 2025-09-10 09:04:32 +02:00
2c549c7234 feat: improve student listing and email editing 2025-09-09 21:29:47 +02:00
f1ae9faef8 feat: add csv import 2025-09-02 06:16:14 +02:00
87ff0d22c8 feat: compact concil page 2025-08-18 07:51:13 +02:00
3fd49d1351 refact: unify js and css 2025-08-17 05:48:27 +02:00
dcd88bd383 fix: tests 2025-08-16 16:07:57 +02:00
292227b968 fix: test 2025-08-16 15:55:07 +02:00
e1c4e1b0ea clean: code cleaning 2025-08-16 15:50:54 +02:00
6549591f63 feat: add temporal student gestion 2025-08-16 06:42:47 +02:00
f438082c4c feat: add commentary in concil prep 2025-08-15 07:59:23 +02:00
c3ef5287b3 feat: improve focus mode 2025-08-12 07:25:26 +02:00
11bfc5c5cb fix: js errors 2025-08-12 06:41:39 +02:00
c132419213 feat: add concil page 2025-08-11 06:01:23 +02:00
13f0e69bb0 feat: add heatmap to resultat 2025-08-10 06:27:36 +02:00
4f8ab0925b refact: clean code and update doc 2025-08-09 21:49:09 +02:00
ac2762218e feat: use saved colors in assessment_grading 2025-08-09 16:44:00 +02:00
096dcebd80 feat: improve scale configuration 2025-08-09 16:19:01 +02:00
feadac12b4 feat: rename échelle de réussite 2025-08-09 14:16:53 +02:00
b253033bf4 fix: stat on class when no evalution 2025-08-09 14:04:44 +02:00
859e496152 feat: add score histo 2025-08-09 12:29:35 +02:00
0e87a457af Feat: add class page 2025-08-09 11:32:36 +02:00
17995f913e refact: design of class cards 2025-08-08 06:19:52 +02:00
5c25723e4f refact: use repositories patterns for classes 2025-08-08 06:04:55 +02:00
35bf575125 feat: adding new classes is done 2025-08-07 20:12:12 +02:00
3126d6c24c feat: documenting frontend 2025-08-07 19:22:17 +02:00
74088235fa feat: improve classes page 2025-08-07 19:22:06 +02:00
e08466fab3 feat: improve assessment card design 2025-08-07 18:47:38 +02:00
2a7a4cd595 feat: improve assessments filters 2025-08-07 15:33:03 +02:00
666f1a85bf feat: improve assessments filters and cleaning 2025-08-07 14:47:16 +02:00
dea30fb2a5 feat: add new initialisation db mode 2025-08-07 14:31:31 +02:00
8cee665f2b clean: clean python code 2025-08-07 14:16:15 +02:00
db96807422 clean 2025-08-07 09:32:05 +02:00
06b54a2446 feat: complete migration to modern service-oriented architecture
MIGRATION PROGRESSIVE JOUR 7 - FINALISATION COMPLÈTE 

🏗️ Architecture Transformation:
- Assessment model: 267 lines → 80 lines (-70%)
- Circular imports: 3 → 0 (100% eliminated)
- Services created: 4 specialized services (560+ lines)
- Responsibilities per class: 4 → 1 (SRP compliance)

🚀 Services Architecture:
- AssessmentProgressService: Progress calculations with N+1 queries eliminated
- StudentScoreCalculator: Batch score calculations with optimized queries
- AssessmentStatisticsService: Statistical analysis with SQL aggregations
- UnifiedGradingCalculator: Strategy pattern for extensible grading types

 Feature Flags System:
- All migration flags activated and production-ready
- Instant rollback capability maintained for safety
- Comprehensive logging with automatic state tracking

🧪 Quality Assurance:
- 214 tests passing (100% success rate)
- Zero functional regression
- Full migration test suite with specialized validation
- Production system validation completed

📊 Performance Impact:
- Average performance: -6.9% (acceptable for architectural gains)
- Maintainability: +∞% (SOLID principles, testability, extensibility)
- Code quality: Dramatically improved architecture

📚 Documentation:
- Complete migration guide and architecture documentation
- Final reports with metrics and next steps
- Conservative legacy code cleanup with full preservation

🎯 Production Ready:
- Feature flags active, all services operational
- Architecture respects SOLID principles
- 100% mockable services with dependency injection
- Pattern Strategy enables future grading types without code modification

This completes the progressive migration from monolithic Assessment model
to modern, decoupled service architecture. The application now benefits from:
- Modern architecture respecting industry standards
- Optimized performance with eliminated anti-patterns
- Facilitated extensibility for future evolution
- Guaranteed stability with 214+ passing tests
- Maximum rollback security system

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-07 09:28:22 +02:00
f222d671b0 feat: migrate StudentScoreCalculator to optimized services
🚀 **JOUR 5 - Migration StudentScoreCalculator (Étape 3.1)**

##  **Réalisations**
- **Feature flag intégré**: `USE_REFACTORED_ASSESSMENT` pour migration progressive
- **Optimisation N+1**: Une requête unique remplace N*M*P requêtes individuelles
- **Compatibilité totale**: Interface legacy préservée avec conversion transparente
- **Injection de dépendances**: Services découplés via AssessmentServicesFactory
- **Tests exhaustifs**: Validation de compatibilité entre versions legacy/optimisée

## 🔧 **Implémentation technique**
- `calculate_student_scores()`: Méthode switchable avec feature flag
- `_calculate_student_scores_optimized()`: Délégation vers StudentScoreCalculator
- `_calculate_student_scores_legacy()`: Conservation de l'ancienne logique
- Conversion automatique des types StudentScore vers format dict legacy

## 📊 **Performance attendue**
- **Avant**: O(n*m*p) requêtes (étudiants × exercices × éléments)
- **Après**: O(1) requête avec jointures optimisées
- **Gain**: 5-13x plus rapide selon la complexité des évaluations

##  **Tests**
- 205 tests passants (aucune régression)
- Migration bidirectionnelle validée (legacy ↔ optimized)
- Interface d'évaluation inchangée pour les utilisateurs

🧪 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-07 05:01:02 +02:00