Gestion de rentabilité des projets d'agence web. Analyse de la rentabilité en croisant ventes (jours/TJM), temps passés, coûts (CJM), achats et KPIs consolidés.
- WARP index: WARP.md
- Guide agents: AGENTS.md
- Performance: docs/performance.md
- Backend: Symfony 7.3, PHP 8.4
- DB: MariaDB 11.4 (Docker)
- Frontend: Twig + Bootstrap 5 (thème Skote)
- Assets: Webpack Encore + Sass
- 2FA: scheb/2fa-bundle (TOTP)
- ApiPlatform 4 (REST)
- Docker + Docker Compose
- Node.js + Yarn (si build assets en local)
# 1) Lancer l'environnement
docker compose up -d --build
# 2) Installer les dépendances PHP (dans le conteneur)
docker compose exec app composer install
# 3) Créer/update le schéma et exécuter les migrations
# (si une nouvelle migration est requise : docker compose exec app php bin/console make:migration)
docker compose exec app php bin/console doctrine:migrations:migrate -n
# 4) (Optionnel) Générer des données de test
docker compose exec app php bin/console app:generate-test-data --year=$(date +%Y)
# 5) Builder les assets (au choix)
# En local
./build-assets.sh dev
# OU dans Docker
./docker-build-assets.sh dev
# 6) Créer un utilisateur d'admin de test
docker compose exec app php bin/console app:user:create [email protected] password "Prénom" "Nom"Application: http://localhost:8080
- Lancer/arrêter:
docker compose up -d/docker compose down - Logs nginx/PHP:
docker compose logs -f web/docker compose logs -f app - Console Symfony:
docker compose exec app php bin/console
# Dév (watch)
./build-assets.sh watch
# Prod
./build-assets.sh prod
# Docker (watch)
./docker-build-assets.sh watch- Authentification + 2FA TOTP
- Gestion Contributeurs, Périodes d'emploi, Profils
- Projets: type (forfait/régie), statut, achats, technos, catégorie de service
- Devis: sections + lignes (jours/TJM/achats), contingence
- Timesheet: saisie hebdo, historique, vue globale
- Planning Resource Timeline: vue planning avec FullCalendar Scheduler, gestion des congés
- Optimisation du planning: analyse TACE, recommandations intelligentes avec IA (OpenAI/Anthropic)
- Workflow de congés: demandes avec validation hiérarchique, notifications
- Niveaux de service client: VIP, Prioritaire, Standard, Basse priorité (auto/manuel)
- Analytics:
/analytics/dashboard(KPIs, filtres, graphiques)
- Analyse TACE intelligente: détection automatique des surcharges et sous-utilisations
- Recommandations IA: intégration OpenAI (GPT-4o-mini) et Anthropic (Claude 3.5 Haiku)
- Dashboard d'optimisation:
/planning/optimizationavec recommandations actionnables - Alertes intégrées: bannières dans le planning pour les situations critiques
- Prise en compte des niveaux de service: priorisation VIP/Priority dans les recommandations
- Demandes de congés: interface dédiée pour les intervenants
- Validation hiérarchique: rattachement contributeur → manager
- Notifications en temps réel: via Symfony Messenger (email + interface)
- Affichage dans le planning: congés approuvés visibles en lecture seule
- Dashboard manager: widget dédié sur la page d'accueil
- 4 niveaux: VIP, Prioritaire, Standard, Basse priorité
- Calcul automatique: basé sur le CA annuel (Top 20 = VIP, Top 50 = Prioritaire)
- Mode manuel: possibilité de forcer un niveau spécifique
- Commande de recalcul:
app:client:recalculate-service-level - Badges visuels: affichage dans toute l'application
- Compteur de temps: start/stop depuis la saisie hebdo (un seul actif), imputation auto (min 0,125j)
- Création automatique des tâches par défaut (AVV, Non-vendu) à la création d'un projet
- Prise en compte du type et du statut de projet à la création/édition
- Ajout de la relation optionnelle Timesheet → ProjectTask (modèle)
- Devis: modification rapide du statut depuis la page devis et la liste des devis (POST CSRF → route order_update_status)
- Projets: la colonne « Type » du listing montre Forfait/Régie + badge « Interne/Client »
Après pull, exécuter:
docker compose exec app php bin/console make:migration # si fichiers d'entités ont évolué
docker compose exec app php bin/console doctrine:migrations:migrate -n# Tests (unit/int/func/E2E)
docker compose exec app ./vendor/bin/phpunit
# Analyse statique & style
docker compose exec app composer check-code- Environnement de test:
.env.testutilise SQLite (isolation sans DB externe) - E2E (Panther): nécessite Chrome/Chromium; variables utiles (si besoin):
export PANTHER_CHROME_BINARY="/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"
export PANTHER_NO_SANDBOX=1- CI: GitHub Actions exécute PHPUnit (incl. E2E headless) + qualité (
.github/workflows/ci.yml) - Plus d’infos:
docs/tests.md
- App: http://localhost:8080
- Admin config: /admin/technologies, /admin/service-categories, /admin/job-profiles
- Périodes d'emploi: /employment-periods
- Planning: /planning (resource timeline avec gestion des congés)
- Optimisation planning: /planning/optimization (recommandations IA)
- Demande de congés: /vacation-request (pour intervenants)
- Validation congés: /vacation-approval (pour managers)
- Analytics: /analytics/dashboard
- Staffing & TACE: /staffing/dashboard
- /api/documentation pour avoir la documentation swagger de l'API
- Host: localhost
- Port: 3307
- DB: hotones
- User/Pass: symfony/symfony
- 2FA à configurer via
/me/2fa/enable - Timesheet peut (optionnellement) référencer une tâche projet pour exclure AVV/Non-vendu des calculs.
Ce projet est sous licence Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0).
✅ Vous êtes autorisé à :
- Partager : Copier et redistribuer le code
- Adapter : Remixer, transformer et développer à partir du code
- Usage personnel et éducatif : Utiliser pour apprendre, étudier, former
❌ Vous N'ÊTES PAS autorisé à :
- Usage commercial : Utiliser ce code dans un cadre commercial, vendre des services basés sur ce code, l'intégrer dans un produit commercial
- Changer de licence : Toute œuvre dérivée doit utiliser la même licence CC BY-NC-SA 4.0
📋 Conditions :
- Attribution : Vous devez créditer l'auteur original
- ShareAlike : Les modifications doivent être partagées sous la même licence
- NonCommercial : Pas d'utilisation commerciale
Pour plus de détails, consultez le fichier LICENSE complet ou visitez creativecommons.org/licenses/by-nc-sa/4.0/.
Si vous souhaitez utiliser ce code dans un contexte commercial, veuillez contacter l'auteur pour discuter d'une licence commerciale séparée.
Les contributions sont les bienvenues ! Consultez CONTRIBUTING.md pour les guidelines de développement et le processus de contribution.