Go handlers, models, stores and migrations for all SDK modules. Updates developer portal navigation and BYOEH page. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
98 lines
3.5 KiB
Go
98 lines
3.5 KiB
Go
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"`
|
|
}
|