# 💸 Dépenses Trello - Application de Gestion des Dépenses ## 📝 Description **Dépenses Trello** est une application web de gestion des dépenses personnelles avec synchronisation automatique vers Trello. Créée pour simplifier le suivi des dépenses au quotidien. --- ## ✨ Fonctionnalités ### Gestion des Dépenses - ➕ **Ajout rapide** de dépenses (prénom, date, libellé, montant, catégorie) - ✏️ **Modification** des dépenses existantes - 🗑️ **Suppression** de dépenses - 📤 **Export CSV** pour Excel/comptabilité - 📥 **Import CSV** pour récupérer des données - 📄 **Export PDF** pour les relevés ### Catégories Automatiques - 🚗 **Transport** (essence, gazole, parking) - 🛒 **Courses** (Carrefour, Lidl, Auchan) - 🎰 **Loisirs** (loto, bar, café, cinéma) - 🏠 **Maison** (lumière, loyer, brico) - ❤️ **Santé** (pharmacie, contrôle technique) - 📦 **Autre** (divers) ### Graphiques & Statistiques - 📊 **Bar chart** - visualisation classique - 🥧 **Camembert** - répartition par catégorie - 👤 **Par personne** - suivi par membre du foyer - 📅 **Par mois** - évolution dans le temps ### Budget - 💰 **Budget mensuel** configurable - ⚠️ **Alerte** automatique quand le budget est dépassé ### Dépenses Récurrentes - 🔄 **Loyer**, EDF, téléphone - automatiquement listés ### Synchronisation Trello - 🟦 **Envoi automatique** des dépenses vers une liste Trello - ✅ **Suivi du statut** (En attente / Envoyé) --- ## 🛠️ Stack Technique | Composant | Technologie | |-----------|--------------| | **Backend** | Python Flask | | **Base de données** | SQLite | | **Frontend** | HTML5, Vanilla JavaScript | | **Graphiques** | Chart.js | | **PDF** | jsPDF | | **Hébergement** | VPS (Linux) | --- ## 📋 Spécifications - **Port**: 8769 - **URL**: http://178.18.250.53:8769/ - **API REST**: /api/depenses, /api/config, /api/budget, /api/recurring - **Données**: 21+ dépenses en base (extensible) - **Utilisateurs**: Multi-utilisateurs (via prénom) --- ## 🚀 Installation ```bash # Cloner le projet git clone http://178.18.250.53:3000/admin/Perso.git # Installer les dépendances pip install flask requests # Lancer l'application python app.py ``` --- ## 💼 Potentiel Commercial ### Cible - 👨‍👩‍👧 **Particuliers** gestion budget familial - 💼 **Auto-entrepreneurs** frais professionnels - 🏢 **Petites entreprises** suivi dépenses ### Arguments de Vente 1. ✅ **Simple** - interface épurée, pas de formation 2. ✅ **Complet** - catégories, graphiques, budget, PDF 3. ✅ **Automatisé** - synchronisation Trello 4. ✅ **Pas d'abonnement** - hébergement propre 5. ✅ **Open Source** - customisable ### Prix Recommandés | Offre | Prix | |-------|------| | Usage personnel | 19€ | | Usage pro | 49€ | | Installation + config | 29€ | | Support mensuel | 9€/mois | --- ## 📱 Captures d'Écran ### Page Saisie - Formulaire rapide avec catégories auto - Liste des dernières dépenses - Boutons Envoyer tout / Export ### Page Dashboard - Graphiques Bar / Camembert - Filtres Mois / Personne / Catégorie - Total en temps réel ### Page Config - Gestion des prénoms - Personnalisation des catégories - Configuration Trello (API Key, Token, List ID) - Budget mensuel --- ## 🔧 Configuration Trello 1. Créer un Power-Up sur https://trello.com/power-ups/admin 2. Générer une API Key 3. Générer un Token (avec permissions write) 4. Copier le List ID cible 5. Coller dans Config --- ## 📝 Roadmap Future - [ ] Application mobile (PWA) - [ ] Mode hors-ligne - [ ] Catégories personnalisées illimitées - [ ] Rapports mensuels par email - [ ] Intégration Slack/Discord - [ ] Multi-devises --- ## 📞 Contact **Développé par**: H3R7Tech **Date**: Mars 2026 **Version**: 1.6 --- *Document généré automatiquement - Dépenses Trello* --- --- # Turf SaaS — Documentation API v1 **Mise à jour** : 2026-04-30 (HRT-96 — ML Predictions + ROI + Feedback) **URL SaaS** : https://turf-saas-kolifee.duckdns.org **Port local** : 8792 **Base de données** : `/home/h3r7/turf_saas/turf_saas.db` --- ## Stack Technique Turf SaaS | Composant | Technologie | |---|---| | Backend | Python Flask + Blueprints | | Auth | JWT (access + refresh tokens) | | Base de données | SQLite (`turf_saas.db`) | | ML | XGBoost v1 (prédictions courses PMU) | | Frontend | HTML5 + Chart.js | | Hébergement | VPS Linux — https://turf-saas-kolifee.duckdns.org | --- ## Plans d'accès | Plan | Accès | |---|---| | `free` | health, auth, courses/today, predictions/top3 (1/jour) | | `premium` | + predictions/all, valuebets, metrics, roi (complet), feedback/stats | | `pro` | + backtest, export/csv, historique illimité, orgs | --- ## Endpoints API v1 ### Authentification | Méthode | Path | Auth | Description | |---|---|---|---| | POST | `/api/v1/auth/register` | Non | Créer un compte (plan=free) | | POST | `/api/v1/auth/login` | Non | Login — retourne access_token + refresh_token | | POST | `/api/v1/auth/refresh` | Non | Renouveler l'access token | | POST | `/api/v1/auth/logout` | Oui | Révoquer le refresh token | ### Système | Méthode | Path | Auth | Description | |---|---|---|---| | GET | `/api/v1/health` | Non | Healthcheck public | | GET | `/api/v1/docs` | Non | Swagger UI (Flasgger) | ### Courses | Méthode | Path | Plan | Description | |---|---|---|---| | GET | `/api/v1/courses/today` | free+ | Courses du jour (paginé) | | GET | `/api/v1/courses/{id}/predictions` | free+ | Prédictions ML pour une course | `{id}` format : `{num_reunion}-{num_course}` ex: `1-3` Query params `courses/today` : `filter=[all|quinte|trot|plat]`, `limit`, `offset` ### Prédictions ML | Méthode | Path | Plan | Description | |---|---|---|---| | GET | `/api/v1/predictions/top3` | free+ | Top 3 chevaux du jour | | GET | `/api/v1/predictions/all` | premium+ | Toutes les prédictions XGBoost | Query params : `date=YYYY-MM-DD`, `limit`, `offset` Source des données : table `ml_predictions_cache` (modèle `xgboost_v1`) ### Value Bets | Méthode | Path | Plan | Description | |---|---|---|---| | GET | `/api/v1/valuebets` | premium+ | Value bets du jour (`is_value_bet=1`) | Query params : `date`, `min_odds` (défaut 2.0), `limit`, `offset` ### Métriques ML | Méthode | Path | Plan | Description | |---|---|---|---| | GET | `/api/v1/metrics` | premium+ | Métriques perf ML (precision, ROI, top-3 rate) | Query params : `days` (int, défaut 30, max 365) ### ROI par Modèle/Stratégie (HRT-92) | Méthode | Path | Plan | Description | |---|---|---|---| | GET | `/api/v1/roi/by-model` | premium+ | ROI calculé par stratégie ML XGBoost | **Query params** : - `strategy` : filtrer par stratégie (`xgboost_sg`, `xgboost_value`, `xgboost_sp`, `xgboost_2sur4`) - `days` : période en jours (défaut 30, max 365) **Réponse** : ```json { "period": {"start": "2026-04-01", "end": "2026-04-30", "days": 30}, "models": [ { "model_source": "xgboost_sg", "nb_paris": 42, "mise": 42.0, "gain": 51.3, "roi_pct": 22.1, "win_rate": 28.6 } ] } ``` **Jointures** : `paris` ← `pmu_partants` (résultats) ← `pmu_rapports` (dividendes) **Accès plan** : Free = 1 stratégie max, Premium/Pro = complet + historique illimité ### ML Feedback Loop (HRT-93) | Méthode | Path | Plan | Description | |---|---|---|---| | POST | `/api/v1/ml/feedback/run` | Admin | Déclencher ml_feedback_saas.py manuellement | | GET | `/api/v1/ml/feedback/stats` | premium+ | Stats paris par stratégie XGBoost | **POST `/api/v1/ml/feedback/run`** — Corps optionnel : ```json {"date": "2026-04-29"} ``` ou ```json {"backfill": "2026-04-20"} ``` **GET `/api/v1/ml/feedback/stats`** — Réponse : ```json { "stats": [ { "source_reco": "xgboost_sg", "nb_paris": 42, "nb_gagnes": 12, "win_rate_pct": 28.6, "mise_totale": 42.0, "gain_total": 51.3, "roi_pct": 22.1 } ], "last_run": "2026-04-29T18:30:00" } ``` **Stratégies XGBoost** : | Stratégie | Type pari | Condition | Mise | |---|---|---|---| | `xgboost_sg` | simple_gagnant | top1 ML, ml_score >= 70 | 1€ | | `xgboost_value` | simple_gagnant | is_value_bet = 1 | 1€ | | `xgboost_sp` | simple_place | top1 ML, ml_score >= 50 | 1€ | | `xgboost_2sur4` | deux_sur_quatre | top4 ML, 6 combos | 6€ | ### Backtest | Méthode | Path | Plan | Description | |---|---|---|---| | GET | `/api/v1/backtest` | pro | Résultats historiques des paris | Query params : `start`, `end` (YYYY-MM-DD), `limit`, `offset` ### Export | Méthode | Path | Plan | Description | |---|---|---|---| | GET | `/api/v1/export/csv` | pro | Export CSV | Query params : `type=[predictions|bets]`, `date`, `start`, `end` ### Historique | Méthode | Path | Plan | Description | |---|---|---|---| | GET | `/api/v1/history` | free+ | Historique prédictions ML | Limites : Free = 7j, Premium = 90j, Pro = illimité ### Organisations | Méthode | Path | Plan | Description | |---|---|---|---| | GET | `/api/v1/org/` | pro | Détails de l'organisation | | POST | `/api/v1/org/` | pro | Créer une organisation | | POST | `/api/v1/org/invite` | pro | Inviter un membre (max 5) | | DELETE | `/api/v1/org/members/{id}` | pro | Retirer un membre | ### Utilisateur & Tokens | Méthode | Path | Plan | Description | |---|---|---|---| | GET | `/api/v1/user/profile` | free+ | Profil utilisateur | | PUT | `/api/v1/user/alerts` | premium+ | Config alertes Telegram | | GET | `/api/v1/user/api-token` | pro | Token API personnel | | POST | `/api/v1/user/api-token` | pro | Générer/régénérer token API | | GET | `/api/v1/user/webhook` | pro | Config webhook | | PUT | `/api/v1/user/webhook` | pro | Modifier webhook | ### Billing (Stripe) | Méthode | Path | Auth | Description | |---|---|---|---| | POST | `/api/v1/billing/checkout` | Oui | Créer session Stripe Checkout | | POST | `/api/v1/billing/portal` | Oui | Portail Stripe (gestion abonnement) | | GET | `/api/v1/billing/status` | Oui | Statut abonnement actuel | | POST | `/api/v1/billing/webhook` | Non | Webhook Stripe (events) | --- ## Format de réponse uniforme **Erreurs** : ```json { "status": "error", "message": "Description de l'erreur", "code": 400 } ``` **Listes paginées** : ```json { "pagination": { "total": 150, "limit": 20, "offset": 0, "has_more": true } } ``` --- ## Architecture ML — Résumé ``` ml_predictions_cache (XGBoost v1) → ml_feedback_saas.py → table paris (source_reco = xgboost_*) → /api/v1/roi/by-model (ROI calculé) → /api/v1/ml/feedback/stats (stats) → dashboard_saas.html (Section Performance & ROI) ``` Voir documentation complète : `POD/Intelligence/ML_Predictions_SaaS.md` --- ## Démarrage ```bash cd /home/h3r7/turf_saas source venv/bin/activate python app_v1.py # ou via gunicorn gunicorn -w 2 -b 0.0.0.0:8792 app_v1:app ``` ## Tests ```bash cd /home/h3r7/turf_saas source venv/bin/activate python -m pytest tests/ -v ``` --- *Turf SaaS — H3R7Tech — Mise à jour 2026-04-30 (HRT-96)*