mirror of
https://github.com/arsvendg/Stirling-PDF.git
synced 2026-07-16 03:20:46 +02:00
Audit fixes and improvements (#5835)
This commit is contained in:
@@ -2,12 +2,12 @@
|
||||
.modal-container {
|
||||
display: flex;
|
||||
gap: 0;
|
||||
height: 37.5rem; /* 600px */
|
||||
height: 45rem; /* 720px */
|
||||
}
|
||||
|
||||
.modal-nav {
|
||||
width: 15rem; /* 240px */
|
||||
height: 37.5rem; /* 600px */
|
||||
height: 45rem; /* 720px */
|
||||
border-top-left-radius: 0.75rem; /* 12px */
|
||||
border-bottom-left-radius: 0.75rem; /* 12px */
|
||||
overflow: hidden;
|
||||
@@ -108,7 +108,7 @@
|
||||
|
||||
.modal-content {
|
||||
flex: 1;
|
||||
height: 37.5rem; /* 600px */
|
||||
height: 45rem; /* 720px */
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
overflow: hidden;
|
||||
|
||||
@@ -118,7 +118,7 @@ const AppConfigModalInner: React.FC<AppConfigModalProps> = ({ opened, onClose })
|
||||
opened={opened}
|
||||
onClose={handleClose}
|
||||
title={null}
|
||||
size={isMobile ? "100%" : 980}
|
||||
size={isMobile ? "100%" : 1100}
|
||||
centered
|
||||
radius="lg"
|
||||
withCloseButton={false}
|
||||
|
||||
@@ -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; // 0–100
|
||||
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;
|
||||
|
||||
Reference in New Issue
Block a user