- Phases 1-5 fully done (scaffold, schema, seed, HTTP endpoints, queries, aggregation)
- 30 end-to-end tests passing (
bash test-convex.sh) - Real-time overlay:
ConvexStatusBadge+useConvexDeviceOverlayon UV Robot & TUG dashboards getRoomStatePublicpublic query for frontend React hooksConvexClientProviderwrapping app inlayout.tsx- API_CONTRACT.md updated with current IDs and
getRoomStatePublicdocs - TUG Fleet URL fixed in seed (
/tug-robot) - Hydration warnings fixed on all dashboard pages
Schema table exists (environmentReadings) but has no functions.
- Create
convex/environmentalReadings.tswith:insertmutation — receives readings, checks ranges, setsallWithinRange+outOfRangeFieldslatestquery — most recent reading for a room
- Add
POST /env-readingHTTP endpoint toconvex/http.ts - Gate room "ready" status on environmental check:
- All devices ready +
allWithinRange→ room "ready" - All devices ready + NOT
allWithinRange→ room "needs_attention"
- All devices ready +
- Define procedure-specific thresholds (e.g., orthopedic: humidity < 60%)
- Make
/device-updateautomatically write toactionLogstable (currently manual via separate mutation)
- If
/field-updatereceives environmental fields (temperature, humidity, etc.), also insert intoenvironmentReadingstable
WebUI has all 5 dashboards but seed only has 2 devices in OR-3. To enable full demo:
- Add Environmental Monitoring device →
/environmental - Add Scheduling/EHR device →
/ehr - Add Variable Tracker device →
/camera - Update
convex-api.tsplaceholder IDs with real ones after seeding
- Deployment:
dev:impartial-whale-32 - HTTP base:
https://impartial-whale-32.convex.site - Cloud URL:
https://impartial-whale-32.convex.cloud - OR-3 is the active demo room with 2 devices: UV Robot + TUG Fleet Monitor
- OR-1, OR-2, OR-4 are background rooms (ready, no devices)
| Route | Device | Convex Badge |
|---|---|---|
/uv-robot |
UV Disinfection Robot | ✅ Live |
/tug-robot |
TUG Fleet Monitor | ✅ Live |
/environmental |
Environmental Monitoring | No badge (no device in seed) |
/ehr |
Room Scheduling / EHR | No badge (no device in seed) |
/camera |
Variable Tracker | No badge (no device in seed) |
/agent |
BrowserUse Agent Control | N/A |