feat: comptes épargne et investissement #43

Merged
pickle-dev-fr merged 4 commits from feat/6 into main 2026-04-17 09:25:29 +00:00

Résumé

  • 3 types de comptes : Courant / Épargne / Investissement
  • Épargne : objectif d'épargne, taux de rentabilité et fréquence d'intérêts — application automatique chaque nuit via scheduler
  • Investissement : gestion d'actifs (actions, ETF, crypto) avec ticker Yahoo Finance, page dédiée avec tableau et donut chart de répartition
  • Prix en temps réel via yfinance avec conversion automatique dans la devise de l'utilisateur (cache taux de change 30 min)
  • Autocomplete ticker dans le modal d'ajout (recherche Yahoo Finance debouncée)
  • Migration alembic : table investmentasset + colonnes account_type, savings_goal, interest_rate, interest_frequency sur account
  • Fix DnD : PointerSensor avec contrainte distance=8 pour ne pas bloquer les clics sur les boutons du tableau

Plan de test

  • Créer un compte Épargne avec objectif et taux → vérifier la barre de progression et le badge
  • Créer un compte Investissement → naviguer vers la page dédiée
  • Ajouter un actif via la recherche autocomplete (ex. AAPL, BTC-USD)
  • Actualiser les prix → vérifier la conversion en EUR
  • Vérifier que le drag-and-drop de la liste des comptes fonctionne toujours
  • Vérifier que alembic upgrade head passe sans erreur

🤖 Generated with Claude Code

## Résumé - **3 types de comptes** : Courant / Épargne / Investissement - **Épargne** : objectif d'épargne, taux de rentabilité et fréquence d'intérêts — application automatique chaque nuit via scheduler - **Investissement** : gestion d'actifs (actions, ETF, crypto) avec ticker Yahoo Finance, page dédiée avec tableau et donut chart de répartition - **Prix en temps réel** via yfinance avec conversion automatique dans la devise de l'utilisateur (cache taux de change 30 min) - **Autocomplete ticker** dans le modal d'ajout (recherche Yahoo Finance debouncée) - **Migration alembic** : table `investmentasset` + colonnes `account_type`, `savings_goal`, `interest_rate`, `interest_frequency` sur `account` - **Fix DnD** : `PointerSensor` avec contrainte `distance=8` pour ne pas bloquer les clics sur les boutons du tableau ## Plan de test - [ ] Créer un compte Épargne avec objectif et taux → vérifier la barre de progression et le badge - [ ] Créer un compte Investissement → naviguer vers la page dédiée - [ ] Ajouter un actif via la recherche autocomplete (ex. AAPL, BTC-USD) - [ ] Actualiser les prix → vérifier la conversion en EUR - [ ] Vérifier que le drag-and-drop de la liste des comptes fonctionne toujours - [ ] Vérifier que `alembic upgrade head` passe sans erreur 🤖 Generated with [Claude Code](https://claude.com/claude-code)
- Nouveau type de compte : NORMAL / SAVINGS / INVESTMENT
- Épargne : objectif, taux et fréquence d'intérêts (application automatique via scheduler)
- Investissement : gestion d'actifs (actions, ETF, crypto) avec ticker yfinance
- Mise à jour des prix via Yahoo Finance avec conversion devise automatique (cache 30 min)
- Recherche de ticker avec autocomplete dans le modal d'ajout d'actif
- Page dédiée /accounts/:id/investment avec tableau + donut chart de répartition
- Migration alembic : table investmentasset + colonnes account_type, savings_goal, interest_rate, interest_frequency
- Fix DnD : PointerSensor avec contrainte distance=8 pour ne pas bloquer les clics

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Onglets Normal/Épargne/Investissement dans la page comptes
- Blocage backend 403 : transactions et récurrentes interdites aux comptes INVESTMENT
- Blocage backend 403 : pots interdits aux comptes INVESTMENT et SAVINGS
- Filtrage frontend : pots (NORMAL uniquement), transactions/récurrentes/stats (NORMAL+SAVINGS)
- Rafraîchissement automatique des prix yfinance si périmés (>15 min) lors du calcul du solde

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Stats : vue investissement dédiée (évolution, allocation, tableau actifs)
- Stats : vue épargne sans pots/sous-pots, sans heatmap, vue mois par défaut
- PortfolioSnapshot : snapshots quotidiens à chaque refresh prix ou modif actif
- Fix yfinance : period=5d + dropna().iloc[-1] pour éviter les NaN intraday
- Fix UTC : dates last_price_update converties en heure locale (+ "Z" suffix)
- Fusion ticker : ajout d'un actif existant additionne les quantités
- Icônes : RotateCcw remplace ⌂ et RefreshCw partout
- AccountsPage : suppression des badges type (redondants avec les onglets)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Remplace snapshot_portfolio_today par update_investment_prices après add_asset
et update_asset, afin que le nouveau prix soit récupéré immédiatement et que
le snapshot reflète la valeur réelle du portefeuille.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
pickle-dev-fr/FamilyBudget!43
No description provided.