Spaces:
Sleeping
Sleeping
metadata
title: Bot Fam
emoji: 🐨
colorFrom: gray
colorTo: purple
sdk: docker
pinned: false
Bot Fam
Space Docker para inventario del hogar con FastAPI, SQLite, Telegram, Claude Haiku y Whisper tiny local.
Stack
FastAPIasíncrono como backend operativo.SQLitecomo base principal del servicio.faster-whispercon modelotinydentro del contenedor.Telegramcomo canal principal para registrar, consumir y consultar.Claude Haikupara estructurar texto, buscar registros y armar diagramas.Google Sheets + Apps Scriptsolo como respaldo opcional e idempotente.
Estructura
python_backend/: backend principal en Python.google-apps-script/: código que va en Apps Script dentro de Google Sheets.docs/: arquitectura.Dockerfile: imagen lista para Hugging Face Spaces.
Variables de entorno
Archivos plantilla:
python_backend/.env.examplepython_backend/.env.huggingface.example
En Hugging Face Spaces no subes .env. Debes copiar esos valores a Settings > Variables and secrets.
Variables clave
APP_BASE_URL: URL final del Space, por ejemplohttps://JairoDanielMT-bot-fam.hf.spaceSQLITE_PATH: usar/data/inventario.sqlitesi tienes almacenamiento persistente.ANTHROPIC_MODEL: usa un modelo explícito estable, por ejemploclaude-haiku-4-5.WHISPER_MODEL: por defectotiny.WHISPER_DEVICE:cpu.WHISPER_COMPUTE_TYPE:int8.SHEETS_SYNC_ENABLED: activa o apaga el respaldo a Google Sheets sin afectar la operación principal.BOOTSTRAP_FROM_SHEETS: si estrue, importa desde Sheets solo cuando SQLite aún está vacío.SYNC_INTERVAL_SECONDS: frecuencia del intento de sincronización en segundo plano.REMINDER_HOURyREMINDER_MINUTE: horario del aviso diario enTIMEZONE. El default actual es05:00.EXPIRY_WARNING_DAYS: ventana de alerta de vencimiento.MEMORY_SHORT_LIMIT: cantidad de turnos recientes que el bot conserva por chat.
Flujo principal
- Telegram recibe texto o audio.
- Si llega audio, el contenedor lo transcribe localmente con Whisper tiny.
- Claude Haiku convierte texto libre a datos estructurados o responde consultas.
- SQLite guarda productos, movimientos, memoria conversacional y tareas pendientes.
- Google Sheets se actualiza como respaldo desde una cola local de sincronización.
- El scheduler diario envía alertas de vencimiento por Telegram a la hora local configurada.
Telegram
No necesitas comandos para el uso normal. El bot entiende lenguaje natural, por ejemplo:
compré leche gloria 6 unidades a 4.2 vence el 10 de abrilconsumimos 2 unidades de leche gloriaqué productos vencen esta semanacuánto arroz quedahazme un gráfico del stock
También puede seguir aceptando comandos como compatibilidad:
/registrar .../consumir .../buscar .../diagrama .../vencimientos/stock ...
Webhook de Telegram
Cuando el Space ya esté arriba y APP_BASE_URL apunte a la URL final:
curl -X POST https://TU-SPACE.hf.space/telegram/set-webhook
Ese endpoint registra automáticamente:
https://TU-SPACE.hf.space/telegram/webhook
Sincronización con Google Sheets
- SQLite es la fuente principal del sistema.
- Sheets funciona como respaldo opcional.
- Las escrituras locales se encolan y la sincronización usa snapshot completo para evitar duplicados.
- El arranque no depende de Sheets salvo que actives
BOOTSTRAP_FROM_SHEETS=true. - Existen endpoints manuales:
POST /api/sync/from-sheetsPOST /api/sync/to-sheets
Nota de compatibilidad
El contenedor usa python:3.14-slim. Si Hugging Face Spaces o faster-whisper mostraran incompatibilidad en build, el ajuste práctico inmediato es bajar a python:3.13-slim.