Audit fixes and improvements (#5835)

This commit is contained in:
Anthony Stirling
2026-03-05 22:00:44 +00:00
committed by GitHub
parent 879ffc066f
commit 6c83da6417
34 changed files with 3760 additions and 1030 deletions
+48 -3
View File
@@ -5,6 +5,10 @@ export interface AuditSystemStatus {
level: string;
retentionDays: number;
totalEvents: number;
pdfMetadataEnabled: boolean;
captureFileHash: boolean;
capturePdfAuthor: boolean;
captureOperationResults: boolean;
}
export interface AuditEvent {
@@ -36,12 +40,32 @@ export interface AuditChartsData {
}
export interface AuditFilters {
eventType?: string;
username?: string;
eventType?: string | string[];
username?: string | string[];
startDate?: string;
endDate?: string;
outcome?: string;
page?: number;
pageSize?: number;
fields?: string;
}
export interface AuditStats {
totalEvents: number;
prevTotalEvents: number;
uniqueUsers: number;
prevUniqueUsers: number;
successRate: number; // 0100
prevSuccessRate: number;
avgLatencyMs: number;
prevAvgLatencyMs: number;
errorCount: number;
topEventType: string;
topUser: string;
eventsByType: Record<string, number>;
eventsByUser: Record<string, number>;
topTools: Record<string, number>;
hourlyDistribution: Record<string, number>; // "00""23" keys
}
const auditService = {
@@ -60,9 +84,23 @@ const auditService = {
level: data.auditLevel,
retentionDays: data.retentionDays,
totalEvents: 0, // Will be fetched separately
pdfMetadataEnabled: data.pdfMetadataEnabled ?? false,
captureFileHash: data.captureFileHash ?? false,
capturePdfAuthor: data.capturePdfAuthor ?? false,
captureOperationResults: data.captureOperationResults ?? false,
};
},
/**
* Get audit statistics and KPI data
*/
async getStats(timePeriod: 'day' | 'week' | 'month' = 'week'): Promise<AuditStats> {
const response = await apiClient.get<AuditStats>('/api/v1/proprietary/ui-data/audit-stats', {
params: { period: timePeriod },
});
return response.data;
},
/**
* Get audit events with pagination and filters
*/
@@ -84,7 +122,7 @@ const auditService = {
},
/**
* Export audit data
* Export audit data with custom field selection
*/
async exportData(
format: 'csv' | 'json',
@@ -112,6 +150,13 @@ const auditService = {
const response = await apiClient.get<string[]>('/api/v1/proprietary/ui-data/audit-users');
return response.data;
},
/**
* Clear all audit data from the database (irreversible)
*/
async clearAllAuditData(): Promise<void> {
await apiClient.post('/api/v1/proprietary/ui-data/audit-clear-all', {});
},
};
export default auditService;