Structure: - control-plane/: Registries, SIMCO directives, CI/CD templates - projects/: Gamilit, ERP-Suite, Trading-Platform, Betting-Analytics - shared/: Libs catalog, knowledge-base Key features: - Centralized port, domain, database, and service registries - 23 SIMCO directives + 6 fundamental principles - NEXUS agent profiles with delegation rules - Validation scripts for workspace integrity - Dockerfiles for all services - Path aliases for quick reference 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
22 KiB
Inventario Completo - Admin Portal Extendido (EXT-002)
Sprints 1, 2, 3 - Implementación Completa
Fecha: 2025-11-19 Estado: ✅ IMPLEMENTADO Versión: 1.0
1. Endpoints API
1.1 Dashboard Module (8 endpoints)
| # | Método | Endpoint | Controlador | Servicio | Estado |
|---|---|---|---|---|---|
| 1 | GET | /admin/dashboard |
AdminDashboardController | getDashboard() | ✅ |
| 2 | GET | /admin/dashboard/stats |
AdminDashboardController | getDashboardStats() | ✅ |
| 3 | GET | /admin/dashboard/recent-activity |
AdminDashboardController | getRecentActivity() | ✅ |
| 4 | GET | /admin/dashboard/user-stats |
AdminDashboardController | getUserStatsSummary() | ✅ |
| 5 | GET | /admin/dashboard/organization-stats |
AdminDashboardController | getOrganizationStatsSummary() | ✅ |
| 6 | GET | /admin/dashboard/moderation-queue |
AdminDashboardController | getModerationQueue() | ✅ |
| 7 | GET | /admin/dashboard/classroom-overview |
AdminDashboardController | getClassroomOverview() | ✅ |
| 8 | GET | /admin/dashboard/assignment-stats |
AdminDashboardController | getAssignmentSubmissionStats() | ✅ |
1.2 Roles Module (4 endpoints)
| # | Método | Endpoint | Controlador | Servicio | Estado |
|---|---|---|---|---|---|
| 9 | GET | /admin/roles |
AdminRolesController | getRoles() | ✅ |
| 10 | GET | /admin/roles/permissions |
AdminRolesController | getAvailablePermissions() | ✅ |
| 11 | GET | /admin/roles/:id/permissions |
AdminRolesController | getRolePermissions() | ✅ |
| 12 | PUT | /admin/roles/:id/permissions |
AdminRolesController | updateRolePermissions() | ✅ |
1.3 Reports Module (4 endpoints)
| # | Método | Endpoint | Controlador | Servicio | Estado |
|---|---|---|---|---|---|
| 13 | POST | /admin/reports/generate |
AdminReportsController | generateReport() | ✅ |
| 14 | GET | /admin/reports |
AdminReportsController | getReports() | ✅ |
| 15 | GET | /admin/reports/:id/download |
AdminReportsController | downloadReport() | ✅ |
| 16 | DELETE | /admin/reports/:id |
AdminReportsController | deleteReport() | ✅ |
1.4 System Config Module (4 endpoints)
| # | Método | Endpoint | Controlador | Servicio | Estado |
|---|---|---|---|---|---|
| 17 | GET | /admin/system/config |
AdminSystemController | getSystemConfig() | ✅ |
| 18 | POST | /admin/system/config |
AdminSystemController | updateSystemConfig() | ✅ |
| 19 | GET | /admin/system/config/:category |
AdminSystemController | getConfigByCategory() | ✅ |
| 20 | PUT | /admin/system/config/:category |
AdminSystemController | updateConfigByCategory() | ✅ |
1.5 Maintenance Module (5 endpoints)
| # | Método | Endpoint | Controlador | Servicio | Estado |
|---|---|---|---|---|---|
| 21 | POST | /admin/system/maintenance/cleanup-logs |
AdminSystemController | cleanupSystemLogs() | ✅ |
| 22 | POST | /admin/system/maintenance/cleanup-activity |
AdminSystemController | cleanupUserActivity() | ✅ |
| 23 | POST | /admin/system/maintenance/optimize-database |
AdminSystemController | optimizeDatabase() | ✅ |
| 24 | POST | /admin/system/maintenance/clear-cache |
AdminSystemController | clearCache() | ✅ |
| 25 | POST | /admin/system/maintenance/cleanup-sessions |
AdminSystemController | cleanupExpiredSessions() | ✅ |
1.6 Users Bulk Ops (Aliases) (3 endpoints)
| # | Método | Endpoint | Controlador | Delegado a | Estado |
|---|---|---|---|---|---|
| 26 | POST | /admin/users/bulk/suspend |
AdminUsersController | BulkOperationsService | ✅ |
| 27 | POST | /admin/users/bulk/delete |
AdminUsersController | BulkOperationsService | ✅ |
| 28 | POST | /admin/users/bulk/update-role |
AdminUsersController | BulkOperationsService | ✅ |
1.7 Users Module (1 endpoint nuevo)
| # | Método | Endpoint | Controlador | Servicio | Estado |
|---|---|---|---|---|---|
| 29 | POST | /admin/users/:id/reset-password |
AdminUsersController | resetPassword() | ✅ |
1.8 Content Approval (4 endpoints)
| # | Método | Endpoint | Controlador | Servicio | Estado |
|---|---|---|---|---|---|
| 30 | GET | /admin/content/approval-history |
AdminContentController | getApprovalHistory() | ✅ |
| 31 | GET | /admin/content/exercises/pending |
AdminContentController | getPendingContent() (alias) | ✅ |
| 32 | POST | /admin/content/exercises/:id/approve |
AdminContentController | approveContent() (alias) | ✅ |
| 33 | POST | /admin/content/exercises/:id/reject |
AdminContentController | rejectContent() (alias) | ✅ |
1.9 Logs (Alias) (1 endpoint)
| # | Método | Endpoint | Controlador | Delegado a | Estado |
|---|---|---|---|---|---|
| 34 | GET | /admin/logs |
AdminLogsController | AdminSystemService.getAuditLog() | ✅ |
Total Endpoints Implementados: 34
2. DTOs (Data Transfer Objects)
2.1 Dashboard DTOs (18 DTOs)
| # | Nombre | Ubicación | Propósito | Campos |
|---|---|---|---|---|
| 1 | DashboardStatsDto | dashboard/dashboard-stats.dto.ts | Estadísticas del dashboard | 9 |
| 2 | DashboardDataDto | dashboard/dashboard-data.dto.ts | Respuesta completa del dashboard | 3 |
| 3 | AdminActionDto | dashboard/recent-activity.dto.ts | Acción individual de admin | 8 |
| 4 | RecentActivityQueryDto | dashboard/recent-activity.dto.ts | Query params para actividad | 1 |
| 5 | PaginatedActivityDto | dashboard/recent-activity.dto.ts | Respuesta paginada actividad | 3 |
| 6 | UserStatsSummaryDto | dashboard/user-stats-summary.dto.ts | Stats agregadas de usuarios | 9 |
| 7 | OrganizationStatsSummaryDto | dashboard/organization-stats-summary.dto.ts | Stats de organizaciones | 3 |
| 8 | ModerationQueueItemDto | dashboard/moderation-queue-item.dto.ts | Item de cola de moderación | 10 |
| 9 | PaginatedModerationQueueDto | dashboard/moderation-queue-item.dto.ts | Cola paginada | 3 |
| 10 | ClassroomOverviewDto | dashboard/classroom-overview.dto.ts | Overview de aula | 16 |
| 11 | PaginatedClassroomOverviewDto | dashboard/classroom-overview.dto.ts | Overview paginado | 3 |
| 12 | AssignmentSubmissionStatsDto | dashboard/assignment-submission-stats.dto.ts | Stats de submissions | 19 |
| 13 | PaginatedAssignmentSubmissionStatsDto | dashboard/assignment-submission-stats.dto.ts | Stats paginados | 3 |
2.2 Roles DTOs (4 DTOs)
| # | Nombre | Ubicación | Propósito | Campos |
|---|---|---|---|---|
| 14 | RoleDto | roles/role.dto.ts | Información de rol | 4 |
| 15 | PermissionDto | roles/role.dto.ts | Permiso individual | 3 |
| 16 | RolePermissionsDto | roles/role.dto.ts | Permisos de un rol | 4 |
| 17 | UpdatePermissionsDto | roles/role.dto.ts | Actualizar permisos | 1 |
2.3 Reports DTOs (6 DTOs)
| # | Nombre | Ubicación | Propósito | Campos |
|---|---|---|---|---|
| 18 | GenerateReportDto | reports/report.dto.ts | Solicitud de generación | 4 |
| 19 | ReportDto | reports/report.dto.ts | Información de reporte | 11 |
| 20 | ListReportsDto | reports/report.dto.ts | Query params listar | 6 |
| 21 | PaginatedReportsDto | reports/report.dto.ts | Lista paginada | 4 |
| 22 | ReportType (enum) | reports/report.dto.ts | Tipos de reporte | 4 valores |
| 23 | ReportFormat (enum) | reports/report.dto.ts | Formatos de reporte | 3 valores |
2.4 System Config DTOs (ya existían, sin cambios)
2.5 Maintenance DTOs (7 DTOs)
| # | Nombre | Ubicación | Propósito | Campos |
|---|---|---|---|---|
| 24 | CleanupLogsDto | system/maintenance-operations.dto.ts | Params limpieza logs | 1 |
| 25 | CleanupUserActivityDto | system/maintenance-operations.dto.ts | Params limpieza actividad | 1 |
| 26 | MaintenanceOperationResultDto | system/maintenance-operations.dto.ts | Resultado operación | 4 |
| 27 | DatabaseOptimizationResultDto | system/maintenance-operations.dto.ts | Resultado optimización | 5 |
| 28 | CacheClearResultDto | system/maintenance-operations.dto.ts | Resultado limpieza caché | 3 |
| 29 | SessionCleanupResultDto | system/maintenance-operations.dto.ts | Resultado limpieza sesiones | 3 |
2.6 Users DTOs (1 DTO nuevo)
| # | Nombre | Ubicación | Propósito | Campos |
|---|---|---|---|---|
| 30 | ResetPasswordDto | users/reset-password.dto.ts | Reset de contraseña | 2 |
2.7 Content Approval DTOs (3 DTOs)
| # | Nombre | Ubicación | Propósito | Campos |
|---|---|---|---|---|
| 31 | ApprovalHistoryItemDto | content/approval-history.dto.ts | Item de historial | 18 |
| 32 | ListApprovalHistoryDto | content/approval-history.dto.ts | Query params historial | 7 |
| 33 | PaginatedApprovalHistoryDto | content/approval-history.dto.ts | Historial paginado | 5 |
Total DTOs Creados/Modificados: 33
3. Servicios
3.1 Servicios Nuevos (4 servicios)
| # | Nombre | Ubicación | Métodos Públicos | Repositorios Usados |
|---|---|---|---|---|
| 1 | AdminDashboardService | services/admin-dashboard.service.ts | 8 | User, Tenant, Module, Exercise |
| 2 | AdminRolesService | services/admin-roles.service.ts | 4 | Role, UserRole |
| 3 | AdminReportsService | services/admin-reports.service.ts | 4 | AdminReport (TypeORM - admin_dashboard.admin_reports) |
| 4 | AdminLogsController | controllers/admin-logs.controller.ts | 1 (delegado) | N/A |
3.2 Servicios Modificados (3 servicios)
| # | Nombre | Métodos Nuevos/Modificados | Líneas Agregadas |
|---|---|---|---|
| 1 | AdminSystemService | 7 nuevos métodos | ~200 |
| 2 | AdminUsersService | 1 nuevo método | ~30 |
| 3 | AdminContentService | 2 métodos modificados + 1 nuevo | ~150 |
Métodos AdminSystemService:
getConfigByCategory(category)- NuevoupdateConfigByCategory(category, config, adminId)- NuevocleanupSystemLogs(dto)- NuevocleanupUserActivity(dto)- NuevooptimizeDatabase()- NuevoclearCache()- NuevocleanupExpiredSessions()- Nuevo
Métodos AdminUsersService:
resetPassword(id, dto)- Nuevo
Métodos AdminContentService:
approveContent(id, dto, adminId)- Modificado (+ registro en content_approvals)rejectContent(id, dto, adminId)- Modificado (+ registro en content_approvals)getApprovalHistory(query)- Nuevo
4. Controladores
4.1 Controladores Nuevos (4 controladores)
| # | Nombre | Ubicación | Endpoints | Tipo |
|---|---|---|---|---|
| 1 | AdminDashboardController | controllers/admin-dashboard.controller.ts | 8 | Full controller |
| 2 | AdminRolesController | controllers/admin-roles.controller.ts | 4 | Full controller |
| 3 | AdminReportsController | controllers/admin-reports.controller.ts | 4 | Full controller |
| 4 | AdminLogsController | controllers/admin-logs.controller.ts | 1 | Alias controller |
4.2 Controladores Modificados (3 controladores)
| # | Nombre | Endpoints Nuevos | Tipo de Cambios |
|---|---|---|---|
| 1 | AdminSystemController | 7 | 2 config + 5 maintenance |
| 2 | AdminUsersController | 4 | 3 bulk aliases + 1 reset |
| 3 | AdminContentController | 4 | 3 exercise aliases + 1 history |
5. Entidades TypeORM
5.1 Entidades Nuevas (1 entidad)
| # | Nombre | Schema | Tabla | Relaciones |
|---|---|---|---|---|
| 1 | ContentApproval | educational_content | content_approvals | User (submitter, reviewer) |
Campos ContentApproval:
- id (UUID, PK)
- content_type (enum: module, exercise, assignment, resource)
- content_id (UUID)
- submitted_by (UUID, FK → users)
- submitted_at (timestamp)
- reviewed_by (UUID, FK → users, nullable)
- reviewed_at (timestamp, nullable)
- status (enum: pending, approved, rejected, needs_revision)
- reviewer_notes (text, nullable)
- revision_notes (text, nullable)
- created_at (timestamp)
- updated_at (timestamp)
5.2 Entidades Usadas (Existentes)
| # | Entidad | Uso |
|---|---|---|
| 1 | User | Dashboard stats, approval history |
| 2 | Role | Roles management |
| 3 | UserRole | Role permissions |
| 4 | Tenant | Dashboard stats orgs |
| 5 | Module | Dashboard stats, approval history |
| 6 | Exercise | Dashboard stats, approval history |
| 7 | ContentTemplate | Approval history |
| 8 | SystemSetting | System configuration |
| 9 | BulkOperation | Bulk operations tracking |
| 10 | AuthAttempt | Audit logs |
6. Vistas de Base de Datos
6.1 Vistas Consumidas (6 vistas)
| # | Vista | Schema | Propósito | Endpoint que la usa |
|---|---|---|---|---|
| 1 | recent_activity | admin_dashboard | Actividad reciente de admins/usuarios | /admin/dashboard/recent-activity |
| 2 | user_stats_summary | admin_dashboard | Estadísticas agregadas de usuarios | /admin/dashboard/user-stats |
| 3 | organization_stats_summary | admin_dashboard | Estadísticas de organizaciones | /admin/dashboard/organization-stats |
| 4 | moderation_queue | admin_dashboard | Cola de contenido flagged | /admin/dashboard/moderation-queue |
| 5 | classroom_overview | admin_dashboard | Overview de aulas | /admin/dashboard/classroom-overview |
| 6 | assignment_submission_stats | admin_dashboard | Estadísticas de asignaciones | /admin/dashboard/assignment-stats |
Campos por Vista:
recent_activity:
- id, user_id, email, first_name, last_name
- action_type, description, metadata, created_at
user_stats_summary:
- total_users, users_today, users_this_week, users_this_month
- active_users_today, active_users_week
- total_students, total_teachers, total_admins
organization_stats_summary:
- total_organizations, active_organizations, new_organizations_month
moderation_queue:
- id, content_type, content_id, content_preview
- reason, priority, status, created_at
- reporter_email, reporter_name
classroom_overview:
- classroom_id, classroom_name, classroom_description
- teacher_id, teacher_name
- total_students, active_students, inactive_students
- total_assignments, pending_assignments, upcoming_deadline_assignments
- total_exercises, avg_class_progress_percent
- last_updated, classroom_created_at, classroom_status
assignment_submission_stats:
- assignment_id, assignment_title, assignment_type, assignment_max_points
- classroom_id, classroom_name
- total_submissions, completed_submissions, in_progress_submissions
- not_started_submissions, graded_submissions
- submission_rate_percent, avg_score, max_score_achieved, min_score_achieved
- assignment_created_at, assignment_due_date, classroom_deadline_override
- total_students_in_classroom
7. Funciones SQL
7.1 Funciones Consumidas (2 funciones)
| # | Función | Schema | Parámetros | Endpoint que la usa |
|---|---|---|---|---|
| 1 | cleanup_old_system_logs | audit_logging | p_retention_days (default 90) | /admin/system/maintenance/cleanup-logs |
| 2 | cleanup_old_user_activity | audit_logging | p_retention_days (default 180) | /admin/system/maintenance/cleanup-activity |
Retorno de ambas funciones:
RETURNS TABLE(
deleted_count INTEGER,
status_message TEXT
)
Comportamiento:
- Calcula cutoff_date = NOW() - retention_days
- DELETE FROM tabla WHERE created_at < cutoff_date
- VACUUM ANALYZE tabla
- RETURN deleted_count y status_message
8. Archivos Creados
8.1 Por Categoría
Controllers (4 nuevos):
controllers/admin-dashboard.controller.tscontrollers/admin-roles.controller.tscontrollers/admin-reports.controller.tscontrollers/admin-logs.controller.ts
Services (4 nuevos):
services/admin-dashboard.service.tsservices/admin-roles.service.tsservices/admin-reports.service.ts- N/A (AdminLogsController no tiene servicio propio)
Entities (1 nueva):
entities/content-approval.entity.ts
DTOs - Dashboard (13 nuevos):
dto/dashboard/dashboard-stats.dto.tsdto/dashboard/dashboard-data.dto.tsdto/dashboard/recent-activity.dto.tsdto/dashboard/user-stats-summary.dto.tsdto/dashboard/organization-stats-summary.dto.tsdto/dashboard/moderation-queue-item.dto.tsdto/dashboard/classroom-overview.dto.tsdto/dashboard/assignment-submission-stats.dto.tsdto/dashboard/index.ts(modificado)
DTOs - Roles (4 nuevos):
dto/roles/role.dto.tsdto/roles/update-permissions.dto.tsdto/roles/index.ts
DTOs - Reports (4 nuevos):
dto/reports/report.dto.tsdto/reports/list-reports.dto.tsdto/reports/paginated-reports.dto.tsdto/reports/index.ts
DTOs - Maintenance (1 nuevo):
dto/system/maintenance-operations.dto.tsdto/system/index.ts(modificado)
DTOs - Users (1 nuevo):
dto/users/reset-password.dto.tsdto/users/index.ts(modificado)
DTOs - Content (1 nuevo):
dto/content/approval-history.dto.tsdto/content/index.ts(modificado)
Total archivos creados: 27 Total archivos modificados: 13
9. Métricas de Código
9.1 Líneas de Código Agregadas (Estimación)
| Categoría | Archivos | Líneas de Código | Comentarios |
|---|---|---|---|
| Controllers | 4 nuevos + 3 mod | ~800 | Incluye Swagger docs |
| Services | 4 nuevos + 3 mod | ~1,500 | Lógica de negocio |
| Entities | 1 nuevo | ~80 | TypeORM entity |
| DTOs | ~25 nuevos | ~2,000 | Validación + docs |
| Tests | 0 (pendiente) | 0 | Recomendado ~1,500 |
| TOTAL | 40 | ~4,380 | Sin tests |
9.2 Complejidad Ciclomática (Estimación)
| Servicio | Métodos | Complejidad Promedio | Nivel |
|---|---|---|---|
| AdminDashboardService | 8 | 3-5 | Baja |
| AdminRolesService | 4 | 2-3 | Baja |
| AdminReportsService | 4 | 2-4 | Baja |
| AdminSystemService | 12 | 4-6 | Media |
| AdminUsersService | 13 | 3-5 | Baja |
| AdminContentService | 10 | 5-8 | Media |
Métrica general: Complejidad manejable, código bien estructurado
10. Dependencias
10.1 Dependencias NPM (Ya instaladas)
{
"@nestjs/common": "^9.0.0",
"@nestjs/core": "^9.0.0",
"@nestjs/typeorm": "^9.0.0",
"@nestjs/swagger": "^6.0.0",
"typeorm": "^0.3.0",
"pg": "^8.8.0",
"class-validator": "^0.14.0",
"class-transformer": "^0.5.1"
}
10.2 Dependencias de Base de Datos
Schemas requeridos:
authauth_managementaudit_loggingadmin_dashboardeducational_contentsystem_configurationcontent_managementsocial_features
Tablas críticas:
auth.users,auth.roles,auth.user_rolessystem_configuration.system_settingseducational_content.content_approvals(nueva)auth_management.tenantseducational_content.modules,educational_content.exercises
11. Cobertura de Funcionalidad
11.1 Matriz de Cobertura
| Módulo Funcional | Endpoints | DTOs | Servicios | Entidades | Estado |
|---|---|---|---|---|---|
| Dashboard | 8 | 13 | 1 | 0 | ✅ 100% |
| Roles & Permisos | 4 | 4 | 1 | 0 | ✅ 100% |
| Reportes | 4 | 6 | 1 | 0 | ✅ 100% (MVP) |
| Config Sistema | 4 | 0 | 1 (mod) | 0 | ✅ 100% |
| Mantenimiento | 5 | 7 | 1 (mod) | 0 | ✅ 100% |
| Bulk Ops | 3 | 0 | 0 (reuso) | 0 | ✅ 100% (alias) |
| Users | 1 | 1 | 1 (mod) | 0 | ✅ 100% |
| Content Approval | 4 | 3 | 1 (mod) | 1 | ✅ 100% |
| Logs | 1 | 0 | 0 (alias) | 0 | ✅ 100% (alias) |
| TOTAL | 34 | 34 | 7 | 1 | ✅ 100% |
11.2 Gaps Identificados
Funcionalidad con placeholders (para producción):
-
Reportes:
- Almacenamiento: Map en memoria → Necesita migración a DB + S3
- Cola de jobs: setTimeout → Necesita Bull/BullMQ
-
Caché:
- Clear cache: Placeholder → Necesita integración con Redis
-
Sesiones:
- Cleanup: Placeholder → Necesita estrategia de storage definida
Tests pendientes:
- Tests unitarios: 0 de 7 servicios
- Tests e2e: 0 de 34 endpoints
- Cobertura de tests: 0% (PENDIENTE)
12. Próximos Pasos
12.1 Sprint 4 - Cleanup (Estimado 8h)
- Actualizar frontend
adminAPI.tscon nuevos endpoints (1h) - Crear tests unitarios para servicios críticos (4h)
- Crear tests e2e para flujos principales (3h)
12.2 Mejoras Futuras
-
Sistema de Reportes Robusto:
- Tabla
admin.reportsen DB - Almacenamiento en S3 o filesystem
- Cola de jobs con Bull
- Más tipos y filtros
- Tabla
-
Caché Distribuido:
- Integración con Redis
- Cache de dashboard stats (TTL 5min)
- Invalidación inteligente
-
WebSockets:
- Updates en tiempo real de dashboard
- Notificaciones de reportes completados
- Progress de operaciones bulk
-
Permisos Granulares:
- Decorador
@RequiresPermission() - Guards basados en permisos
- Context-based permissions
- Decorador
Documento generado: 2025-11-19 Versión: 1.0 Cobertura: 100% de funcionalidad implementada Pendiente: Tests y producción-ready de reportes/caché/sesiones