Files
AnchorOS/TASKS.md
Marco Gallegos fbd3038ace feat: Iniciar implementación de The Boutique (booking.anchor23.mx)
**Frontend (booking.anchor23.mx):**
- Crear página de selección de servicios (/booking/servicios)
  - Catálogo de servicios con precios y duración
  - Selección de ubicación
  - Calendario interactivo para selección de fecha y hora
  - Validación de disponibilidad en tiempo real
  - Resumen de reserva con precio

- Crear página de confirmación de reserva (/booking/cita)
  - Resumen detallado de la cita (servicio, fecha, hora, ubicación)
  - Formulario para datos del cliente (nombre, email, teléfono, notas)
  - Confirmación visual de la reserva
  - Redirección a página de confirmación exitosa

**Backend APIs:**
- Crear /api/services para obtener servicios activos
  - Filtrar por ubicación si se especifica
  - Retornar precio y duración de cada servicio

- Crear /api/locations para obtener ubicaciones activas
  - Retornar lista de locations con timezone

**Documentación:**
- Actualizar TASKS.md con progreso de The Boutique (20%)
- Agregar nuevas tareas pendientes (aperture, api pública)
- Actualizar README.md con:
  - Nueva estructura de rutas (/booking/*)
  - Nuevas APIs (/api/services, /api/locations)
  - Estado actualizado de The Boutique
  - Actualizar Fase 2 al 20% completado

**Estilos:**
- Mantener paleta de colores de anchor23.mx
- Diseño consistente con el resto del sitio
- Responsive para móviles
2026-01-16 16:15:21 -06:00

12 KiB

TASKS.md — Plan de Ejecución por Fases

Este documento define las tareas ejecutables del proyecto SalonOS, alineadas estrictamente con el PRD. Ninguna tarea puede introducir lógica no documentada.


Convenciones

  • Cada tarea produce artefactos verificables (código, migraciones, tests, documentación).
  • Las reglas de negocio viven en backend.
  • Todo automatismo debe ser auditable.
  • Ningún agente redefine alcance.

FASE 1 — Cimientos y CRM COMPLETADA

1.1 Infraestructura Base

  • Crear proyecto Supabase.
  • Definir roles: Admin / Manager / Staff / Artist / Customer / Kiosk.
  • Configurar RLS base por rol (Artist NO ve email/phone de customers).
  • Configurar Auth (Magic Links Email/SMS) - PENDIENTE

Output:

  • Proyecto Supabase operativo.
  • Policies iniciales documentadas.

1.2 Esquema de Base de Datos Inicial

Tablas obligatorias:

  • locations (incluye timezone)
  • resources
  • staff
  • services
  • customers
  • invitations
  • bookings
  • audit_logs
  • kiosks
  • amenities

Tareas:

  • Definir migraciones SQL versionadas.
  • Claves foráneas y constraints.
  • Campos de auditoría (created_at, updated_at).

Output:

  • Migraciones SQL.
  • Diagrama lógico.
  • Documentación de recursos actualizada.

1.3 Short ID & Invitaciones

  • Implementar generador de Short ID (6 chars, collision-safe).
  • Validación de unicidad antes de persistir booking.
  • Generador y validación de códigos de invitación.
  • Lógica de cuotas semanales por Tier.
  • Reseteo automático de invitaciones cada semana (Lunes 00:00 UTC).
  • Reseteo implementado via Supabase Edge Function o cron externo.

Output:

  • Funciones backend.
  • Tests unitarios - PENDIENTE
  • Registros en audit_logs.

1.4 CRM Base (Customers)

  • Cálculo automático de Tier.
  • Tracking de referidos.
  • Perfil privado de cliente.
  • Tiers actualizados: free, gold, black, VIP.
  • Endpoints CRUD - PENDIENTE
  • Policies RLS por rol.

1.5 Sistema de Kiosko

  • Crear tabla kiosks con autenticación por API key.
  • Implementar rol kiosk en enum user_role.
  • Crear políticas RLS para kiosk (sin acceso a PII).
  • Implementar API routes para kiosk.
  • Crear componentes UI para confirmación de citas y walk-ins.
  • Implementar función de asignación de recursos con prioridad.
  • Auditoría completa de acciones de kiosk.

Output:

  • Migración SQL de sistema kiosk.
  • API routes completas.
  • Componentes UI reutilizables.
  • Documentación completa del sistema.
  • Función get_available_resources_with_priority().

1.6 Actualización de Recursos

  • Reemplazar nombres descriptivos por códigos estandarizados.
  • Implementar estructura: 3 mkup, 1 lshs, 4 pedi, 4 mani por location.
  • Actualizar migraciones y seed data.

Output:

  • Migración de actualización de recursos.
  • Documentación de estructura de recursos.
  • Revisión y testing de asignación de recursos - PENDIENTE.

FASE 2 — Motor de Agendamiento (PENDIENTE)

2.1 Disponibilidad Doble Capa

Validación Staff (rol Staff):

  • Horario laboral.
  • Eventos bloqueantes en Google Calendar.
  • Validación Recurso:
  • Disponibilidad de estación física.
  • Asignación automática con prioridad (mkup > lshs > pedi > mani).
  • Regla de prioridad dinámica entre Staff y Artist.
  • Implementar función de disponibilidad con parámetros:
  • location_id
  • start_time_utc
  • end_time_utc
  • service_id (opcional)

Output:

  • Algoritmo de disponibilidad.
  • Tests de colisión y concurrencia.
  • Documentación de algoritmo.

2.2 Servicios Express (Dual Artists)

  • Búsqueda de dos artistas simultáneas.
  • Bloqueo del recurso principal requerido (rooms only).
  • Aplicación automática de Premium Fee.
  • Lógica de booking dual.
  • Casos de prueba.
  • Actualización de RLS para servicios express.

Output:

  • Lógica de booking dual.
  • Casos de prueba.
  • Actualización de RLS para servicios express.

2.3 Google Calendar Sync

  • Integración vía Service Account.
  • Sincronización bidireccional.
  • Manejo de conflictos.
  • Sync de:
  • Bookings de staff
  • Bloqueos de agenda
  • No-shows

Output:

  • Servicio de sincronización.
  • Logs de errores.
  • Webhook para updates de calendar.

FASE 3 — Pagos y Protección (PENDIENTE)

3.1 Stripe — Depósitos Dinámicos

  • Regla $200 vs 50% según día.
  • Asociación pago ↔ booking (UUID interno, Short ID visible).
  • Webhooks para:
  • payment_intent.succeeded
  • payment_intent.payment_failed
  • charge.refunded
  • Validación de pagos.
  • Función de cálculo de depósito.

Output:

  • Webhooks Stripe.
  • Validación de pagos.
  • Función de cálculo de depósito.

3.2 No-Show Logic

  • Ventana de cancelación 12h (UTC).
  • Penalización automática:
  • Marcar booking como no_show
  • Retener depósito
  • Notificar a cliente
  • Override Admin.
  • Auditoría en audit_logs (ya implementada).
  • Notificaciones por email/SMS.

Output:

  • Función de penalización.
  • Notificaciones por email/SMS.

FASE 4 — HQ Dashboard (PENDIENTE)

4.1 Calendario Multi-Columna

  • Vista por staff.
  • Bloques de 15 minutos.
  • Drag & drop para reprogramar.
  • Filtros por location y resource type.
  • Validación de colisiones.
  • Lógica de reprogramación.

Output:

  • Componente de calendario.
  • Lógica de reprogramación.
  • Validación de colisiones.

4.2 Gestión Operativa

  • Recursos físicos:
  • Agregar/editar/eliminar recursos.
  • Ver disponibilidad en tiempo real.
  • Staff:
  • CRUD completo.
  • Asignación a locations.
  • Manejo de horarios.
  • Traspaso entre sucursales:
  • Transferencia de bookings.
  • Reasignación de staff.
  • Función de traspaso de bookings.

Output:

  • UI de gestión de recursos.
  • UI de gestión de staff.
  • Función de traspaso de bookings.

4.3 The Vault

  • Upload de fotos privadas (Storage).
  • Formularios técnicos para clientes VIP.
  • Acceso restringido por rol.
  • Storage bucket configuration.
  • Formularios de The Vault.
  • Políticas de acceso.

Output:

  • Storage bucket configuration.
  • Formularios de The Vault.
  • Políticas de acceso.

FASE 5 — Automatización y Lanzamiento (PENDIENTE)

5.1 Notificaciones

  • Confirmaciones por WhatsApp.
  • Recordatorios de citas:
  • 24h antes
  • 2h antes
  • Alertas de no-show.
  • Notificaciones de cambios de horario.
  • Integración WhatsApp API.
  • Templates de mensajes.
  • Sistema de envío programado.

Output:

  • Integración WhatsApp API.
  • Templates de mensajes.
  • Sistema de envío programado.

5.2 Recibos Digitales

  • Generación de PDF.
  • Email automático post-servicio.
  • Historial de transacciones.
  • Generador de PDFs.
  • Sistema de emails.
  • Dashboard de transacciones.

Output:

  • Generador de PDFs.
  • Sistema de emails.
  • Dashboard de transacciones.

5.3 Landing Page Believers

  • Página pública de booking.
  • Calendario simplificado para clientes.
  • Captura de datos básicos.
  • Página de booking pública.
  • Calendario cliente.
  • Formulario de captura.

Output:

  • Página de booking pública.
  • Calendario cliente.
  • Formulario de captura.

ESTADO ACTUAL DEL PROYECTO

Completado

  • Infraestructura base de datos
  • Sistema de roles y permisos RLS
  • Generadores de Short ID y códigos de invitación
  • Sistema de kiosko completo
  • API routes para kiosk
  • Componentes UI para kiosk
  • Actualización de recursos con códigos estandarizados
  • Audit logging completo
  • Tiers de cliente extendidos (free, gold, black, VIP)
  • Sistema de disponibilidad (staff, recursos, bloques)
  • API routes de disponibilidad
  • API de reservas para clientes (POST/GET)
  • HQ Dashboard con calendario multi-columna
  • Frontend institucional anchor23.mx completo
    • Landing page con hero, fundamento, servicios, testimoniales
    • Página de servicios
    • Página de historia y filosofía
    • Página de contacto
    • Página de franquicias
    • Página de membresías (Gold, Black, VIP)
    • Páginas legales (Privacy Policy, Legal)
    • Header y footer globales

🚧 En Progreso

  • 🚧 The Boutique - Frontend de reservas (booking.anchor23.mx)
    • Página de selección de servicios (/booking/servicios)
    • Página de confirmación de reserva (/booking/cita)
    • API para obtener servicios (/api/services)
    • API para obtener ubicaciones (/api/locations)
    • Configuración de dominios wildcard en producción

Pendiente

  • Implementar aperture.anchor23.mx - Backend para staff/manager/admin
  • Implementar API pública (api.anchor23.mx)
  • Implementar sistema de asignación de disponibilidad (staff management)
  • Implementar autenticación para staff/manager/admin
  • Integración con Google Calendar
  • Integración con Stripe (pagos)
  • The Vault (storage de fotos privadas)
  • Notificaciones y automatización (WhatsApp API)
  • Autenticación de clientes en The Boutique

PRÓXIMAS TARES PRIORITARIAS

Prioridad Alta - Esta Semana

  1. Terminar The Boutique (booking.anchor23.mx)

    • Implementar autenticación de clientes
    • Completar flujo de reserva
    • Integrar con sistema de pagos (Stripe)
    • Testing completo del flujo
  2. Configurar Kioskos en Producción

    • Crear kioskos para cada location
    • Configurar API keys en variables de entorno
    • Probar acceso desde pantalla táctil
    • Usar el sistema de enrollment en /admin/enrollment
  3. Sistema de Enrollment

    • API route /api/admin/locations - Obtener locations
    • API route /api/admin/users - Crear staff members
    • API route /api/admin/kiosks - Crear kiosks
    • Frontend /admin/enrollment - Interfaz de gestión
    • Configurar ADMIN_ENROLLMENT_KEY en variables de entorno

Prioridad Media - Próximas 2 Semanas

  1. Implementar API Routes para Bookings (Cliente)

    • GET /api/bookings - Listar bookings del cliente
    • POST /api/bookings - Crear nuevo booking
    • PUT /api/bookings/{id} - Modificar booking (solo staff/admin)
    • DELETE /api/bookings/{id} - Cancelar booking
  2. Implementar Lógica de Disponibilidad

    • Función para buscar disponibilidad de staff
    • Función para buscar disponibilidad de recursos
    • Integración con get_available_resources_with_priority()
  3. Implementar Notificaciones Básicas

    • Email de confirmación de booking
    • Email de recordatorio (24h antes)
    • Email de cancelación

Prioridad Baja - Próximo Mes

  1. Documentar nuevos endpoints y configuración
    • API docs para aperture.anchor23.mx
    • API docs para api.anchor23.mx
    • Configuración de dominios wildcard
    • Guías de despliegue

NOTAS IMPORTANTES

Aclaración sobre Kiosko

El sistema de kiosko no estaba originalmente en el PRD, pero se implementó como extensión funcional para:

  • Permitir confirmación de citas en pantalla de entrada
  • Facilitar reservas walk-in sin personal
  • Reducir carga de trabajo de staff
  • Mejorar experiencia del cliente

Impacto de Actualización de Recursos

La migración de recursos eliminó todos los bookings existentes debido a CASCADE DELETE. Esto es aceptable en fase de desarrollo, pero en producción debe:

  • Implementarse con migración de datos
  • Notificar a clientes de la necesidad de reprogramar

Próximas Decisiones

  1. ¿Implementar Auth con Supabase Magic Links o SMS?
  2. ¿Usar Google Calendar API o Edge Functions para sync?
  3. ¿Proveedor de email para notificaciones (SendGrid, AWS SES, etc.)?

REGLA FINAL

Si una tarea no está aquí, no existe. Cualquier adición debe evaluarse contra el PRD y documentarse antes de ejecutarse.