Map: incident notes, disposition and export/handoff (GeoJSON/CSV/CAP, signed webhook, Teams/Slack) #243

Open
opened 2026-10-05 02:08:38 -04:00 by logan · 0 comments
Owner

Problem

Nothing can leave the map except the #inc= hash link. There are no operator notes or dispositions on an incident, no shift log, no CSV/GeoJSON/KML/CAP export, and alert delivery is Discord-only. Every GSOC/OEM/RCC handoff and report is retyped by hand.

Who asked

GSOC, OEM (SITREP), NOC, RCC, NEWS, HOBBY (6 of 8).

Proposal

  • Per-incident note + disposition (No impact / Monitoring / Affected / Escalated), audit-logged via audit.py write_audit (role, not name).
  • Export per incident and per filtered view: GeoJSON, CSV, KML, CAP 1.2; machine-output notice embedded as a property.
  • Delivery: signed generic webhook and Teams/Slack incoming webhooks on alert rules.
  • SITREP generator (operational-period rollup) is a LATER follow-up on top of this.

Data source and terms

Internal. Teams/Slack incoming webhooks are free.

Effort

M

Acceptance criteria

  • Exported files contain no person names and no EMS-excluded content.
  • Every export is written to audit_log with who and when.

Notes

Blockers: #43 (person-name suppression / EMS exclusion — required before any export ships), #9 (org write endpoints admin-only), #85 (raw transcript in webhooks), BUSINESS_MODEL.md tiering (Scanner: no export, no API).


Reviewed against Server origin/main c4e1f9a (2026-10-05), from code only. Source: map persona panel 2026-10-05 (tracking issue lists all items).
Persona key: TOC = county PD real-time crime center supervisor; NOC = Con Ed electric ops NOC; RCC = MTA rail/bus control desk; GSOC = corporate security operations analyst; OEM = county emergency management duty officer; NEWS = TV newsroom assignment editor; FD = volunteer fire chief / county fire dispatcher; HOBBY = scanner power user / local journalist.

## Problem Nothing can leave the map except the `#inc=` hash link. There are no operator notes or dispositions on an incident, no shift log, no CSV/GeoJSON/KML/CAP export, and alert delivery is Discord-only. Every GSOC/OEM/RCC handoff and report is retyped by hand. ## Who asked GSOC, OEM (SITREP), NOC, RCC, NEWS, HOBBY (6 of 8). ## Proposal - Per-incident note + disposition (No impact / Monitoring / Affected / Escalated), audit-logged via `audit.py` `write_audit` (role, not name). - Export per incident and per filtered view: GeoJSON, CSV, KML, CAP 1.2; machine-output notice embedded as a property. - Delivery: signed generic webhook and Teams/Slack incoming webhooks on alert rules. - SITREP generator (operational-period rollup) is a LATER follow-up on top of this. ## Data source and terms Internal. Teams/Slack incoming webhooks are free. ## Effort M ## Acceptance criteria - Exported files contain no person names and no EMS-excluded content. - Every export is written to `audit_log` with who and when. ## Notes Blockers: #43 (person-name suppression / EMS exclusion — required before any export ships), #9 (org write endpoints admin-only), #85 (raw transcript in webhooks), BUSINESS_MODEL.md tiering (Scanner: no export, no API). --- Reviewed against Server origin/main c4e1f9a (2026-10-05), from code only. Source: map persona panel 2026-10-05 (tracking issue lists all items). Persona key: TOC = county PD real-time crime center supervisor; NOC = Con Ed electric ops NOC; RCC = MTA rail/bus control desk; GSOC = corporate security operations analyst; OEM = county emergency management duty officer; NEWS = TV newsroom assignment editor; FD = volunteer fire chief / county fire dispatcher; HOBBY = scanner power user / local journalist.
logan added the
type
feature
area/maparea/frontend
priority
p2
status
blocked
labels 2026-10-05 02:08:38 -04:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: logan/server-26#243