# 03-PLANEACION.md - OQI-005 Payments Advanced Components ## Descomposicion de Subtareas ### Fase 1: Análisis y Preparación | # | Subtarea | Estimación | Asignado | |---|----------|------------|----------| | 1.1 | Explorar módulo payments existente | 5 min | Claude Code | | 1.2 | Identificar gaps y componentes faltantes | 5 min | Claude Code | | 1.3 | Analizar patrones de código existentes | 5 min | Claude Code | ### Fase 2: Implementación | # | Subtarea | Estimación | Asignado | |---|----------|------------|----------| | 2.1 | Crear StripeElementsWrapper.tsx | 10 min | Claude Code | | 2.2 | Crear InvoicePreview.tsx | 10 min | Claude Code | | 2.3 | Crear RefundRequestModal.tsx | 15 min | Claude Code | | 2.4 | Crear RefundList.tsx | 15 min | Claude Code | | 2.5 | Actualizar index.ts con exports | 5 min | Claude Code | ### Fase 3: Documentación | # | Subtarea | Estimación | Asignado | |---|----------|------------|----------| | 3.1 | Actualizar FRONTEND_INVENTORY.yml | 5 min | Claude Code | | 3.2 | Actualizar MASTER_INVENTORY.yml | 5 min | Claude Code | | 3.3 | Crear METADATA.yml | 5 min | Claude Code | | 3.4 | Crear 05-EJECUCION.md | 5 min | Claude Code | | 3.5 | Crear 06-DOCUMENTACION.md | 10 min | Claude Code | ### Fase 4: Commit y Push | # | Subtarea | Estimación | Asignado | |---|----------|------------|----------| | 4.1 | Commit frontend submodule | 2 min | Claude Code | | 4.2 | Commit trading-platform | 2 min | Claude Code | | 4.3 | Commit workspace-v2 | 2 min | Claude Code | --- ## Orden de Ejecucion ``` [1.1] ──> [1.2] ──> [1.3] │ v [2.1] ──> [2.2] ──> [2.3] ──> [2.4] ──> [2.5] │ v [3.1] ──> [3.2] ──> [3.3] ──> [3.4] ──> [3.5] │ v [4.1] ──> [4.2] ──> [4.3] ``` **Dependencias Críticas:** - 2.x requiere completar 1.x (análisis antes de implementar) - 2.5 requiere 2.1-2.4 (exports después de componentes) - 3.x requiere 2.x (documentar después de implementar) - 4.x requiere 3.x (commit después de documentar) --- ## Criterios de Aceptacion ### Componentes - [ ] StripeElementsWrapper carga SDK correctamente - [ ] InvoicePreview renderiza items, descuentos, impuestos - [ ] RefundRequestModal valida elegibilidad y montos - [ ] RefundList pagina y filtra correctamente ### Código - [ ] TypeScript sin errores - [ ] Tipos exportados correctamente - [ ] Patrones consistentes con codebase - [ ] Sin placeholders ni código incompleto ### Documentación - [ ] Inventarios actualizados - [ ] Task folder completo - [ ] _INDEX.yml actualizado ### Git - [ ] Commits en frontend, trading-platform, workspace-v2 - [ ] Push exitoso a origin --- ## Estimacion Total | Fase | Tiempo | |------|--------| | Análisis | 15 min | | Implementación | 55 min | | Documentación | 30 min | | Git | 6 min | | **Total** | **~2 horas** | --- ## Riesgos y Mitigaciones | Riesgo | Mitigación | |--------|------------| | SDK Stripe no instalado | Documentar como dependencia, no bloquea componente | | Conflictos de merge | Fetch antes de operar | | Tipos incorrectos | Verificar exports en index.ts | --- ## Decisiones de Diseño ### DD-001: Ubicación de Componentes **Decisión:** Crear en `components/payments/` (no en `modules/payments/`) **Razón:** Consistencia con componentes existentes (WalletCard, etc.) ### DD-002: Iconos **Decisión:** Usar lucide-react **Razón:** Consistencia con otros componentes de payments ### DD-003: Exportación de StripeElementsWrapper **Decisión:** Exportar como default + HOC + hook **Razón:** Flexibilidad de uso (wrapper, HOC, o verificación) ### DD-004: Formato de Moneda **Decisión:** Usar Intl.NumberFormat con currency prop **Razón:** Soporte internacional sin dependencias adicionales