Files

1.3 KiB

MODIFIED Requirements

Requirement: Detection query SHALL use BatchQueryEngine for long-range decomposition

The _fetch_station_detection_data() function SHALL delegate to BatchQueryEngine when the requested date range exceeds the configurable threshold, preventing Oracle timeout on large detection queries.

Scenario: Long date range triggers engine decomposition

  • WHEN _fetch_station_detection_data(start_date, end_date, station) is called
  • AND the date range exceeds BATCH_QUERY_TIME_THRESHOLD_DAYS (default 60)
  • THEN the date range SHALL be decomposed via decompose_by_time_range()
  • THEN each chunk SHALL be executed through the existing detection SQL with chunk-scoped dates
  • THEN chunk results SHALL be cached in Redis and merged into a single DataFrame

Scenario: Short date range preserves direct path

  • WHEN the date range is within the threshold
  • THEN the existing direct query path SHALL be used with zero overhead

Scenario: Memory guard protects against oversized detection results

  • WHEN a single chunk result exceeds BATCH_CHUNK_MAX_MEMORY_MB
  • THEN that chunk SHALL be discarded and marked as failed
  • THEN remaining chunks SHALL continue executing
  • THEN the batch metadata SHALL reflect has_partial_failure