Bilan #4 — Ciblage transferts + rendement Modified Dietz #142
Labels
No labels
autopilot:pending-human
source:analyste
source:defenseur
source:human
source:medic
status:approved
status:blocked
status:in-progress
status:needs-clarification
status:needs-fix
status:ready
status:review
status:triage
type:bug
type:feature
type:infra
type:refactor
type:schema
type:security
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: maximus/Simpl-Resultat#142
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Refs: spec-decisions-bilan.md + spec-plan-bilan.md (v2)
Depends on #141
Plan v2 : Modified Dietz dans src-tauri/src/commands/return_calculator.rs (co-localisé), tests TDD co-localisés via #[cfg(test)] mod tests, FK RESTRICT sur transferts.
Tâches
Setup
Module Modified Dietz (Rust)
Commande Tauri
Frontend
Critères dacceptation
/review-spec — findings Modified Dietz + structure module Rust
🔴 Critique :
src-tauri/src/services/n'existe pasLe code Rust ne déclare que
mod commands;etmod database;. Créersrc-tauri/src/services/return_calculator.rsintroduirait un nouveau top-level module juste pour Modified Dietz.Fix : Trancher. Préféré : placer
return_calculator.rsà côté debalance_commands.rsdanscommands/(mod return_calculator;danscommands/mod.rs). Toujours unit-testable, pas de nouveau layer.🟡 Améliorations
1.
chronomanquant dansCargo.tomlreqwest = "0.12"est déjà présent (ligne 43) — mention "ajouter reqwest" no-op. Maischronon'y est pas (chrono_nowest un stub). Modified Dietz nécessite arithmétiques de dates en jours (poidsW_i = (T - t_i) / T), fragile sans crate dédié.Fix : Ajouter
chrono = "0.4"(outime) dansCargo.tomlcomme tâche de cette issue.2. Tests Modified Dietz reportés trop tard (TDD opportunity)
Modified Dietz est la pièce la plus à risque (correction financière), construite ici, mais testée dans Issue 6 (qui dépend d'Issue 5 bloquée externe). Si Issue 5 reste en blocage long, Modified Dietz ship sans tests.
Fix : Déplacer les tests Rust unitaires de
return_calculator.rs+ tests migration FK/UNIQUE/CHECK directement dans cette issue (TDD). Garder Issue 6 pour les tests cross-cutting (vitest, mocks priceFetcher).3. FK CASCADE sur
balance_account_transfers.transaction_idSi l'utilisateur supprime une transaction taggée, le lien disparaît silencieusement et les rendements Modified Dietz passés changent rétroactivement — problème de reproductibilité des rapports.
Fix : Soit
ON DELETE RESTRICT(force unlink avant suppression), soit garder CASCADE mais snapshot desreturn_pcthistoriques. Trancher dans l'ADR.