# Flujos operativos + Modelo de datos (alto nivel)

## Glosario rápido
- **Genética**: cepa/variedad (strain) que se cultiva/distribuye.
- **Contenedor**: unidad física que contiene producto (bolsa de stock, frasco de exhibición, bolsita de distribución).
- **Movimiento**: evento que cambia stock (ingreso, salida, traspaso, ajuste, merma).
- **Ledger**: libro mayor de inventario; la “verdad” está en movimientos, no en celdas editables.
- **Merma**: pérdida/descartes registrables por operación/etapa.

## Principio clave: un movimiento = una transacción consistente
Problema actual: en Excel se termina registrando salida e ingreso como dos cosas separadas, lo que genera duplicación y error.

Propuesta: modelar un **traspaso** como una operación única que:
- descuenta del contenedor origen,
- suma al contenedor destino,
- genera un único log/auditoría,
- opcionalmente registra merma (diferencia entre lo que sale y lo que entra).

## Flujos principales (versión operativa)

### 1) Cosecha / manicura / pesado → stock
1. Se pesa producción (idealmente con balanza integrada).
2. Se crean/actualizan contenedores de stock (p.ej., “bolsa stock cogollo grande/chico”).
3. Se registra merma o subproductos (si aplica) con categorías definidas.

### 2) Stock → frasco de exhibición
- Traspaso desde bolsa de stock a frasco (para atención al público), con peso capturado y auditoría.

### 3) Frasco o stock → bolsitas de distribución
Escenarios:
- **Con frasco**: se traspasa a frasco y de frasco a bolsitas.
- **Directo**: se salta frasco y se entrega desde bolsa de stock (cuando el volumen lo justifica).

En ambos casos, cada bolsita idealmente:
- tiene **código**,
- queda asociada a genética + peso neto,
- permite conocer “cuántas quedan” sin estimaciones “a ojo”.

### 4) Samplers (muestras 1g de múltiples genéticas)
Objetivo: reducir el costo operativo de registrar muchas salidas.

Flujo deseado:
- Iniciar “armado de sampler por lote”.
- Para cada genética: pesar una cantidad mayor (p.ej., 10g) una vez, y luego fraccionar internamente.
- Registrar en el sistema:
  - salidas agregadas por genética (desde contenedor origen),
  - creación de múltiples bolsitas destino,
  - composición del sampler (si se necesita trazabilidad por unidad).

## Flujo de cultivo (tracking mínimo viable)

### Esquejes (lote) → trasplante → planta individual
- Antes del trasplante: registrar un **lote** (agrupado) con métricas simples (éxitos/bajas).
- Al trasplantar (cuando hay raíces): asignar **código** y crear **planta individual**.
- Registrar cambios de etapa (vegetativo/flora/secado/curado) y eventos relevantes.
- Al cosechar: vincular la planta (o lote) a la producción que entra a inventario.

## Modelo de datos (alto nivel)
Entidades sugeridas (sin implementar todavía):
- `User`, `Role`
- `Genetic` (cepa): nombre, categoría, tiempos estimados (60/90 días), estado (activa/inactiva)
- `ContainerType` (bolsa stock, frasco, bolsita)
- `Container` (con `code`): estado, ubicación opcional
- `Movement` (cabecera): tipo, fecha efectiva, creado_por, notas
- `MovementLine` (detalle): contenedor_origen, contenedor_destino, genética, peso, merma
- `PlantBatch` (lote esquejes)
- `Plant` (código individual), `CultivationEvent` (etapa/eventos)
- `EquipmentAsset` (luces, sensores), `DepreciationPolicy`
- `CostEntry` (horas, insumos, energía), `CostAllocation`

### Diagrama (borrador)
```mermaid
erDiagram
  USER ||--o{ MOVEMENT : creates
  MOVEMENT ||--o{ MOVEMENT_LINE : has
  GENETIC ||--o{ MOVEMENT_LINE : referenced_by
  CONTAINER ||--o{ MOVEMENT_LINE : participates
  CONTAINER_TYPE ||--o{ CONTAINER : categorizes

  PLANT_BATCH ||--o{ PLANT : yields
  PLANT ||--o{ CULTIVATION_EVENT : has

  EQUIPMENT_ASSET ||--o{ COST_ENTRY : contributes_to
  PLANT_BATCH ||--o{ COST_ALLOCATION : receives
  GENETIC ||--o{ COST_ALLOCATION : receives
```

## Decimales y unidades (importante)
La transcripción menciona discrepancias por decimales.

Decisiones a cerrar:
- unidad de almacenamiento (recomendado: **miligramos** como entero, mostrando gramos con 3 decimales),
- redondeo (siempre hacia arriba/abajo/“bankers”),
- tolerancias permitidas (p.ej., variación máxima por operación antes de pedir confirmación).

