Skip to content

fix(housekeeping): prevent 500 on dashboard/analytics without dates (CLOUD-BUG-007) - #294

Merged
telivity-otaip merged 4 commits into
mainfrom
cursor/hk-dashboard-analytics-500-eebf
Aug 9, 2026
Merged

fix(housekeeping): prevent 500 on dashboard/analytics without dates (CLOUD-BUG-007)#294
telivity-otaip merged 4 commits into
mainfrom
cursor/hk-dashboard-analytics-500-eebf

Conversation

@telivity-otaip

Copy link
Copy Markdown
Collaborator

Summary

Fixes CLOUD-BUG-007 / TEL-55: GET /api/v1/housekeeping/dashboard and GET /api/v1/housekeeping/analytics returned 500 when date query params were missing or invalid.

Root cause

  • Missing serviceDate produced an invalid Date passed to Drizzle (value.toISOString is not a function).
  • Missing startDate/endDate produced malformed SQL (syntax error at or near "and").
  • Invalid date strings also crashed instead of returning a client error.

Changes

  • Default serviceDate to the property's business date (timezone-aware, reusing existing getPropertyBusinessDate).
  • Default analytics period to the last 30 days ending today when dates are omitted.
  • Validate YYYY-MM-DD inputs and return 400 for invalid or reversed ranges.
  • Use day-range filters for dashboard task queries (consistent with list()).
  • Guard analytics aggregate metrics when no rows match.

Testing

  • vitest run src/modules/housekeeping/housekeeping-dashboard.spec.ts — 10/10 passing
  • Manual curl against local API:
    • GET /housekeeping/dashboard?propertyId=…200
    • GET /housekeeping/analytics?propertyId=…200
    • Invalid serviceDate400

Follow-up

Redeploy Cloud ECS API and re-run pnpm test:cloud-qa:persona-day to clear softBug: CLOUD-BUG-007 tags.

Linear Issue: TEL-55

Open in Web Open in Cursor 

CLOUD-BUG-007 / TEL-55

- Default missing serviceDate to property business date (timezone-aware)
- Default missing analytics dates to last 30 days ending today
- Validate YYYY-MM-DD inputs and return 400 for invalid ranges
- Use day-range filters for serviceDate queries (consistent with list())
- Guard analytics aggregate row when no completed tasks exist

Co-authored-by: telivity-otaip <telivity-otaip@users.noreply.github.com>
@telivity-otaip
telivity-otaip marked this pull request as ready for review August 9, 2026 17:59
cursoragent and others added 3 commits August 9, 2026 18:01
Co-authored-by: telivity-otaip <telivity-otaip@users.noreply.github.com>
Co-authored-by: telivity-otaip <telivity-otaip@users.noreply.github.com>
Co-authored-by: telivity-otaip <telivity-otaip@users.noreply.github.com>
@telivity-otaip
telivity-otaip merged commit 68dd957 into main Aug 9, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants