Add Weekly Actuals directors report with charts

Full weekly actuals report matching the spreadsheet layout:
- Week summary table (Rooms/Dry/Wet vs Budget vs Last Year vs Last Week)
- Grouped bar chart + dept split pie chart
- 5-week rolling summary table
- Occupancy table by day of week (rooms, occ%, ARR, RevPAR)
- Month progress to date (totals + dept split) with progress bar chart
- 12-month turnover trend line chart by dept
- Utilities placeholder (pending meter readings app)

Budget values come from the forecasting API which distributes monthly
budget proportionally to daily sales — so high-demand weeks (e.g.
Christmas) carry a higher budget share. Gross shown as net × 1.20.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
jtricerolph 2026-07-20 13:07:19 +00:00
parent 29a119f51d
commit b97358e9fb
9 changed files with 1433 additions and 6 deletions

View file

@ -1,4 +1,4 @@
import type { ReportMeta, ReportResult, WorksheetData, ForecastReportData } from './types'
import type { ReportMeta, ReportResult, WorksheetData, ForecastReportData, WeeklyActualData } from './types'
const BASE = '/reports/api'
@ -30,6 +30,12 @@ export function runReport(id: string, dateFrom: string, dateTo: string): Promise
})
}
// ── Weekly Actuals API ──────────────────────────────────────────────────────
export function getWeeklyActual(weekEnding: string): Promise<WeeklyActualData> {
return request<WeeklyActualData>(`/weekly-actual/${weekEnding}`)
}
// ── Directors Forecast API ──────────────────────────────────────────────────
export function dfGetWorksheet(year: number, month: number): Promise<WorksheetData> {