# Flujos **Versión:** 1.0 **Estado:** Definición --- ## Visión General El sistema tiene tres flujos principales según la naturaleza de la información entrante. --- ## Flujo Estándar (entrada manual) **Condición:** La información no encaja (entrada manual, incidencia, improvisación). Requiere enriquecimiento o validación manual. ``` Secretaría (Clara/Margaret) │ │ registro inmutable ▼ Administración (Mason) │ │ enriquecimiento (24h) ▼ Contable (Feldman) │ │ consolidación ▼ Inmutable ``` --- ## Flujo de Producción (procesos predefinidos) **Condición:** La información encaja (viene de Producción, proceso predefinido completo). La información ya está completa y estructurada. ``` Producción (Alfred/Jared) │ │ flujo predefinido ▼ Secretaría (Clara/Margaret) │ │ registro inmutable ▼ Contable (Feldman) │ │ consolidación directa ▼ Inmutable ``` **Nota:** Este flujo salta Administración porque no hay nada que enriquecer. --- ## Flujo con Incidencia **Condición:** Durante un flujo de producción, el usuario improvisa o se produce un cambio. **Comportamiento:** La improvisación marca el punto de quiebre. Todo lo anterior registrado se mantiene, pero lo que viene después requiere el paso por Administración. ``` Producción (Alfred/Jared) │ │ flujo predefinido ▼ Secretaría (Clara/Margaret) │ │ ⚠️ incidencia detectada ▼ Administración (Mason) │ │ enriquecimiento ▼ Contable (Feldman) ``` --- ## Regla de Decisión | Condición | Flujo | |-----------|-------| | **Encaja** | Secretaría → Feldman | | **No encaja** | Secretaría → Mason → Feldman | --- ## Diagrama de Decisión ``` ┌─────────────────┐ │ Entrada │ └────────┬────────┘ │ ┌────────▼────────┐ │ ¿Viene de │ │ Producción? │ └────────┬────────┘ │ ┌────────┴────────┐ │ │ SÍ NO │ │ ┌────────▼────────┐ │ │ ¿Encaja │ │ │ completo? │ │ └────────┬────────┘ │ │ │ ┌────────┴────────┐ │ │ │ │ SÍ NO │ │ │ │ ▼ ▼ ▼ ┌──────────┐ ┌──────────────────┐ │ Directo │ │ Mason │ │ Feldman │ │ (enriquecer) │ └──────────┘ └──────────────────┘ ``` --- ## Mecanismo de "Encaja" **Pendiente de definir:** Sistema de hashes que determina automáticamente si la información encaja con un flujo predefinido. Concepto propuesto: ```python def encaja(entrada, flujo_esperado): # Comparar estructura de datos # Verificar campos requeridos # Validar tipos return estructura_coincide and campos_completos ``` --- ## Estados del Flujo | Estado | Ubicación | Descripción | |--------|-----------|-------------| | **recibido** | Secretaría | Entrada registrada | | **en_edicion** | Mason | Usuario enriqueciendo | | **listo** | Mason | Preparado para Feldman | | **pendiente** | Feldman cola | En espera de consolidación | | **consolidado** | Feldman bloques | Registro final inmutable | --- ## Estructura de Feldman Feldman tiene **dos tablas internas**: ``` ┌─────────────────────────────────────────────────────────────────┐ │ FELDMAN │ ├─────────────────────────────────────────────────────────────────┤ │ │ │ ┌─────────────────────────────────────────────────────────┐ │ │ │ COLA (24h configurable) │ │ │ │ • Registros esperando consolidación │ │ │ │ • Usuario puede: DEVOLVER a Mason │ │ │ │ • Si expira → pasa a BLOQUE │ │ │ └─────────────────────────┬────────────────────────────────┘ │ │ │ │ │ ▼ │ │ ┌─────────────────────────────────────────────────────────┐ │ │ │ BLOQUES INMUTABLES │ │ │ │ GÉNESIS ─▶ BLOQUE 1 ─▶ BLOQUE 2 ─▶ ... │ │ │ │ (hash anterior, merkle root, timestamp) │ │ │ └─────────────────────────────────────────────────────────┘ │ │ │ └─────────────────────────────────────────────────────────────────┘ ``` --- ## Ventanas Temporales | Etapa | Default | Configurable | Descripción | |-------|---------|--------------|-------------| | Mason | 24h | ✓ | Tiempo para enriquecer antes de auto-envío | | Feldman cola | 24h | ✓ | Tiempo en cola antes de cerrar en bloque |