fix: validate complete-day monitoring coverage
This commit is contained in:
@@ -28,6 +28,7 @@ from datetime import datetime, timedelta, timezone
|
||||
from enum import Enum
|
||||
from typing import Any, Dict, List, Optional, Tuple
|
||||
|
||||
from .monitoring_periods import interval_within_one_monitoring_period
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Constants (spec §6)
|
||||
@@ -494,18 +495,16 @@ def _has_complete_local_day(conn):
|
||||
within a monitoring period that has usable observation evidence.
|
||||
This is the prerequisite for showing an endurance outlook.
|
||||
"""
|
||||
return _count_complete_local_days(conn) > 0
|
||||
|
||||
|
||||
def _count_complete_local_days(conn):
|
||||
"""Count the number of complete local observation days."""
|
||||
row = conn.execute(
|
||||
"SELECT COUNT(*) FROM local_days "
|
||||
local_days = conn.execute(
|
||||
"SELECT utc_start, utc_end FROM local_days "
|
||||
"WHERE complete = 1 "
|
||||
"AND activity_precision IN ('measured', 'coarse') "
|
||||
"AND activity_intervals > 0"
|
||||
).fetchone()
|
||||
return row[0] if row else 0
|
||||
"AND activity_intervals > 0 ORDER BY id"
|
||||
).fetchall()
|
||||
return any(
|
||||
interval_within_one_monitoring_period(conn, utc_start, utc_end)
|
||||
for utc_start, utc_end in local_days
|
||||
)
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user