Update documentation for v0.4.7 changes
Sync CHANGELOG, architecture docs, user guide, and i18n docs keys with recent features: log viewer, sticky budget headers, sortable report detail columns, amount toggle, migration repair, and startup retry logic. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
3e0f826256
commit
2a61ffcdb4
5 changed files with 63 additions and 17 deletions
11
CHANGELOG.md
11
CHANGELOG.md
|
|
@ -6,6 +6,17 @@
|
|||
- Error boundary catches React crashes and displays an error page instead of a white screen
|
||||
- Startup timeout (10s) on database connection — shows error page instead of infinite spinner
|
||||
- Error page with "Refresh", "Check for updates", and contact/issue links
|
||||
- Log viewer in settings page — captures console output, filterable by level, copyable, persists across refresh
|
||||
|
||||
### Changed
|
||||
- Report detail modal: sortable columns — click headers to sort by date, description, or amount (#1)
|
||||
- Report detail modal: toggle to show/hide amounts column (#3)
|
||||
- Budget table: column headers stay fixed when scrolling vertically (#2)
|
||||
|
||||
### Fixed
|
||||
- Auto-updater on Linux: `latest.json` version field no longer has `v` prefix, package registry upload is more robust
|
||||
- Startup retry: DB connection retries up to 3 times before showing error page (fixes first-launch failure on Windows)
|
||||
- Migration checksum mismatch: automatically repairs stale migration 1 checksum on startup
|
||||
|
||||
## [0.4.4]
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
# Architecture technique — Simpl'Résultat
|
||||
|
||||
> Document généré le 2026-02-19 — Version 0.3.7
|
||||
> Document mis à jour le 2026-03-01 — Version 0.4.7
|
||||
|
||||
## Stack technique
|
||||
|
||||
|
|
@ -26,7 +26,7 @@
|
|||
```
|
||||
simpl-resultat/
|
||||
├── src/ # Frontend React/TypeScript
|
||||
│ ├── components/ # 49 composants organisés par domaine
|
||||
│ ├── components/ # 55 composants organisés par domaine
|
||||
│ │ ├── adjustments/ # 3 composants
|
||||
│ │ ├── budget/ # 5 composants
|
||||
│ │ ├── categories/ # 5 composants
|
||||
|
|
@ -35,7 +35,7 @@ simpl-resultat/
|
|||
│ │ ├── layout/ # AppShell, Sidebar
|
||||
│ │ ├── profile/ # 3 composants (PIN, formulaire, switcher)
|
||||
│ │ ├── reports/ # 8 composants (graphiques + rapport dynamique)
|
||||
│ │ ├── settings/ # 2 composants
|
||||
│ │ ├── settings/ # 3 composants (+ LogViewerCard)
|
||||
│ │ ├── shared/ # 6 composants réutilisables
|
||||
│ │ └── transactions/ # 5 composants
|
||||
│ ├── contexts/ # ProfileContext (état global profil)
|
||||
|
|
@ -103,10 +103,11 @@ Les migrations sont définies inline dans `src-tauri/src/lib.rs` via `tauri_plug
|
|||
| 4 | v4 | Ajout `is_inputable` sur `categories` |
|
||||
| 5 | v5 | Création de `import_config_templates` |
|
||||
| 6 | v6 | Changement contrainte unique `imported_files` (hash → filename) |
|
||||
| 7 | v7 | Ajout sous-catégories d'assurance (niveau 3) |
|
||||
|
||||
Pour les **nouveaux profils**, le fichier `consolidated_schema.sql` contient le schéma complet avec toutes les migrations pré-appliquées (pas besoin de rejouer les migrations).
|
||||
|
||||
## Services TypeScript (14)
|
||||
## Services TypeScript (15)
|
||||
|
||||
| Service | Responsabilité |
|
||||
|---------|---------------|
|
||||
|
|
@ -124,6 +125,7 @@ Pour les **nouveaux profils**, le fichier `consolidated_schema.sql` contient le
|
|||
| `reportService.ts` | Génération de rapports et analytique |
|
||||
| `dataExportService.ts` | Export de données (chiffré) |
|
||||
| `userPreferenceService.ts` | Stockage préférences utilisateur |
|
||||
| `logService.ts` | Capture des logs console (buffer circulaire, sessionStorage) |
|
||||
|
||||
## Hooks (12)
|
||||
|
||||
|
|
@ -144,7 +146,7 @@ Chaque hook encapsule la logique d'état via `useReducer` :
|
|||
| `useTheme` | Thème clair/sombre |
|
||||
| `useUpdater` | Mise à jour de l'application |
|
||||
|
||||
## Commandes Tauri (17)
|
||||
## Commandes Tauri (18)
|
||||
|
||||
### `fs_commands.rs` — Système de fichiers (6)
|
||||
|
||||
|
|
@ -163,7 +165,7 @@ Chaque hook encapsule la logique d'état via `useReducer` :
|
|||
- `read_import_file` — Lecture fichier chiffré
|
||||
- `is_file_encrypted` — Vérification magic SREF
|
||||
|
||||
### `profile_commands.rs` — Gestion des profils (6)
|
||||
### `profile_commands.rs` — Gestion des profils (7)
|
||||
|
||||
- `load_profiles` — Chargement depuis `profiles.json`
|
||||
- `save_profiles` — Sauvegarde de la configuration
|
||||
|
|
@ -171,6 +173,7 @@ Chaque hook encapsule la logique d'état via `useReducer` :
|
|||
- `get_new_profile_init_sql` — Récupération du schéma consolidé
|
||||
- `hash_pin` — Hachage Argon2 du PIN
|
||||
- `verify_pin` — Vérification du PIN
|
||||
- `repair_migrations` — Réparation des checksums de migration (rusqlite)
|
||||
|
||||
## Pages et routing
|
||||
|
||||
|
|
@ -181,6 +184,9 @@ Le routing est défini dans `App.tsx`. Toutes les pages sont englobées par `App
|
|||
- **`ErrorBoundary`** (class component) : wrape `<App />` dans `main.tsx`, attrape les crashs React et affiche `ErrorPage` en fallback
|
||||
- **`ErrorPage`** : page d'erreur réutilisable avec détails techniques (collapsible), bouton "Actualiser", vérification de mises à jour, et liens de contact/issues
|
||||
- **Timeout au démarrage** : `App.tsx` applique un timeout de 10 secondes sur `connectActiveProfile()` — affiche `ErrorPage` au lieu d'un spinner infini si la connexion DB échoue
|
||||
- **Retry au démarrage** : `connectActiveProfile()` réessaie jusqu'à 3 fois avec 1s de délai avant d'afficher l'erreur
|
||||
- **Réparation de migrations** : `repair_migrations` (Rust/rusqlite) supprime les checksums invalides de `_sqlx_migrations` avant le chargement de la DB
|
||||
- **Log viewer** : `logService.ts` capture les `console.log/warn/error` dans un buffer circulaire (500 entrées, persisté en `sessionStorage`), affiché dans la page Paramètres via `LogViewerCard`
|
||||
|
||||
| Route | Page | Description |
|
||||
|-------|------|-------------|
|
||||
|
|
|
|||
|
|
@ -223,6 +223,7 @@ Planifiez votre budget mensuel pour chaque catégorie et suivez le prévu par ra
|
|||
- Répartition égale du montant annuel sur 12 mois
|
||||
- Modèles de budget pour sauvegarder et appliquer des configurations
|
||||
- Sous-totaux par catégorie parente
|
||||
- En-têtes de colonnes fixes au défilement vertical
|
||||
|
||||
### Comment faire
|
||||
|
||||
|
|
@ -253,6 +254,8 @@ Visualisez vos données financières avec des graphiques interactifs et comparez
|
|||
- Rapport dynamique : tableau croisé dynamique (pivot table) personnalisable
|
||||
- Motifs SVG (lignes, points, hachures) pour distinguer les catégories
|
||||
- Menu contextuel (clic droit) pour masquer une catégorie ou voir ses transactions
|
||||
- Détail des transactions par catégorie avec tri par colonne (date, description, montant)
|
||||
- Toggle pour afficher ou masquer les montants dans le détail des transactions
|
||||
|
||||
### Comment faire
|
||||
|
||||
|
|
@ -261,6 +264,8 @@ Visualisez vos données financières avec des graphiques interactifs et comparez
|
|||
3. Cliquez droit sur une catégorie dans un graphique pour la masquer ou voir le détail de ses transactions
|
||||
4. Les catégories masquées apparaissent comme pastilles au-dessus du graphique — cliquez dessus pour les réafficher
|
||||
5. Dans Budget vs Réel, basculez entre les vues Mensuel et Cumul annuel
|
||||
6. Dans le détail d'une catégorie, cliquez sur un en-tête de colonne pour trier les transactions
|
||||
7. Utilisez l'icône œil dans le détail pour masquer ou afficher la colonne des montants
|
||||
|
||||
### Astuces
|
||||
|
||||
|
|
@ -295,6 +300,7 @@ Configurez les préférences de l'application, vérifiez les mises à jour, acc
|
|||
- Affichage de la version de l'application
|
||||
- Guide d'utilisation complet accessible directement depuis les paramètres
|
||||
- Vérification automatique des mises à jour avec installation en un clic
|
||||
- Journaux de l'application (logs) consultables avec filtres par niveau, copie et effacement
|
||||
- Export des données (transactions, catégories, ou les deux) en format JSON ou CSV
|
||||
- Import des données depuis un fichier exporté précédemment
|
||||
- Chiffrement AES-256-GCM optionnel pour les fichiers exportés
|
||||
|
|
@ -303,9 +309,10 @@ Configurez les préférences de l'application, vérifiez les mises à jour, acc
|
|||
|
||||
1. Cliquez sur Guide d'utilisation pour accéder à la documentation complète
|
||||
2. Cliquez sur Vérifier les mises à jour pour voir si une nouvelle version est disponible
|
||||
3. Utilisez la section Gestion des données pour exporter ou importer vos données
|
||||
4. Lors de l'export, choisissez ce qu'il faut inclure et définissez optionnellement un mot de passe pour le chiffrement
|
||||
5. Lors de l'import, sélectionnez un fichier exporté précédemment — les fichiers chiffrés demanderont le mot de passe
|
||||
3. Consultez la section Journaux pour voir les logs de l'application — filtrez par niveau (Tout, Error, Warn, Info), copiez ou effacez
|
||||
4. Utilisez la section Gestion des données pour exporter ou importer vos données
|
||||
5. Lors de l'export, choisissez ce qu'il faut inclure et définissez optionnellement un mot de passe pour le chiffrement
|
||||
6. Lors de l'import, sélectionnez un fichier exporté précédemment — les fichiers chiffrés demanderont le mot de passe
|
||||
|
||||
### Astuces
|
||||
|
||||
|
|
@ -313,3 +320,5 @@ Configurez les préférences de l'application, vérifiez les mises à jour, acc
|
|||
- Changez la langue de l'application via le sélecteur de langue dans la barre latérale
|
||||
- Exportez régulièrement pour garder une sauvegarde de vos données
|
||||
- Le guide d'utilisation peut être imprimé ou exporté en PDF via le bouton Imprimer
|
||||
- Les journaux persistent pendant la session — ils survivent à un rafraîchissement de la page
|
||||
- En cas de problème, copiez les journaux et joignez-les à votre signalement
|
||||
|
|
|
|||
|
|
@ -703,7 +703,8 @@
|
|||
"Annual column with automatic totals",
|
||||
"Split annual amount evenly across 12 months",
|
||||
"Budget templates to save and apply configurations",
|
||||
"Parent category subtotals"
|
||||
"Parent category subtotals",
|
||||
"Column headers stay fixed when scrolling vertically"
|
||||
],
|
||||
"steps": [
|
||||
"Use the year navigator to select the budget year",
|
||||
|
|
@ -726,15 +727,20 @@
|
|||
"Expenses by Category: spending breakdown (pie chart)",
|
||||
"Category Over Time: track how each category evolves (line chart)",
|
||||
"Budget vs Actual: monthly and year-to-date comparison table",
|
||||
"Dynamic Report: customizable pivot table",
|
||||
"SVG patterns (lines, dots, crosshatch) to distinguish categories",
|
||||
"Context menu (right-click) to hide a category or view its transactions"
|
||||
"Context menu (right-click) to hide a category or view its transactions",
|
||||
"Transaction detail by category with sortable columns (date, description, amount)",
|
||||
"Toggle to show or hide amounts in transaction detail"
|
||||
],
|
||||
"steps": [
|
||||
"Use the tabs to switch between Trends, By Category, Over Time, and Budget vs Actual views",
|
||||
"Adjust the time period using the period selector",
|
||||
"Right-click a category in any chart to hide it or view its transaction details",
|
||||
"Hidden categories appear as dismissible chips above the chart — click them to show again",
|
||||
"In Budget vs Actual, toggle between Monthly and Year-to-Date views"
|
||||
"In Budget vs Actual, toggle between Monthly and Year-to-Date views",
|
||||
"In the category detail, click a column header to sort transactions",
|
||||
"Use the eye icon in the detail view to show or hide the amounts column"
|
||||
],
|
||||
"tips": [
|
||||
"Hidden categories are remembered while you stay on the page — click Show All to reset",
|
||||
|
|
@ -750,6 +756,7 @@
|
|||
"App version display",
|
||||
"Complete user guide accessible directly from settings",
|
||||
"Automatic update checker with one-click install",
|
||||
"Application logs viewable with level filters, copy, and clear",
|
||||
"Data export (transactions, categories, or both) in JSON or CSV format",
|
||||
"Data import from a previously exported file",
|
||||
"Optional AES-256-GCM encryption for exported files"
|
||||
|
|
@ -757,6 +764,7 @@
|
|||
"steps": [
|
||||
"Click User Guide to access the full documentation",
|
||||
"Click Check for Updates to see if a new version is available",
|
||||
"View the Logs section to see application logs — filter by level (All, Error, Warn, Info), copy or clear",
|
||||
"Use the Data Management section to export or import your data",
|
||||
"When exporting, choose what to include and optionally set a password for encryption",
|
||||
"When importing, select a previously exported file — encrypted files will prompt for the password"
|
||||
|
|
@ -765,7 +773,9 @@
|
|||
"Updates only replace the app binary — your database is never modified",
|
||||
"Change the app language using the language selector in the sidebar",
|
||||
"Export regularly to keep a backup of your data",
|
||||
"The user guide can be printed or exported to PDF via the Print button"
|
||||
"The user guide can be printed or exported to PDF via the Print button",
|
||||
"Logs persist for the session — they survive a page refresh",
|
||||
"If you encounter an issue, copy the logs and attach them to your report"
|
||||
]
|
||||
}
|
||||
},
|
||||
|
|
|
|||
|
|
@ -703,7 +703,8 @@
|
|||
"Colonne annuelle avec totaux automatiques",
|
||||
"Répartition égale du montant annuel sur 12 mois",
|
||||
"Modèles de budget pour sauvegarder et appliquer des configurations",
|
||||
"Sous-totaux par catégorie parente"
|
||||
"Sous-totaux par catégorie parente",
|
||||
"En-têtes de colonnes fixes au défilement vertical"
|
||||
],
|
||||
"steps": [
|
||||
"Utilisez le navigateur d'année pour sélectionner l'année du budget",
|
||||
|
|
@ -726,15 +727,20 @@
|
|||
"Dépenses par catégorie : répartition des dépenses (graphique circulaire)",
|
||||
"Catégories dans le temps : suivez l'évolution de chaque catégorie (graphique en ligne)",
|
||||
"Budget vs Réel : tableau comparatif mensuel et cumul annuel",
|
||||
"Rapport dynamique : tableau croisé dynamique (pivot table) personnalisable",
|
||||
"Motifs SVG (lignes, points, hachures) pour distinguer les catégories",
|
||||
"Menu contextuel (clic droit) pour masquer une catégorie ou voir ses transactions"
|
||||
"Menu contextuel (clic droit) pour masquer une catégorie ou voir ses transactions",
|
||||
"Détail des transactions par catégorie avec tri par colonne (date, description, montant)",
|
||||
"Toggle pour afficher ou masquer les montants dans le détail des transactions"
|
||||
],
|
||||
"steps": [
|
||||
"Utilisez les onglets pour basculer entre Tendances, Par catégorie, Dans le temps et Budget vs Réel",
|
||||
"Ajustez la période avec le sélecteur de période",
|
||||
"Cliquez droit sur une catégorie dans un graphique pour la masquer ou voir le détail de ses transactions",
|
||||
"Les catégories masquées apparaissent comme pastilles au-dessus du graphique — cliquez dessus pour les réafficher",
|
||||
"Dans Budget vs Réel, basculez entre les vues Mensuel et Cumul annuel"
|
||||
"Dans Budget vs Réel, basculez entre les vues Mensuel et Cumul annuel",
|
||||
"Dans le détail d'une catégorie, cliquez sur un en-tête de colonne pour trier les transactions",
|
||||
"Utilisez l'icône œil dans le détail pour masquer ou afficher la colonne des montants"
|
||||
],
|
||||
"tips": [
|
||||
"Les catégories masquées sont mémorisées tant que vous restez sur la page — cliquez sur Tout afficher pour réinitialiser",
|
||||
|
|
@ -750,6 +756,7 @@
|
|||
"Affichage de la version de l'application",
|
||||
"Guide d'utilisation complet accessible directement depuis les paramètres",
|
||||
"Vérification automatique des mises à jour avec installation en un clic",
|
||||
"Journaux de l'application (logs) consultables avec filtres par niveau, copie et effacement",
|
||||
"Export des données (transactions, catégories, ou les deux) en format JSON ou CSV",
|
||||
"Import des données depuis un fichier exporté précédemment",
|
||||
"Chiffrement AES-256-GCM optionnel pour les fichiers exportés"
|
||||
|
|
@ -757,6 +764,7 @@
|
|||
"steps": [
|
||||
"Cliquez sur Guide d'utilisation pour accéder à la documentation complète",
|
||||
"Cliquez sur Vérifier les mises à jour pour voir si une nouvelle version est disponible",
|
||||
"Consultez la section Journaux pour voir les logs de l'application — filtrez par niveau (Tout, Error, Warn, Info), copiez ou effacez",
|
||||
"Utilisez la section Gestion des données pour exporter ou importer vos données",
|
||||
"Lors de l'export, choisissez ce qu'il faut inclure et définissez optionnellement un mot de passe pour le chiffrement",
|
||||
"Lors de l'import, sélectionnez un fichier exporté précédemment — les fichiers chiffrés demanderont le mot de passe"
|
||||
|
|
@ -765,7 +773,9 @@
|
|||
"Les mises à jour ne remplacent que le programme — votre base de données n'est jamais modifiée",
|
||||
"Changez la langue de l'application via le sélecteur de langue dans la barre latérale",
|
||||
"Exportez régulièrement pour garder une sauvegarde de vos données",
|
||||
"Le guide d'utilisation peut être imprimé ou exporté en PDF via le bouton Imprimer"
|
||||
"Le guide d'utilisation peut être imprimé ou exporté en PDF via le bouton Imprimer",
|
||||
"Les journaux persistent pendant la session — ils survivent à un rafraîchissement de la page",
|
||||
"En cas de problème, copiez les journaux et joignez-les à votre signalement"
|
||||
]
|
||||
}
|
||||
},
|
||||
|
|
|
|||
Loading…
Reference in a new issue