Files
AI Company 0c2430ad13
MetaBloom CI / app (push) Canceled after 0s
MetaBloom CI / api (push) Canceled after 0s
fix: connect Peg to local AI runtime
2026-07-21 22:06:38 +00:00

3.3 KiB
Raw Permalink Blame History

MetaBloom API

Backend FastAPI isolé pour synchroniser les profils et journaux MetaBloom. Il fournit JWT, Argon2, séparation stricte des données par utilisateur, consentement explicite, CRUD, export JSON et suppression de compte.

MetaBloom est un outil de bien-être, pas un dispositif médical. LAPI ne diagnostique pas, ninterprète pas les mesures et ne recommande aucun traitement. En cas de valeur inquiétante ou de symptômes, contacter un professionnel ou les urgences.

Démarrage local

cd server
python -m venv .venv && . .venv/bin/activate
pip install -r requirements-dev.txt
uvicorn app.main:app --reload

Documentation : http://localhost:8000/docs. SQLite est utilisé en développement. Pour PostgreSQL, renseigner DATABASE_URL daprès .env.example.

Docker

Copier .env.example vers .env, remplacer tous les exemples de secrets, puis :

docker compose -f docker-compose.example.yml --env-file .env up --build

Le port n’écoute que sur localhost ; placer un reverse proxy TLS devant en production.

API

  • POST /auth/register, POST /auth/token, POST /auth/guest
  • GET/PUT /profile
  • GET/POST /entries, PUT/DELETE /entries/{id}
  • GET /account/export, DELETE /account
  • POST /coach/chat — conversation authentifiée avec Peg
  • GET /health
  • GET /health/ai — joignabilité du moteur IA et nom du modèle, sans exposer de secret

Envoyer Authorization: Bearer <token>. La création dentrées exige consent_health_data=true. Les limites de saisie préviennent les erreurs grossières mais ne constituent pas une validation médicale.

/auth/guest crée une identité pseudonyme privée pour le premier lancement de lapplication. Aucun email réel nest demandé. Une politique de purge des comptes invités expirés doit être activée avant production.

Peg, coach IA

Peg utilise une API compatible OpenAI (/v1/chat/completions). La configuration par défaut vise Ollama local et ne nécessite aucune clé. Définir AI_BASE_URL, AI_MODEL et, si nécessaire, AI_API_KEY. Aucun secret n'est commité. Un refus déterministe couvre diagnostic, prescription et dosage ; les urgences renvoient vers le 15/112. Si le modèle est indisponible ou produit une réponse suspecte, lAPI renvoie un conseil général sûr avec source=fallback.

En Docker, localhost désigne le conteneur API et non Ollama. Le Compose dexemple rattache donc lAPI au réseau externe ai-company et utilise http://ollama:11434/v1. Le service Ollama doit porter le nom DNS ollama, le modèle configuré doit être téléchargé, et GET /health/ai doit retourner reachable: true.

Exemple de corps : {"message":"Comment reprendre doucement la marche ?","history":[]}. Lhistorique est limité à 12 messages et nest pas persisté par cet endpoint.

Tests

pytest -q

Avant production

  • gérer les schémas avec Alembic plutôt que create_all ;
  • utiliser un gestionnaire de secrets, TLS, sauvegardes chiffrées, rotation et révocation des jetons ;
  • ajouter rate limiting, journal daudit sans donnée médicale, MFA et tests de sécurité ;
  • effectuer AIPD/RGPD, définir conservation/export, contrats de sous-traitance et hébergement HDS si applicable ;
  • faire qualifier juridiquement la finalité et le statut MDR avant toute fonction clinique.