feat: add health data management workspace
This commit is contained in:
@@ -0,0 +1 @@
|
||||
{"_example": "Fill with {\"file\": \"<path>\", \"reason\": \"<why>\"}. Put spec/research files only — no code paths. Run `python3 .trellis/scripts/get_context.py --mode packages` to list available specs. Delete this line once real entries are added."}
|
||||
@@ -0,0 +1 @@
|
||||
{"_example": "Fill with {\"file\": \"<path>\", \"reason\": \"<why>\"}. Put spec/research files only — no code paths. Run `python3 .trellis/scripts/get_context.py --mode packages` to list available specs. Delete this line once real entries are added."}
|
||||
65
.trellis/tasks/07-02-emergency-incident-workspace/prd.md
Normal file
65
.trellis/tasks/07-02-emergency-incident-workspace/prd.md
Normal file
@@ -0,0 +1,65 @@
|
||||
# 安全应急事件工作台
|
||||
|
||||
## 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.
|
||||
26
.trellis/tasks/07-02-emergency-incident-workspace/task.json
Normal file
26
.trellis/tasks/07-02-emergency-incident-workspace/task.json
Normal file
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"id": "emergency-incident-workspace",
|
||||
"name": "emergency-incident-workspace",
|
||||
"title": "安全应急事件工作台",
|
||||
"description": "",
|
||||
"status": "planning",
|
||||
"dev_type": null,
|
||||
"scope": null,
|
||||
"package": null,
|
||||
"priority": "P2",
|
||||
"creator": "TalexDreamSoul",
|
||||
"assignee": "TalexDreamSoul",
|
||||
"createdAt": "2026-07-02",
|
||||
"completedAt": null,
|
||||
"branch": null,
|
||||
"base_branch": "main",
|
||||
"worktree_path": null,
|
||||
"commit": null,
|
||||
"pr_url": null,
|
||||
"subtasks": [],
|
||||
"children": [],
|
||||
"parent": "07-02-operations-module-roadmap",
|
||||
"relatedFiles": [],
|
||||
"notes": "",
|
||||
"meta": {}
|
||||
}
|
||||
Reference in New Issue
Block a user