Tickets Pendientes - Productos Cíclicos
Resumen de Estado
✅ Tickets Creados Exitosamente
- DEV-4356 - Implementar feature flag enable_cyclic_products
- DEV-4357 - Gestión de Ciclos - Backend y Dashboard
❌ Tickets Pendientes por Crear
Los siguientes 3 tickets fallaron por problemas con la API de Linear. Crear manualmente:
Ticket 1: Gestión de Productos Cíclicos - Backend y Dashboard
Team: Product Development
Project: Productos Cíclicos (Cajas de Envío)
Priority: High (Urgent)
Type: Feature
Descripción Corta
Implementar gestión completa de productos cíclicos: modelo de datos, lógica de negocio y Dashboard UI para CRUD.
Descripción Completa
# Feature: Gestión de Productos Cíclicos - Backend y Dashboard
## Descripción
Implementar la funcionalidad completa de gestión de productos cíclicos, incluyendo modelo de datos, lógica de negocio y Dashboard UI para CRUD completo.
## Estado Actual
No existe concepto de productos cíclicos. Suscripciones físicas no pueden asociar entregas periódicas.
## Requerimientos
### Backend - Modelo de Datos
- Modelo CyclicProduct: name, tenant_id, active, timestamps
- Tabla pivot cyclic_product_subscription_plan
- Relaciones con SubscriptionPlan (muchos a muchos)
- Soft deletes
### Backend - Service Layer
- CRUD completo
- Validaciones: nombre requerido, planes del tenant
- Query scopes: active(), forTenant(), withPlans()
### Dashboard UI
- Sección "Productos Cíclicos" en menú (solo con feature flag)
- CRUD completo: listar, crear, editar, eliminar
- Búsqueda por nombre
- Paginación
## Flujos Clave
**Crear:** nombre + planes opcionales + estado (default activo)
**Editar:** modificar cualquier campo
**Eliminar:** validar no tenga ciclos activos
## Reglas de Negocio
- Múltiples planes por producto
- Múltiples productos por tenant
- Solo soft delete
- Multi-tenant estricto
- No eliminar si tiene ciclos activos
## Acceptance Criteria
### Backend
- [ ] Migraciones ejecutan OK
- [ ] Modelo y relaciones funcionan
- [ ] Service layer implementado
- [ ] Validaciones correctas
- [ ] Solo productos del tenant
### Dashboard
- [ ] Sección visible con flag
- [ ] CRUD completo funciona
- [ ] Validaciones frontend/backend
- [ ] Búsqueda y paginación OK
- [ ] Responsive design
### Testing
- [ ] Unit tests modelo
- [ ] Feature tests CRUD
- [ ] Tests multi-tenancy
- [ ] Coverage ≥80%
## Áreas Involucradas
- Farfalla Backend (Models, Migrations, Services)
- Farfalla Dashboard (Controllers, Views, Livewire)
## Dependencias
- Feature flag enable_cyclic_products
## Referencias
- Proyecto: Productos Cíclicos (Cajas de Envío)
- Doc: `/docs/product/docs/projects/asignacion-caja-envio-refined.md`
Ticket 2: Integración con Shipping Notes - Asignación y Visualización
Team: Product Development
Project: Productos Cíclicos (Cajas de Envío)
Priority: High (Urgent)
Type: Feature
Descripción Corta
Integrar productos cíclicos con shipping notes: asignación automática, columna condicional, edición manual y casos especiales.
Descripción Completa
# Feature: Integración con Shipping Notes
## Descripción
Integrar productos cíclicos con shipping notes implementando asignación automática de ciclos, columna condicional, edición manual y manejo de casos especiales (pausas, pagos fallidos).
## Estado Actual
Shipping notes no tienen forma de indicar qué caja específica debe enviarse. No hay relación con productos cíclicos.
## Requerimientos
### Backend - Modelo
- Columna cyclic_product_cycle_id (nullable) en shipping_notes
- Relación: ShippingNote belongsTo CyclicProductCycle
### Backend - Asignación Automática
- Hook en creación de shipping note
- Detectar producto cíclico asociado al plan
- Identificar ciclo vigente por fecha
- Asignar automáticamente si existe
- Manejar casos especiales
### Dashboard
- Columna "Producto Cíclico" (solo con feature flag)
- Mostrar: nombre ciclo, badge tipo (Auto/Editada), producto
- Edición manual inline/modal
- Sin ciclo: mostrar suscripción
## Casos Especiales Críticos
**Pausa:** No consume ciclos (no genera notas)
**Reactivación:** Asigna ciclo vigente actual
**Pausa/reactiva mismo ciclo:** Asigna siguiente ciclo
**Pago fallido:** Ciclo de fecha cobro original
## Reglas de Negocio
- Verifica producto cíclico en plan
- Identifica ciclo vigente por fecha nota
- Asigna automáticamente si existe
- Sin producto: muestra suscripción
- Edición manual solo notas pendientes
- Tipo cambia a "Editada" al modificar
## Acceptance Criteria
### Backend
- [ ] Migración columna OK
- [ ] Relación funciona
- [ ] Hook asignación automática
- [ ] Detecta producto en plan
- [ ] Identifica ciclo vigente
- [ ] Todos casos especiales OK
### Dashboard
- [ ] Columna visible con flag
- [ ] Muestra info correcta
- [ ] Badges visuales correctos
- [ ] Edición manual funciona
- [ ] Sin ciclo: muestra suscripción
### Testing
- [ ] Tests asignación automática
- [ ] Tests cada caso especial
- [ ] Tests edición manual
- [ ] Feature tests integración
- [ ] Coverage ≥80%
## Áreas Involucradas
- Farfalla Backend (Models, Services, Hooks)
- Farfalla Dashboard (Shipping Notes View)
- Subscription Renewals Logic
## Dependencias
- Feature flag
- Gestión Productos completa
- Gestión Ciclos completa
## Referencias
- Proyecto: Productos Cíclicos (Cajas de Envío)
- Doc: `/docs/product/docs/projects/asignacion-caja-envio-refined.md`
- Tickets relacionados: DEV-3926, DEV-3927
Ticket 3: Documentación de Productos Cíclicos
Team: Product Development
Project: Productos Cíclicos (Cajas de Envío)
Priority: Medium
Type: Task
Descripción Corta
Crear documentación completa para administradores: guías paso a paso, casos de uso, FAQ y troubleshooting.
Descripción Completa
# Task: Documentación de Productos Cíclicos
## Descripción
Crear documentación completa para usuarios finales (administradores) sobre productos cíclicos.
## Requerimientos
### Contenido Requerido
1. **Conceptos Básicos**
- Qué son productos cíclicos
- Qué es un ciclo
- Relación con suscripciones
2. **Tutorial Paso a Paso**
- Crear producto cíclico
- Asociar planes
- Crear primer ciclo
- Generar ciclos automáticamente
- Verificar asignaciones
3. **Gestión Diaria**
- Crear ciclos subsiguientes
- Editar ciclos existentes
- Corrección manual en shipping notes
4. **Casos Especiales**
- Usuario pausa suscripción
- Usuario reactiva
- Pago falla y se recupera
- Sin ciclo vigente
5. **FAQ (8-10 preguntas)**
- ¿Puedo eliminar un ciclo?
- ¿Qué pasa si hay gap entre ciclos?
- ¿Usuario puede tener múltiples productos?
- Etc.
6. **Troubleshooting**
- Errores comunes y soluciones
- Cuándo contactar soporte
### Ubicación
- Archivo: `/docs/product/docs/features/cyclic-products.md`
- Help Center: si aplica
## Acceptance Criteria
- [ ] Tutorial completo con screenshots
- [ ] FAQ mínimo 8 preguntas respondidas
- [ ] Casos edge documentados
- [ ] Troubleshooting incluido
- [ ] Feature flag documentada para equipo interno
- [ ] Revisado por QA o Product Support
- [ ] Formato markdown correcto
- [ ] Links funcionan
## Áreas Involucradas
- Documentation (/docs/product/)
- Help Center (opcional)
## Dependencias
- Todas las features de productos cíclicos completas
- Screenshots requieren staging/producción
## Referencias
- Proyecto: Productos Cíclicos (Cajas de Envío)
- Doc diseño: `/docs/product/docs/projects/asignacion-caja-envio-refined.md`
- Cliente ejemplo: Tinta Fresca
Instrucciones para Crear Manualmente
- Acceder a Linear: https://linear.app/publica
- Ir al proyecto "Productos Cíclicos (Cajas de Envío)"
- Hacer clic en "New Issue"
- Copiar título y descripción de cada ticket
- Asignar:
- Team: Product Development
- Project: Productos Cíclicos (Cajas de Envío)
- Priority según indicado arriba
- Labels: Feature o Task según corresponda
Orden de Implementación Sugerido
- ✅ DEV-4356 - Feature Flag (completado)
- ❌ Gestión de Productos Cíclicos (crear primero)
- ✅ DEV-4357 - Gestión de Ciclos (completado)
- ❌ Integración con Shipping Notes (crear segundo)
- ❌ Documentación (crear al final)
Dependencias entre tickets:
- Gestión Ciclos depende de Gestión Productos
- Integración depende de ambos anteriores
- Documentación depende de todo completo