package reporting import "time" type ExecutiveReport struct { GeneratedAt time.Time `json:"generated_at"` TenantID string `json:"tenant_id"` ComplianceScore int `json:"compliance_score"` // 0-100 overall score // Module summaries DSGVO DSGVOSummary `json:"dsgvo"` Vendors VendorSummary `json:"vendors"` Incidents IncidentSummary `json:"incidents"` Whistleblower WhistleblowerSummary `json:"whistleblower"` Academy AcademySummary `json:"academy"` // Cross-module metrics RiskOverview RiskOverview `json:"risk_overview"` UpcomingDeadlines []Deadline `json:"upcoming_deadlines"` RecentActivity []ActivityEntry `json:"recent_activity"` } type DSGVOSummary struct { ProcessingActivities int `json:"processing_activities"` ActiveProcessings int `json:"active_processings"` TOMsImplemented int `json:"toms_implemented"` TOMsPlanned int `json:"toms_planned"` TOMsTotal int `json:"toms_total"` CompletionPercent int `json:"completion_percent"` // TOMsImplemented / total * 100 OpenDSRs int `json:"open_dsrs"` OverdueDSRs int `json:"overdue_dsrs"` DSFAsCompleted int `json:"dsfas_completed"` RetentionPolicies int `json:"retention_policies"` } type VendorSummary struct { TotalVendors int `json:"total_vendors"` ActiveVendors int `json:"active_vendors"` ByRiskLevel map[string]int `json:"by_risk_level"` PendingReviews int `json:"pending_reviews"` ExpiredContracts int `json:"expired_contracts"` } type IncidentSummary struct { TotalIncidents int `json:"total_incidents"` OpenIncidents int `json:"open_incidents"` CriticalIncidents int `json:"critical_incidents"` NotificationsPending int `json:"notifications_pending"` AvgResolutionHours float64 `json:"avg_resolution_hours"` } type WhistleblowerSummary struct { TotalReports int `json:"total_reports"` OpenReports int `json:"open_reports"` OverdueAcknowledgments int `json:"overdue_acknowledgments"` OverdueFeedbacks int `json:"overdue_feedbacks"` AvgResolutionDays float64 `json:"avg_resolution_days"` } type AcademySummary struct { TotalCourses int `json:"total_courses"` TotalEnrollments int `json:"total_enrollments"` CompletionRate float64 `json:"completion_rate"` // 0-100 OverdueCount int `json:"overdue_count"` AvgCompletionDays float64 `json:"avg_completion_days"` } type RiskOverview struct { OverallLevel string `json:"overall_level"` // LOW, MEDIUM, HIGH, CRITICAL ModuleRisks []ModuleRisk `json:"module_risks"` OpenFindings int `json:"open_findings"` CriticalFindings int `json:"critical_findings"` } type ModuleRisk struct { Module string `json:"module"` Level string `json:"level"` // LOW, MEDIUM, HIGH, CRITICAL Score int `json:"score"` // 0-100 Issues int `json:"issues"` } type Deadline struct { Module string `json:"module"` Type string `json:"type"` Description string `json:"description"` DueDate time.Time `json:"due_date"` DaysLeft int `json:"days_left"` Severity string `json:"severity"` // INFO, WARNING, URGENT, OVERDUE } type ActivityEntry struct { Timestamp time.Time `json:"timestamp"` Module string `json:"module"` Action string `json:"action"` Description string `json:"description"` UserID string `json:"user_id,omitempty"` }