frontend: incident date filter matched nothing
Incident started_at is an isoformat() string (incident_correlator.py, routers/incidents.py), not a Firestore timestamp like calls. The range bounds were Dates, which Firestore compares by type, so any date range returned zero incidents. Bounds are now UTC ISO strings in the same "+00:00" shape, which order lexicographically by time. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
02b5b7b5a5
commit
c72c28f5dc
@@ -42,11 +42,17 @@ export function useIncidents(limitCount = 100, dateFrom?: Date, dateTo?: Date) {
|
||||
}
|
||||
|
||||
// A range on the ordered field rides the existing org_id/started_at index.
|
||||
// Incident started_at is stored as a Python isoformat() STRING
|
||||
// ("2026-09-20T12:00:00.123456+00:00", incident_correlator.py), not a
|
||||
// Firestore timestamp — unlike calls. A Date bound compares by type and
|
||||
// matches nothing, so the bounds go in as UTC ISO strings in the same
|
||||
// shape, which then compare lexicographically in time order.
|
||||
const isoBound = (ms: number) => new Date(ms).toISOString().replace("Z", "+00:00");
|
||||
const q = query(
|
||||
collection(db, "incidents"),
|
||||
where("org_id", "==", orgId),
|
||||
...(dateFromMs != null ? [where("started_at", ">=", new Date(dateFromMs))] : []),
|
||||
...(dateToMs != null ? [where("started_at", "<=", new Date(dateToMs))] : []),
|
||||
...(dateFromMs != null ? [where("started_at", ">=", isoBound(dateFromMs))] : []),
|
||||
...(dateToMs != null ? [where("started_at", "<=", isoBound(dateToMs))] : []),
|
||||
orderBy("started_at", "desc"),
|
||||
limit(limitCount)
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user