# 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
