131 lines
3.2 KiB
Markdown
131 lines
3.2 KiB
Markdown
|
|
# ALFRED
|
||
|
|
|
||
|
|

|
||
|
|
|
||
|
|
**Flujos predefinidos lite - Sistema TZZR**
|
||
|
|
|
||
|
|
## Rol
|
||
|
|
|
||
|
|
Flujos predefinidos para DECK (servidor personal). Cadenas de pasos conocidos donde el usuario solo completa datos variables.
|
||
|
|
|
||
|
|
## Posicion en el Flujo
|
||
|
|
|
||
|
|
```
|
||
|
|
ALFRED
|
||
|
|
|
|
||
|
|
Salida esperada?
|
||
|
|
|
|
||
|
|
+------+------+
|
||
|
|
| |
|
||
|
|
SI NO
|
||
|
|
| (incidencia)
|
||
|
|
| |
|
||
|
|
| v
|
||
|
|
| MASON
|
||
|
|
| |
|
||
|
|
v v
|
||
|
|
FELDMAN
|
||
|
|
```
|
||
|
|
|
||
|
|
## Endpoints
|
||
|
|
|
||
|
|
| Metodo | Ruta | Descripcion |
|
||
|
|
|--------|------|-------------|
|
||
|
|
| GET | `/health` | Estado del servicio |
|
||
|
|
| GET | `/flujos` | Listar flujos predefinidos |
|
||
|
|
| POST | `/flujos` | Crear nuevo flujo |
|
||
|
|
| GET | `/flujos/<id>` | Detalle de un flujo |
|
||
|
|
| PUT | `/flujos/<id>` | Actualizar flujo |
|
||
|
|
| DELETE | `/flujos/<id>` | Desactivar flujo (soft delete) |
|
||
|
|
| POST | `/ejecutar/<id>` | Ejecutar un flujo |
|
||
|
|
| GET | `/ejecuciones` | Listar ejecuciones |
|
||
|
|
| GET | `/ejecuciones/<hash>` | Detalle de ejecucion |
|
||
|
|
| GET | `/stats` | Estadisticas |
|
||
|
|
|
||
|
|
## Autenticacion
|
||
|
|
|
||
|
|
Todas las rutas (excepto `/health`) requieren:
|
||
|
|
```
|
||
|
|
X-Auth-Key: {h_instancia}
|
||
|
|
```
|
||
|
|
|
||
|
|
## Crear un Flujo
|
||
|
|
|
||
|
|
```bash
|
||
|
|
curl -X POST http://localhost:5052/flujos \
|
||
|
|
-H "Content-Type: application/json" \
|
||
|
|
-H "X-Auth-Key: {h_instancia}" \
|
||
|
|
-d '{
|
||
|
|
"nombre": "Rutina Pecho",
|
||
|
|
"descripcion": "Entrenamiento de pecho - Martes",
|
||
|
|
"pasos": [
|
||
|
|
{"ejercicio": "Press banca", "series": 4},
|
||
|
|
{"ejercicio": "Press inclinado", "series": 3}
|
||
|
|
],
|
||
|
|
"campos_variables": ["kg", "reps", "notas"]
|
||
|
|
}'
|
||
|
|
```
|
||
|
|
|
||
|
|
## Ejecutar un Flujo
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Ejecucion OK -> destino FELDMAN
|
||
|
|
curl -X POST http://localhost:5052/ejecutar/{flujo_id} \
|
||
|
|
-H "Content-Type: application/json" \
|
||
|
|
-H "X-Auth-Key: {h_instancia}" \
|
||
|
|
-d '{
|
||
|
|
"datos": {"press_banca": {"kg": 80, "reps": 10}}
|
||
|
|
}'
|
||
|
|
|
||
|
|
# Ejecucion con incidencia -> destino MASON
|
||
|
|
curl -X POST http://localhost:5052/ejecutar/{flujo_id} \
|
||
|
|
-H "Content-Type: application/json" \
|
||
|
|
-H "X-Auth-Key: {h_instancia}" \
|
||
|
|
-d '{
|
||
|
|
"datos": {"press_banca": {"kg": 0, "reps": 0}},
|
||
|
|
"incidencia": true,
|
||
|
|
"notas": "Lesion en hombro"
|
||
|
|
}'
|
||
|
|
```
|
||
|
|
|
||
|
|
## Estados de Salida
|
||
|
|
|
||
|
|
| Estado | Descripcion | Destino |
|
||
|
|
|--------|-------------|---------|
|
||
|
|
| ok | Todo segun lo previsto | FELDMAN |
|
||
|
|
| incidencia | Algo no coincide | MASON |
|
||
|
|
|
||
|
|
## Despliegue
|
||
|
|
|
||
|
|
```bash
|
||
|
|
cd /opt/alfred
|
||
|
|
cp .env.example .env
|
||
|
|
# Editar .env con credenciales
|
||
|
|
docker compose up -d
|
||
|
|
```
|
||
|
|
|
||
|
|
## Configuracion
|
||
|
|
|
||
|
|
Ver `.env.example` para variables requeridas:
|
||
|
|
- `H_INSTANCIA`: Hash unico de DECK
|
||
|
|
- `DB_*`: Credenciales PostgreSQL
|
||
|
|
|
||
|
|
## Base de Datos
|
||
|
|
|
||
|
|
Ejecutar `init.sql` en PostgreSQL o las tablas se crean automaticamente:
|
||
|
|
- `flujos_predefinidos`: Definicion de flujos
|
||
|
|
- `flujo_ejecuciones`: Historial de ejecuciones
|
||
|
|
|
||
|
|
## Comparacion
|
||
|
|
|
||
|
|
| Componente | Servidor | Tipo | Destino si OK |
|
||
|
|
|------------|----------|------|---------------|
|
||
|
|
| CLARA | DECK | Input suelto | MASON |
|
||
|
|
| MARGARET | CORP | Input suelto | MASON |
|
||
|
|
| **ALFRED** | DECK | Flujo predefinido | FELDMAN (directo) |
|
||
|
|
| JARED | CORP | Flujo predefinido | FELDMAN (directo) |
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
*Componente del sistema TZZR - Implementado 2025-12-24*
|