Files
system-docs/v4-archive/alfred/README.md
2025-12-24 17:28:34 +00:00

131 lines
3.2 KiB
Markdown

# ALFRED
![Estado](https://img.shields.io/badge/Estado-IMPLEMENTADO-brightgreen)
**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*