Operación
Estado operativo actual
Sección titulada «Estado operativo actual»| Área | Estado | Observación |
|---|---|---|
| Desarrollo local | Aplica | Portal y API ejecutan localmente. |
| Operación productiva | No aplica todavía | Requiere despliegue en VM/IIS. |
| Monitoreo formal | Pendiente | Se define al existir QA/producción. |
| Backups | Pendiente | Requeridos en SQL Server real. |
| Alertas automáticas | Pendiente | Recomendado para producción. |
| Validación funcional | Aplica | Login, 2FA, usuarios, roles, permisos y auditoría. |
Validaciones funcionales
Sección titulada «Validaciones funcionales»| Validación | Resultado esperado |
|---|---|
| Portal carga | Redirige a login si no hay sesión. |
| Login correcto | Redirige a dashboard. |
| 2FA requerido | Redirige a /Account/VerifyTwoFactor. |
| 2FA setup | QR generado y código validado. |
| Crear usuario | Usuario aparece en listado. |
| Crear rol | Rol aparece con permisos asignados. |
| Menú dinámico | Usuarios/Roles aparecen según permisos. |
| Auditoría | identity.LoginAuditLogs registra eventos. |
Alerta de login enviada si Email.Enabled=true. |
Consultas SQL útiles
Sección titulada «Consultas SQL útiles»Roles:
SELECT Id, Name, NormalizedName, Description, IsSystemRole, IsActive, CreatedAtUtcFROM [identity].[Roles]ORDER BY Name;Permisos por rol:
SELECT r.Name, rc.ClaimType, rc.ClaimValueFROM [identity].[Roles] rLEFT JOIN [identity].[RoleClaims] rc ON r.Id = rc.RoleIdORDER BY r.Name, rc.ClaimValue;Usuarios y roles:
SELECT u.Email, u.IsActive, u.TwoFactorEnabled, r.Name AS RoleNameFROM [identity].[Users] uLEFT JOIN [identity].[UserRoles] ur ON u.Id = ur.UserIdLEFT JOIN [identity].[Roles] r ON ur.RoleId = r.IdORDER BY u.Email;Auditoría reciente:
SELECT TOP 100 ClientCode, UserId, Email, EventType, IpAddress, IsSuccessful, FailureReason, CreatedAtUtcFROM [identity].[LoginAuditLogs]ORDER BY CreatedAtUtc DESC;Troubleshooting
Sección titulada «Troubleshooting»| Síntoma | Causa probable | Acción |
|---|---|---|
| No compila por DLL bloqueada | Proceso dotnet activo | Get-Process dotnet | Stop-Process -Force. |
| EF no encuentra proyecto | Comando ejecutado desde ruta incorrecta | Ejecutar desde raíz con --project y --startup-project. |
| Login inválido | Email/contraseña, usuario inactivo o email no confirmado | Revisar usuario en identity.Users. |
| Cuenta bloqueada | Exceso de intentos fallidos | Esperar LockoutMinutes o desbloquear. |
| 2FA inválido | Código expirado o secreto reiniciado | Reintentar con código nuevo o reset 2FA. |
| No se muestra menú | Usuario sin permisos UsersView/RolesView | Revisar claims del rol. |
| Acción de botón falla | Servicio valida permiso server-side | Asignar permiso requerido al rol. |
| Email no llega | SMTP local/real no disponible | Revisar Email:* y logs. |
| Turnstile bloquea login | Token inválido o SecretKey incorrecto | Revisar keys y dominio. |
Severidades
Sección titulada «Severidades»| Severidad | Criterio | Acción |
|---|---|---|
| Alta | Login indisponible, SQL caído o sesiones no funcionan. | Atención inmediata. |
| Media | Email/Turnstile/auditoría falla pero login funciona. | Revisar en jornada operativa. |
| Baja | Ajustes de roles, permisos o documentación. | Planificar. |
Tareas recurrentes futuras
Sección titulada «Tareas recurrentes futuras»| Tarea | Frecuencia sugerida |
|---|---|
| Revisar auditoría fallida | Diaria en producción |
| Validar backups SQL | Diaria/semanal |
| Revisar certificados SSL | Mensual |
| Revisar roles y permisos | Mensual o por cambio |
| Revisar secretos y rotación | Según política |
| Validar SMTP | Por despliegue/cambio |