Reporting App ============= **Purpose**: Compile closure packs for completed installations and generate periodic (weekly/monthly) reports for OEMs. Responsibilities ---------------- - Assemble closure packs from survey reports, installation reports, media, and sign-offs - Track closure pack submission status and OEM response - Generate weekly reports with lead/survey/installation counts - Generate monthly reports with aggregate metrics (revenue, average install time, SLA compliance) - Track report submission and OEM acknowledgment Dependencies ------------ - **leads** — Lead reference in closure pack - **surveys** — SurveyReport included in closure pack - **installations** — InstallationReport included in closure pack - **accounts** — OEM Reporting staff, OEM users Key Models ---------- - **ClosurePack** — Bundles all artifacts for a completed installation: survey report, installation report, confirmation call status. Submitted to OEM with status tracking. - **WeeklyReport** — Aggregate report for a specific OEM covering one week: leads received, surveys completed, installations completed, closure packs submitted. - **MonthlyReport** — Extended monthly aggregate: includes revenue, average installation time, SLA compliance rate. - **ReportSubmission** — Tracks the act of submitting any report type to an OEM, with acknowledgment tracking. Business Rules -------------- - A closure pack can only be compiled after the installation is ``closed`` and the post-installation confirmation call is completed. - Closure packs must include both survey and installation reports. - Weekly reports are auto-generated every Monday for the prior week. - Monthly reports are auto-generated on the 1st of each month. - OEM Reporting staff can manually trigger report generation. - Reports that are not acknowledged by the OEM within 7 days are flagged for follow-up.