Statut : internal Public cible : équipe dev / ops Dernière mise à jour : 2026-04-27 Provenance : ex-
docs/operations/optimizations_backlog.md, déplacé dansdocs/internal/car backlog équipe sans source de vérité code.Backlog d'améliorations infra (Docker, GitHub Actions, sécurité) et UX identifiées au fil des sessions ops. Les items non cochés restent à arbitrer ; pour le plan produit se référer à
todo.md.
Les sections « Documentation » historiques renvoient à des fichiers supprimés
ou renommés (KNOWLEDGE_BASE.md, DEPLOYMENT_GUIDE.md) — désormais consolidés
dans ../operations/deployment.md.
- Optimisation du module Horaires d'ouverture :
- Fix des messages flash dupliqués
- Ajout d'un message d'erreur rouge pour la validation
- Simplification du JavaScript (suppression de la complexité importmap)
- Amélioration de l'UX avec aperçu en temps réel
- Correction des fonctionnalités checkbox et sélecteurs
- Nettoyage du contrôleur pour une meilleure gestion des erreurs
-
Déplacer le(s) bouton(s) d'import/export :
Mettre les boutons d'import et d'export directement sur la page de liste des adhérents. -
Nettoyer le menu d'administration :
Retirer les liens "ajouter un adhérent" et "export" du menu d'administration (puisqu'ils existent déjà sur la liste des adhérents). -
Harmoniser les termes :
Remplacer tous les libellés "utilisateur" par "adhérent" dans l'application (front/boutons/messages). -
Rendre le champ mail optionnel :
Permettre l'ajout d'adhérent sans email lorsque l'action est réalisée par un administrateur. -
RGPD - Newsletter :
Désactiver la possibilité d'inscrire un adhérent à la newsletter depuis le menu d'administration.
-
Wording :
Renommer le lien "retourner sur le site" par "voir le site". -
Séparer Horaires du menu adhérents :
Donner une entrée dédiée dans le menu d'administration pour le formulaire des horaires (actuellement accessible depuis la liste des adhérents). -
Fusion de plusieurs pages informatives :
Regrouper les sections suivantes sur une seule page :- Le lieu
- Par qui / pourquoi / pour qui
Suggestions pour la hiérarchie d'information :- Présenter d'abord Circographe (le lieu)
- Ensuite les activités (pour qui/pourquoi)
- Enfin l'équipe
Ou - Activités, puis lieu, puis équipe (équipe en dernier)
-
Fusionner contact et "nous trouver" :
Mettre le formulaire de contact et les informations pour nous trouver sur une seule page. -
UX admin :
Sur le site principal, détacher le lien d'accès au back-office d'administration du menu de profil utilisateur lorsqu'on est connecté en tant qu'admin.
# Dans Dockerfile, ligne 32, après FROM base AS build
FROM base AS build
# Fix Bundler version to match Gemfile.lock
RUN gem install bundler:2.5.23
# Install packages needed to build gems
RUN apt-get update -qq && \
apt-get install --no-install-recommends -y build-essential git pkg-config && \
rm -rf /var/lib/apt/lists /var/cache/apt/archivesFichier: Dockerfile
Gain: Évite réinstallation Bundler à chaque build (~5-10s)
# Remplacer dans .github/workflows/03-staging-deploy.yml
# Ancien:
- name: Login to GHCR
run: echo "$KAMAL_REGISTRY_PASSWORD" | docker login ghcr.io -u AkaKwak --password-stdin
# Nouveau:
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}Fichier: .github/workflows/03-staging-deploy.yml
Gain: Sécurité améliorée, credentials chiffrées
# Dans .github/workflows/03-staging-deploy.yml
# Remplacer la step "Build Docker image for staging"
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Build and push Docker image
uses: docker/build-push-action@v6
with:
context: .
push: true
tags: ghcr.io/lecircographe-asso/circographe-staging:${{ github.sha }}
cache-from: type=gha
cache-to: type=gha,mode=max
build-args: |
RUBY_VERSION=3.2.5Fichier: .github/workflows/03-staging-deploy.yml
Gain: 40-60% réduction temps de build (2min → 45s)
# Ordre optimal pour maximiser le cache
FROM base AS build
# 1. Fixer version Bundler (change rarement)
RUN gem install bundler:2.5.23
# 2. Dépendances système (change rarement)
RUN apt-get update -qq && \
apt-get install --no-install-recommends -y \
build-essential \
git \
pkg-config \
&& rm -rf /var/lib/apt/lists /var/cache/apt/archives
# 3. Gems (change moyennement) - AVANT le code
COPY Gemfile Gemfile.lock ./
RUN bundle install && \
rm -rf ~/.bundle/ "${BUNDLE_PATH}"/ruby/*/cache "${BUNDLE_PATH}"/ruby/*/bundler/gems/*/.git && \
bundle exec bootsnap precompile --gemfile
# 4. Code application (change souvent) - APRÈS les gems
COPY . .
# 5. Precompilation (dépend du code)
RUN bundle exec bootsnap precompile app/ lib/
RUN SECRET_KEY_BASE="a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3x4y5z6a7b8c9d0e1f2" \
RAILS_ENV=staging \
./bin/rails assets:precompileFichier: Dockerfile
Gain: Cache layers gems réutilisé si Gemfile.lock inchangé
# Dans Dockerfile, améliorer le nettoyage après bundle install
RUN bundle install && \
rm -rf ~/.bundle/ \
"${BUNDLE_PATH}"/ruby/*/cache \
"${BUNDLE_PATH}"/ruby/*/bundler/gems/*/.git \
"${BUNDLE_PATH}"/ruby/*/gems/*/test \
"${BUNDLE_PATH}"/ruby/*/gems/*/spec \
"${BUNDLE_PATH}"/ruby/*/gems/*/examples \
&& bundle exec bootsnap precompile --gemfileFichier: Dockerfile
Gain: Réduction taille image (~10-20MB)
# SSH sur le VPS
ssh deploy@$STAGING_SERVER_IP
# Installer pass
sudo apt-get update
sudo apt-get install -y pass gnupg2
# Initialiser GPG key
gpg --gen-key
# Suivre les instructions
# Configurer docker-credential-pass
pass init "your-gpg-key-id"
docker-credential-pass initialize
# Tester
echo "test" | docker-credential-pass store test
docker-credential-pass get testServeur: VPS Staging + Production
Gain: Sécurité credentials Docker
# Dans KNOWLEDGE_BASE.md, ajouter section:
### **Assets Source Maps (Optionnel)**
Les warnings suivants sont normaux en production:
- `swiper-bundle.min.js.map` - Source map Swiper
- `flowbite.min.js.map` - Source map Flowbite
- `image.svg` - Image placeholder Tailwind
**Action:** Aucune requise - Source maps non nécessaires en production
**Si debugging requis:** Ajouter les .map files dans vendor/javascript/Fichier: KNOWLEDGE_BASE.md
Gain: Clarté pour futurs développeurs
# Dans DEPLOYMENT_GUIDE.md, ajouter section:
## 📊 Métriques de Performance
### Temps de Déploiement Typique
- **Build GitHub Actions:** ~2 min
- **Deploy Kamal:** ~2 min
- **Total:** ~4 min
### Objectifs Optimisés
- **Build (avec cache):** ~45s
- **Deploy:** ~30s
- **Total:** ~1min 15sFichier: DEPLOYMENT_GUIDE.md
Gain: Suivi performance déploiements
- ✅ Fixer version Bundler (5 min)
- ✅ Utiliser docker/login-action (10 min)
- ✅ Tester déploiement (15 min)
- ⚡ Ajouter Docker build cache (30 min)
- ⚡ Réorganiser Dockerfile (30 min)
- ⚡ Tester et mesurer gains (30 min)
- 🔒 Configurer credential helper VPS (1h)
- 🔒 Vérifier sécurité complète (30 min)
- 📝 Documenter source maps (15 min)
- 📝 Ajouter métriques (15 min)
| Optimisation | Temps Gagné | Complexité | ROI |
|---|---|---|---|
| Bundler version | ~10s | Faible | ⭐⭐⭐ |
| docker/login-action | Sécurité | Faible | ⭐⭐⭐ |
| Docker build cache | ~1-2min | Moyenne | ⭐⭐⭐⭐⭐ |
| Dockerfile réorganisé | ~30s | Moyenne | ⭐⭐⭐⭐ |
| Credential helper | Sécurité | Moyenne | ⭐⭐⭐ |
Total estimé: ~70% réduction temps de déploiement + sécurité améliorée
- Backup configuration actuelle (git commit)
- Lire documentation Docker build cache
- Tester sur branche dédiée d'abord
- Mesurer temps de build AVANT optimisations
- Mesurer temps de build APRÈS optimisations
- Documenter résultats dans DEPLOYMENT_ANALYSIS.md
- Merger si gains confirmés
Créé le: 2025-10-12
Statut: 🟡 En attente d'implémentation
Prochaine action: Phase 1 - Quick Wins