Module Thalia — Runtime IA
Le module Thalia est la couche runtime de l'agent IA on-premise. Il implémente les trois piliers de la gouvernance IA : audit, permissions, et validation humaine.
astuce
Pour l'architecture globale de Thalia (vision, roadmap, RAG), voir la section Thalia — IA.
Services
ThaliaPermissionService
Vérifie si une action IA est autorisée pour un utilisateur et un scope donné.
use Modules\Thalia\Services\ThaliaPermissionService;
$result = app(ThaliaPermissionService::class)->check(
user: $user,
tool: 'bookstack.search',
scope: 'bridge.read'
);
// $result->allowed (bool)
// $result->reason (string)
En mode permissif (Phase 4 par défaut) : retourne toujours allowed = true mais trace l'accès dans thalia_ai_logs.
ThaliaAuditService
Enregistre toutes les actions IA dans thalia_ai_logs.
ThaliaAuditService::sanitizeParams()filtre automatiquement les champstoken,secret,keyavant d'écrire en log.
ThaliaValidationService
Gère le workflow de validation humaine pour les actions sensibles.
- Crée des entrées dans
thalia_pending_actions - Notifie un approbateur via
AlertService - Expire les actions non validées après TTL configurable
Modèles
| Modèle | Table | Description |
|---|---|---|
ThaliaAiLog | thalia_ai_logs | Journal de toutes les actions IA |
ThaliaPendingAction | thalia_pending_actions | Actions en attente de validation humaine |
ThaliaToolPermission | thalia_tool_permissions | Permissions par outil et scope |
Seeder permissions
php artisan db:seed --class="Modules\Thalia\Database\Seeders\ThaliaToolPermissionSeeder"
Initialise les permissions de base (ex. bridge.bookstack.* / scope bridge.read).
Schéma thalia_ai_logs
| Colonne | Type | Description |
|---|---|---|
id | bigint | PK |
id_user | bigint | Utilisateur ayant déclenché l'action |
tool | varchar | Outil appelé (ex. bookstack.search) |
scope | varchar | Scope de permission |
params | json | Paramètres sanitizés |
result | json | Résultat ou erreur |
allowed | boolean | Décision de permission |
duration_ms | int | Durée d'exécution |
created_at | timestamp | Horodatage |