5.7. Module G — Administration & Paramétrage
5.7. Module G — Administration & Paramétrage Pour Admin
Synergia / responsable cabinet :
gestion des utilisateurs (infirmiers, coordinateurs),
gestion des droits (accès patients), configuration des sources
RAG (docs, PDFs, guidelines),
paramètres de confidentialité (durée des logs, anonymisation),
monitoring des appels LLM (volumes, coûts). ?
Je pars du principe que le “premier écran” = Module G – Administration & Paramétrage (config globale du cabinet).
Je te propose un MDD Odoo Studio prêt à saisir, en réutilisant un maximum de modèles natifs (res.users, res.partner) et en créant 3 modèles custom :
- x_synergia_admin_settings → écran principal de paramétrage du cabinet
- x_synergia_rag_source → liste des sources RAG
- x_synergia_patient_access → matrice “droits d’accès patients par utilisateur”
- x_synergia_llm_call_log → journal de monitoring LLM (consulté depuis un autre écran / onglet)
1️⃣ Modèle principal : Paramètres Synergia
Modèle Odoo Studio
- Nom technique du modèle : x_synergia_admin_settings
- Libellé : Paramètres Synergia Senior
- Menu : dans un nouveau menu « Synergia » > « Administration & Paramétrage »
Champs du modèle x_synergia_admin_settings
| Champ technique | Libellé (FR) | Type Odoo | Obligatoire | Remarques / Widget / Domaine |
|---|---|---|---|---|
| name | Nom du cabinet / structure | Char | Oui | Nom d’affichage de la ligne de paramétrage |
| company_id | Société | Many2one → res.company | Oui | default = company_id de l’utilisateur |
| x_admin_user_id | Administrateur Synergia | Many2one → res.users | Oui | L’utilisateur qui gère ces paramètres |
| x_user_ids | Utilisateurs (infirmiers, coordinateurs) | Many2many → res.users | Non | Domaine conseillé : membres des groupes “Infirmier Synergia” / “Coordinateur Synergia” |
| x_patient_access_ids | Droits d’accès patients | One2many → x_synergia_patient_access (x_settings_id) | Non | Onglet “Gestion des droits” |
| x_rag_source_ids | Sources RAG (docs, PDFs, guidelines) | One2many → x_synergia_rag_source (x_settings_id) | Non | Onglet “Sources RAG” |
Paramètres de confidentialité (dans un groupe « Confidentialité & Logs »)
| Champ technique | Libellé (FR) | Type Odoo | Obligatoire | Remarques |
|---|---|---|---|---|
| x_log_retention_days | Durée de conservation des logs (jours) | Integer | Oui | Exemple : 365 |
| x_anonymization_delay_days | Anonymisation après (jours) | Integer | Non | Nombre de jours avant anonymisation des données nominatives |
| x_anonymization_mode | Mode d’anonymisation | Selection | Oui | Valeurs : hash (Hash IDs), initials (Initiales), full (Suppression nom/prénom) |
| x_store_raw_questions | Stocker les questions en clair dans les logs ? | Boolean | Non | A décocher si confidentialité renforcée |
| x_store_patient_identifiers | Conserver les identifiants patients dans les logs ? | Boolean | Non | Si Non → ID pseudonymisés |
Monitoring LLM (paramètres globaux, pas le journal lui-même)
| Champ technique | Libellé (FR) | Type Odoo | Obligatoire | Remarques |
|---|---|---|---|---|
| x_llm_provider | Fournisseur LLM par défaut | Selection | Oui | Valeurs : openai, anthropic, google, autre |
| x_llm_model_name | Nom du modèle LLM | Char | Non | Ex : gpt-5.1-mini, claude-3.5-sonnet |
| x_llm_monthly_budget_eur | Budget mensuel max LLM (EUR) | Float | Non | Pour affichage d’alertes si dérive |
| x_llm_alert_threshold_pct | Seuil d’alerte budget (%) | Integer | Non | Ex : 80 = alerte à 80 % du budget |
| x_llm_log_ids | Logs des appels LLM | One2many → x_synergia_llm_call_log (x_settings_id) | Non | Onglet / smart button “Monitoring LLM” |
2️⃣ Modèle “Droits d’accès patients”
Pour : “Gestion des droits (accès patients)”
- Nom technique : x_synergia_patient_access
- Libellé : Droit d’accès patient
Champs du modèle x_synergia_patient_access
| Champ technique | Libellé (FR) | Type Odoo | Obligatoire | Remarques |
|---|---|---|---|---|
| name | Libellé | Char | Oui | Peut être généré automatiquement (infirmier - patient) |
| x_settings_id | Paramètres Synergia | Many2one → x_synergia_admin_settings | Oui | Lien parent (One2many) |
| x_user_id | Utilisateur (infirmier) | Many2one → res.users | Oui | Infirmier / coordinateur |
| x_patient_id | Patient (senior) | Many2one → res.partner | Oui | Domaine : x_is_senior = True |
| x_access_level | Niveau d’accès | Selection | Oui | Valeurs : read (Lecture), write (Lecture/écriture), restricted (Données minimales) |
| x_can_view_rag_history | Voir l’historique des réponses IA ? | Boolean | Non | Pour restreindre qui voit le détail des échanges IA |
| x_active | Actif | Boolean | Oui | Par défaut = True |
3️⃣ Modèle “Sources RAG”
Pour : “Configuration des sources RAG (docs, PDFs, guidelines)”
- Nom technique : x_synergia_rag_source
- Libellé : Source RAG
Champs du modèle x_synergia_rag_source
| Champ technique | Libellé (FR) | Type Odoo | Obligatoire | Remarques |
|---|---|---|---|---|
| name | Nom de la source | Char | Oui | Ex : “Guide HAS plaies chroniques” |
| x_settings_id | Paramètres Synergia | Many2one → x_synergia_admin_settings | Oui | Lien parent |
| x_source_type | Type de source | Selection | Oui | pdf, doc, url, faq, note_interne |
| x_document_id | Document Odoo (si stocké en interne) | Many2one → documents.document | Non | Lien vers Odoo Documents |
| x_file_binary | Fichier binaire (upload direct) | Binary | Non | Si pas de document_id |
| x_external_url | URL externe | Char | Non | Pour sources web / intranet |
| x_scope | Portée | Selection | Oui | global (tous les patients), pathologie (par pathologie), cabinet (cabinet) |
| x_pathology_tag_ids | Pathologies concernées | Many2many → x_synergia_pathology_tag (optionnel) | Non | Seulement si tu crées un modèle de tags |
| x_is_active | Active ? | Boolean | Oui | Filtre sur la liste |
| x_last_indexed_at | Dernière indexation RAG | Datetime | Non | Mise à jour par le backend (n8n / script) |
(Si tu ne veux pas de modèle de tags pathologie, tu peux remplacer par un simple Char “Pathologie(s) concernée(s)”.)
4️⃣ Modèle “Monitoring des appels LLM”
Pour : “Monitoring des appels LLM (volumes, coûts)”
- Nom technique : x_synergia_llm_call_log
- Libellé : Log appel LLM
Champs du modèle x_synergia_llm_call_log
| Champ technique | Libellé (FR) | Type Odoo | Obligatoire | Remarques |
|---|---|---|---|---|
| name | Référence log | Char | Oui | Généré (LLM-00001…) |
| x_settings_id | Paramètres Synergia | Many2one → x_synergia_admin_settings | Oui | Pour filtrer par cabinet |
| x_datetime | Date / heure appel | Datetime | Oui | |
| x_user_id | Utilisateur | Many2one → res.users | Non | Infirmier / aidant… |
| x_patient_id | Patient (si applicable) | Many2one → res.partner | Non | Peut être anonymisé selon paramètres |
| x_llm_provider | Fournisseur LLM | Selection | Oui | openai, anthropic, google, autre |
| x_llm_model_name | Modèle LLM | Char | Non | |
| x_prompt_tokens | Tokens prompt | Integer | Non | |
| x_completion_tokens | Tokens complétion | Integer | Non | |
| x_total_tokens | Tokens total | Integer | Non | Calculé éventuellement |
| x_cost_eur | Coût estimé (EUR) | Float | Non | Calculé par backend |
| x_status | Statut appel | Selection | Oui | ok, error, timeout, blocked |
| x_error_message | Message d’erreur | Text | Non | Si status = error |
Comment le brancher visuellement (écran Odoo Studio)
Sur l’écran principal du modèle x_synergia_admin_settings :
-
Onglet 1 : “Utilisateurs & Droits”
- x_user_ids (Many2many) en vue liste + kanban
- One2many x_patient_access_ids en vue liste (utilisateur, patient, niveau d’accès)
-
Onglet 2 : “Sources RAG”
- One2many x_rag_source_ids (Nom, Type, Document/URL, Portée, Active)
-
Onglet 3 : “Confidentialité & Logs”
- Groupe “Confidentialité” : x_log_retention_days, x_anonymization_delay_days, x_anonymization_mode, x_store_raw_questions, x_store_patient_identifiers
- Groupe “Monitoring LLM (paramètres)” : x_llm_provider, x_llm_model_name, x_llm_monthly_budget_eur, x_llm_alert_threshold_pct
- Bouton intelligent (smart button) “Logs LLM” relié au One2many x_llm_log_ids (vue liste + graph pour volumes/coûts).
Les grandes histoires ont une personnalité. Envisagez de raconter une belle histoire qui donne de la personnalité. Écrire une histoire avec de la personnalité pour des clients potentiels aidera à établir un lien relationnel. Cela se traduit par de petites spécificités comme le choix des mots ou des phrases. Écrivez de votre point de vue, pas de l'expérience de quelqu'un d'autre.
Les grandes histoires sont pour tout le monde, même lorsqu'elles ne sont écrites que pour une seule personne. Si vous essayez d'écrire en pensant à un public large et général, votre histoire sonnera fausse et manquera d'émotion. Personne ne sera intéressé. Ecrire pour une personne en particulier signifie que si c'est authentique pour l'un, c'est authentique pour le reste.