import { AuditOperation, MaskingStrategy, RecordStrategy, ChangeType } from '../enums/audit.enums'; /** * 审计上下文 */ export interface AuditContext { userId?: string; username?: string; requestId?: string; requestIp?: string; userAgent?: string; timestamp?: Date; transactionId?: string; metadata?: Record; } /** * 审计策略接口 */ export interface IAuditStrategy { shouldRecord(entityType: string, operation: AuditOperation): boolean; getRecordStrategy(entityType: string, operation: AuditOperation): RecordStrategy; getFieldFilter(entityType: string): IFieldFilter; } /** * 字段过滤器接口 */ export interface IFieldFilter { shouldIncludeField(fieldName: string, path: string[]): boolean; shouldMaskField(fieldName: string, path: string[]): boolean; getMaskingStrategy(fieldName: string, path: string[]): MaskingStrategy; } /** * 实体差异 */ export interface EntityDifference { changes: Array<{ path: string[]; type: 'ADD' | 'REMOVE' | 'CHANGE'; oldValue: any; newValue: any; }>; summary: { added: number; removed: number; changed: number; }; } /** * 恢复选项 */ export interface RestoreOptions { force?: boolean; dryRun?: boolean; excludeFields?: string[]; includeFields?: string[]; skipDependencies?: boolean; connectionName?: string; } /** * 恢复结果 */ export interface RestoreResult { success: boolean; message?: string; conflicts?: Array<{ field: string; reason: string; currentValue: any; targetValue: any; }>; restoredEntities?: Array<{ entityType: string; entityId: string; }>; } /** * 预检查结果 */ export interface PreCheckResult { canRestore: boolean; conflicts: Array<{ field: string; reason: string; currentValue: any; targetValue: any; }>; warnings: string[]; } /** * 批量操作结果 */ export interface BatchOperationResult { total: number; success: number; failed: number; errors: Array<{ index: number; error: string; }>; results: any[]; } /** * 审计配置 */ export interface AuditConfig { enabled?: boolean; defaultStrategy?: RecordStrategy; maxDiffDepth?: number; maxDiffFields?: number; connections?: { audit?: string; monitored?: string[]; }; entities?: Record; operations?: Record; security?: { masking?: { defaultStrategy?: MaskingStrategy; strategies?: Record; }; }; } /** * 实体级别审计配置 */ /** * 实体审计配置 * * @description * 支持基础审计配置 * * @example * ```typescript * @EntityAudit({ * enabled: true, * excludeFields: ['password'], * maskFields: ['email', 'phone'], * templateKey: 'user', * }) * ``` */ export interface EntityAuditConfig { enabled?: boolean; strategy?: RecordStrategy; includeFields?: string[]; excludeFields?: string[]; maskFields?: string[]; /** * 实体标签(支持多语言) * @example * // 单语言 * label: '订单' * * // 多语言 * label: { zh: '订单', en: 'Order', ja: '注文' } */ label?: string | Record; /** * 操作模板键前缀 * @example 'user' -> 生成 'user.create', 'user.update', 'user.delete' */ templateKey?: string; } /** * 操作级别审计配置 */ export interface OperationAuditConfig { enabled?: boolean; strategy?: RecordStrategy; } /** * 字段显示选项 */ export interface FieldDisplayOptions { /** * 字段标签(支持多语言) * @example * // 单语言 * label: '姓名' * * // 多语言 * label: { zh: '姓名', en: 'Name' } */ label?: string | Record; /** * 字段值的多语言标签映射 * @example * valueLabels: { * active: { zh: '激活', en: 'Active' }, * inactive: { zh: '未激活', en: 'Inactive' } * } */ valueLabels?: Record>; sensitive?: boolean; formatter?: (value: any) => string; } /** * 控制器审计选项 */ export interface ControllerAuditOptions { enabled?: boolean; operations?: AuditOperation[]; } /** * 方法审计选项 */ export interface MethodAuditOptions { enabled?: boolean; } /** * 变更详情 */ export interface ChangeDetail { fieldName: string; fieldLabels?: Record; oldValue: any; newValue: any; displayOldValue?: Record; displayNewValue?: Record; changeType: ChangeType; } /** * 操作模板配置(用于数据库存储) */ export interface OperationTemplateData { key: string; entityName: string; operation: AuditOperation; nameTemplates: Record; descriptionTemplates: Record; fieldLabels?: Record>; valueDisplays?: Record>>; } /** * 手动操作日志数据 */ export interface ManualOperationData { transactionId: string; operationTemplateKey: string; descriptionParams: Record; userId?: string; username?: string; requestIp?: string; } /** * 手动日志记录选项(支持三种模式) */ export interface ManualLogOptions { templateKey?: string; descriptionParams?: Record; description?: string | Record; descriptionTemplate?: Record; userId?: string; username?: string; requestIp?: string; transactionId?: string; autoCreateTransaction?: boolean; } /** * 方法审计选项(支持模板) */ export interface AuditOperationOptions { templateKey: string; descriptionParams?: (args: any[], result: any, context: any) => Record; autoTransaction?: boolean; } /** * 增强的实体审计配置(支持多语言) */ export interface EnhancedEntityAuditConfig extends EntityAuditConfig { templateKey?: string; fieldLabels?: Record>; valueDisplays?: Record>>; } /** * 事务描述结果 */ export interface TransactionDescription { operationName: string; description: string; changes: Array<{ entityName?: string; entityId?: string; operation?: AuditOperation; type?: string; description: string; details: any; createdAt: Date; }>; }