# Indice de Especificaciones Tecnicas - MGN-007 Audit ## Identificacion | Campo | Valor | |-------|-------| | **Modulo** | MGN-007 | | **Epic** | Audit & Logging | | **Total ET** | 3 | | **Story Points** | 34 | | **Fecha** | 2025-12-05 | --- ## Especificaciones Tecnicas | ID | Titulo | RF Cubiertos | Estado | |----|--------|--------------|--------| | [ET-AUDIT-database](./ET-AUDIT-database.md) | Schema core_audit | RF-001 a RF-004 | Documentado | | [ET-AUDIT-backend](./ET-AUDIT-backend.md) | Servicios y API REST | RF-001 a RF-004 | Documentado | | [ET-AUDIT-frontend](./ET-AUDIT-frontend.md) | Componentes React + Chart.js | RF-001 a RF-004 | Documentado | --- ## Resumen de Componentes ### Database (ET-AUDIT-database) | Tabla | RF | Descripcion | |-------|-----|-------------| | audit_logs | RF-001 | Registro de cambios en entidades (particionado mensual) | | access_logs | RF-002 | Logs de peticiones HTTP (particionado diario) | | security_events | RF-003 | Eventos de seguridad detectados | | security_alerts | RF-003 | Alertas enviadas por eventos | | scheduled_reports | RF-004 | Reportes programados de auditoria | | audit_alerts | RF-004 | Alertas configurables de auditoria | **Total:** 6 tablas (2 particionadas + 4 simples) **Funciones:** - `log_entity_change()` - Registro de cambios con diff automatico - `check_brute_force()` - Deteccion de intentos de fuerza bruta - `create_monthly_partitions()` - Creacion automatica de particiones - `archive_old_partitions()` - Archivado de particiones antiguas ### Backend (ET-AUDIT-backend) | Servicio | Endpoints | RF | |----------|-----------|-----| | AuditLogsService | 5 | RF-001 | | AccessLogsService | 4 | RF-002 | | SecurityEventsService | 3 | RF-003 | | SecurityAlertsService | 2 | RF-003 | | ScheduledReportsService | 5 | RF-004 | **Total:** 19 endpoints **Interceptores:** - AuditInterceptor - Logging automatico de cambios via decorador - AccessLogInterceptor - Registro de peticiones HTTP **Subscriber:** - EntityAuditSubscriber - Auditoria automatica via TypeORM events --- ## Matriz de Trazabilidad RF -> ET | RF | Database | Backend | |----|----------|---------| | RF-AUDIT-001 | audit_logs | AuditLogsService, AuditInterceptor, EntityAuditSubscriber | | RF-AUDIT-002 | access_logs | AccessLogsService, AccessLogInterceptor | | RF-AUDIT-003 | security_events, security_alerts | SecurityEventsService, SecurityAlertsService | | RF-AUDIT-004 | scheduled_reports, audit_alerts | ScheduledReportsService | --- ## Estrategia de Particionamiento | Tabla | Tipo | Particion | Retencion Sugerida | |-------|------|-----------|-------------------| | audit_logs | RANGE | Mensual | 24 meses | | access_logs | RANGE | Diaria | 90 dias | ### Mantenimiento Automatico - **Particiones futuras:** Job mensual crea particiones 1 mes por adelantado - **Archivado:** Job semanal archiva particiones antiguas segun retencion --- ## Dependencias Tecnicas ### Externas - PostgreSQL 15+ (Partitioning, JSONB, GIN, INET) - TypeORM 0.3+ - NestJS 10+ - cls-hooked (Async context) - cron-parser (Cron expressions) - exceljs/pdfkit (Exportacion) ### Internas - core_tenants.tenants (RLS) - core_users.users (Referencias) - core_auth.sessions (Access logs) - MGN-001 Auth (Autenticacion) - MGN-003 RBAC (Permisos) - MGN-008 Notifications (Alertas) --- ## Permisos Requeridos | Permiso | Descripcion | |---------|-------------| | audit.logs.read | Ver logs de auditoria | | audit.logs.export | Exportar logs | | audit.access.read | Ver logs de acceso | | audit.security.read | Ver eventos de seguridad | | audit.security.manage | Resolver eventos | | audit.reports.read | Ver reportes programados | | audit.reports.manage | Crear/editar reportes | | admin.security.manage | Acceso global a seguridad | --- ## Historial | Version | Fecha | Autor | Cambios | |---------|-------|-------|---------| | 1.0 | 2025-12-05 | Requirements-Analyst | Creacion inicial con 2 ET | | 1.1 | 2025-12-05 | Requirements-Analyst | Agregado ET Frontend |