Files
pluriwave/openspec/changes/rediseno-funcional/specs/alarm-vacation-ranges/spec.md
T

76 lines
2.7 KiB
Markdown

# Alarm Vacation Ranges Specification
## Purpose
Active vacation-range detection, per-alarm pause-impact computation,
upcoming ranges, past-ranges history, and the summary-row entry point from
the Alarmas root into a dedicated Vacaciones manager screen. Traceable to
WU8 (summary row), WU9 (manager screen + `EstadoAlarmas` queries).
## Requirements
### Requirement: Active Range Detection
`EstadoAlarmas` MUST expose a query returning the currently-active vacation
range (if today falls within one), including days remaining. It MUST
return no active range when today falls within none.
#### Scenario: Today falls within a range
- GIVEN a vacation range whose start-to-end span includes today
- WHEN the active-range query runs
- THEN it returns that range with a computed days-remaining count
#### Scenario: No active range
- GIVEN no configured range includes today
- WHEN the active-range query runs
- THEN it returns no active range
### Requirement: Per-Alarm Pause-Impact Computation
For the currently-active range, the system MUST compute which alarms are
paused (`sonarEnVacaciones == false`) and which are unaffected
(`sonarEnVacaciones == true`), producing data sufficient to render an
impact line (e.g. "Pausa 07:30 y 13:45 · 08:15 sigue").
#### Scenario: Mixed paused and unaffected alarms
- GIVEN 3 alarms exist, 2 with `sonarEnVacaciones == false` and 1 with `true`, during an active range
- WHEN the impact computation runs
- THEN it lists exactly those 2 as paused and exactly that 1 as unaffected
### Requirement: Upcoming Ranges Query
`EstadoAlarmas` MUST expose a query returning ranges that have not yet
started, ordered soonest-first.
#### Scenario: Two future ranges
- GIVEN 2 ranges with future start dates
- WHEN the upcoming-ranges query runs
- THEN both are returned, ordered by soonest start date first
### Requirement: Past-Ranges History Query
`EstadoAlarmas` MUST expose a query returning ranges whose end date has
already passed, distinct from the active and upcoming queries.
#### Scenario: A range that ended yesterday
- GIVEN a range whose end date was yesterday
- WHEN the past-ranges query runs
- THEN that range appears in the past-ranges result and in neither the active nor upcoming result
### Requirement: Vacation Summary Row Replaces the Inline Panel
The Alarmas root MUST show a summary row (range count and next-range
countdown) in place of the current full inline vacation-ranges list.
Tapping the row MUST push the dedicated Vacaciones manager screen.
#### Scenario: Tapping the summary row opens the manager screen
- GIVEN the Alarmas root shows the vacation summary row
- WHEN the user taps it
- THEN the Vacaciones manager screen opens as a second-level (push-chrome) screen with no tab bar