trading-platform/docs/99-analisis/PLAN-IMPLEMENTACION-CORRECCIONES.md
Adrian Flores Cortes 8f0235c096 [TASK-2026-02-06-ANALISIS-INTEGRAL-DOCUMENTACION] docs: Complete 6-phase documentation analysis
- FASE-0: Diagnostic audit of 500+ files, 33 findings cataloged (7P0/8P1/12P2/6P3)
- FASE-1: Resolved 7 P0 critical conflicts (ports, paths, dedup OQI-010/ADR-002, orphan schemas)
- FASE-2: Resolved 8 P1 issues (traces, README/CLAUDE.md, DEPENDENCY-GRAPH v2.0, DDL drift, stack versions, DoR/DoD)
- FASE-3: Resolved 12 P2 issues (archived tasks indexed, RNFs created, OQI-010 US/RF/ET, AGENTS v2.0)
- FASE-4: Purged 3 obsolete docs to _archive/, fixed MODELO-NEGOCIO.md broken ref
- FASE-5: Cross-layer validation (DDL→OQI 66%, OQI→BE 72%, BE→FE 78%, Inventories 95%)
- FASE-6: INFORME-FINAL, SA-INDEX (18 subagents), METADATA COMPLETED

27/33 findings resolved (82%), 6 P3 deferred to backlog.
18 new files created, 40+ modified, 4 archived.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 10:57:03 -06:00

23 KiB

id title type project version updated_date
PLAN-IMPLEMENTACION-CORRECCIONES PLAN DE IMPLEMENTACIÓN DE CORRECCIONES - Trading Platform Documentation trading-platform 1.0.0 2026-01-04

PLAN DE IMPLEMENTACIÓN DE CORRECCIONES - Trading Platform

Fecha: 2025-12-06 Versión: 2.0.0 - COMPLETADO Basado en: REPORTE-ANALISIS-REQUISITOS.md (ARCHIVADO → docs/_archive/) Estado: TODAS LAS CORRECCIONES DE BASE DE DATOS IMPLEMENTADAS


RESUMEN DEL PLAN

Este documento define el plan de implementación para corregir todas las inconsistencias identificadas en el análisis de requisitos. Incluye matriz de trazabilidad para validar cobertura completa.

Métricas del Plan

Métrica Valor
Total de correcciones 55
Sprints estimados 3
Story Points totales 47 SP
Épicas impactadas 8
ADRs a crear 5
Tablas a definir 8

FASE 0: DECISIONES ARQUITECTÓNICAS (Pre-Sprint)

Objetivo: Resolver conflictos críticos que bloquean desarrollo Duración: 2-3 días de refinamiento con stakeholders

0.1 Decisiones Requeridas

ID Decisión Opciones Impacto Responsable
DEC-001 Moneda principal USD con conversión MXN / MXN con conversión USD OQI-005, pricing, facturación Product Owner
DEC-002 Fusión OQI-004/OQI-008 Fusionar en 1 épica / Delimitar responsabilidades Arquitectura, roadmap Tech Lead
DEC-003 Schema de usuarios public.users / auth.users separado Todas las épicas DBA
DEC-004 Vector Database para LLM pgvector / Pinecone / Weaviate OQI-007, costos Tech Lead
DEC-005 Distribución PAMM Mensual / Trimestral OQI-004, finanzas Product Owner

0.2 Entregables Fase 0

□ Documento de decisiones firmado
□ ADR-002 creado (Estructura Monorepo)
□ Definición clara de límites OQI-004 vs OQI-008
□ Estrategia de moneda documentada

FASE 1: CORRECCIONES CRÍTICAS (Sprint 1)

Objetivo: Eliminar bloqueos y dependencias circulares Story Points: 18 SP

1.1 Resolver Dependencia Circular OQI-003 ↔ OQI-006

Tarea Descripción SP Archivo a Modificar
CIR-001 Definir interfaz ISignalProvider abstracta 1 ET-TRD-002-api.md
CIR-002 Crear MockSignalProvider para desarrollo OQI-003 1 ET-TRD-002-api.md
CIR-003 Documentar contrato de datos entre módulos 1 ARQUITECTURA-UNIFICADA.md
CIR-004 Actualizar diagrama de dependencias 0.5 docs/01-arquitectura/

Trazabilidad: Corrige TRD-001, DEP-001

1.2 Unificar Definición de Wallets

Tarea Descripción SP Archivo a Modificar
WAL-001 Definir schema único financial.wallets 2 ET-PAY-003-database.md
WAL-002 Eliminar wallet de OQI-004 (usar referencia) 0.5 ET-INV-003-database.md
WAL-003 Eliminar wallet de OQI-008 (usar referencia) 0.5 ET-PTF-003-database.md
WAL-004 Documentar extensiones por módulo 1 ARQUITECTURA-UNIFICADA.md
WAL-005 Definir tabla financial.wallet_audit_log 1 ET-PAY-003-database.md

Trazabilidad: Corrige PAY-002, duplicación wallets

1.3 Resolver Conflicto de Moneda

Tarea Descripción SP Archivo a Modificar
MON-001 Definir moneda principal según DEC-001 0.5 ET-PAY-001-requirements.md
MON-002 Actualizar planes de pricing 0.5 ET-PAY-001-requirements.md
MON-003 Documentar estrategia multi-currency 1 ET-PAY-002-api.md
MON-004 Definir tabla currency_exchange_rates 1 ET-PAY-003-database.md

Trazabilidad: Corrige PAY-001

1.4 Delimitar OQI-004 vs OQI-008

Tarea Descripción SP Archivo a Modificar
DUP-001 Documentar responsabilidades exclusivas OQI-004 1 OQI-004/README.md
DUP-002 Documentar responsabilidades exclusivas OQI-008 1 OQI-008/README.md
DUP-003 Unificar perfiles de riesgo 1 ET-INV-001-requirements.md
DUP-004 Definir cuestionario completo (15 preguntas) 1 ET-PTF-001-requirements.md
DUP-005 Eliminar componentes duplicados de frontend 1 ET-PTF-004-frontend.md

Trazabilidad: Corrige INV-005, PTF-001, PTF-002, DEP-002

1.5 Crear ADRs Faltantes

Tarea Descripción SP Archivo a Crear
ADR-001 Crear ADR-002: Estructura Monorepo 1 docs/97-adr/ADR-002-monorepo.md
ADR-002 Crear ADR-003: Estrategia de Testing 1 docs/97-adr/ADR-003-testing.md

Trazabilidad: Corrige gaps de arquitectura


FASE 2: CORRECCIONES ALTAS (Sprint 2)

Objetivo: Completar schemas y especificaciones técnicas Story Points: 17 SP

2.1 Completar Tablas Faltantes - Education

Tarea Descripción SP Archivo a Modificar
EDU-T01 Definir schema education.user_gamification_profile 1 ET-EDU-001-database.md
EDU-T02 Definir schema education.user_activity_log 1 ET-EDU-001-database.md
EDU-T03 Definir schema education.course_reviews 0.5 ET-EDU-001-database.md
EDU-T04 Definir schema education.certificates 0.5 ET-EDU-001-database.md
EDU-T05 Documentar algoritmo de progreso 0.5 ET-EDU-002-api.md
EDU-T06 Documentar workflow de certificados 0.5 ET-EDU-002-api.md

Trazabilidad: Corrige EDU-001, EDU-002, EDU-003, EDU-005, EDU-006

2.2 Completar Tablas Faltantes - LLM

Tarea Descripción SP Archivo a Modificar
LLM-T01 Definir schema llm.user_preferences 1 ET-LLM-003-database.md
LLM-T02 Definir schema llm.user_memory 1 ET-LLM-003-database.md
LLM-T03 Especificar Vector Database (según DEC-004) 1 ET-LLM-001-requirements.md
LLM-T04 Documentar RAG pipeline 1 ET-LLM-002-api.md
LLM-T05 Definir límites de contexto 0.5 ET-LLM-002-api.md
LLM-T06 Documentar modo proactivo 0.5 ET-LLM-002-api.md

Trazabilidad: Corrige LLM-001, LLM-002, LLM-003, LLM-004

2.3 Completar Trading Engine

Tarea Descripción SP Archivo a Modificar
TRD-T01 Especificar algoritmo Paper Engine 2 ET-TRD-002-api.md
TRD-T02 Agregar 'partially_filled' a ENUM 0.5 ET-TRD-003-database.md
TRD-T03 Definir ML overlay endpoints 1 ET-TRD-002-api.md
TRD-T04 Estandarizar latency simulation 0.5 ET-TRD-001-requirements.md

Trazabilidad: Corrige TRD-002, TRD-003, TRD-004, TRD-006

2.4 Completar Payments

Tarea Descripción SP Archivo a Modificar
PAY-T01 Documentar Stripe webhook handlers 1 ET-PAY-002-api.md
PAY-T02 Especificar 6 historias faltantes 2 ET-PAY-001-requirements.md
PAY-T03 Documentar refund policy técnicamente 0.5 ET-PAY-002-api.md

Trazabilidad: Corrige PAY-003, PAY-004, PAY-005

2.5 Estandarización Global

Tarea Descripción SP Archivos a Modificar
STD-001 Estandarizar TIMESTAMPTZ en todos los schemas 1 Todos los ET-*-database.md
STD-002 Definir schema auth explícitamente 0.5 ET-AUTH-003-database.md
STD-003 Corregir referencias a users (auth.users) 0.5 Todos los ET-*-database.md

Trazabilidad: Corrige AUTH-001, DB-001, DB-002


FASE 3: CORRECCIONES MEDIAS (Sprint 3)

Objetivo: Completar documentación y detalles técnicos Story Points: 12 SP

3.1 Completar Especificaciones Auth

Tarea Descripción SP Archivo a Modificar
AUTH-T01 Documentar endpoint resend-verification 0.5 ET-AUTH-002-api.md
AUTH-T02 Documentar endpoint backup-codes 0.5 ET-AUTH-002-api.md
AUTH-T03 Especificar TTL de tempToken 0.5 ET-AUTH-003-database.md
AUTH-T04 Completar schema login_attempts 0.5 ET-AUTH-003-database.md
AUTH-T05 Definir tabla rate_limiting_config 0.5 ET-AUTH-003-database.md

Trazabilidad: Corrige AUTH-002, AUTH-003, AUTH-005, AUTH-006

3.2 Índices de Performance

Tarea Descripción SP Archivo a Modificar
IDX-001 Definir índices para auth (login_attempts, sessions) 1 ET-AUTH-003-database.md
IDX-002 Definir índices para education (enrollments, progress) 1 ET-EDU-001-database.md
IDX-003 Definir índices para trading (positions, orders) 1 ET-TRD-003-database.md
IDX-004 Definir índices para financial (transactions, wallets) 1 ET-PAY-003-database.md

Trazabilidad: Corrige AUTH-008, DB-003

3.3 Completar Investment/Portfolio

Tarea Descripción SP Archivo a Modificar
INV-T01 Definir fórmula de cálculo de rendimiento 0.5 ET-INV-002-api.md
INV-T02 Documentar withdrawal rules completas 0.5 ET-INV-003-database.md
INV-T03 Especificar Monte Carlo simulation 1 ET-PTF-002-api.md
INV-T04 Definir rebalancing triggers 0.5 ET-PTF-003-database.md

Trazabilidad: Corrige INV-003, INV-004, PTF-003, PTF-004

3.4 Completar ML Signals

Tarea Descripción SP Archivo a Modificar
ML-T01 Documentar actualización actual_outcome 0.5 ET-ML-002-api.md
ML-T02 Especificar feature normalization 0.5 ET-ML-001-requirements.md
ML-T03 Definir model versioning strategy 0.5 ET-ML-003-database.md
ML-T04 Calibrar confidence thresholds 0.5 ET-ML-002-api.md

Trazabilidad: Corrige ML-001, ML-002, ML-004, ML-006

3.5 Crear ADRs Restantes

Tarea Descripción SP Archivo a Crear
ADR-T01 Crear ADR-004: DevOps y CI/CD 1 docs/97-adr/ADR-004-devops.md
ADR-T02 Crear ADR-005: Estrategia de Caching 1 docs/97-adr/ADR-005-caching.md
ADR-T03 Crear ADR-006: Seguridad y Autenticación 1 docs/97-adr/ADR-006-security.md

Trazabilidad: Corrige gaps de arquitectura


MATRIZ DE TRAZABILIDAD COMPLETA

Hallazgos vs Correcciones

ID Hallazgo Severidad Corregido Por Sprint
AUTH-001 ALTA STD-001 2
AUTH-002 MEDIA AUTH-T01, AUTH-T02 3
AUTH-003 MEDIA AUTH-T03 3
AUTH-004 BAJA - (backlog) -
AUTH-005 ALTA AUTH-T04 3
AUTH-006 MEDIA AUTH-T05 3
AUTH-007 BAJA - (backlog) -
AUTH-008 MEDIA IDX-001 3
EDU-001 CRÍTICA EDU-T01 2
EDU-002 CRÍTICA EDU-T02 2
EDU-003 ALTA EDU-T03 2
EDU-004 ALTA - (dev phase) -
EDU-005 MEDIA EDU-T05 2
EDU-006 MEDIA EDU-T06 2
EDU-007 BAJA - (backlog) -
TRD-001 CRÍTICA CIR-001 a CIR-004 1
TRD-002 CRÍTICA TRD-T01 2
TRD-003 ALTA TRD-T03 2
TRD-004 ALTA TRD-T02 2
TRD-005 MEDIA - (backlog) -
TRD-006 MEDIA TRD-T04 2
TRD-007 BAJA - (backlog) -
INV-001 ALTA DEC-005 0
INV-002 ALTA MON-001 1
INV-003 MEDIA INV-T01 3
INV-004 MEDIA INV-T02 3
INV-005 CRÍTICA DUP-001 a DUP-005 1
INV-006 BAJA - (backlog) -
PAY-001 CRÍTICA MON-001 a MON-004 1
PAY-002 CRÍTICA WAL-001 a WAL-005 1
PAY-003 ALTA PAY-T02 2
PAY-004 ALTA PAY-T01 2
PAY-005 MEDIA PAY-T03 2
PAY-006 MEDIA - (backlog) -
PAY-007 BAJA - (backlog) -
ML-001 ALTA ML-T01 3
ML-002 ALTA ML-T02 3
ML-003 MEDIA - (backlog) -
ML-004 MEDIA ML-T03 3
ML-005 BAJA - (backlog) -
ML-006 MEDIA ML-T04 3
LLM-001 CRÍTICA LLM-T01, LLM-T02 2
LLM-002 CRÍTICA LLM-T03, LLM-T04 2
LLM-003 ALTA LLM-T06 2
LLM-004 ALTA LLM-T05 2
LLM-005 MEDIA - (backlog) -
LLM-006 BAJA - (backlog) -
PTF-001 CRÍTICA DUP-001 a DUP-005 1
PTF-002 ALTA DUP-004 1
PTF-003 ALTA INV-T03 3
PTF-004 MEDIA INV-T04 3
PTF-005 MEDIA - (backlog) -
PTF-006 BAJA - (backlog) -
DB-001 CRÍTICA STD-003 2
DB-002 ALTA STD-002 2
DB-003 ALTA IDX-001 a IDX-004 3
DB-004 MEDIA - (backlog) -
DB-005 MEDIA - (backlog) -
DEP-001 CRÍTICA CIR-001 a CIR-004 1
DEP-002 CRÍTICA DUP-001 a DUP-005 1
DEP-003 UNDEFINED LLM-T04 (parcial) 2
DEP-004 MISSING - (ver sección 8) -
DEP-005 MISSING - (ver sección 8) -

VALIDACIÓN DE COBERTURA

Análisis de Gaps

Hallazgos NO Cubiertos en Plan (Severidad BAJA - Backlog)

ID Descripción Justificación
AUTH-004 OAuth providers sin prioridad No bloquea, definir en implementación
AUTH-007 Diagrama MFA incompleto Documentación secundaria
EDU-007 Prerequisitos sin validación Feature enhancement
TRD-005 Slippage sin parámetros Definir en testing
TRD-007 Librería de gráficos Ya está en stack (Lightweight Charts)
INV-006 Reportes sin formato Definir en frontend
PAY-006 CFDI sin detalles Fase 2 de pagos (México)
PAY-007 Templates de notificación Definir en frontend
ML-003 AMDDetector Feature futura
ML-005 Backtesting framework Post-MVP
LLM-005 Datos de mercado Integración con OQI-003
LLM-006 UI chat Definir en frontend
PTF-005 Benchmark comparison Feature enhancement
PTF-006 Goal tracking Feature enhancement
DB-004 FK inconsistentes Validar en migración
DB-005 ENUMs duplicados Refactor post-MVP

Dependencias NO Cubiertas Completamente

ID Problema Corrección Propuesta
DEP-003 LLM necesita datos de todos los módulos Agregar tarea de definición de interfaces de datos para LLM
DEP-004 Cursos premium sin pagos documentado Agregar integración OQI-002 → OQI-005
DEP-005 Trading sin billing documentado Agregar integración OQI-003 → OQI-005

CORRECCIONES ADICIONALES IDENTIFICADAS

8.1 Relaciones Faltantes Detectadas

ID Relación Corrección Sprint
REL-001 OQI-002 → OQI-005 (cursos premium) Documentar en ET-EDU-001-requirements.md 2
REL-002 OQI-003 → OQI-005 (trading billing) Documentar en ET-TRD-001-requirements.md 2
REL-003 OQI-007 → OQI-001 (contexto de usuario) Documentar en ET-LLM-001-requirements.md 2
REL-004 OQI-007 → OQI-002 (contenido educativo) Documentar en ET-LLM-001-requirements.md 2
REL-005 OQI-007 → OQI-003 (datos de trading) Documentar en ET-LLM-001-requirements.md 2
REL-006 OQI-007 → OQI-004 (datos de inversión) Documentar en ET-LLM-001-requirements.md 2
REL-007 OQI-001 → OQI-005 (subscription status) Documentar en ET-AUTH-001-requirements.md 2

8.2 Objetos Dependientes No Especificados

Objeto Módulo Origen Módulos que lo Usan Corrección
user_id FK OQI-001 TODOS Definir como auth.users.id universalmente
subscription_status OQI-005 OQI-001, OQI-002, OQI-003 Crear ENUM compartido
risk_profile OQI-004/008 OQI-003, OQI-006 Unificar en schema compartido
wallet_id OQI-005 OQI-004, OQI-008 Ya cubierto en WAL-001
signal_data OQI-006 OQI-003, OQI-007 Definir interfaz en CIR-001
prediction_result OQI-006 OQI-003, OQI-007, OQI-008 Documentar estructura

8.3 Componentes Frontend Duplicados

Componente OQI-004 OQI-008 Acción
PerformanceChart AllocationChart Unificar en shared components
TransactionList - Reusar
InvestmentDashboard PortfolioDashboard Fusionar
GoalTracker - Mantener en OQI-008

8.4 Types/Interfaces Compartidas No Definidas

Interface Módulos Corrección Archivo
IUser TODOS Definir en shared types types/user.ts
ISignal OQI-003, OQI-006, OQI-007 Definir en shared types types/signal.ts
IWallet OQI-004, OQI-005, OQI-008 Definir en shared types types/wallet.ts
IRiskProfile OQI-004, OQI-006, OQI-008 Definir en shared types types/risk.ts
ISubscription OQI-001, OQI-002, OQI-005 Definir en shared types types/subscription.ts
IPrediction OQI-003, OQI-006, OQI-007 Definir en shared types types/prediction.ts

TAREAS ADICIONALES (Agregadas post-validación)

Sprint 2 - Adiciones

Tarea Descripción SP Archivo
REL-T01 Documentar integración OQI-002 → OQI-005 0.5 ET-EDU-001-requirements.md
REL-T02 Documentar integración OQI-003 → OQI-005 0.5 ET-TRD-001-requirements.md
REL-T03 Documentar integraciones OQI-007 → ALL 1 ET-LLM-001-requirements.md
REL-T04 Documentar OQI-001 → OQI-005 (subs check) 0.5 ET-AUTH-001-requirements.md
TYP-T01 Crear types/shared/ con interfaces comunes 2 apps/frontend/src/types/shared/
TYP-T02 Documentar ubicación de shared types 0.5 ARQUITECTURA-UNIFICADA.md
OBJ-T01 Definir subscription_status ENUM compartido 0.5 ET-PAY-003-database.md
OBJ-T02 Documentar estructura prediction_result 0.5 ET-ML-002-api.md

SP Adicionales Sprint 2: 6 SP Nuevo Total Sprint 2: 23 SP


RESUMEN FINAL DEL PLAN

Por Sprint

Sprint Objetivo SP Original SP Adicional SP Total
Fase 0 Decisiones arquitectónicas 0 0 0
Sprint 1 Correcciones críticas 18 0 18
Sprint 2 Correcciones altas 17 6 23
Sprint 3 Correcciones medias 12 0 12
TOTAL 47 6 53

Cobertura de Hallazgos

Severidad Total Cubiertos Backlog % Cobertura
CRÍTICA 12 12 0 100%
ALTA 18 18 0 100%
MEDIA 25 18 7 72%
BAJA 10 0 10 0%
TOTAL 65 48 17 74%

Objetos Adicionales Identificados

Tipo Cantidad Estado
Relaciones faltantes 7 Agregadas al plan
Objetos compartidos 6 Agregados al plan
Interfaces TypeScript 6 Agregadas al plan
Componentes duplicados 4 Documentados para refactor

DIAGRAMA DE DEPENDENCIAS CORREGIDO

                    ┌─────────────────┐
                    │   OQI-001       │
                    │   (Auth)        │
                    │   ┌─────────┐   │
                    │   │auth.users│   │
                    └───┴────┬────┴───┘
                             │ user_id FK (universal)
        ┌────────────────────┼────────────────────┐
        ▼                    ▼                    ▼
┌───────────────┐    ┌───────────────┐    ┌───────────────┐
│   OQI-002     │    │   OQI-005     │    │   OQI-003     │
│  (Education)  │    │  (Payments)   │    │  (Trading)    │
│               │◄───┤               ├───►│               │
│ premium_access│    │ subscription_ │    │ billing_check │
└───────┬───────┘    │ status ENUM   │    └───────┬───────┘
        │            │               │            │
        │            │ financial.    │            │
        │            │ wallets       │◄───────────┤
        │            └───────┬───────┘            │
        │                    │                    │
        │            ┌───────┴───────┐            │
        │            │   OQI-004     │            │
        │            │ (Investment)  │◄───────────┤
        │            │   PAMM only   │            │
        │            │ (usa wallet)  │            │
        │            └───────┬───────┘            │
        │                    │                    │
        │            ┌───────┴───────┐    ┌───────┴───────┐
        │            │   OQI-008     │    │   OQI-006     │
        │            │ (Portfolio)   │◄───┤  (ML Signals) │
        │            │ Manager only  │    │ ISignalProvider│
        │            │ (usa wallet)  │    │  interface    │
        │            └───────┬───────┘    └───────┬───────┘
        │                    │                    │
        └────────────────────┼────────────────────┘
                             ▼
                    ┌─────────────────┐
                    │   OQI-007       │
                    │  (LLM Agent)    │
                    │   Consume ALL   │
                    │   via interfaces│
                    └─────────────────┘

CHECKLIST DE VALIDACIÓN

Pre-Sprint 1

  • Decisión DEC-001 (moneda) documentada
  • Decisión DEC-002 (OQI-004/008) documentada
  • Decisión DEC-003 (schema users) documentada
  • Decisión DEC-004 (vector DB) documentada
  • Decisión DEC-005 (distribución PAMM) documentada

Post-Sprint 1 - BASE DE DATOS

  • Dependencia circular resuelta (trading.signals como interfaz)
  • Wallets unificadas (financial.wallets)
  • Moneda definida (USD primario, currency_exchange_rates)
  • OQI-004/008 delimitadas (PAMM vs Portfolio separados)
  • ADR-002 a ADR-007 creados

Correcciones DDL Implementadas (2025-12-06)

  • Todas las tablas faltantes definidas (67 tablas en 8 schemas)
  • trading.paper_balances creado
  • trading functions (initialize/reset/update balance)
  • financial.customers creado
  • financial.payment_methods creado
  • investment.withdrawal_requests creado
  • investment.daily_performance creado
  • auth.phone_channel enum agregado
  • auth.users.backup_codes agregado
  • trading.positions campos parciales agregados
  • Migrations legacy eliminados (política Carga Limpia)

Pendiente (Sprints siguientes)

  • Trading engine especificado (documentación API)
  • LLM pipeline documentado
  • Types compartidos definidos (TypeScript)
  • Índices de performance validados en producción
  • Endpoints auth completados (implementación)

Plan generado por Requirements-Analyst Agent Validado contra REPORTE-ANALISIS-REQUISITOS.md (ARCHIVADO → docs/_archive/) Trading Platform - Trading Platform