1.5.0: aviso de huecos + resumen mensual compartible + import con vista previa
Feature 1 — Aviso de huecos: SnapshotGapDetector detecta huecos internos por source (meses sin datos entre dos snapshots). Banner desechable en Dashboard + DataGapsSheet para rellenar (abre AddSnapshotView con el mes que falta). Complementa la interpolación de gráficas: la línea se ve suave pero el usuario sabe que faltan datos reales. Feature 2 — Resumen mensual compartible: MonthlySummaryShareView (tarjeta con marca: valor, variación desde el check-in, racha, mood/rating) renderizada con ImageRenderer y compartida vía ShareService. Botón en la fila "check-in done" del Dashboard. Feature 3 — Import con vista previa: ImportPreview + previewImportAsync (dry-run READ-ONLY, no muta nada) cuenta qué se creará/actualizará usando los mismos checks de existencia que applyImport. ImportDataView muestra la confirmación antes de importar. El path real de import (applyImport/importDataAsync) NO se toca. Localización en los 7 idiomas. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01L2p3gUZRNWW388rWFRjiU7
This commit is contained in:
@@ -400,13 +400,13 @@ struct AddSnapshotView: View {
|
||||
@State private var showingPropagationDialog = false
|
||||
@State private var pendingContribution: Decimal?
|
||||
|
||||
init(source: InvestmentSource, snapshot: Snapshot? = nil) {
|
||||
init(source: InvestmentSource, snapshot: Snapshot? = nil, initialDate: Date? = nil) {
|
||||
self.source = source
|
||||
self.snapshot = snapshot
|
||||
if let snapshot = snapshot {
|
||||
_viewModel = StateObject(wrappedValue: SnapshotFormViewModel(source: source, mode: .edit(snapshot)))
|
||||
} else {
|
||||
_viewModel = StateObject(wrappedValue: SnapshotFormViewModel(source: source))
|
||||
_viewModel = StateObject(wrappedValue: SnapshotFormViewModel(source: source, initialDate: initialDate))
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user