feat: améliorations UX roadmap votes #94

- Votes cappés à VOTES_PER_WEEK (pas d'accumulation) pour valoriser
  les connexions régulières
- Solde de votes affiché dans la liste (input inéditable) à la place
  du bandeau Alert, avec date de prochain rechargement
- Compteur de votes par feature affiché comme input inéditable en
  fin de ligne (avant le bouton "+")
- Animation FLIP JS (roadmap_flip.js) : seules les lignes qui changent
  de position sont animées après un vote
- Renommage votes_credited_until → votes_last_credited_at (migration 0005)
- Constantes du module utilisées dans les assertions de tests

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Colin Maudry
2026-06-30 16:39:13 +02:00
parent f04e1b4c44
commit c4aa90b0d1
14 changed files with 286 additions and 102 deletions
+9 -5
View File
@@ -1,10 +1,14 @@
import pytest
# Dash minimal pour que register_page() fonctionne dans les tests de pages de ce
# répertoire (CONFIG peuplé). Instancié une seule fois, ici, avant tout import de page.
from dash import Dash as _Dash
_Dash(__name__, use_pages=True, pages_folder="", assets_folder="assets")
# Importer l'app complète à la collecte : sa découverte use_pages enregistre
# chaque page (et ses @callback) exactement une fois, en contexte propre. Un Dash
# minimal ad hoc suivi d'imports de pages dans les tests provoque un double
# enregistrement des @callback (Dash ré-exécute chaque page via exec_module
# pendant la découverte de src.app), d'où "Duplicate callback outputs" qui casse
# le rendu de toutes les pages dans la suite Selenium. En important src.app ici,
# la découverte tourne en premier et les imports ultérieurs de pages sont mis en
# cache. Voir aussi tests/subscriptions/conftest.py.
from src.app import app # noqa: F401, E402
@pytest.fixture