ML Engine Updates: - Updated BTCUSD with Polygon API data (2024-2025): 215,699 new records - Re-trained all ML models: Attention (R²: 0.223), Base, Metamodel (87.3% confidence) - Backtest results: +176.71R profit with aggressive_filter strategy Documentation Consolidation: - Created docs/99-analisis/_MAP.md index with 13 new analysis documents - Consolidated inventories: removed duplicates from orchestration/inventarios/ - Updated ML_INVENTORY.yml with BTCUSD metrics and training results - Added execution reports: FASE11-BTCUSD, correction issues, alignment validation Architecture & Integration: - Updated all module documentation with NEXUS v3.4 frontmatter - Fixed _MAP.md indexes across all folders - Updated orchestration plans and traces Files: 229 changed, 5064 insertions(+), 1872 deletions(-) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
323 lines
8.0 KiB
Markdown
323 lines
8.0 KiB
Markdown
---
|
|
title: Reporte de Corrección de Issues
|
|
date: 2026-01-07
|
|
project: trading-platform
|
|
type: reporte-tecnico
|
|
status: completado
|
|
author: Claude Code (Opus 4.5)
|
|
---
|
|
|
|
# Reporte de Corrección de Issues - Trading Platform
|
|
|
|
## Resumen Ejecutivo
|
|
|
|
| Métrica | Valor |
|
|
|---------|-------|
|
|
| **Fecha** | 2026-01-07 |
|
|
| **Issues Corregidos** | 12 |
|
|
| **Categorías** | Database, Backend, Configuración |
|
|
| **Build Status** | ✅ EXITOSO |
|
|
| **DDL Status** | ✅ 73 tablas, 102 FK |
|
|
|
|
---
|
|
|
|
## 1. Correcciones de Base de Datos
|
|
|
|
### 1.1 pgvector Extension (NUEVO)
|
|
|
|
**Problema:** La tabla `llm.embeddings` usa tipo `vector(1536)` que requiere la extensión pgvector.
|
|
|
|
**Archivos creados/modificados:**
|
|
- `apps/database/ddl/schemas/llm/00-extensions.sql` (CREADO)
|
|
- `apps/database/scripts/create-database.sh` (MODIFICADO)
|
|
- `docker-compose.yml` (MODIFICADO)
|
|
|
|
**Solución:**
|
|
```sql
|
|
-- apps/database/ddl/schemas/llm/00-extensions.sql
|
|
CREATE EXTENSION IF NOT EXISTS "vector";
|
|
COMMENT ON EXTENSION "vector" IS 'Vector similarity search extension (pgvector) for LLM embeddings';
|
|
```
|
|
|
|
**Docker:**
|
|
```yaml
|
|
postgres:
|
|
image: pgvector/pgvector:pg16 # Antes: postgres:16-alpine
|
|
```
|
|
|
|
### 1.2 process_transaction Function
|
|
|
|
**Problema:** Error "v_wallet is not a scalar variable" en línea 39.
|
|
|
|
**Archivo:** `apps/database/ddl/schemas/financial/functions/02-process_transaction.sql`
|
|
|
|
**Causa:** Variable `v_wallet` declarada como RECORD pero se intentaba asignar status a ella.
|
|
|
|
**Solución:**
|
|
```sql
|
|
DECLARE
|
|
v_wallet RECORD;
|
|
v_tx_id UUID;
|
|
v_existing_status financial.transaction_status; -- Variable agregada
|
|
...
|
|
BEGIN
|
|
-- Cambio: SELECT INTO usa variables separadas
|
|
SELECT id, status INTO v_tx_id, v_existing_status
|
|
FROM financial.wallet_transactions
|
|
WHERE idempotency_key = p_idempotency_key;
|
|
```
|
|
|
|
**Validación:**
|
|
- Base de datos recreada exitosamente
|
|
- 73 tablas creadas
|
|
- 102 foreign keys establecidas
|
|
- Todas las funciones compiladas sin errores
|
|
|
|
---
|
|
|
|
## 2. Correcciones de Backend TypeScript
|
|
|
|
### 2.1 Dependencias Faltantes
|
|
|
|
**Problema:** `class-validator` y `class-transformer` no instalados.
|
|
|
|
**Solución:**
|
|
```bash
|
|
npm install class-validator class-transformer
|
|
```
|
|
|
|
### 2.2 DTO Property Initialization (TS2564)
|
|
|
|
**Problema:** ~25 errores por propiedades sin inicializar en DTOs.
|
|
|
|
**Archivos corregidos:**
|
|
- `src/modules/auth/dto/login.dto.ts`
|
|
- `src/modules/auth/dto/register.dto.ts`
|
|
- `src/modules/auth/dto/change-password.dto.ts`
|
|
- `src/modules/auth/dto/oauth.dto.ts`
|
|
- `src/modules/auth/dto/refresh-token.dto.ts`
|
|
|
|
**Solución:** Agregar definite assignment assertion (`!`):
|
|
```typescript
|
|
// Antes
|
|
@IsEmail()
|
|
email: string;
|
|
|
|
// Después
|
|
@IsEmail()
|
|
email!: string;
|
|
```
|
|
|
|
### 2.3 TypeScript Decorators (TS1240)
|
|
|
|
**Problema:** Error "Unable to resolve signature of property decorator".
|
|
|
|
**Archivo:** `apps/backend/tsconfig.json`
|
|
|
|
**Solución:**
|
|
```json
|
|
{
|
|
"compilerOptions": {
|
|
"experimentalDecorators": true,
|
|
"emitDecoratorMetadata": true
|
|
}
|
|
}
|
|
```
|
|
|
|
### 2.4 import.meta Error (TS1470)
|
|
|
|
**Problema:** `import.meta.url` no permitido en CommonJS output.
|
|
|
|
**Archivo:** `src/config/swagger.config.ts`
|
|
|
|
**Solución:**
|
|
```typescript
|
|
// Antes
|
|
import { fileURLToPath } from 'url';
|
|
const __filename = fileURLToPath(import.meta.url);
|
|
const __dirname = path.dirname(__filename);
|
|
|
|
// Después
|
|
const srcDir = path.join(process.cwd(), 'src');
|
|
```
|
|
|
|
### 2.5 database.mock.ts Tipos
|
|
|
|
**Problema:** Generic constraint error y exportación duplicada.
|
|
|
|
**Archivo:** `src/__tests__/mocks/database.mock.ts`
|
|
|
|
**Solución:**
|
|
```typescript
|
|
// Antes
|
|
export const createMockQueryResult = <T>(rows: T[] = []): QueryResult<T>
|
|
|
|
// Después
|
|
import { QueryResultRow } from 'pg';
|
|
export const createMockQueryResult = <T extends QueryResultRow>(rows: T[] = []): QueryResult<T>
|
|
```
|
|
|
|
### 2.6 config/index.ts Redis
|
|
|
|
**Problema:** Propiedades `url` y `db` faltantes en configuración redis.
|
|
|
|
**Archivo:** `src/config/index.ts`
|
|
|
|
**Solución:**
|
|
```typescript
|
|
redis: {
|
|
url: process.env.REDIS_URL, // Agregado
|
|
host: process.env.REDIS_HOST || 'localhost',
|
|
port: parseInt(process.env.REDIS_PORT || '6379', 10),
|
|
password: process.env.REDIS_PASSWORD,
|
|
db: parseInt(process.env.REDIS_DB || '0', 10), // Agregado
|
|
}
|
|
```
|
|
|
|
### 2.7 TwoFactor Service - Método Faltante
|
|
|
|
**Problema:** Controller llama `getTOTPStatus` que no existía en el servicio.
|
|
|
|
**Archivo:** `src/modules/auth/services/twofa.service.ts`
|
|
|
|
**Solución:** Agregar método:
|
|
```typescript
|
|
async getTOTPStatus(userId: string): Promise<{
|
|
enabled: boolean;
|
|
method: '2fa_totp' | null;
|
|
backupCodesRemaining: number;
|
|
}> {
|
|
const result = await db.query<{ totp_enabled: boolean; backup_codes: string[] }>(
|
|
'SELECT totp_enabled, backup_codes FROM users WHERE id = $1',
|
|
[userId]
|
|
);
|
|
// ... implementation
|
|
}
|
|
```
|
|
|
|
### 2.8 Controllers AuthRequest Interface
|
|
|
|
**Problema:** Interface local incompatible con Express augmented types.
|
|
|
|
**Archivos corregidos:**
|
|
- `src/modules/education/controllers/gamification.controller.ts`
|
|
- `src/modules/education/controllers/quiz.controller.ts`
|
|
|
|
**Solución:**
|
|
```typescript
|
|
// Antes
|
|
interface AuthRequest extends Request {
|
|
user?: { id: string }; // Incompatible con AuthenticatedUser
|
|
}
|
|
|
|
// Después
|
|
type AuthRequest = Request; // Usa el tipo augmentado de Express
|
|
```
|
|
|
|
### 2.9 tsconfig.json Test Exclusion
|
|
|
|
**Problema:** Archivos de test `.spec.ts` y carpetas `__tests__` no excluidos del build.
|
|
|
|
**Archivo:** `apps/backend/tsconfig.json`
|
|
|
|
**Solución:**
|
|
```json
|
|
{
|
|
"exclude": ["node_modules", "dist", "**/*.test.ts", "**/*.spec.ts", "**/__tests__/**"]
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## 3. Resumen de Archivos Modificados
|
|
|
|
### Database (4 archivos)
|
|
| Archivo | Acción |
|
|
|---------|--------|
|
|
| `apps/database/ddl/schemas/llm/00-extensions.sql` | CREADO |
|
|
| `apps/database/ddl/schemas/financial/functions/02-process_transaction.sql` | CORREGIDO |
|
|
| `apps/database/scripts/create-database.sh` | ACTUALIZADO |
|
|
| `docker-compose.yml` | ACTUALIZADO |
|
|
|
|
### Backend (12 archivos)
|
|
| Archivo | Acción |
|
|
|---------|--------|
|
|
| `apps/backend/package.json` | ACTUALIZADO (dependencias) |
|
|
| `apps/backend/tsconfig.json` | CORREGIDO |
|
|
| `src/modules/auth/dto/login.dto.ts` | CORREGIDO |
|
|
| `src/modules/auth/dto/register.dto.ts` | CORREGIDO |
|
|
| `src/modules/auth/dto/change-password.dto.ts` | CORREGIDO |
|
|
| `src/modules/auth/dto/oauth.dto.ts` | CORREGIDO |
|
|
| `src/modules/auth/dto/refresh-token.dto.ts` | CORREGIDO |
|
|
| `src/config/swagger.config.ts` | CORREGIDO |
|
|
| `src/config/index.ts` | CORREGIDO |
|
|
| `src/__tests__/mocks/database.mock.ts` | CORREGIDO |
|
|
| `src/modules/auth/services/twofa.service.ts` | ACTUALIZADO |
|
|
| `src/modules/education/controllers/gamification.controller.ts` | CORREGIDO |
|
|
| `src/modules/education/controllers/quiz.controller.ts` | CORREGIDO |
|
|
|
|
---
|
|
|
|
## 4. Validación Final
|
|
|
|
### Database
|
|
```
|
|
✅ Base de datos recreada exitosamente
|
|
✅ 73 tablas creadas
|
|
✅ 102 foreign keys
|
|
✅ pgvector extension habilitada
|
|
✅ process_transaction function compilada
|
|
```
|
|
|
|
### Backend
|
|
```
|
|
✅ npm run build - EXITOSO
|
|
✅ 0 errores TypeScript (código producción)
|
|
✅ Dependencias instaladas correctamente
|
|
✅ Decoradores funcionando
|
|
```
|
|
|
|
---
|
|
|
|
## 5. Decisiones Tomadas
|
|
|
|
| Decisión | Justificación |
|
|
|----------|---------------|
|
|
| Excluir tests del build | Usuario solicitó solo errores críticos |
|
|
| Usar `process.cwd()` en swagger | Compatibilidad con CommonJS |
|
|
| Agregar `getTOTPStatus` al servicio | Controller existente dependía del método |
|
|
| Usar `type AuthRequest = Request` | Consistencia con otros controladores |
|
|
|
|
---
|
|
|
|
## 6. Notas Técnicas
|
|
|
|
### pgvector en Desarrollo Local
|
|
- Requiere imagen Docker `pgvector/pgvector:pg16`
|
|
- PostgreSQL nativo sin pgvector fallará al crear `llm.embeddings`
|
|
- En producción, asegurar que PostgreSQL tenga pgvector instalado
|
|
|
|
### Tests Pendientes
|
|
- ~60 errores en archivos de test no corregidos (excluidos del scope)
|
|
- Recomendación: Sprint dedicado a actualizar tests
|
|
|
|
---
|
|
|
|
## 7. Comandos de Verificación
|
|
|
|
```bash
|
|
# Recrear base de datos
|
|
cd apps/database && ./drop-and-recreate-database.sh
|
|
|
|
# Build backend
|
|
cd apps/backend && npm run build
|
|
|
|
# Verificar sin errores
|
|
echo $? # Debe ser 0
|
|
```
|
|
|
|
---
|
|
|
|
**Generado por:** Claude Code (Opus 4.5)
|
|
**Fecha:** 2026-01-07
|