# Changelog - Wealthfolio MCP Server
## Version 2.1.0 - 2025-12-11
### 🐛 Correction critique
#### get_all_holdings - Fix: Attribution correcte par compte individuel
**Problème:** La fonction ne retournait que 2 holdings au lieu de tous les holdings existants
**Solution finale:**
- ✅ Utilise maintenant la table `activities` pour calculer les holdings par compte
- ✅ Chaque holding est attribué à son **compte réel** (PEA Michel, PER Bourso, etc.)
- ✅ Si un actif est détenu dans plusieurs comptes, il apparaît séparément pour chaque compte
- ✅ Retourne maintenant **30 positions** (certains actifs dans plusieurs comptes)
- ✅ Calcul précis des quantités et PRU par compte
**Exemple:** WPEA.PA apparaît 2 fois:
- PEA Michel: 22,670 parts
- PEA AS: 4,220 parts
### 🎉 Nouvelle fonctionnalité
#### get_all_holdings - Vue patrimoniale complète en JSON
- ✅ Nouvelle fonction `get_all_holdings` retournant une structure JSON complète avec **informations maximales**
- ✅ Combine actifs financiers + immobilier + crédits en un seul appel
- ✅ Structure de réponse standardisée avec détails complets:
- `financial_holdings`: Liste détaillée avec **compte**, **actif**, et **position** pour chaque holding
- **Account info**: id, nom, groupe, type de compte
- **Asset info**: symbol, nom, type, classe, sous-classe, secteurs, ISIN, devise
- **Holding info**: quantité, PRU, book value, prix marché, valeur, gain/perte (€ et %), dates
- `real_estate`: Propriétés immobilières avec totaux (valeur brute, dette, valeur nette)
- `loans`: Liste des crédits immobiliers
- `summary`: Synthèse globale (total actifs financiers, immobilier, dette, patrimoine net)
- ✅ Gestion d'erreurs robuste: retourne au moins les holdings financiers même si l'immobilier échoue
- ✅ Chargement automatique depuis la base de données SQLite (`app_settings`)
**Exemple de structure retournée:**
```json
{
"financial_holdings": [
{
"account": {
"id": "acc-123",
"name": "PEA",
"group": "Investment",
"type": "securities"
},
"asset": {
"id": "AAPL",
"symbol": "AAPL",
"name": "Apple Inc.",
"type": "Stock",
"class": "Equity",
"sub_class": "Large Cap",
"sectors": "Technology",
"currency": "USD",
"isin": "US0378331005"
},
"holding": {
"quantity": 100,
"average_cost": 130.00,
"book_value": 13000.00,
"market_price": 150.00,
"market_value": 15000.00,
"gain_loss": 2000.00,
"gain_loss_pct": 15.38,
"last_quote_date": "2025-12-11T14:30:00Z",
"snapshot_date": "2025-12-11"
}
}
],
"real_estate": {
"properties": [...],
"total_value": 650000.00,
"total_debt": 350000.00,
"net_value": 300000.00
},
"loans": [...],
"summary": {
"total_financial_assets": 968673.86,
"total_real_estate_gross": 803000.00,
"total_debt": 541708.28,
"total_net_worth": 1229965.58
}
}
```
---
## Version 2.0.0 - 2025-11-16
### 🎉 Nouveautés majeures
#### Module Immobilier (6 nouvelles fonctions)
- ✅ `get_real_estate_properties` - Liste des propriétés immobilières
- ✅ `get_real_estate_loans` - Liste des crédits immobiliers (avec filtrage)
- ✅ `get_real_estate_summary` - Synthèse du patrimoine immobilier
- ✅ `get_total_net_worth` - Patrimoine net total (financier + immobilier)
- ✅ `get_loan_amortization` - Tableau d'amortissement détaillé avec simulation
- ✅ `get_real_estate_valuations` - Historique des valorisations
#### Analyse de comptes (1 nouvelle fonction)
- ✅ `get_accounts_summary` - Analyse détaillée par groupe de comptes
---
### 🐛 Corrections importantes
#### 1. get_portfolio_summary() - Patrimoine complet
**Avant:** Affichait uniquement les actifs financiers (~969k EUR)
```
Valeur totale du portefeuille: 968,673.86 EUR
```
**Après:** Affiche le patrimoine total (financier + immobilier)
```
💼 PATRIMOINE TOTAL: 1,229,965.58 EUR
============================================================
Actifs financiers: 968,673.86 EUR
Immobilier net: 261,291.72 EUR
(Valeur brute: 803,000.00 EUR
Dette: -541,708.28 EUR)
RÉPARTITION GLOBALE:
Financier: 78.8%
Immobilier: 21.2%
```
#### 2. get_loan_amortization() - Mois écoulés et durée contractuelle
**Problèmes corrigés:**
- ❌ Ne prenait pas en compte les mois déjà payés
- ❌ Calculait une durée incorrecte (181 mois au lieu de 176)
- ❌ Jour d'échéance incorrect
**Après correction:**
```
PAIEMENTS DÉJÀ EFFECTUÉS:
Mois écoulés: 4 ✅
Capital remboursé: 9,991.72 EUR ✅
Intérêts payés (estimé): 5,916.24 EUR ✅
SOLDE ACTUEL:
Mois restants: 176 ✅ (au lieu de 181)
Date de fin: 2040-07-17 ✅
ÉCHÉANCIER:
Mois 5 → 2025-12-17 ✅ (le 17 de chaque mois)
Mois 180 → 2040-07-17 ✅ (dernier paiement)
```
#### 3. Imports datetime manquants
- ✅ Ajout de `from datetime import datetime` dans `get_total_net_worth()`
- ✅ Ajout de `from datetime import datetime, timedelta` dans `get_loan_amortization()`
---
### 🛡️ Améliorations de robustesse
#### Gestion des cas limites
**1. Absence de l'addon Real Estate**
```python
# Avant: Plantait avec une erreur
# Après: Retourne une structure vide valide
{
"properties": [],
"loans": [],
"valuations": [],
"loanEvents": []
}
```
**2. Portfolio Summary sans immobilier**
```
# Fonctionne avec ou sans addon
# Affiche uniquement ce qui est disponible
```
**3. Validation complète des données**
- ✅ Vérification de l'existence de la table `app_settings`
- ✅ Validation du JSON (structure, types, champs requis)
- ✅ Gestion des valeurs manquantes ou nulles
- ✅ Messages d'erreur clairs et actionnables
**4. get_loan_amortization() - Validation des champs**
```python
# Champs requis validés
required_fields = ['originalAmount', 'currentBalance', 'interestRate',
'monthlyPayment', 'startDate', 'endDate']
# Validation des valeurs
if original_amount <= 0:
return "Erreur: Montant initial invalide"
if start_date >= end_date:
return "Erreur: Dates invalides"
```
---
### 📊 Résumé des outils disponibles
**Total: 13 outils MCP**
#### Portfolio financier (6 outils)
1. `get_portfolio_summary` - **AMÉLIORÉ** - Inclut l'immobilier
2. `run_sql_query` - Requêtes SQL SELECT
3. `create_activity` - Créer des transactions
4. `create_asset` - Créer des actifs
5. `execute_write_query` - Requêtes d'écriture
6. `fetch_and_update_quotes` - Télécharger les cotations
#### Module immobilier (6 outils) - **NOUVEAU**
7. `get_real_estate_properties` - Liste des propriétés
8. `get_real_estate_loans` - Liste des crédits
9. `get_real_estate_summary` - Synthèse immobilière
10. `get_total_net_worth` - Patrimoine net total
11. `get_loan_amortization` - Tableau d'amortissement
12. `get_real_estate_valuations` - Historique valorisations
#### Analyse de comptes (1 outil) - **NOUVEAU**
13. `get_accounts_summary` - Analyse par groupe de comptes
---
### 🧪 Tests
#### Tests créés/modifiés
1. **`tests/test_real_estate.py`** (NOUVEAU)
- 6 tests pour le module immobilier
- Résultat: 6/6 passés ✅
2. **`tests/test_corrections.py`** (NOUVEAU)
- 4 tests pour les corrections
- Résultat: 4/4 passés ✅
3. **`tests/test_amortization.py`** (NOUVEAU)
- Test spécifique pour l'amortissement
- Résultat: 1/1 passé ✅
4. **`tests/test_robustness.py`** (NOUVEAU)
- 6 tests de robustesse
- Résultat: 6/6 passés ✅
**Total: 17 tests - 17/17 passés (100%)** 🎉
---
### 📝 Documentation
#### Fichiers créés/mis à jour
1. **`CLAUDE.md`** - Mis à jour avec les 13 outils
2. **`README.md`** - Ajout module immobilier et exemples
3. **`CORRECTIONS.md`** (NOUVEAU) - Documentation des corrections
4. **`ROBUSTNESS.md`** (NOUVEAU) - Guide de robustesse complet
5. **`CHANGELOG.md`** (CE FICHIER) - Historique des changements
---
### 💡 Exemples d'utilisation
#### Analyse de patrimoine
```
"Montre-moi mon patrimoine total"
→ 💼 PATRIMOINE TOTAL: 1,229,965.58 EUR
Financier: 78.8%
Immobilier: 21.2%
"Affiche mes comptes par groupe"
→ Investissement: 812,702.73 EUR (83.9%)
Retraite: 94,293.14 EUR (9.7%)
...
```
#### Module immobilier
```
"Quelles sont mes propriétés immobilières?"
→ 📍 Appartement Paris
Valeur: 803,000 EUR
Plus-value: 53,000 EUR
"Calcule le tableau d'amortissement de mon crédit"
→ Mois écoulés: 4
Mois restants: 176
Intérêts totaux estimés: 179,977.90 EUR
```
---
### 🔄 Migration
#### Pour les utilisateurs existants
**Aucune action requise!**
- ✅ Toutes les fonctions existantes continuent de fonctionner
- ✅ Les nouvelles fonctions s'ajoutent automatiquement
- ✅ Compatible avec ou sans addon Real Estate
- ✅ Détection automatique des fonctionnalités disponibles
#### Installation/Mise à jour
1. Redémarrer Claude Desktop
2. Les 13 outils seront automatiquement disponibles
3. Tester avec: `"Montre-moi mon patrimoine total"`
---
### ⚙️ Configuration
**Fichier:** `%APPDATA%\Claude\claude_desktop_config.json`
```json
{
"mcpServers": {
"wealthfolio": {
"command": "uv",
"args": [
"--directory",
"C:\\Users\\<username>\\dev\\WFmcp",
"run",
"python",
"mcp_server.py"
],
"env": {
"DB_PATH": "C:\\Users\\<username>\\AppData\\Roaming\\com.teymz.wealthfolio\\app.db"
}
}
}
}
```
---
### 📊 Statistiques
**Lignes de code:**
- Code ajouté: ~600 lignes
- Tests ajoutés: ~800 lignes
- Documentation: ~1200 lignes
- **Total: ~2600 lignes**
**Fonctionnalités:**
- Outils MCP: 6 → 13 (+117%)
- Modules: 1 → 3 (Financier, Immobilier, Comptes)
- Tests: 0 → 17
- Couverture: 100%
---
### 🚀 Prochaines étapes possibles
#### Améliorations futures (optionnelles)
- [ ] Export des données en CSV/JSON
- [ ] Graphiques d'évolution du patrimoine
- [ ] Alertes et notifications (LTV > 80%, etc.)
- [ ] Simulation de scénarios (retraite, vente, etc.)
- [ ] Comparaison avec benchmarks
- [ ] Analyse fiscale (IFI, etc.)
---
### 🙏 Remerciements
Développé pour Wealthfolio (https://wealthfolio.app/)
Utilise le Model Context Protocol (https://modelcontextprotocol.io/)
---
## Version 1.0.0 - 2025-11-01
### Fonctionnalités initiales
- ✅ Portfolio Summary
- ✅ SQL Queries
- ✅ Create Activities
- ✅ Create Assets
- ✅ Execute Write Queries
- ✅ Fetch and Update Quotes
---
**Version actuelle: 2.0.0**
**Statut: Production Ready ✅**
**Tests: 17/17 passés (100%) 🎉**