Files
teatea-pension/.trellis/tasks/archive/2026-07/07-02-emergency-incident-workspace/prd.md

2.9 KiB

安全应急事件工作台

Goal

Replace the current 安全应急 placeholder with a real emergency and safety event workspace. The MVP should let operators view, triage, update, and close persisted incidents inside the active organization.

Confirmed Facts

  • /app/emergency currently renders ModulePage only.
  • /app/{organizationSlug}/emergency delegates to the unscoped emergency page.
  • systemIncidents already exists in the Drizzle schema and supports severity, status, title, description, source, acknowledgement, resolution, and organization scoping.
  • app/api/system/incidents/[id]/route.ts already supports incident status updates with audit logs.
  • Settings status pages already use incident status actions.

Requirements

  • Replace /app/emergency and /app/{organizationSlug}/emergency with a real emergency workspace.
  • Use existing persisted incident data as the starting model unless implementation analysis proves a separate emergency table is required.
  • Show summary metrics by severity and status.
  • Show an operational incident list/table with search and status/severity filters.
  • Support status transitions for open, acknowledged, resolved, and closed events.
  • Support creating a manual emergency/safety event if practical in the MVP.
  • Link incidents to organization and optionally to elder/bed context in a future-compatible way.
  • Mutations must record audit logs.
  • Default workspace seed data must include representative safety/emergency events.

Permissions

  • Use existing incident:read for viewing.
  • Use existing incident:manage for create/update/status transitions.
  • Server-side permissions are required for all mutation APIs.

Acceptance Criteria

  • /app/emergency no longer renders the generic placeholder.
  • /app/{organizationSlug}/emergency renders the same real emergency workspace.
  • Emergency events are loaded from Drizzle and scoped to the active organization.
  • The workspace shows severity/status metrics and a searchable event list.
  • Authorized users can transition event status from the UI.
  • Event status updates persist and survive reload.
  • Authorized users can create a manual safety/emergency event if included in MVP implementation.
  • Unauthorized mutation attempts return structured failures.
  • Emergency mutations write audit log entries.
  • Default seeded workspace includes safety/emergency events.
  • pnpm lint passes.
  • pnpm type-check passes.
  • pnpm build passes.

Dependencies

  • Can start independently because systemIncidents already exists.
  • Elder/bed context optimization may later add richer links from incidents to elders or beds.
  • Dashboard integration should wait until this task is complete.

Out Of Scope

  • Device telemetry ingestion.
  • Real-time alarm channels.
  • SMS, phone, or push notification delivery.
  • Dispatch routing engine.
  • Post-incident regulatory reporting.

Open Questions

  • None currently blocking planning.