Honest pins and paths: geocode precision, type-gated paths, impossible-speed stops (#236)
Backend: _geocode_location now returns {lat, lng, location_type}, so the
precision rides onto the call doc and, unchanged via _resolve_location_pair,
onto the incident pin. Display-only: every correlator read indexes lat/lng.
Frontend: pins styled by precision (rooftop / interpolated ring /
GEOMETRIC_CENTER dashed uncertainty circle labelled with the spoken place /
unverified pre-#23 pins ghosted). liveWall.pathStops() is shared by the map
and the call spine: only police/accident incidents with a pursuit tag draw a
numbered path; others get unnumbered call dots. Segments over >10 min gaps or
talkgroup changes are dashed, stops implying >8 km/min are ghosted off the
path, paths >20 km get a "may be merged" badge. New optional MapView prop
pulseIncidentIds (wired by #238).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
6e462720a1
commit
6bf072973c
@@ -344,6 +344,20 @@ export interface TranscriptSegment {
|
||||
text: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* Google Geocoding precision, persisted with the coords since server-26#236.
|
||||
* ROOFTOP = a street address; RANGE_INTERPOLATED = estimated between two
|
||||
* address points; GEOMETRIC_CENTER = the centre of a road, intersection or
|
||||
* named place — can be hundreds of metres off. Absent on older docs.
|
||||
*/
|
||||
export type GeoLocationType = "ROOFTOP" | "RANGE_INTERPOLATED" | "GEOMETRIC_CENTER";
|
||||
|
||||
export interface GeoPoint {
|
||||
lat: number;
|
||||
lng: number;
|
||||
location_type?: GeoLocationType | string | null;
|
||||
}
|
||||
|
||||
export interface CallRecord {
|
||||
call_id: string;
|
||||
node_id: string;
|
||||
@@ -370,7 +384,7 @@ export interface CallRecord {
|
||||
incident_id?: string | null;
|
||||
location: string | null;
|
||||
/** Per-call geocode, written by intelligence.py. Powers the incident-path polyline on the map. */
|
||||
location_coords?: { lat: number; lng: number } | null;
|
||||
location_coords?: GeoPoint | null;
|
||||
/** Unit callsigns mentioned in this specific transmission (e.g. "15-9", "E-41"). */
|
||||
units?: string[];
|
||||
vehicles?: string[];
|
||||
@@ -403,7 +417,13 @@ export interface IncidentRecord {
|
||||
type: string | null;
|
||||
status: "active" | "resolved";
|
||||
location: string | null;
|
||||
location_coords: { lat: number; lng: number } | null;
|
||||
location_coords: GeoPoint | null;
|
||||
/**
|
||||
* The label the pin was geocoded from (server-26#23). Absent on incidents
|
||||
* written before that fix — their pin cannot be tied to their label and is
|
||||
* drawn ghosted (DEFERRED.md `_verified_pin` row, server-26#28).
|
||||
*/
|
||||
location_coords_source?: string | null;
|
||||
call_ids: string[];
|
||||
system_ids: string[];
|
||||
talkgroup_ids: string[];
|
||||
|
||||
Reference in New Issue
Block a user