store: Decision: Auto-sync on dashboard mount when all entities stale >24h
This commit is contained in:
parent
618171a736
commit
0f6f1ece3b
@ -0,0 +1,32 @@
|
|||||||
|
---
|
||||||
|
id: 346c5a34-3fed-44ff-832a-b0c9eb42ca88
|
||||||
|
type: decision
|
||||||
|
title: "Decision: Auto-sync on dashboard mount when all entities stale >24h"
|
||||||
|
tags: [sba-scouting, rust, sync, dashboard, decision, auto-sync]
|
||||||
|
importance: 0.6
|
||||||
|
confidence: 0.8
|
||||||
|
created: "2026-03-02T02:09:10.166132+00:00"
|
||||||
|
updated: "2026-03-02T02:09:10.166132+00:00"
|
||||||
|
---
|
||||||
|
|
||||||
|
# Auto-Sync on Dashboard Mount: Design Decision
|
||||||
|
|
||||||
|
## Context
|
||||||
|
sba-scouting Rust TUI — dashboard screen loads sync statuses from the DB on mount.
|
||||||
|
|
||||||
|
## Decision
|
||||||
|
After sync statuses load (in `SyncStatusesLoaded` handler), automatically trigger a full sync if ALL entity types (teams, players, transactions) have `last_sync` older than 24 hours OR have never been synced.
|
||||||
|
|
||||||
|
## Rationale
|
||||||
|
- Avoids stale data on first launch of the day without requiring manual user action
|
||||||
|
- "All entities" check prevents partial re-sync when only one type is fresh
|
||||||
|
- Only fires on dashboard mount (when statuses load), not on every navigation to dashboard
|
||||||
|
|
||||||
|
## Implementation
|
||||||
|
- Check fires in `DashboardState::handle_message()` inside the `SyncStatusesLoaded` arm
|
||||||
|
- Required adding `settings: &Settings` parameter to `handle_message()` to pass to `trigger_sync()`
|
||||||
|
- Standings use a separate `standings_cache` table with their own refresh mechanism — they do NOT participate in this check
|
||||||
|
|
||||||
|
## Scope Limits
|
||||||
|
- Does not affect standings cache
|
||||||
|
- Does not re-trigger if user navigates away and back (statuses only load once on mount)
|
||||||
Loading…
Reference in New Issue
Block a user