feat: P&L côte à côte (Ouvert|Réalisé) + filtres journal + suppression trades fermés

- Dashboard: P&L card séparé en deux colonnes (Ouvertes/Réalisées) pour Simulé et Portfolio
- Dashboard: closed trades P&L locked from pnl_realized, ne fluctue plus après fermeture
- Journal Ouvert: filtres ticker/stratégie + classe d'actif + direction (haussier/baissier)
- Journal Fermés: mêmes filtres + filtre P&L (gagnants/perdants) + bouton supprimer par ligne
- Journal Non loggés: filtres ticker + classe d'actif + raison de skip
- Backend: DELETE /api/journal/trades/{id} + delete_trade() dans database.py

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
OpenSquared
2026-06-20 11:00:31 +02:00
parent 39da3b8945
commit d4a016a535
5 changed files with 444 additions and 144 deletions

View File

@@ -438,6 +438,18 @@ export const useCloseTrade = () => {
})
}
export const useDeleteTrade = () => {
const qc = useQueryClient()
return useMutation({
mutationFn: (id: number) => api.delete(`/journal/trades/${id}`).then(r => r.data),
onSuccess: () => {
qc.invalidateQueries({ queryKey: ['journal-mtm'] })
qc.invalidateQueries({ queryKey: ['journal-closed'] })
qc.invalidateQueries({ queryKey: ['journal-summary'] })
},
})
}
export const useUpdateExitParams = () => {
const qc = useQueryClient()
return useMutation({