# 01 — Diagramas de flujo (workflows)

Estos flujos están pensados para:
- entender cómo opera el club,
- y convertirlos en pantallas + endpoints (MVP).

---

## 1) Mapa end-to-end (operación del club)

```mermaid
flowchart TD
  A["Esqueje (lote)"] --> B["Trasplante: asignar código (planta)"]
  B --> C["Vegetativo"]
  C --> D["Flora"]
  D --> E["Cosecha"]
  E --> F["Secado"]
  F --> G["Curado"]
  G --> H["Lote final (por genética)"]
  H --> I["Ingreso a inventario (bolsas stock)"]

  I --> J{¿Necesita frasco de exhibición?}
  J -->|Sí| K["Traspaso: bolsa → frasco"]
  J -->|No| L["Entrega directa desde bolsa"]

  K --> M["Fraccionar: frasco → bolsitas"]
  L --> M
  M --> N["Dispensar a socio/pedido"]
  N --> O["Auditoría + reportes"]
```

---

## 2) P0 — Traspaso con balanza (bolsa stock → frasco)

```mermaid
flowchart LR
  subgraph OP["Operador"]
    S1["Escanea bolsa (from)"] --> S2["Escanea frasco (to)"]
    S2 --> S3["Coloca producto / confirma genética"]
    S3 --> S4["Tap: Capturar peso"]
  end

  subgraph UI["Inventory UI"]
    U1["Muestra peso live + estable"] --> U2["POST Bridge /v1/capture"]
    U2 --> U3["POST Backend /movements (TRANSFER)"]
    U3 --> U4["Muestra confirmación + stock"]
  end

  subgraph BR["Bridge API (Mac)"]
    B1["Lee balanza"] --> B2["Detecta estabilidad"]
    B2 --> B3["Devuelve capture_id + net_mg"]
  end

  subgraph BE["Backend (ledger)"]
    E1["Valida permisos + rangos"] --> E2["Inserta movement + line"]
    E2 --> E3["Audit log"]
  end

  S4 --> U2
  U2 --> B3
  U3 --> E2
```

Reglas importantes:
- No se permite cerrar el movimiento si `stable=false`.
- El movimiento es **una transacción** (impacta origen y destino juntos).

---

## 3) P0 — Fraccionar para distribución (frasco/bolsa → bolsita)

```mermaid
flowchart TD
  A["Escanea contenedor origen"] --> B["Escanea código de bolsita"]
  B --> C["(Opcional) Tara de frasco (si aplica)"]
  C --> D["Llena bolsita"]
  D --> E["Capturar peso estable"]
  E --> F["Crear movimiento PACKAGE"]
  F --> G["(Opcional) Imprimir etiqueta"]
  G --> H["Bolsita lista para dispensar"]
```

Variantes:
- Directo desde bolsa stock (se salta frasco).

---

## 4) P1 — Samplers por lote (reducir 20 registros a 1 flujo guiado)

```mermaid
flowchart TD
  A["Iniciar batch sampler"] --> B["Seleccionar 4 genéticas"]
  B --> C["Para cada genética: extraer X g (una sola captura)"]
  C --> D["Fraccionar internamente en N unidades"]
  D --> E["Crear múltiples bolsitas"]
  E --> F["Registrar composición del sampler (opcional)"]
  F --> G["Stock actualizado + auditoría"]
```

---

## 5) P0/P1 — Ajuste auditado (cuando se detecta discrepancia)

```mermaid
flowchart TD
  A["Detectar discrepancia"] --> B{¿Se puede justificar por movimiento existente?}
  B -->|Sí| C["Cerrar incidente"]
  B -->|No| D["Admin crea ADJUSTMENT"]
  D --> E["Motivo obligatorio + evidencia opcional"]
  E --> F["Audit log + reporte"]
```
