Skip to main content

Tickets Pendientes - Productos Cíclicos

Resumen de Estado

✅ Tickets Creados Exitosamente

  1. DEV-4356 - Implementar feature flag enable_cyclic_products
  2. 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

  1. Acceder a Linear: https://linear.app/publica
  2. Ir al proyecto "Productos Cíclicos (Cajas de Envío)"
  3. Hacer clic en "New Issue"
  4. Copiar título y descripción de cada ticket
  5. 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

  1. ✅ DEV-4356 - Feature Flag (completado)
  2. Gestión de Productos Cíclicos (crear primero)
  3. ✅ DEV-4357 - Gestión de Ciclos (completado)
  4. Integración con Shipping Notes (crear segundo)
  5. 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
X

Graph View