UNPKG

autosnippet

Version:

Extract code patterns into a knowledge base for AI coding assistants

108 lines (107 loc) 3.27 kB
/** * AuditRepository 审计日志的仓储实现 * * AuditStore 提取的数据操作, * 使用 Drizzle 类型安全 API 操作 audit_logs 表。 */ import { auditLogs } from '../../infrastructure/database/drizzle/schema.js'; import { RepositoryBase } from '../base/RepositoryBase.js'; export interface AuditLogEntity { id: string; timestamp: number; actor: string; actorContext: Record<string, unknown>; action: string; resource: string | null; operationData: Record<string, unknown>; result: string; errorMessage: string | null; duration: number | null; } export interface AuditLogInsert { id: string; timestamp: number; actor: string; actorContext?: string; action: string; resource?: string; operationData?: string; result: string; errorMessage?: string | null; duration?: number | null; } export interface AuditQueryFilters { actor?: string; action?: string; result?: string; startDate?: number; endDate?: number; limit?: number; } export interface AuditStats { timeRange: string; total: number; success: number; failure: number; successRate: string; avgDuration: string; byActor: Array<{ actor: string; count: number; }>; byAction: Array<{ action: string; count: number; }>; } export declare class AuditRepositoryImpl extends RepositoryBase<typeof auditLogs, AuditLogEntity> { #private; constructor(drizzle: ConstructorParameters<typeof RepositoryBase<typeof auditLogs, AuditLogEntity>>[0]); findById(id: string): Promise<AuditLogEntity | null>; create(data: AuditLogInsert): Promise<AuditLogEntity>; delete(id: string): Promise<boolean>; /** 动态多条件查询 */ query(filters?: AuditQueryFilters): Promise<AuditLogEntity[]>; /** 根据请求 ID 查询 */ findByRequestId(requestId: string): Promise<AuditLogEntity | null>; /** 根据角色查询 */ findByActor(actor: string, limit?: number): Promise<AuditLogEntity[]>; /** 根据操作查询 */ findByAction(action: string, limit?: number): Promise<AuditLogEntity[]>; /** 根据结果查询 */ findByResult(result: string, limit?: number): Promise<AuditLogEntity[]>; /** 获取统计数据 */ getStats(timeRange?: string): Promise<AuditStats>; /** * 清理过期审计日志 * @param maxAgeDays 保留天数 */ cleanup(maxAgeDays?: number): Promise<{ deleted: number; }>; /** * Guard 违规规则名 TOP-N (SkillAdvisor.#getGuardPatterns) */ findTopGuardViolationRules(minCount: number, limit: number): Promise<Array<{ ruleName: string; cnt: number; }>>; /** * Guard 违规信号 (SignalCollector.#collectGuardSignals) */ findGuardViolationSignals(limit: number): Promise<Array<{ ruleName: string; cnt: number; lastAt: number; }>>; /** * 最近动作日志 (SignalCollector.#collectActionSignals) */ findRecentActions(sinceTs: number, limit: number): Promise<Array<{ actor: string; action: string; resource: string | null; result: string; timestamp: number; }>>; }