autosnippet
Version:
Extract code patterns into a knowledge base for AI coding assistants
127 lines (126 loc) • 3.74 kB
TypeScript
import type { AuditStore } from './AuditStore.js';
/** Minimal EventBus shape for optional audit event emission */
interface AuditEventBus {
emit(event: string, data: unknown): void;
}
/** AuditLogger - 审计日志记录器 */
export declare class AuditLogger {
#private;
auditStore: AuditStore;
logger: import('winston').Logger;
constructor(auditStore: AuditStore, eventBus?: AuditEventBus | null);
/**
* 记录审计日志
* 兼容两种传入格式:
* Gateway 风格: { actor, action, resource, result, data, duration }
* Service 风格: { actor, action, resourceType, resourceId, details, timestamp }
*/
log(entry: {
requestId?: string;
actor: string;
action: string;
resource?: string;
resourceType?: string;
resourceId?: string;
data?: Record<string, unknown>;
details?: unknown;
context?: Record<string, unknown>;
result?: string;
error?: string;
duration?: number;
}): Promise<void>;
/** 生成 ID */
generateId(): string;
/** 格式化资源 */
formatResource(resource: unknown): string;
/** 查询审计日志 */
query(filters: {
actor?: string;
action?: string;
result?: string;
startDate?: number;
endDate?: number;
limit?: number;
}): Promise<{
id: string;
timestamp: number;
actor: string;
actorContext: string | null;
action: string;
resource: string | null;
operationData: string | null;
result: string;
errorMessage: string | null;
duration: number | null;
}[]>;
/** 获取特定请求的日志 */
getByRequestId(requestId: string): Promise<{
id: string;
timestamp: number;
actor: string;
actorContext: string | null;
action: string;
resource: string | null;
operationData: string | null;
result: string;
errorMessage: string | null;
duration: number | null;
} | undefined>;
/** 获取特定角色的日志 */
getByActor(actor: string, limit?: number): Promise<{
id: string;
timestamp: number;
actor: string;
actorContext: string | null;
action: string;
resource: string | null;
operationData: string | null;
result: string;
errorMessage: string | null;
duration: number | null;
}[]>;
/** 获取特定操作的日志 */
getByAction(action: string, limit?: number): Promise<{
id: string;
timestamp: number;
actor: string;
actorContext: string | null;
action: string;
resource: string | null;
operationData: string | null;
result: string;
errorMessage: string | null;
duration: number | null;
}[]>;
/** 获取失败的操作日志 */
getFailures(limit?: number): Promise<{
id: string;
timestamp: number;
actor: string;
actorContext: string | null;
action: string;
resource: string | null;
operationData: string | null;
result: string;
errorMessage: string | null;
duration: number | null;
}[]>;
/** 统计审计数据 */
getStats(timeRange: string): Promise<{
timeRange: string;
total: number;
success: number;
failure: number;
successRate: string;
avgDuration: string;
byActor: {
actor: string;
count: number;
}[];
byAction: {
action: string;
count: number;
}[];
}>;
}
export default AuditLogger;