# US-MGN-009-003-001: Vista Kanban de Pipeline por Etapas **RF Asociado:** [RF-MGN-009-002](../../02-modelado/requerimientos-funcionales/mgn-009/RF-MGN-009-002-pipeline-de-ventas-kanban.md) **Módulo:** MGN-009 - CRM Básico **Epic:** Pipeline de Ventas **Prioridad:** P0 **Story Points:** 5 **Sprint:** Sprint 21 **Estado:** Ready for Development **Fecha:** 2025-11-24 --- ## User Story **Como** vendedor, **Quiero** visualizar oportunidades en un tablero Kanban por etapas, **Para** gestionar el pipeline visualmente. ## Descripción Detallada Vista Kanban muestra columnas por etapa: - Prospecting | Qualification | Proposal | Negotiation | Won | Lost Cada tarjeta muestra: - Nombre de oportunidad - Cliente - Monto - Probabilidad - Días en etapa ## Criterios de Aceptación ### Escenario 1: Ver Kanban con oportunidades **Dado que** hay 20 oportunidades distribuidas en 4 etapas, **Cuando** accedo a /crm/pipeline, **Entonces** veo 4 columnas con tarjetas de oportunidades. ### Escenario 2: Drag & drop entre etapas **Dado que** oportunidad está en Qualification, **Cuando** arrastro tarjeta a Proposal, **Entonces** sistema actualiza stage=proposal, probability=50%. ### Escenario 3: Totales por columna **Dado que** columna Proposal tiene 5 oportunidades con total $200K, **Cuando** veo columna, **Entonces** header muestra "Proposal (5) - $200K". ### Escenario 4: Filtrar por vendedor **Dado que** soy sales_manager, **Cuando** filtro por vendedor "Juan", **Entonces** Kanban muestra solo oportunidades de Juan. ## Reglas de Negocio - **RN-1:** Columnas representan etapas (stages). - **RN-2:** Drag & drop actualiza stage y probability. - **RN-3:** Totales se calculan en tiempo real. - **RN-4:** sales_user ve solo sus oportunidades, sales_manager ve todas. ## Tareas Técnicas ### Backend - [ ] Endpoint: `GET /api/v1/crm/pipeline?user_id&date_from&date_to` - [ ] Service: `PipelineService.getGroupedByStage(filters)` - [ ] Endpoint: `PATCH /api/v1/crm/opportunities/:id/move` (drag & drop) ### Frontend - [ ] Página: `PipelineKanbanPage.tsx` - [ ] Componente: `KanbanBoard.tsx` (usar react-beautiful-dnd) - [ ] Componente: `OpportunityCard.tsx` - [ ] Drag & drop funcional - [ ] Filtros: Vendedor, Fecha - [ ] Component tests --- ## Estimación Detallada | Tarea | Horas | |-------|-------| | Backend | 1.5 | | Frontend | 3 | | Testing | 1.5 | | **TOTAL** | **6 horas = 5 SP** | --- ## Definition of Done - [ ] Kanban visual funcional - [ ] Drag & drop funciona - [ ] Totales correctos - [ ] Filtros aplican - [ ] Tests >80% - [ ] QA/PO aprobado --- ## Referencias - [RF-MGN-009-002](../../02-modelado/requerimientos-funcionales/mgn-009/RF-MGN-009-002-pipeline-de-ventas-kanban.md)