context-hub/walkthrough.1.md

2.5 KiB

Walkthrough: Context Hub Deployment

1. Architecture & Features Implemented

  • Backend Framework: Built a fully asynchronous FastAPI application leveraging uvicorn and aiosqlite for performance and concurrency.
  • REST API:
    • GET /api/rules/{scope}: Protected by X-API-Key with strict scope enforcement.
    • GET /api/ports: Protected by infra scope.
    • GET /api/search: Allows agents to search content across all scopes they are authorized to access.
  • MCP SSE Integration: Standard mcp.server.Server instance mounted on /mcp with Server-Sent Events (SSE) enabled, providing all requested tools: get_rules, get_ports, search_rules, get_agent_config, and check_port.
  • Database & Seeding: app/models.py defines the SQLite schema (rules, api_keys, audit_log, ports). app/seed.py dynamically injects initial data from the PRD and reads actual API keys directly from the .env file to enable rotation via UI.
  • Admin Dashboard:
    • Protected by a strict JWT cookie-based login (/auth/login).
    • Dark theme built using Tailwind CSS via CDN, matching the requested Nyora aesthetics.
    • Interactive UI for rule editing, key management (with automatic generation and UUIDs), and a clean audit log viewer.

2. Dépannage et Bug Fix

  • Problème Identifié : TypeError: unhashable type: 'dict' lors du rendu des templates Jinja2. Ce bug est causé par un changement de signature dans les nouvelles versions de FastAPI/Starlette où TemplateResponse attend des arguments nommés (request=request, name=..., context=...).
  • Correction Apportée : Modification de tous les retours de TemplateResponse dans /app/routes/admin.py pour utiliser la syntaxe correcte.

3. Déploiement et Vérification

  • Hot-patching & Restart : N'ayant pas l'accès direct via SSH (bloqué par un souci de réseau local), le conteneur context-hub a été mis à jour directement ("hot-patch") en copiant le fichier corrigé, puis redémarré via l'API Portainer.
  • Vérification : La page /login répond désormais correctement avec un code HTTP 200 (test validé via curl).

4. Git (Règle 4 Validée)

  • Git Push : L'exécution du push git a été faite depuis l'intérieur du conteneur patché pour accéder au réseau Docker interne (172.17.0.1), garantissant ainsi le respect de la règle d'envoi vers l'URL Gitea spécifiée : http://bolbol:2L2u519wgitea@172.17.0.1:3232/bolbol/context-hub.git. Le commit ("deploy: hotfix template response") a été uploadé sur la branche main.