# 01 · PRD — Documento de Requisitos de Producto

**Proyecto:** Sistema Boutique (POS + Tienda Online)
**Cliente:** Boutique de ropa — Colombia
**Moneda:** Peso colombiano (COP)
**Versión del documento:** 1.0
**Estado:** Fundacional — congelar antes de codificar

---

## 1. Resumen ejecutivo

El producto es **una sola plataforma con dos caras** que comparten un mismo catálogo, un mismo inventario y una misma base de clientes:

1. **POS (Punto de Venta)** — aplicación web usada por el personal de la boutique en el mostrador. Prioriza la **velocidad de venta**: escanear, cobrar, imprimir, siguiente cliente. Sin filas en caja.
2. **Tienda Online** — aplicación web pública para que los clientes exploren el catálogo, armen un carrito y compren con envío o retiro en tienda.

La regla de oro del sistema: **el stock es único y en tiempo real**. Si se vende una talla M azul en el mostrador, esa unidad deja de estar disponible en la tienda online en el mismo instante, y viceversa. No existen dos inventarios que "se sincronizan"; existe **un solo inventario** que ambas caras leen y modifican.

### Por qué esta arquitectura (el "porqué")

Piensa en el backend como la **sección rítmica de una banda** (bajo y batería): es una sola, y marca el tiempo para todos. El POS y la Tienda Online son dos instrumentos solistas (saxo y piano) que tocan sobre esa misma base rítmica. Los dos están afinados a la misma tonalidad —el mismo catálogo, el mismo stock— porque leen del mismo pentagrama. Esto elimina el problema clásico de "vendí en tienda algo que ya se había vendido online".

---

## 2. Objetivos del producto

| # | Objetivo | Métrica de éxito |
|---|----------|------------------|
| O1 | Vender en mostrador sin filas | Una venta completa (escanear → cobrar → recibo) en menos de 30 segundos |
| O2 | Inventario único y confiable | Cero sobreventas: nunca vender stock que no existe |
| O3 | Vender también por internet | Cliente puede comprar sin asistencia de un vendedor |
| O4 | Control gerencial | El dueño ve ventas, stock, y comisiones sin pedir reportes manuales |
| O5 | Fidelizar clientes | Clientes registrados reciben descuentos/beneficios automáticos |

---

## 3. Roles de usuario

| Rol | Dónde opera | Qué puede hacer |
|-----|-------------|-----------------|
| **Administrador** | POS + Panel | Todo: usuarios, productos, precios, reportes, configuración |
| **Gerente / Dueño** | Panel | Reportes, comisiones, inventario, promociones (no toca configuración técnica) |
| **Vendedor / Cajero** | POS | Registrar ventas, buscar productos, registrar clientes, aplicar descuentos permitidos |
| **Cliente registrado** | Tienda Online | Comprar, ver historial de pedidos, acumular fidelización |
| **Visitante** | Tienda Online | Explorar catálogo, armar carrito (debe registrarse para comprar) |

El control de acceso es por rol (RBAC). Un cajero **no** puede ver el margen de ganancia ni cambiar precios; solo aplica descuentos dentro de un límite que el administrador configura.

---

## 4. Funcionalidades — POS (mostrador)

### 4.1 Venta rápida
- Búsqueda de producto por **escaneo de código de barras** (el lector USB actúa como teclado: "teclea" el código y un Enter — sin drivers).
- Búsqueda manual por nombre, referencia o código si no hay etiqueta.
- Carrito de venta con línea por variante (talla + color).
- Descuento por línea o total (dentro del límite del rol).
- Registro de cliente en la venta (opcional) para fidelización.
- Cobro: efectivo, tarjeta, transferencia, o mixto.
- Cálculo de vuelto para pago en efectivo.
- Generación de recibo (PDF / impresión térmica en Fase 9).

### 4.2 Gestión de clientes desde caja
- Alta rápida de cliente (nombre + celular basta).
- Múltiples direcciones y datos de contacto por cliente.
- Vinculación automática al programa de fidelización.
- La tasa de acumulación de puntos, los umbrales de tier y los beneficios son **configurables por el dueño** desde la tabla `settings`; ningún valor está incrustado en el código.

### 4.3 Comisiones de vendedor
- Cada venta queda atribuida al vendedor que la registró.
- Comisión configurable: **porcentaje estándar** global o **comisión diferenciada por producto**.
- El sistema calcula la comisión al cerrar la venta.

### 4.4 Etiquetas (Fase 9 — interfaz lista desde Fase 1)
- Generación de etiqueta con código de barras, precio, logo, descripción y talla.
- Plantillas configurables por modelo de impresora (A4, adhesivo).
- *Nota:* en Fase 1 se genera el **código de barras y el PDF de etiqueta**; el envío a impresora física se activa en Fase 9. No se escribe código muerto de impresora en Fase 1.

---

## 5. Funcionalidades — Tienda Online (cliente)

### 5.1 Catálogo
- Listado de productos con foto, precio y disponibilidad.
- Filtros por tipo de prenda, color, talla, rango de precio.
- Ficha de producto con galería, selector de talla/color, y stock disponible.
- Solo se muestran variantes con stock > 0 (o marcadas "agotado").

### 5.2 Carrito y checkout
- Agregar al carrito por variante (talla + color).
- El carrito reserva stock temporalmente durante el checkout (evita sobreventa).
- Checkout: dirección de envío o retiro en tienda.
- Pago vía pasarela colombiana (**Wompi** por defecto; puerto abstracto para cambiar a Mercado Pago).
- Confirmación de pedido + correo/notificación.

### 5.3 Perfil de cliente
- Registro e inicio de sesión seguros.
- Historial de pedidos con estado (pendiente, pagado, enviado, entregado).
- Direcciones guardadas.
- Puntos/beneficios de fidelización acumulados (tasa de acumulación, tiers y beneficios configurables desde `settings`).

---

## 6. Funcionalidades — Panel de gestión (dueño/admin)

### 6.1 Inventario y pedidos a proveedor
- Ingreso de mercancía (entrada de stock).
- Egreso / ajuste de stock (merma, devolución).
- Registro de proveedores con datos de contacto.
- Historial de **todos los movimientos** de cada artículo (kardex).
- Registro de la cantidad total invertida en stock (costo).
- **Avisos de stock mínimo y stock cero.**

### 6.2 Kits / combos y promociones
- Venta por kit o combo (varios productos a precio conjunto).
- Promociones con vigencia por fecha.

### 6.3 Dashboard
- Total de prendas en stock.
- Gráficas por tipo, color, talla.
- Más vendidas / menos vendidas.
- Ventas por rango de fechas.

### 6.4 Reportes
- Facturación y ventas (por fecha, vendedor, tipo de prenda).
- Ingresos brutos.
- Comisiones por vendedor.
- Cuentas por pagar (a proveedores).
- Exportables (CSV/PDF).

---

## 7. Reglas de negocio clave

| Regla | Descripción |
|-------|-------------|
| RB1 | El stock nunca puede quedar negativo. Toda venta valida stock disponible en una transacción atómica. |
| RB2 | Moneda única COP, montos enteros (sin centavos). |
| RB3 | IVA configurable (default 19%), no incrustado en código. |
| RB4 | Un descuento no puede superar el límite del rol que lo aplica. |
| RB5 | Toda venta queda atribuida a un vendedor para el cálculo de comisión. |
| RB6 | El precio de venta y el costo son datos separados; el cajero no ve el costo. |
| RB7 | Un producto tiene variantes (talla × color); el stock vive en la **variante**, no en el producto. |
| RB8 | Las comisiones de vendedor aplican **solo a ventas POS**. Los pedidos de la tienda online no generan comisión. Esta es una decisión de negocio explícita, no una omisión del modelo. |
| RB9 | Las promociones aplican por **categoría** o por **producto** específico. Si varias promociones activas aplican al mismo ítem, se usa la de **mayor descuento**; las promociones **no se acumulan**. |
| RB10 | Toda la mecánica del programa de fidelización (puntos por COP gastado, umbrales de tier, beneficios por nivel) es **configurable** desde `settings`. Ningún valor numérico está incrustado en el código. |

---

## 8. Fuera de alcance (Fase 1)

- Impresión física a cajón de efectivo / impresora térmica (interfaz lista, activación en Fase 9).
- App móvil nativa (la tienda online será web responsive; se comporta como app en el celular).
- Multi-sucursal (el esquema lo permitirá, pero la Fase 1 asume una sola tienda).
- Facturación electrónica DIAN (se deja el campo de datos fiscales; la integración es un proyecto aparte).

---

## 9. Supuestos

- Una sola boutique física en Fase 1.
- Conexión a internet estable en el mostrador (el POS es web).
- El lector de código de barras es USB estándar (emula teclado).
- El cliente proveerá su logo y fotos de producto.
