Reports v2 — QA Test URL Sheet (2026-05-01)
Purpose: complete URL list for QA validation of the Gold-Standard Reporting workstream (Phases 1+2 + Phase 3 Waves 1-2). Use this sheet alongside the master plan index at superpowers/plans/2026-04-30-gold-standard-reporting-master-index.md.
QA hostname: http://43.204.247.178 (KeyNova QA EC2). Login: admin@hmphotel.com / <REDACTED>.
Top-level routes — surface area
| URL | What to verify |
|---|---|
http://43.204.247.178/reports | 308 redirect → /reports/v2 (legacy index deleted) |
http://43.204.247.178/reports/v2 | Catalog card grid — 60 cards across 13 categories |
http://43.204.247.178/reports/v2/saved | Saved Views index (own + shared, search, pin toggle, delete) |
http://43.204.247.178/anomalies | Anomaly index (sortable CRITICAL→HIGH→MEDIUM→LOW; dismiss action; toggle dismissed) |
http://43.204.247.178/settings/reporting | Onboarding wizard (Detect Prior PMS → Manual Upload → Annual Budget → Progress Strip) |
http://43.204.247.178/revenue-manager | 4 embedded RM cards (Forecast Pace, Front Office Pace, Rate Plan Performance, Block & Group Performance) |
http://43.204.247.178/ | Home — <PinnedReportsWidget> shows up to 4 pinned saved views (renders nothing if user has none) |
Sidebar navigation — Manage → Reports
After login, click Manage → Reports in the sidebar. The parent now navigates to /reports/v2. Children in order:
- Catalog →
/reports/v2 - Saved Views →
/reports/v2/saved - Anomalies →
/anomalies - Reporting Setup →
/settings/reporting - Cash Management →
/cash-management - Owner Portal →
/owner-portal
All 60 reports — direct URLs
URL pattern: http://43.204.247.178/reports/v2/<reportId>
Reservations (9)
| Report | URL |
|---|---|
| Arrival Report | /reports/v2/arrival-report |
| Departure Report | /reports/v2/departure-report |
| Booking Report | /reports/v2/booking-report |
| Booking Enquiry Report | /reports/v2/booking-enquiry-report |
| Cancelled Reservation Report | /reports/v2/cancelled-reservation-report |
| No-Show Reservation Report | /reports/v2/no-show-reservation-report |
| Pickup Report | /reports/v2/pickup-report |
| Release Reservation Report | /reports/v2/release-reservation-report |
| Void Reservation Report | /reports/v2/void-reservation-report |
Front Office (6)
| Report | URL |
|---|---|
| Occupancy Report | /reports/v2/occupancy-report |
| In-House Report | /reports/v2/in-house-report |
| Guest Checked-In Report | /reports/v2/guest-checked-in-report |
| Guest Checked-Out Report | /reports/v2/guest-checked-out-report |
| High Balance Report | /reports/v2/high-balance-report |
| Manager Flash Report | /reports/v2/manager-flash-report |
Housekeeping (4)
| Report | URL |
|---|---|
| Discrepancy Report | /reports/v2/discrepancy-report |
| Housekeeping Productivity | /reports/v2/housekeeping-productivity |
| Lost & Found Register | /reports/v2/lost-and-found-register |
| Room Status Detail | /reports/v2/room-status-detail |
Night Audit (1)
| Report | URL |
|---|---|
| Night Audit Report | /reports/v2/night-audit-report |
Finance (14)
| Report | URL |
|---|---|
| Daily Revenue | /reports/v2/revenue-daily-report |
| Monthly Revenue | /reports/v2/revenue-monthly-report |
| Sale Register | /reports/v2/sale-register |
| Folio Register | /reports/v2/folio-register |
| Payment Collection Report | /reports/v2/payment-collection-report |
| Refund Register | /reports/v2/refund-register |
| Settlement Register | /reports/v2/settlement-register |
| Cash Drawer Report | /reports/v2/cash-drawer-report |
| AR Ageing Report | /reports/v2/ageing-report |
| AR Aging Detail | /reports/v2/ar-aging-detail |
| City Ledger Report | /reports/v2/city-ledger-report |
| Commission Report | /reports/v2/commission-report |
| Commission Statement | /reports/v2/commission-statement |
| Expense Report | /reports/v2/expense-report |
| GST Report | /reports/v2/gst-report |
| E-Invoice Report | /reports/v2/einvoice-report |
| Tax Audit Trail | /reports/v2/tax-audit-trail |
POS (6)
| Report | URL |
|---|---|
| POS Sales Register | /reports/v2/pos-sales-register |
| Item-Wise Sales | /reports/v2/item-wise-sales |
| KOT Register | /reports/v2/kot-register |
| Discount Register | /reports/v2/discount-register |
| Void Register | /reports/v2/void-register |
| Server Productivity | /reports/v2/server-productivity |
Banquet (1)
| Report | URL |
|---|---|
| Banquet Sales Detail | /reports/v2/banquet-sales-detail |
Spa (1)
| Report | URL |
|---|---|
| Spa Service Sales Detail | /reports/v2/spa-service-sales-detail |
Channel (4)
| Report | URL |
|---|---|
| Channel Production | /reports/v2/channel-production |
| OTA Commission Statement Detail | /reports/v2/ota-commission-statement-detail |
| Rate Parity Audit | /reports/v2/rate-parity-audit |
| Channel Sync Log | /reports/v2/sync-log-report |
Analytics (4)
| Report | URL |
|---|---|
| Country-Wise Statistics | /reports/v2/country-wise-statistics |
| Market Segment Report | /reports/v2/market-segment-report |
| Room Type Revenue | /reports/v2/room-type-revenue-report |
| Source-Wise Revenue | /reports/v2/source-wise-revenue-report |
Revenue Management (4)
| Report | URL |
|---|---|
| Forecast Pace Report | /reports/v2/forecast-pace-report |
| Front Office Pace | /reports/v2/front-office-pace |
| Rate Plan Performance | /reports/v2/rate-plan-performance |
| Block & Group Performance | /reports/v2/block-group-performance |
Operational (4)
| Report | URL |
|---|---|
| Meal Plan Report | /reports/v2/meal-plan-report |
| Room Status Report | /reports/v2/room-status-report |
| Police Register | /reports/v2/police-register |
| FRRO C-Form | /reports/v2/frro-c-form |
Audit (2)
| Report | URL |
|---|---|
| User Activity Audit | /reports/v2/user-activity-audit |
| Role Change Audit | /reports/v2/role-change-audit |
Per-report runner — what to verify
For each URL under /reports/v2/<reportId>, smoke-check:
- Page mounts — header zone, period selector, compare flags, table renders.
- Period selector works — Today / Yesterday / WTD / MTD / YTD / Custom (date range inputs appear when Custom is selected).
- Compare flags — toggle "vs Last Year", "vs Budget", "vs Forecast" —
<ComparativeCell>rows appear with deltas. Where data is missing, reason badges show:NO_LY_DATA,NO_BUDGET_UPLOADED,WARMING_UP. - Drill-down — click a drillable cell →
<DrillDownDrawer>slides in with nested<ReportTable>. Stack supports going N levels deep with back button. - Export dropdown — click Export → PDF / XLSX / CSV. Each opens a presigned S3 URL (or downloads a base64 blob fallback).
- Star / Save View — click the star →
<SaveViewModal>opens. Fill name, toggle Pin to Home (optional), submit. Then/reports/v2/savedshould list the new view, and home<PinnedReportsWidget>should pick it up if pinned. - AnomalyBanner — when the period contains HIGH/CRITICAL anomalies, a banner appears above the table linking to
/anomalies.
Phase 3 special verifications
Plan 3.1 — Anomaly Detection (cron at 04:30 UTC)
- After 1st cron tick (or trigger manually if needed):
MvAnomalyrows populate. /anomalieslists them sorted by severity. Dismiss action soft-deletes (dismissedAtpopulated). Toggle "show dismissed" reveals them.- Banner appears on report pages whose period contains a HIGH/CRITICAL anomaly.
Plan 3.2 — Predictive Forecasting (Prophet sidecar)
forecast-pace-reportand any compare-flags=forecast queries call ForecastEnricher.- If model hasn't trained yet (cold start), reason code is
WARMING_UP(90-day training horizon needed). - Sidecar service:
hmp-forecast-sidecaron port 3017.
Plan 3.4 — Saved Views
- Owner can create/edit/delete own views.
- ADMIN/SUPER_ADMIN can create shared views (visible to all tenant users).
- Pinned views appear on
/home up to 4 max. - Schedule field in the model — UI scheduling UX deferred to Plan 3.4 follow-up.
Reports v2 backend smoke
Direct API calls (substitute JWT and tenant headers):
# Catalog (60 reports)
curl -H "Authorization: Bearer $TOKEN" -H "X-Tenant-Id: $TID" -H "X-Property-Id: $PID" \
http://43.204.247.178/api/reports/v2/catalog | jq '.data | length'
# Run a report
curl -X POST -H "Authorization: Bearer $TOKEN" -H "X-Tenant-Id: $TID" -H "X-Property-Id: $PID" \
-H "Content-Type: application/json" \
-d '{"period":{"type":"mtd"}}' \
http://43.204.247.178/api/reports/v2/arrival-report/run | jq
# Saved views
curl -H "Authorization: Bearer $TOKEN" -H "X-Tenant-Id: $TID" -H "X-Property-Id: $PID" \
http://43.204.247.178/api/reports/v2/saved-views | jq
# Anomalies
curl -H "Authorization: Bearer $TOKEN" -H "X-Tenant-Id: $TID" -H "X-Property-Id: $PID" \
http://43.204.247.178/api/anomalies | jq
Known limitations
- Old PMS data import — onboarding wizard Step 2 (Manual Upload) gracefully shows "API not ready" message; full backfill pipeline is Plan 9 v2.
- Forecasts — first 90 days of operation return
WARMING_UPreason; needs training data. - Comp-Set / Cross-Tenant Benchmarks / Mobile Owner PWA / Voice NLQ — Phase 3 Waves 3-5, deferred (vendor / legal / new-repo gates).