Data Models =========== This section documents every Django model in ChargeSol with full field specifications, relationships, and constraints. Entity-Relationship Diagram ---------------------------- .. mermaid:: erDiagram User ||--o{ Lead : "submits (OEM) / handles (CentralOps)" User ||--|| Role : "has" User }o--o| Zone : "assigned to" User ||--o{ TeamMembership : "belongs to" Team ||--o{ TeamMembership : "contains" Team }o--|| Zone : "operates in" Lead ||--o{ LeadDocument : "has" Lead }o--|| LeadSource : "came from" Lead ||--o| Survey : "has" Survey ||--o{ SurveyAssignment : "assigned to" Survey ||--o| SurveyReport : "produces" Survey ||--o{ SurveyMedia : "has" SurveyAssignment }o--|| Team : "performed by" Survey ||--o| Installation : "leads to" Installation ||--o{ InstallationAssignment : "assigned to" Installation ||--o| InstallationReport : "produces" Installation ||--o{ InstallationMedia : "has" InstallationAssignment }o--|| Team : "performed by" Installation ||--o{ MaterialAllocation : "requires" MaterialAllocation }o--|| Material : "of" Material ||--o{ MaterialStock : "stocked as" MaterialStock }o--|| Zone : "located in" Installation ||--o{ ProcurementRequest : "triggers" ProcurementRequest }o--o| Vendor : "fulfilled by" ProcurementRequest ||--o| VendorPayment : "paid via" VendorPayment }o--|| Vendor : "paid to" Installation ||--o{ JobPayout : "generates" JobPayout }o--|| Team : "paid to" Team ||--o| PaymentSchedule : "follows" Installation ||--o| ClosurePack : "closed by" ClosurePack }o--|| SurveyReport : "includes" ClosurePack }o--|| InstallationReport : "includes" Survey ||--o{ EmergencyEvent : "triggers" Installation ||--o{ EmergencyEvent : "triggers" EmergencyEvent ||--o{ BackupSearch : "searches" EmergencyEvent ||--o| EmergencyAssignment : "resolved by" EmergencyEvent ||--o| PriorityReschedule : "resolved by" User ||--o{ Notification : "receives" Notification }o--o| NotificationTemplate : "uses" User ||--o{ CallLog : "makes" Model Summary ------------- .. list-table:: :header-rows: 1 :widths: 25 20 55 * - Model - App - Purpose * - User - accounts - System user with role, zone, availability * - Role - accounts - System role (7 types) * - Team - accounts - Field team with zone and specialization * - TeamMembership - accounts - User-Team join table * - Zone - accounts - Geographic service area * - Lead - leads - Installation request from OEM * - LeadSource - leads - Lead origin channel * - LeadDocument - leads - Customer-uploaded files * - Survey - surveys - Scheduled site survey * - SurveyAssignment - surveys - Team assigned to survey * - SurveyReport - surveys - Site assessment report * - SurveyMedia - surveys - Survey photos/videos * - Installation - installations - Scheduled charger installation * - InstallationAssignment - installations - Team assigned to installation * - InstallationReport - installations - Post-installation record * - InstallationMedia - installations - Installation photos/videos * - Material - procurement - Catalog item (charger, cable, etc.) * - MaterialStock - procurement - Zone inventory level * - MaterialAllocation - procurement - Material reserved for installation * - ProcurementRequest - procurement - Local purchase request * - Vendor - procurement - Local supplier * - VendorPayment - finance - Payment to vendor * - JobPayout - finance - Payment to field team * - PaymentSchedule - finance - Team payout frequency * - ClosurePack - reporting - Installation closure bundle * - WeeklyReport - reporting - Weekly OEM report * - MonthlyReport - reporting - Monthly OEM report * - ReportSubmission - reporting - Report delivery tracking * - Notification - notifications - Message sent to user * - NotificationTemplate - notifications - Reusable message template * - CallLog - notifications - Phone call record * - DeliveryReceipt - notifications - Message delivery confirmation * - EmergencyEvent - emergency - Team unavailability event * - BackupSearch - emergency - Backup team search log * - EmergencyAssignment - emergency - Backup team reassignment * - PriorityReschedule - emergency - Rescheduled appointment .. toctree:: :maxdepth: 1 :hidden: accounts leads surveys installations procurement finance reporting notifications emergency