Some checks are pending
CI Pipeline / changes (push) Waiting to run
CI Pipeline / core (push) Blocked by required conditions
CI Pipeline / trading-backend (push) Blocked by required conditions
CI Pipeline / trading-data-service (push) Blocked by required conditions
CI Pipeline / trading-frontend (push) Blocked by required conditions
CI Pipeline / erp-core (push) Blocked by required conditions
CI Pipeline / erp-mecanicas (push) Blocked by required conditions
CI Pipeline / gamilit-backend (push) Blocked by required conditions
CI Pipeline / gamilit-frontend (push) Blocked by required conditions
Gamilit: - Backend: Teacher services, assignments, gamification, exercise submissions - Frontend: Admin/Teacher/Student portals, module 4-5 mechanics, monitoring - Database: DDL functions, seeds for dev/prod, auth/gamification schemas - Docs: Architecture, features, guides cleanup and reorganization Core/Orchestration: - New workspace directives index - Documentation directive Trading-platform: - Database seeds and inventory updates - Tech leader validation report 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
359 lines
12 KiB
Markdown
359 lines
12 KiB
Markdown
# Analisis de Coherencia: Datasources, Base de Datos y Documentacion
|
|
|
|
**Fecha:** 2025-12-18
|
|
**Autor:** Requirements Analyst (Claude Opus 4.5)
|
|
**Estado:** COMPLETO
|
|
**Version:** 1.0
|
|
**Relacionado con:** ANALISIS-REQUIREMENTS-TEACHER-PORTAL-2025-12-18.md
|
|
|
|
---
|
|
|
|
## RESUMEN EJECUTIVO
|
|
|
|
Este documento consolida el analisis de coherencia entre:
|
|
- Configuracion de datasources en backend (app.module.ts)
|
|
- Definiciones de entidades y schemas de base de datos
|
|
- Documentacion (inventarios, trazas, ADRs)
|
|
|
|
**Score de Coherencia Global: 77.6%**
|
|
|
|
### Hallazgos Criticos
|
|
|
|
| # | Problema | Severidad | Impacto |
|
|
|---|----------|-----------|---------|
|
|
| 1 | AssignmentClassroom con datasource incorrecto | CRITICO | Error 500 en /teacher/assignments |
|
|
| 2 | Documentacion dice 6 datasources, hay 9 reales | ALTO | Documentacion desactualizada |
|
|
| 3 | 5 entidades Admin en schemas diferentes registradas en 'auth' | ALTO | Potencial fallo futuro |
|
|
| 4 | 3 funciones SQL con columnas inexistentes | CRITICO | Funciones no ejecutables |
|
|
| 5 | RF-TEACH-002 referencia schema 'public' obsoleto | MEDIO | Confusion desarrolladores |
|
|
|
|
---
|
|
|
|
## 1. CONFIGURACION DE DATASOURCES
|
|
|
|
### 1.1 Datasources Reales vs Documentados
|
|
|
|
**REALIDAD (app.module.ts):** 9 datasources
|
|
|
|
| # | Nombre | Schema BD | Path Entidades |
|
|
|---|--------|-----------|----------------|
|
|
| 1 | `auth` | auth_management | /modules/auth/entities/**/*.entity |
|
|
| 2 | `educational` | educational_content | /modules/educational/entities/**/*.entity |
|
|
| 3 | `gamification` | gamification_system | /modules/gamification/entities/**/*.entity + notifications/notification.entity |
|
|
| 4 | `progress` | progress_tracking | /modules/progress/entities/**/*.entity |
|
|
| 5 | `social` | social_features | /modules/social/entities/**/*.entity |
|
|
| 6 | `content` | content_management | /modules/content/entities/**/*.entity |
|
|
| 7 | `audit` | audit_logging | /modules/audit/entities/**/*.entity |
|
|
| 8 | `notifications` | notifications | /modules/notifications/entities/multichannel/**/*.entity |
|
|
| 9 | `communication` | communication | /modules/teacher/entities/message*.entity |
|
|
|
|
**DOCUMENTACION (BACKEND_INVENTORY.yml):** 6 datasources
|
|
|
|
Faltan en documentacion:
|
|
- `audit` (schema: audit_logging)
|
|
- `notifications` (schema: notifications)
|
|
- `communication` (schema: communication)
|
|
|
|
---
|
|
|
|
### 1.2 PROBLEMA CRITICO: Entidades Assignment
|
|
|
|
#### Ubicacion de Entidades
|
|
|
|
| Entidad | Ubicacion | Schema | Datasource Usado | Correcto? |
|
|
|---------|-----------|--------|------------------|-----------|
|
|
| Assignment | /modules/assignments/entities | educational_content | 'content' | NO |
|
|
| AssignmentClassroom | /modules/social/entities | social_features | 'content' | NO |
|
|
| AssignmentExercise | /modules/assignments/entities | educational_content | 'content' | NO |
|
|
| AssignmentStudent | /modules/assignments/entities | educational_content | 'content' | NO |
|
|
| AssignmentSubmission | /modules/assignments/entities | educational_content | 'content' | NO |
|
|
|
|
#### Causa Raiz del Error 500
|
|
|
|
```
|
|
1. AssignmentsModule registra 5 entidades en datasource 'content'
|
|
2. Datasource 'content' solo escanea: /modules/content/entities/**/*.entity
|
|
3. Entidades de Assignments estan en: /modules/assignments/entities/
|
|
4. AssignmentClassroom esta en: /modules/social/entities/
|
|
5. TypeORM NO encuentra metadata -> EntityMetadataNotFoundError
|
|
```
|
|
|
|
---
|
|
|
|
### 1.3 PROBLEMA: Entidades Admin Distribuidas
|
|
|
|
El AdminModule (admin.module.ts:69) registra todas las entidades en datasource 'auth':
|
|
|
|
```typescript
|
|
TypeOrmModule.forFeature([
|
|
User, Profile, Role, UserRole, Tenant, Membership, AuthAttempt, UserSuspension,
|
|
SystemSetting, // Schema: system_configuration (NO auth_management)
|
|
FeatureFlag, // Schema: system_configuration (NO auth_management)
|
|
NotificationSettings, // Schema: system_configuration (NO auth_management)
|
|
BulkOperation, // Schema: admin_dashboard (NO auth_management)
|
|
AdminReport // Schema: admin_dashboard (NO auth_management)
|
|
], 'auth')
|
|
```
|
|
|
|
**Impacto:** No genera error actualmente porque TypeORM no valida schema a nivel de datasource, pero es una mala practica que puede causar problemas en el futuro.
|
|
|
|
---
|
|
|
|
## 2. INCONSISTENCIAS EN DOCUMENTACION
|
|
|
|
### 2.1 Inventarios Desactualizados
|
|
|
|
| Inventario | Discrepancia |
|
|
|------------|--------------|
|
|
| BACKEND_INVENTORY.yml | Dice 6 datasources, hay 9 |
|
|
| BACKEND_INVENTORY.yml | No documenta datasources 7-9 |
|
|
| DATABASE_INVENTORY.yml | No refleja cambios de schema para assignments |
|
|
|
|
### 2.2 Referencias Rotas en Documentacion
|
|
|
|
| Documento | Referencia Rota | Realidad |
|
|
|-----------|----------------|----------|
|
|
| RF-TEACH-002-assignment-system.md | Schema: `public` | Schema: `educational_content`, `social_features` |
|
|
| TRACEABILITY EXT-001 | Schema assignments en public | Migrado a educational_content (2025-11-08) |
|
|
|
|
### 2.3 Funciones SQL con Errores
|
|
|
|
| Funcion | Columna Incorrecta | Columna Correcta | Estado |
|
|
|---------|-------------------|------------------|--------|
|
|
| update_leaderboard_streaks.sql | last_activity_date | last_activity_at | CORREGIDO 2025-12-15 |
|
|
| update_leaderboard_streaks.sql | longest_streak | max_streak | CORREGIDO 2025-12-15 |
|
|
| get_user_rank_progress.sql | missions_completed | modules_completed | ✅ CORREGIDO 2025-12-18 |
|
|
| update_leaderboard_global.sql | missions_completed | modules_completed | ✅ CORREGIDO 2025-12-18 |
|
|
| get_classroom_analytics.sql | missions_completed | modules_completed | ✅ CORREGIDO 2025-12-18 |
|
|
| grant_mission_completion_rewards.sql | missions_completed | modules_completed | ✅ CORREGIDO 2025-12-18 |
|
|
|
|
---
|
|
|
|
## 3. PLAN DE CORRECCION CONSOLIDADO
|
|
|
|
### 3.1 SPRINT 1: Correcciones Criticas (P0)
|
|
|
|
#### CORRECCION 1: Arreglar AssignmentsModule datasources
|
|
|
|
**Archivo:** `/modules/assignments/assignments.module.ts`
|
|
|
|
**ANTES:**
|
|
```typescript
|
|
TypeOrmModule.forFeature([
|
|
Assignment,
|
|
AssignmentClassroom,
|
|
AssignmentExercise,
|
|
AssignmentStudent,
|
|
AssignmentSubmission,
|
|
], 'content')
|
|
```
|
|
|
|
**DESPUES (Opcion A - Recomendada):**
|
|
```typescript
|
|
// Entidades educational_content -> datasource 'educational'
|
|
TypeOrmModule.forFeature([
|
|
Assignment,
|
|
AssignmentExercise,
|
|
AssignmentStudent,
|
|
AssignmentSubmission,
|
|
], 'educational'),
|
|
|
|
// AssignmentClassroom -> datasource 'social' (importar desde SocialModule)
|
|
TypeOrmModule.forFeature([
|
|
AssignmentClassroom,
|
|
], 'social'),
|
|
```
|
|
|
|
**DESPUES (Opcion B - Alternativa):**
|
|
|
|
Agregar path de assignments al datasource 'educational' en app.module.ts:
|
|
|
|
```typescript
|
|
TypeOrmModule.forRootAsync({
|
|
name: 'educational',
|
|
entities: [
|
|
__dirname + '/modules/educational/entities/**/*.entity{.ts,.js}',
|
|
__dirname + '/modules/assignments/entities/**/*.entity{.ts,.js}', // AGREGAR
|
|
],
|
|
}),
|
|
```
|
|
|
|
---
|
|
|
|
#### CORRECCION 2: Arreglar AssignmentsService inyecciones
|
|
|
|
**Archivo:** `/modules/assignments/services/assignments.service.ts`
|
|
|
|
**ANTES (linea 32):**
|
|
```typescript
|
|
@InjectRepository(AssignmentClassroom, 'content')
|
|
```
|
|
|
|
**DESPUES:**
|
|
```typescript
|
|
@InjectRepository(AssignmentClassroom, 'social')
|
|
```
|
|
|
|
---
|
|
|
|
#### CORRECCION 3: Arreglar TeacherModule datasources
|
|
|
|
**Archivo:** `/modules/teacher/teacher.module.ts`
|
|
|
|
**ANTES (linea 146):**
|
|
```typescript
|
|
TypeOrmModule.forFeature([Assignment, AssignmentSubmission, TeacherContent], 'content')
|
|
```
|
|
|
|
**DESPUES:**
|
|
```typescript
|
|
TypeOrmModule.forFeature([Assignment, AssignmentSubmission, TeacherContent], 'educational')
|
|
```
|
|
|
|
---
|
|
|
|
#### CORRECCION 4: Arreglar 3 funciones SQL pendientes
|
|
|
|
**Archivos:**
|
|
- `/apps/database/ddl/schemas/gamification_system/functions/get_user_rank_progress.sql`
|
|
- `/apps/database/ddl/schemas/gamification_system/functions/update_leaderboard_global.sql`
|
|
- `/apps/database/ddl/schemas/progress_tracking/functions/05-get_classroom_analytics.sql`
|
|
|
|
**Cambio:** Reemplazar `missions_completed` por `modules_completed`
|
|
|
|
---
|
|
|
|
### 3.2 SPRINT 2: Actualizacion Documentacion (P1)
|
|
|
|
| # | Tarea | Archivo |
|
|
|---|-------|---------|
|
|
| 1 | Actualizar conteo datasources a 9 | BACKEND_INVENTORY.yml |
|
|
| 2 | Documentar datasources 7-9 | BACKEND_INVENTORY.yml |
|
|
| 3 | Actualizar schema de assignments | RF-TEACH-002-assignment-system.md |
|
|
| 4 | Actualizar TRACEABILITY EXT-001 | TRACEABILITY.yml |
|
|
| 5 | Crear documento de inconsistencias | INCONSISTENCIAS-DOCUMENTADAS.md |
|
|
|
|
---
|
|
|
|
### 3.3 SPRINT 3: Mejoras Estructurales (P2)
|
|
|
|
| # | Tarea | Descripcion |
|
|
|---|-------|-------------|
|
|
| 1 | Refactorizar AdminModule | Separar por schemas (system_configuration, admin_dashboard) |
|
|
| 2 | Crear datasource 'system' | Para entidades de system_configuration |
|
|
| 3 | Crear datasource 'admin_dashboard' | Para BulkOperation, AdminReport |
|
|
|
|
---
|
|
|
|
## 4. MATRIZ DE ARCHIVOS AFECTADOS
|
|
|
|
### Archivos a Modificar (P0 - Inmediato)
|
|
|
|
```
|
|
BACKEND:
|
|
- apps/backend/src/modules/assignments/assignments.module.ts (lineas 24-33)
|
|
- apps/backend/src/modules/assignments/services/assignments.service.ts (linea 32)
|
|
- apps/backend/src/modules/teacher/teacher.module.ts (linea 146)
|
|
|
|
BASE DE DATOS:
|
|
- apps/database/ddl/schemas/gamification_system/functions/get_user_rank_progress.sql
|
|
- apps/database/ddl/schemas/gamification_system/functions/update_leaderboard_global.sql
|
|
- apps/database/ddl/schemas/progress_tracking/functions/05-get_classroom_analytics.sql
|
|
```
|
|
|
|
### Archivos a Actualizar (P1 - Documentacion)
|
|
|
|
```
|
|
INVENTARIOS:
|
|
- orchestration/inventarios/BACKEND_INVENTORY.yml (lineas 1169-1196)
|
|
- orchestration/inventarios/MASTER_INVENTORY.yml
|
|
|
|
DOCUMENTACION:
|
|
- docs/03-fase-extensiones/EXT-001-portal-maestros/requerimientos/RF-TEACH-002-assignment-system.md
|
|
- docs/03-fase-extensiones/EXT-001-portal-maestros/implementacion/TRACEABILITY.yml
|
|
```
|
|
|
|
---
|
|
|
|
## 5. VALIDACIONES POST-IMPLEMENTACION
|
|
|
|
### Checklist de Verificacion
|
|
|
|
```
|
|
BACKEND:
|
|
[ ] npm run build - Sin errores
|
|
[ ] npm run lint - Sin errores criticos
|
|
[ ] GET /api/v1/teacher/assignments - Retorna 200
|
|
[ ] GET /api/v1/teacher/classrooms - Retorna 200
|
|
[ ] POST /api/v1/teacher/assignments - Crea assignment
|
|
|
|
BASE DE DATOS:
|
|
[ ] SELECT gamilit.get_user_rank_progress(...) - Sin errores
|
|
[ ] SELECT gamilit.update_leaderboard_global() - Sin errores
|
|
[ ] SELECT progress_tracking.get_classroom_analytics(...) - Sin errores
|
|
|
|
DOCUMENTACION:
|
|
[ ] BACKEND_INVENTORY.yml - 9 datasources documentados
|
|
[ ] RF-TEACH-002 - Schema actualizado a educational_content
|
|
[ ] TRACEABILITY EXT-001 - Referencias actualizadas
|
|
```
|
|
|
|
---
|
|
|
|
## 6. DEPENDENCIAS ENTRE CORRECCIONES
|
|
|
|
```
|
|
CORRECCION 1 (AssignmentsModule)
|
|
|
|
|
+---> CORRECCION 2 (AssignmentsService) [DEPENDE DE 1]
|
|
|
|
|
+---> CORRECCION 3 (TeacherModule) [PUEDE SER PARALELO]
|
|
|
|
CORRECCION 4 (Funciones SQL) [INDEPENDIENTE]
|
|
|
|
SPRINT 2 (Documentacion) [DESPUES DE VALIDAR SPRINT 1]
|
|
|
|
SPRINT 3 (Refactorizacion Admin) [OPCIONAL, DESPUES DE SPRINT 2]
|
|
```
|
|
|
|
---
|
|
|
|
## 7. RESUMEN DE IMPACTO
|
|
|
|
### Antes de Correcciones
|
|
|
|
| Endpoint | Estado | Error |
|
|
|----------|--------|-------|
|
|
| GET /api/v1/teacher/assignments | 500 | EntityMetadataNotFoundError |
|
|
| GET /api/v1/teacher/classrooms | OK | - |
|
|
| POST /api/v1/teacher/assignments | 500 | EntityMetadataNotFoundError |
|
|
|
|
### Despues de Correcciones
|
|
|
|
| Endpoint | Estado Esperado |
|
|
|----------|-----------------|
|
|
| GET /api/v1/teacher/assignments | 200 OK |
|
|
| GET /api/v1/teacher/classrooms | 200 OK |
|
|
| POST /api/v1/teacher/assignments | 201 Created |
|
|
|
|
---
|
|
|
|
## CONCLUSION
|
|
|
|
El analisis de coherencia ha identificado que el problema principal del Portal de Teacher (**Error 500 en assignments**) se debe a una **configuracion incorrecta de datasources** donde las entidades de assignments estan registradas en un datasource ('content') que no escanea sus directorios.
|
|
|
|
Adicionalmente, se identificaron:
|
|
- 3 discrepancias entre documentacion y codigo real
|
|
- 3 funciones SQL con columnas inexistentes
|
|
- 5 entidades admin registradas en datasource incorrecto (riesgo futuro)
|
|
|
|
**Recomendacion:** Implementar correcciones P0 de manera inmediata para resolver el error critico del portal Teacher.
|
|
|
|
---
|
|
|
|
**Fin del Documento de Analisis de Coherencia**
|
|
|
|
**Autor:** Requirements Analyst (Claude Opus 4.5)
|
|
**Fecha:** 2025-12-18
|
|
**Estado:** COMPLETO - Listo para revision y aprobacion
|