gdpr audit implemented, email log, vollmachten, pdf delete cancel data privacy and vollmachten, removed message no id card in engergy car, and other contracts that are not telecom contracts, added insert counter for engery

This commit is contained in:
2026-03-21 11:59:53 +01:00
parent 09e87c951b
commit c3edb8ad2e
1491 changed files with 265550 additions and 1292 deletions
+166
View File
@@ -8,6 +8,9 @@ export interface User {
roles?: Role[];
isCustomerPortal?: boolean;
representedCustomers?: CustomerSummary[];
whatsappNumber?: string;
telegramUsername?: string;
signalNumber?: string;
}
// Zusammenfassung für Vertreter-Listen
@@ -20,6 +23,22 @@ export interface CustomerSummary {
type: 'PRIVATE' | 'BUSINESS';
}
export interface RepresentativeAuthorization {
id: number;
customerId: number;
representativeId: number;
isGranted: boolean;
grantedAt?: string;
withdrawnAt?: string;
source?: string;
documentPath?: string;
notes?: string;
representative?: CustomerSummary;
customer?: CustomerSummary;
createdAt: string;
updatedAt: string;
}
export interface Role {
id: number;
name: string;
@@ -143,6 +162,8 @@ export interface Meter {
readings?: MeterReading[];
}
export type MeterReadingStatus = 'RECORDED' | 'REPORTED' | 'TRANSFERRED';
export interface MeterReading {
id: number;
meterId: number;
@@ -150,6 +171,10 @@ export interface MeterReading {
value: number;
unit: string;
notes?: string;
reportedBy?: string;
status: MeterReadingStatus;
transferredAt?: string;
transferredBy?: string;
}
export type InvoiceType = 'INTERIM' | 'FINAL' | 'NOT_AVAILABLE';
@@ -522,11 +547,45 @@ export interface CockpitSummary {
openTasks: number;
pendingContracts: number;
reviewDue: number;
missingConsents: number;
};
}
export interface DocumentAlert {
id: number;
type: string;
documentNumber: string;
expiryDate: string;
daysUntilExpiry: number;
urgency: CockpitUrgencyLevel;
customer: {
id: number;
customerNumber: string;
name: string;
};
}
export interface ReportedMeterReading {
id: number;
readingDate: string;
value: number;
unit: string;
notes?: string;
reportedBy?: string;
createdAt: string;
meter: { id: number; meterNumber: string; type: string };
customer: { id: number; customerNumber: string; name: string };
providerPortal?: {
providerName: string;
portalUrl: string;
portalUsername?: string;
};
}
export interface CockpitResult {
contracts: CockpitContract[];
documentAlerts: DocumentAlert[];
reportedReadings: ReportedMeterReading[];
summary: CockpitSummary;
thresholds: {
criticalDays: number;
@@ -534,3 +593,110 @@ export interface CockpitResult {
okDays: number;
};
}
// ==================== AUDIT-LOGGING & DSGVO ====================
export type AuditAction = 'CREATE' | 'READ' | 'UPDATE' | 'DELETE' | 'EXPORT' | 'ANONYMIZE' | 'LOGIN' | 'LOGOUT' | 'LOGIN_FAILED';
export type AuditSensitivity = 'LOW' | 'MEDIUM' | 'HIGH' | 'CRITICAL';
export type ConsentType = 'DATA_PROCESSING' | 'MARKETING_EMAIL' | 'MARKETING_PHONE' | 'DATA_SHARING_PARTNER';
export type ConsentStatus = 'GRANTED' | 'WITHDRAWN' | 'PENDING';
export type DeletionRequestStatus = 'PENDING' | 'IN_PROGRESS' | 'COMPLETED' | 'PARTIALLY_COMPLETED' | 'REJECTED';
export interface AuditLog {
id: number;
userId?: number;
userEmail: string;
userRole?: string;
customerId?: number;
isCustomerPortal: boolean;
action: AuditAction;
sensitivity: AuditSensitivity;
resourceType: string;
resourceId?: string;
resourceLabel?: string;
endpoint: string;
httpMethod: string;
ipAddress: string;
userAgent?: string;
changesBefore?: string;
changesAfter?: string;
changesEncrypted: boolean;
dataSubjectId?: number;
legalBasis?: string;
success: boolean;
errorMessage?: string;
durationMs?: number;
createdAt: string;
hash?: string;
previousHash?: string;
}
export interface CustomerConsent {
id: number | null;
customerId: number;
consentType: ConsentType;
status: ConsentStatus;
grantedAt?: string;
withdrawnAt?: string;
source?: string;
documentPath?: string;
version?: string;
ipAddress?: string;
createdBy?: string;
createdAt?: string;
updatedAt?: string;
}
export interface DataDeletionRequest {
id: number;
customerId: number;
customer?: {
id: number;
customerNumber: string;
firstName: string;
lastName: string;
email?: string;
};
status: DeletionRequestStatus;
requestedAt: string;
requestSource: string;
requestedBy: string;
processedAt?: string;
processedBy?: string;
deletedData?: string;
retainedData?: string;
retentionReason?: string;
proofDocument?: string;
createdAt: string;
updatedAt: string;
}
export interface AuditRetentionPolicy {
id: number;
resourceType: string;
sensitivity?: AuditSensitivity;
retentionDays: number;
description?: string;
legalBasis?: string;
isActive: boolean;
}
export interface GDPRDashboardStats {
deletionRequests: {
pending: number;
completedLast30Days: number;
};
dataExports: {
last30Days: number;
};
consents: {
granted: number;
withdrawn: number;
pending: number;
};
}
export interface ConsentTypeLabel {
label: string;
description: string;
}