Refactor TFL severity filtering to use Sets

Replace magic numbers with documented static Sets for clarity.
ignoredSeverities and majorSeverities make the filtering logic
self-documenting.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-01-10 21:54:21 +00:00
parent 2860ab0786
commit d8929d3776

View File

@@ -48,6 +48,11 @@ final class TFLDataSource {
} }
} }
// Severity 4 = Planned Closure, 5 = Part Closure, 10 = Good Service
private static let ignoredSeverities: Set<Int> = [4, 5, 10]
// Severity 1 = Closed, 2 = Suspended, 3 = Part Suspended, 6 = Severe Delays
private static let majorSeverities: Set<Int> = [1, 2, 3, 6]
private let config: TFLDataSourceConfig private let config: TFLDataSourceConfig
private var cache: (timestamp: Int, data: TFLData)? private var cache: (timestamp: Int, data: TFLData)?
@@ -99,12 +104,10 @@ final class TFLDataSource {
guard !seenLines.contains(line.id) else { continue } guard !seenLines.contains(line.id) else { continue }
for status in line.lineStatuses { for status in line.lineStatuses {
// Skip: 10 = Good Service, 4 = Planned Closure, 5 = Part Closure guard !Self.ignoredSeverities.contains(status.statusSeverity) else { continue }
guard status.statusSeverity < 10 else { continue }
guard status.statusSeverity != 4 && status.statusSeverity != 5 else { continue }
seenLines.insert(line.id) seenLines.insert(line.id)
let isMajor = status.statusSeverity <= 3 || status.statusSeverity == 6 let isMajor = Self.majorSeverities.contains(status.statusSeverity)
let disruption = Disruption( let disruption = Disruption(
id: "\(line.id):\(status.statusSeverity)", id: "\(line.id):\(status.statusSeverity)",