[Git][openmairie/openads-documentation][6.20] 20 commits: feat : ajoute les document instruction importée

0 views
Skip to first unread message

Sofien Timezouaght (@stimezouaght)

unread,
May 6, 2026, 8:08:55 PMMay 6
to openmairi...@googlegroups.com


Sofien Timezouaght pushed to branch 6.20 at openMairie / openads-documentation


Commits:
128489b7 by Edward PRITCHARD at 2026-04-03T18:57:09+02:00
feat : ajoute les document instruction importée

- - - - -
94d3135a by Edward PRITCHARD at 2026-04-03T18:57:27+02:00
fix : update .gitignore

- - - - -
fc58db6b by Nathanaël HOUN at 2026-04-10T16:12:03+02:00
ci: utiliser openmairie.devtools component pour prévisu sphinx

- - - - -
c6a4d8f0 by Nathanaël HOUN at 2026-04-10T16:32:45+02:00
feat: correction des règles de recommandation pour le dossier final :

Depuis openmairie/openads#10880, les rapports d'instruction ne sont plus recommandés

- - - - -
9e4060e8 by Nathanaël HOUN at 2026-04-10T16:33:10+02:00
chore: reformulation autour de la constitution du dossier final

- - - - -
89fe257e by Styven Anglès at 2026-04-10T18:18:22+02:00
Ajout table om_utilisateur_tiers dans administration pour import des tiers et lien vers parametrage

- - - - -
1b14b472 by Nathanaël HOUN at 2026-04-16T17:48:38+02:00
chore: renommage de modèle d'affichage en gabarit

- - - - -
2f2a7698 by Nathanaël HOUN at 2026-04-17T10:52:39+02:00
chore: regroupement des infos sur requêtes et gabarits

- - - - -
288801bf by Nathanaël Houn at 2026-04-28T16:21:36+02:00
docs: documenter la variable `results` dans les gabarits

- - - - -
fce0daea by Sofien TIMEZOUAGHT at 2026-05-06T15:44:55+02:00
docs(audit): ajouter la documentation du journal d'audit RGPD

Manuel utilisateur : accès, actions tracées, recherche avancée,
navigation vers la fiche source, lecture seule, référentiels.

Guide développeur : architecture (tables, hooks, classe om_audit),
anti-récursion, circuit-breaker, configuration (débrayage, rétention),
partitionnement mensuel, prérequis.

- - - - -
b82e6b16 by Styven Anglès at 2026-05-06T16:31:07+02:00
Merge branch '10919_EVO_perennisation_gabarits' into '6.20-develop'

Nouvelle documentation sur les gabarits (ex-modèles d'affichages)

See merge request atreal/openads-documentation!152
- - - - -
2edf6249 by Nathanaël Houn at 2026-05-06T16:31:35+02:00
chore: clarifier que les paramètres parametre_courriel_*_titre ne sont
pas pour les consultations

- - - - -
80970e12 by Nathanaël Houn at 2026-05-06T16:31:35+02:00
feat: documentation sur paramétrage courriels notifications

- - - - -
156a9e69 by Styven Anglès at 2026-05-06T16:33:13+02:00
Merge branch '10932_EVO_mail_consultation_gabarit' into '6.20-develop'

feat: paramétrage des courriels de nouvelle consultation

See merge request atreal/openads-documentation!153
- - - - -
f021664e by Sofien Timezouaght at 2026-05-06T23:53:14+00:00
Merge branch '10880_dossier_final_regles_recommandation' into '6.20-develop'

[openmairie/openads#10880] feat: correction des règles de recommandation pour le dossier final

See merge request atreal/openads-documentation!150
- - - - -
3b859131 by Sofien Timezouaght at 2026-05-06T23:54:15+00:00
Merge branch '10905_EVO_mc_import_spe_tiers_consultes' into '6.20-develop'

Ajout table om_utilisateur_tiers dans administration pour import des tiers et lien vers parametrage

See merge request atreal/openads-documentation!151
- - - - -
2dc3bd68 by Sofien Timezouaght at 2026-05-06T23:56:06+00:00
Merge branch '6.20-develop' into '10910_EVO_DocumentSpecifique'

# Conflicts:
# .gitignore
- - - - -
a906f0af by Sofien Timezouaght at 2026-05-07T00:05:24+00:00
Merge branch '10910_EVO_DocumentSpecifique' into '6.20-develop'

10910 evo documentspecifique

See merge request atreal/openads-documentation!154
- - - - -
1ca12a0e by Sofien Timezouaght at 2026-05-07T00:06:48+00:00
Merge branch '10936_EVO_audit_log' into '6.20-develop'

docs(audit): ajouter la documentation du journal d'audit RGPD

See merge request atreal/openads-documentation!155
- - - - -
34ca2308 by Sofien Timezouaght at 2026-05-07T00:08:32+00:00
Merge branch '6.20-develop' into '6.20'

merge: atreal/openads-documentation:6.20-develop vers openmairie/openads-documentation:6.20

See merge request openmairie/openads-documentation!255
- - - - -


15 changed files:

- .gitignore
- .gitlab-ci.yml
- .readthedocs.yaml
- − dangerfile.ts
- + source/guide_developpeur/audit.rst
- source/guide_developpeur/index.rst
- + source/guide_developpeur/taches_platau.rst
- + source/manuel_utilisateur/a_instruction_document_instruction_importe_platau_message.png
- + source/manuel_utilisateur/a_instruction_document_instruction_importe_platau_tab.png
- source/manuel_utilisateur/administration.rst
- source/manuel_utilisateur/index.rst
- source/manuel_utilisateur/instruction.rst
- + source/manuel_utilisateur/journal_audit.rst
- source/manuel_utilisateur/parametrage.rst
- source/manuel_utilisateur/parametrage_dossier.rst


Changes:

=====================================
.gitignore
=====================================
@@ -1,2 +1,12 @@
-# sphinx build folder
-build/
\ No newline at end of file
+# Sphinx build outputs
+build/
+_build/
+
+# Generated site
+public/
+
+#cursor settings
+.cursor/
+
+#vscode settings
+.vscode/


=====================================
.gitlab-ci.yml
=====================================
@@ -9,50 +9,8 @@ workflow:

# -----------------------------------------------------------------------------

-test:
- stage: test
- interruptible: true
- rules:
- - when: always
- needs: []
-
- # Utiliser la même version que spécifiée dans .readthedocs.yaml
- image: python:3.14-slim
-
- cache: # Pip's cache doesn't store the python packages
- paths: # https://pip.pypa.io/en/stable/topics/caching/
- - .cache/pip
- variables:
- PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip" # Change pip's cache directory to be inside the project directory since we can only cache local items.
-
- before_script:
- - python -V
- - pip install virtualenv
- - virtualenv venv
- - source venv/bin/activate
- - pip install -q -r requirements.txt
- script:
- - sphinx-build -nW -b html -d _build/doctrees source public/
- after_script:
- - echo "PAGES_JOB_ID=$CI_JOB_ID" >> job.env
-
- artifacts:
- paths:
- - public/
- reports:
- dotenv: job.env
-
-
-danger-review:
- stage: test
- rules:
- - if: ($CI_PIPELINE_SOURCE == 'merge_request_event' && $DANGER_GITLAB_API_TOKEN != null)
- needs:
- - job: test
- artifacts: true # pour récupérer le fichier job.env
-
- image: node
- before_script:
- - npx --package danger@^13.0.5 --call='danger --version'
- script:
- - npx --package danger@^13.0.5 --call='danger ci --failOnErrors'
+include:
+ - component: gitlab.com/openmairie/openmairie.devtools/build-sphinx-documentation-and-preview-on-mr@master
+ inputs:
+ # Those are the default values
+ python-image: python:3.14-slim # Utiliser la même version que spécifiée dans .readthedocs.yaml
\ No newline at end of file


=====================================
.readthedocs.yaml
=====================================
@@ -8,7 +8,7 @@ version: 2
build:
os: ubuntu-24.04
tools:
- python: "3.14" # utiliser la même versoin que dans .gitlab-ci.yml
+ python: "3.14" # utiliser la même version que dans .gitlab-ci.yml
# You can also specify other tool versions:
# nodejs: "20"
# rust: "1.70"


=====================================
dangerfile.ts deleted
=====================================
@@ -1,17 +0,0 @@
-import { danger, warn, message, fail } from "danger";
-const fs = require("fs");
-
-// Documentation mise à jour
-const documentationChanges = [...danger.git.modified_files, ...danger.git.created_files]
- .filter((path) => (path.startsWith("source/")));
-
-if (process.env.PAGES_JOB_ID) {
- // Afficher les pages modifiées dans la documentation
- const baseUrl = `${process.env.CI_SERVER_PROTOCOL}://${process.env.CI_PROJECT_ROOT_NAMESPACE}.${process.env.CI_PAGES_DOMAIN}/-/${process.env.CI_PROJECT_PATH.replace(new RegExp(`^${process.env.CI_PROJECT_ROOT_NAMESPACE}/`), '')}/-/jobs/${process.env.PAGES_JOB_ID}/artifacts/public`
-
- function urlFromFilePath(path) {
- return baseUrl + '/' + path.replace('source/', '').replace('.rst', '.html').toLowerCase();
- }
-
- message(`[Prévisualisation de la documentation](${baseUrl}/index.html). Pages modifiées : ` + documentationChanges.sort().map(path => `\n - [\`${path}\`](${urlFromFilePath(path)})`).join());
-}


=====================================
source/guide_developpeur/audit.rst
=====================================
@@ -0,0 +1,160 @@
+.. _audit:
+
+###############
+Journal d'audit
+###############
+
+Le journal d'audit RGPD trace les actions des utilisateurs dans openADS.
+Cette page décrit l'architecture technique, les mécanismes d'interception et
+les options de configuration.
+
+
+Architecture
+############
+
+Le système d'audit s'appuie sur trois tables PostgreSQL :
+
+* **om_audit_log** : table principale, partitionnée mensuellement par
+ ``PARTITION BY RANGE (audit_date)``
+* **om_audit_action** : référentiel des types d'actions (LOGIN, INSERT, UPDATE,
+ DELETE, VIEW, EXPORT, IMPORT, etc.)
+* **om_audit_object_type** : référentiel des types d'objet (alimenté à la
+ volée)
+
+La classe centrale est ``obj/om_audit.class.php``. Elle est instanciée une
+seule fois dans le constructeur de ``utils`` (propriété ``$this->audit``) et
+reste disponible pendant toute la durée de la requête HTTP.
+
+
+Interception des écritures
+##########################
+
+Les écritures en base de données sont interceptées par deux surcharges dans
+``obj/utils.class.php`` :
+
+* **execute_auto_db_query()** : intercepte les INSERT / UPDATE / DELETE
+ structurés (passage par ``autoExecute``). C'est le chemin principal utilisé
+ par les classes ``om_dbform``.
+* **execute_db_query()** : intercepte les requêtes SQL brutes. L'extraction
+ de la table et de l'identifiant est réalisée en best-effort par regex.
+
+Les deux surcharges ne tracent que les opérations réussies (``$qres['code']
+=== 'OK'``). Un échec d'audit ne bloque jamais l'action métier de
+l'utilisateur.
+
+
+Anti-récursion
+==============
+
+Les écritures dans les tables d'audit elles-mêmes (``om_audit_log``,
+``om_audit_action``, ``om_audit_object_type``) ne sont jamais tracées pour
+éviter une boucle infinie.
+
+
+Circuit-breaker
+===============
+
+Un compteur d'échecs consécutifs est maintenu. Au-delà de **5 échecs**, l'audit
+se désactive pour la requête courante afin d'éviter de saturer les logs
+applicatifs (cas typique : partition manquante, base de données indisponible).
+
+
+Extraction de l'identifiant d'objet
+====================================
+
+L'identifiant de l'objet tracé est extrait selon le contexte :
+
+* **INSERT** : valeur de la clé primaire dans ``$fields_values``
+* **UPDATE / DELETE** : parsing de la clause ``WHERE`` par regex, avec trois
+ stratégies successives (PK simple, PK qualifiée ``table.pk``, fallback sur la
+ première valeur quotée)
+
+La clé primaire est résolue par réflexion sur la propriété ``$clePrimaire`` de
+la classe générée (``gen/obj/<table>_gen.class.php``), sans accès DB.
+
+
+Actions d'authentification
+##########################
+
+Les événements d'authentification sont tracés via ``om_audit::log_auth()`` :
+
+* **LOGIN** : appelé dans ``triggerAfterLogin()``
+* **LOGOUT** : appelé dans ``logout()``
+* **LOGIN_FAILURE** : appelé dans ``triggerAfterLoginFailure()``
+
+Le login tenté est conservé même en cas d'échec (le compte peut ne pas exister).
+
+
+Consultation de dossier
+#######################
+
+L'ouverture de la fiche d'un dossier d'instruction est tracée via
+``om_audit::log_view()`` depuis ``dossier_instruction.class.php``. Cette
+traçabilité est pertinente pour répondre aux demandes d'accès (art. 15 RGPD)
+concernant les données personnelles des pétitionnaires.
+
+
+Exports et imports
+##################
+
+Les exports CSV sont tracés via ``om_audit::log_export()`` et les imports via
+``om_audit::log_import()``.
+
+
+Configuration
+#############
+
+
+Débrayage
+=========
+
+La journalisation peut être désactivée globalement en ajoutant dans
+``dyn/config.inc.php`` :
+
+.. code-block:: php
+
+ $config['audit_log_enabled'] = false;
+
+Par défaut (absence du paramètre ou valeur à ``true``), l'audit est actif.
+
+
+Rétention
+=========
+
+Un paramètre applicatif ``audit_retention_months`` est posé par le script de
+migration (valeur par défaut : **24 mois**). Il est destiné à la purge
+automatique des données anciennes (prévue en phase 2).
+
+
+Partitionnement
+###############
+
+La table ``om_audit_log`` utilise le partitionnement natif de PostgreSQL
+(``PARTITION BY RANGE`` sur ``audit_date``). Chaque partition couvre un mois
+calendaire.
+
+
+Création automatique des partitions
+====================================
+
+La fonction ``om_audit_create_next_partition()`` crée la partition du mois
+M+2 de manière idempotente (``CREATE TABLE IF NOT EXISTS``). Elle doit être
+appelée **mensuellement** via un cron ou un mécanisme de maintenance planifiée (prévu en phase 2).
+
+Quatre partitions initiales sont créées par le script de migration (mois
+courant + 3 mois d'avance).
+
+
+Stockage
+========
+
+Les partitions utilisent ``fillfactor = 100`` car la table est en
+*append-only* (aucun UPDATE après insertion), ce qui maximise la densité de
+stockage.
+
+
+Prérequis
+#########
+
+* **PostgreSQL** 11 ou supérieur (partitionnement natif requis)
+* **PHP** 8.0


=====================================
source/guide_developpeur/index.rst
=====================================
@@ -32,6 +32,8 @@ Sommaire
signature_electronique.rst
compteurs.rst
web_services.rst
+ taches_platau.rst
gestion_des_logs.rst
+ audit.rst
modules.rst



=====================================
source/guide_developpeur/taches_platau.rst
=====================================
@@ -0,0 +1,74 @@
+.. _taches_platau:
+
+############################
+Tâches entrantes Plat'AU
+############################
+
+Les tâches entrantes Plat'AU sont traitées par le task manager (``services/metier/taskmanager.php``).
+Elles sont reçues via le web service ``/taskadd`` et déclenchées par l'appel au traitement des tâches.
+
+Le suivi de ces tâches est consultable depuis le :ref:`Moniteur Plat'AU<administration_moniteur>` dans l'interface d'administration.
+
+.. _taches_platau_ajout_document_instruction_importe:
+
+Ajout document instruction importé
+###################################
+
+Le type de tâche ``ajout_document_instruction_importe`` est une tâche **entrante** (flux *input*).
+Elle permet à Plat'AU de transmettre un document spécifique à intégrer dans les documents d'instruction importés d'un dossier existant.
+
+Pour le comportement côté utilisateur, voir :ref:`la section du manuel utilisateur<instruction_document_instruction_importe_platau>`.
+
+Structure de la payload JSON
+============================
+
+La payload attendue contient trois blocs :
+
+.. sourcecode:: json
+
+ {
+ "document_instruction_importe": {
+ "date_depot": "2026-03-24",
+ "email_auteur": "",
+ "nom_auteur": "",
+ "prenom_auteur": "",
+ "qualite_auteur": "",
+ "service_auteur": "",
+ "telephone_auteur": "",
+ "texte_description": "",
+ "texte_objet": "Attestation",
+ "acteur_auteur_title": "Auteur Emetteur de la commission"
+ },
+ "document_numerise": {
+ "date_creation": "",
+ "nom_fichier": "dp_116-d41d924e1012.pdf",
+ "file_content_type": "application/pdf",
+ "document_type_code": "32",
+ "document_type": "Attestation",
+ "file_content": "<contenu base64>"
+ },
+ "external_uids": {
+ "dossier": "<UID Plat'AU du dossier>",
+ "document_instruction_importe": "<UID Plat'AU du document>",
+ "acteur": "<UID acteur>",
+ "acteur_generateur": "<UID acteur émetteur>"
+ }
+ }
+
+* ``document_instruction_importe`` : métadonnées sur l'auteur et l'objet du document. Le champ ``acteur_auteur_title`` est utilisé comme émetteur du message de notification sur le dossier.
+* ``document_numerise`` : fichier et typage. Le champ ``document_type_code`` est résolu vers un ``document_type`` de la catégorie réservée **Plat'AU** (``document_type_categorie.code = 'PLATAU'``). Ce code doit exister dans le :ref:`paramétrage des types de documents<parametrage_type_document>`, sinon la tâche échoue.
+* ``external_uids`` : identifiants externes permettant de rattacher le document au dossier et d'enregistrer le lien dans ``lien_id_interne_uid_externe``. Le champ ``dossier`` est obligatoire.
+
+Traitement
+==========
+
+Le traitement est effectué par la méthode ``ajout_document_instruction_importe()`` du task manager (``services/metier/taskmanager.php``). En résumé :
+
+1. Le dossier d'instruction est résolu via l'UID externe du bloc ``external_uids.dossier``.
+2. Le type de document est résolu via ``document_type_code`` parmi les types de catégorie Plat'AU.
+3. Le fichier est créé ou déplacé dans le système de stockage principal (avec mise à jour des métadonnées).
+4. Un enregistrement est ajouté dans la table ``document_instruction_importe``.
+5. Un message de notification est ajouté sur le dossier (type « Ajout document instruction importé », catégorie « platau »).
+6. Les liens ``lien_id_interne_uid_externe`` sont enregistrés pour chaque entrée du bloc ``external_uids``.
+
+Le document importé par ce mécanisme est verrouillé en modification et suppression (sauf droits ``*_bypass``) car il possède un lien externe.


=====================================
source/manuel_utilisateur/a_instruction_document_instruction_importe_platau_message.png
=====================================
Binary files /dev/null and b/source/manuel_utilisateur/a_instruction_document_instruction_importe_platau_message.png differ


=====================================
source/manuel_utilisateur/a_instruction_document_instruction_importe_platau_tab.png
=====================================
Binary files /dev/null and b/source/manuel_utilisateur/a_instruction_document_instruction_importe_platau_tab.png differ


=====================================
source/manuel_utilisateur/administration.rst
=====================================
@@ -189,10 +189,10 @@ Paramétrage de la notification de dépôt de dossier par voie dématérialisé
* **param_courriel_de_notification_depot_demat_titre** : paramètre communauté spécifiant l'objet du courriel.
* **param_courriel_de_notification_depot_demat_message** : paramètre communauté (écrasable par la commune) spécifiant le modèle du corps du courriel.

-.. _administration_parametrage_service_consulte:
+.. _administration_parametrage_service:

-Paramétrage des courriels de notification des services consultés
-----------------------------------------------------------------
+Paramétrage des courriels de notification des services
+------------------------------------------------------

* **parametre_courriel_service_type_titre** : paramètre communauté spécifiant l'objet du courriel. Dans le titre, il est possible d'ajouter le numéro de Dossier
avec le champs de fusion [dossier]
@@ -200,11 +200,6 @@ Paramétrage des courriels de notification des services consultés
[LIEN_TELECHARGEMENT_DOCUMENT] et [LIEN_TELECHARGEMENT_ANNEXE] doivent être utilisée pour pouvoir insérer les liens vers le document et les annnexes.
Pareil que pour le titre, [DOSSIER] permet d'insérer le numéro de dossier.

-Configuration des mails envoyés automatiquement aux services consultés :
-
-* **services_consultes_lien_interne** : contient un lien d'accès en interne à openADS qui sera affiché dans le mail.
-* **services_consultes_lien_externe** : contient un lien d'accès en externe à openADS qui sera affiché dans le mail.
-
.. note::

Il est possible de renseigner des variables de remplacement dans l'objet et le corps du courriel :
@@ -223,9 +218,9 @@ Configuration des mails envoyés automatiquement aux services consultés :

où *[SITE_WEB]* est l'adresse de la racine du logiciel (par exemple https://openads.maville.fr).

-.. _administration_parametrage_tiers_consulte:
+.. _administration_parametrage_tiers:

-Paramétrage des courriels de notification de tiers consultés
+Paramétrage des courriels de notification de tiers
------------------------------------------------------------

* **parametre_courriel_tiers_type_titre** : paramètre communauté spécifiant l'objet du courriel. Dans le titre, il est possible d'ajouter le numéro de Dossier
@@ -303,6 +298,61 @@ Pour tous les types de notification, il est possible de renseigner des variables
Par défaut, quel que soit le type de notification, le message sera :
Bonjour, veuillez prendre connaissance du(des) document(s) suivant(s) :<br>[LIEN_TELECHARGEMENT_DOCUMENT]<br>[LIEN_TELECHARGEMENT_ANNEXE].

+.. _parametre_parametre_consultation_courriel:
+
+Paramétrage des courriels de notification de nouvelle consultation
+==================================================================
+
+Lors de l'envoi d'une consultation interne,
+un courriel est envoyé automatique pour prévenir le tiers consulté ou le service consulté qu'une consultation attend son retour.
+
+Ces mails peuvent être personnalisés à l'aide de ces paramètres :
+
+- **parametre_consultation_courriel_service** : le paramétrage des courriels de nouvelle consultation pour les services
+- **parametre_consultation_courriel_tiers** : le paramétrage des courriels de nouvelle consultation pour les tiers
+
+Le paramétrage de ces courriels se base sur :ref:`les gabarits et leur syntaxe<administration_gabarit>`,
+avec quelques champs de fusions disponibles par défaut.
+
+La syntaxe pour ces deux paramètres est la même (les arguments sont optionnels) :
+ .. code-block:: ini
+
+ objet=MODELE DE L'OBJET DU MAIL AVEC DES [CHAMPSDEFUSION] # optionnel, pour personnaliser l'objet du mail avec les champs de fusions
+ corps_gabarit_code=CODE_DU_GABARIT # optionnel, pour personnaliser le corps du mail
+ corps_requete_codes=CODE_REQUETE_1,CODE_REQUETE_2,… # optionnel, si besoin de plus de données qui ne sont pas déjà fournies. Séparés par des virgules.
+
+.. list-table:: Champs de fusion/variables disponibles pour les courriels de consultation
+ :header-rows: 1
+
+ * - Champs de fusion/variable
+ - Contenu
+ * - ``DOSSIER``
+ - Numéro du dossier, mis en forme
+ * - ``TERRAIN_ADRESSE_VOIE_NUMERO``
+ - Adresse du terrain concerné par le dossier : numéro
+ * - ``TERRAIN_ADRESSE_VOIE``
+ - Adresse du terrain concerné par le dossier : voie
+ * - ``TERRAIN_ADRESSE_CODE_POSTAL``
+ - Adresse du terrain concerné par le dossier : code postal
+ * - ``TERRAIN_ADRESSE_LOCALITE``
+ - Adresse du terrain concerné par le dossier : localité
+ * - ``SERVICES_CONSULTES_LIEN_INTERNE``
+ - Voir :ref:`parametrage_configuration_mails_automatique_services_consultes`
+ * - ``SERVICES_CONSULTES_LIEN_EXTERNE``
+ - Voir :ref:`parametrage_configuration_mails_automatique_services_consultes`
+ * - ``CONSULTATION_COMMENTAIRE``
+ - Commentaire ajouté par l'instructeur dans la consultation
+
+
+.. _parametrage_configuration_mails_automatique_services_consultes:
+
+Configuration des mails envoyés automatiquement aux services consultés
+======================================================================
+
+* **services_consultes_lien_interne** : contient un lien d'accès en interne à openADS qui sera affiché dans le mail.
+* **services_consultes_lien_externe** : contient un lien d'accès en externe à openADS qui sera affiché dans le mail.
+
+
.. _parametrage_parametre_collectivite_communes:

Paramétrage des communes associées à une collectivité
@@ -1186,7 +1236,7 @@ Ce widget nécessite quelques compétences techniques en connaissance de base de

Arguments paramétrables :

-* **template_id** : l'identifiant technique du modèle Twig à utiliser. Ce modèle sera complété avec les données fournies par les requêtes.
+* **gabarit_code** : le code logique du :ref:`gabarit <administration_gabarit>` à utiliser. Ce gabarit sera complété avec les données fournies par les requêtes, selon les règles précisés dans la :ref:`documentation des gabarits <administration_gabarit>`.

* **om_requetes_codes** [par défaut à vide]: Les codes logiques des `om_requetes`` à utiliser pour récupérer ces données.

@@ -1194,11 +1244,6 @@ Arguments paramétrables :
* Elles doivent aussi être rédigées de manière à ne pas faire apparaître des données non autorisées au profil de l'utilisateur du widget.
* Il peut y en avoir plusieurs : dans ce cas, il faut les séparer par des virgules.

-Quelques remarques concernant le combo modèle + requêtes :
-* les variables disponibles dans le modèle Twig sont les noms des colonnes dans les requêtes SQL,
-* si plusieurs requêtes retournent des colonnes avec le même nom, c'est la valeur de la dernière requête qui sera prise en compte,
-* seul le premier résultat de chaque requête SQL est disponible dans le modèle Twig.
-

.. _administration_composition:

@@ -1234,48 +1279,67 @@ Les requêtes om

Les requêtes SQL des éditions.

-.. _administration_template:
+.. _administration_gabarit:

======================
-Les modèle d'affichage
+Les gabarits
======================

-(:menuselection:`Administration --> Options Avancées --> Modèle d'affichage`)
+(:menuselection:`Administration --> Options Avancées --> Gabarits`)
+
+Les gabarits permettent d'afficher des données récupérées depuis une :ref:`« om_requête » <administration_omrequete>`,
+après les avoir mises en forme en suivant une syntaxe particulière.
+
+Cette syntaxe est celle de `Twig <https://twig.symfony.com/doc/3.x/>`_, le "moteur de gabarit"
+utilisé pour cette fonctionnalité.
+Pour en savoir plus, consultez `la documentation de référence de Twig <https://twig.symfony.com/doc/3.x/templates.html>`_.

-Les modèles d'affichage sont des objets qui contiennent un texte formatté selon un « code » qui
-permet d'afficher des données en fonction de certaines conditions.
+Exemple simple :

-Ceux-ci sont normalement associés à une (ou plusieurs) requête d'interrogation de la base de données
-du type :ref:`« om_requête » <administration_omrequete>` qu'on retrouve notamment pour la
-fonctionnalité d'affichage des données complémentaires des dossiers d'instructions et des
-instructions.
+ La requête suivante, paramétrée en tant qu'«om_requete » récupère le nombre d'instructions d'un
+ dossier:

-Le « code » correspond à la syntaxe `« Twig » <https://twig.symfony.com/doc/3.x/>`_, le "moteur de
-template" utilisé pour cette fonctionnalité, consultez
-`la documentation de référence pour plus d'informations <https://twig.symfony.com/doc/3.x/templates.html>`_.
+ .. code-block:: sql

-Exemple:
+ SELECT COUNT(instruction) AS instr_count
+ FROM &DB_PREFIXEinstruction
+ WHERE dossier = '&idx'

-La requête suivante, paramétrée en tant qu'«om_requete » récupère le nombre d'instructions d'un
-dossier:
+ Et le gabarit, paramétré sur le type de DI, affiche ce nombre sur la page du dossier
+ d'instruction:

-.. code-block:: sql
+ .. code-block:: twig

- SELECT COUNT(instruction) AS instr_count FROM &DB_PREFIXEinstruction WHERE dossier = '&idx'
+ <p class="xd-nombre-instructions">
+ <span class="libelle">Nombre d'instructions</span><span class="separator">:</span>
+ {% if instr_count is defined %}
+ <span class="valeur">{{ instr_count }}</span>
+ {% else %}
+ <span class="erreur">Échec de la récupération du nombre d'instructions</span>
+ {% endif %}
+ </p>

-Et le modèle d'affichage, paramétré sur le type de DI, affiche ce nombre sur la page du dossier
-d'instruction:
+Syntaxe d'accès aux résultats des requêtes dans les gabarits
+============================================================

-.. code-block:: twig
+Le retour des "om_requetes" est disponible de deux manières dans le gabarit Twig :

- <p class="xd-nombre-instructions">
- <span class="libelle">Nombre d'instructions</span><span class="separator">:</span>
- {% if instr_count is defined %}
- <span class="valeur">{{ instr_count }}</span>
- {% else %}
- <span class="erreur">Échec de la récupération du nombre d'instructions</span>
- {% endif %}
- </p>
+1. les variables disponibles dans le gabarit Twig sont les noms des colonnes dans les requêtes SQL :
+ * si plusieurs requêtes retournent des colonnes avec le même nom, alors la variable contiendra le retour d'une de ces requêtes. Préférer la deuxième approche dans ce cas.
+ * Pour des "om_requetes" SQL, seul le premier résultat de la requête est disponible dans le gabarit Twig.
+
+2. une variable ``results`` est disponible et contient le retour complet de toutes les "om_requetes" exécutées :
+ * ``results`` est un tableau dont les clés sont les codes logiques des "om_requetes".
+ * Exemple : Pour une "om_requete" dont le code est ``plop``, les résultats seront disponibles dans ``results['plop'][0]['nom_de_la_colonne]``. ``[0]`` indique qu'on accède à la première ligne des résultats.
+ * Exemple : Dans le cas le plus général, on voudra afficher les lignes avec une boucle ``for`` :
+
+ .. code-block:: twig
+
+ <ul>
+ {% for ligne in results['plop'] %}
+ <li>{{ ligne.nom_de_la_colonne }}</li>
+ {% endfor %}
+ </ul>


.. _administration_moniteur:
@@ -1549,6 +1613,87 @@ Description des colonnes du CSV :
+---------+-------------------+----------------+-------------+---------------------------------------------------------------------------------------------------------------------------------------------+


+.. _administration_specific_import_tiers_consulte:
+
+om_utilisateur_tiers
+--------------------
+
+Import CSV spécifique des utilisateurs à partir des tiers consultés.
+
+Le fichier CSV doit être encodé en UTF-8. Les champs obligatoires doivent être renseignés pour que l'import soit réussi.
+
+Le profil utilisateur est défini par défaut à « SERVICE CONSULTÉ ». Pour le modifier, ajoutez une colonne « profil_tiers » en dernière position du fichier CSV avec le libellé du profil souhaité.
+
+Il est possible de partir de l':ref:`export des tiers consultés<parametrage_export_tiers_consultes>` depuis le paramétrage des tiers pour obtenir un fichier CSV de base.
+
+
+Description des colonnes du CSV :
+
++---------+----------------------------------+--------------+-------------+------------------+
+| Colonne | Nom de la colonne | Type | Obligatoire | Défaut |
++=========+==================================+==============+=============+==================+
+| 1 | tiers | int (11) | Oui | |
++---------+----------------------------------+--------------+-------------+------------------+
+| 2 | abrege | string (100) | Oui | |
++---------+----------------------------------+--------------+-------------+------------------+
+| 3 | libelle_tiers | string (255) | | |
++---------+----------------------------------+--------------+-------------+------------------+
+| 4 | adresse | string (255) | | |
++---------+----------------------------------+--------------+-------------+------------------+
+| 5 | complement | string (255) | | |
++---------+----------------------------------+--------------+-------------+------------------+
+| 6 | cp | string (10) | | |
++---------+----------------------------------+--------------+-------------+------------------+
+| 7 | ville | string (255) | | |
++---------+----------------------------------+--------------+-------------+------------------+
+| 8 | liste_diffusion | string (255) | Oui | |
++---------+----------------------------------+--------------+-------------+------------------+
+| 9 | accepte_notification_mail | string (3) | | |
++---------+----------------------------------+--------------+-------------+------------------+
+| 10 | identifiant_acteur_plateforme | string (50) | | |
++---------+----------------------------------+--------------+-------------+------------------+
+| 11 | utilisateur | string (100) | | |
++---------+----------------------------------+--------------+-------------+------------------+
+| 12 | categorie_tiers | string (20) | | |
++---------+----------------------------------+--------------+-------------+------------------+
+| 13 | libelle_categorie_tiers | string (255) | | |
++---------+----------------------------------+--------------+-------------+------------------+
+| 14 | code | string (20) | | |
++---------+----------------------------------+--------------+-------------+------------------+
+| 15 | description | string (255) | | |
++---------+----------------------------------+--------------+-------------+------------------+
+| 16 | date_debut_validite_categorie | string (10) | | |
++---------+----------------------------------+--------------+-------------+------------------+
+| 17 | date_fin_validite_categorie | string (10) | | |
++---------+----------------------------------+--------------+-------------+------------------+
+| 18 | service | string (255) | | |
++---------+----------------------------------+--------------+-------------+------------------+
+| 19 | type_habilitation_tiers | string (20) | | |
++---------+----------------------------------+--------------+-------------+------------------+
+| 20 | libelle_type_habilitation_tiers | string (255) | | |
++---------+----------------------------------+--------------+-------------+------------------+
+| 21 | texte_agrement | string (255) | | |
++---------+----------------------------------+--------------+-------------+------------------+
+| 22 | identifiant_commune | string (20) | | |
++---------+----------------------------------+--------------+-------------+------------------+
+| 23 | commune | string (255) | Oui | |
++---------+----------------------------------+--------------+-------------+------------------+
+| 24 | identifiant_departement | string (20) | | |
++---------+----------------------------------+--------------+-------------+------------------+
+| 25 | departement | string (255) | | |
++---------+----------------------------------+--------------+-------------+------------------+
+| 26 | division_territoriales | string (255) | | |
++---------+----------------------------------+--------------+-------------+------------------+
+| 27 | date_debut_validite_habilitation | string (10) | | |
++---------+----------------------------------+--------------+-------------+------------------+
+| 28 | date_fin_validite_habilitation | string (10) | | |
++---------+----------------------------------+--------------+-------------+------------------+
+| 29 | specialite_tiers | string (255) | | |
++---------+----------------------------------+--------------+-------------+------------------+
+| 30 | profil_tiers | string (255) | | SERVICE CONSULTÉ |
++---------+----------------------------------+--------------+-------------+------------------+
+
+
.. _administration_import_specific_commune:

Communes, départements, région


=====================================
source/manuel_utilisateur/index.rst
=====================================
@@ -20,5 +20,6 @@ Manuel de l'utilisateur
parametrage_dossier.rst
parametrage.rst
administration.rst
+ journal_audit.rst
portail_citoyen.rst
ergonomie/index.rst


=====================================
source/manuel_utilisateur/instruction.rst
=====================================
@@ -1082,22 +1082,55 @@ Pour ouvrir le formulaire de consultation du document de travail, il suffit de c
Ajouter un document d'instruction importé
#########################################

-Pour ajouter un document d'instruction importé, il faut cliquer sur le bouton d'ajout du tableau des documents d'instruction "+".
+Pour ajouter manuellement un document d'instruction importé, il faut cliquer sur le bouton d'ajout du tableau des documents d'instruction "+".

.. image:: a_instruction_document_numerise_form_ajouter_instruction.png

Dans le formulaire qui apparaît, les champs sont les suivants :
+
* **Fichier** : Document à stocker.
-* **Description** : Description du document de travail qui servira à identifier le document.
+* **Description** : Description du document d'instruction importé qui servira à identifier le document.
* **Type de document** : Type du document d'instruction.

Modifier un document d'instruction importé
##########################################

-Pour modifier un document d'instruction importé, il faut cliquer sur l'action "modifier" disponible depuis le formulaire de consultation.
+Pour modifier un document d'instruction importé ajouté manuellement, il faut cliquer sur l'action "modifier" disponible depuis le formulaire de consultation.

Il est possible de modifier le fichier, la description et le type du document.

+.. note::
+
+ Les documents d'instruction importés transmis automatiquement par Plat'AU (voir :ref:`ci-dessous<instruction_document_instruction_importe_platau>`) ne peuvent être ni modifiés ni supprimés.
+
+.. _instruction_document_instruction_importe_platau:
+
+Documents d'instruction importés transmis par Plat'AU
+#####################################################
+
+Lorsqu'un dossier d'instruction est lié à Plat'AU, il est possible de recevoir automatiquement des documents spécifiques entrants via une tâche de type *Ajout document instruction importé*.
+Ce mécanisme intervient notamment dans le cadre des consultations dématérialisées ou du scénario DIA entrante.
+
+Lors du traitement de cette tâche par openADS :
+
+* le document est créé dans le tableau **Documents d'instruction importés** de l'onglet *Docs. instruction* ;
+* le type de document est résolu à partir du code transmis par Plat'AU, parmi les :ref:`types de documents<parametrage_type_document>` appartenant à la catégorie réservée **Plat'AU** ;
+* les dates de création et de modification sont renseignées automatiquement ;
+* un **message** est ajouté sur le dossier d'instruction (onglet *Messages*), de type *Ajout document instruction importé*, précisant le type de pièce reçu et le numéro de dossier ;
+* l'identifiant Plat'AU du document est enregistré parmi les IDs Plat'AU du dossier.
+
+Le document apparaît dans le tableau des documents d'instruction importés :
+
+.. image:: a_instruction_document_instruction_importe_platau_tab.png
+
+Les documents importés par ce mécanisme ne sont **ni modifiables ni supprimables** par l'instructeur. Cette restriction garantit l'intégrité des pièces transmises par Plat'AU.
+
+Un message de notification est créé sur le dossier pour informer l'instructeur :
+
+.. image:: a_instruction_document_instruction_importe_platau_message.png
+
+Le suivi de la tâche est consultable depuis le :ref:`Moniteur Plat'AU<administration_moniteur>` sous le type *Ajout Document Instruction Importé*.
+
.. _instruction_document_travail_add:

Ajouter un document de travail
@@ -1147,42 +1180,33 @@ Constituer le dossier final
Un écran dédié permet de manipuler les pièces du dossier afin de rassembler celles qui constituent le dossier final.
Les documents de travail ne sont pas affichés dans cet écran.

-Pour y accéder, depuis l'onglet **Pièces & Documents** du dossier d'instruction, cliquer sur le bouton de bascule **Toutes les pièces**.
-L'ensemble de toutes les pièces s'affiche, qu'elles aient été jointes ou générées.
+Pour y accéder, depuis l'onglet **Pièces & Documents** du dossier d'instruction, cliquer sur le bouton de bascule **Dossier final**.

.. image:: a_instruction_document_numerise_dossier_final_form.png

-Les pièces recommandées sont indiquées en surbrillance.
-Une pièce est identifée comme *recommandée* si elle respecte une des règles suivantes :
-
-* tous les documents déposés via l'onglet **Docs. instruction** -> **Documents d'instruction importés** sont recommandés.
-* tous les documents déposés via l'onglet **Pièces pétitionnaire** sont recommandés. Dans le cas où il en existe plusieurs du même type, seul le plus récent est recommandé ;
-* à l'exception des consultations, tous les documents générés lors de l'instruction du dossier sont recommandés. Dans le cas où il en existe plusieurs du même type, seul le plus récent est recommandé ;
-* pour les documents issus des consultations, les pièces des consultations *pour information* ne sont jamais recommandées. Sont recommandés :
+Les pièces recommandées pour le dossier final sont indiquées en surbrillance.
+Une pièce est identifiée comme recommandée si elle respecte une des règles suivantes :

- * les pièces jointes aux retours de consultations non tacites ;
- * les documents générés lors d'une demande de consultation tacite.
+* **toutes les pièces pétitionnaire** sont recommandées. Dans le cas où il en existe plusieurs du même type, seul la plus récente est recommandée ;
+* **tous les documents d'instruction importés** sont recommandés ;
+* **les documents d'instructions générés** sont recommandés, **sauf les consultations et les rapports d'instruction**. Dans le cas où il en existe plusieurs du même type, seul le plus récent est recommandé ;
+* pour les documents issus des consultations :
+ * les **pièces jointes aux retours de consultations non tacites** sont recommandées,
+ * les **documents générés lors d'une demande de consultation tacite** sont recommandés,
+ * les pièces des consultations *pour information* ne sont jamais recommandées.

.. note::

Le paramètre :ref:`id_avis_consultation_tacite<parametrage_parametre_identifiants>` doit être renseigné pour identifier l'avis de consultation désigant le tacite.

-Pour chacune des pièces listées, cliquer sur le nom du fichier permet d'en avoir un aperçu direct.
-
-Il est également possible de visualiser le fichier sans changer l'onglet du navigateur. Pour cela il suffit de cliquer sur l'action à gauche comportant une loupe.
+Pour chacune des pièces listées, cliquer sur le nom du fichier permet de l'ouvrir. Il est également possible de prévisualiser le fichier en cliquant sur l'action avec un œil.

Pour sélectionner les pièces qui vont constituer dossier final, il suffit de les cocher.
+Des boutons d'action par lot sont aussi disponibles au dessus de la liste.

-Des boutons d'action par lot sont disponibles :
-
-* **Sélectionner les pièces et documents recommandés** ;
-* **Tout sélectionner / désélectionner**.
-
-Ces actions influent uniquement sur la sélection des pièces.
+Une fois la sélection faite, pour l'enregistrer la sélection, cliquer sur le bouton **Constituer le dossier final**.

-Pour enregistrer la sélection, cliquer sur le bouton **Constituer le dossier final**.
-
-Il est possible de télécharger l'intégralité des pièces du dossier final sous la forme d'une archive via le bouton **Télécharger le dossier final**. Ce bouton apparait si le dossier final a déjà été constitué au moins une fois.
+Il est possible de télécharger l'intégralité des pièces du dossier final sous la forme d'une archive en passant par le bouton de bascule **Téléchargement** et en utilisant le bouton de sélection pour **les fichiers du dossier final**.

Télécharger tous les documents
==============================
@@ -2200,6 +2224,8 @@ Pour cela, dans le formulaire d'ajout d'une consultation, sélectionner un servi
L'ajout de cette consultation va entrainer la création d'une "tâche" qui servira à faire le transfert vers le service consulté via Plat'AU.
Une fois la consultation transférée, le service consulté pourra rendre son avis ce qui mettra automatiquement à jour la consultation.

+Dans le cadre de ce cycle d'échange, Plat'AU peut également transmettre des documents spécifiques entrants qui seront importés automatiquement dans le dossier. Voir :ref:`Documents d'instruction importés transmis par Plat'AU<instruction_document_instruction_importe_platau>`.
+
Le suivi du transfert de la consultation est visible sur la synthèse du dossier.

.. note::


=====================================
source/manuel_utilisateur/journal_audit.rst
=====================================
@@ -0,0 +1,123 @@
+.. _journal_audit:
+
+###############
+Journal d'audit
+###############
+
+(:menuselection:`Administration --> Journal d'audit`)
+
+Le journal d'audit permet de tracer l'ensemble des actions réalisées dans
+openADS. Il répond aux exigences du RGPD (articles 5, 15 et 32) en
+enregistrant **qui a fait quoi, quand et depuis où**, sans capturer le contenu
+des données manipulées.
+
+.. note::
+
+ L'accès au journal d'audit est réservé au profil **Administrateur technique
+ et fonctionnel**. Les autres profils n'y
+ ont pas accès afin de garantir la confidentialité des traces.
+
+
+Actions tracées
+###############
+
+Le journal enregistre automatiquement les actions suivantes :
+
+* **Connexion** : chaque connexion réussie d'un utilisateur
+* **Déconnexion** : chaque déconnexion explicite
+* **Connexion refusée** : chaque tentative de connexion échouée (le login tenté
+ est conservé même si le compte n'existe pas)
+* **Création / Modification / Suppression** : toutes les écritures en base de
+ données passant par les mécanismes du framework
+* **Consultation** : l'ouverture de la fiche d'un dossier d'instruction
+ (traçabilité des accès aux données personnelles des pétitionnaires)
+* **Export** : les exports CSV depuis les listings
+* **Import** : les imports de données
+
+
+Informations enregistrées
+#########################
+
+Chaque ligne du journal contient les informations suivantes :
+
+* **Date** : horodatage précis de l'action (avec fuseau horaire)
+* **Utilisateur** : login de l'utilisateur ayant réalisé l'action
+* **Collectivité** : collectivité de rattachement de l'utilisateur
+* **Action** : type d'action réalisée (Connexion, Création, Modification, etc.)
+* **Type d'objet** : entité métier concernée (Dossier d'instruction, Demandeur,
+ Utilisateur, etc.)
+* **Identifiant d'objet** : identifiant de l'enregistrement concerné
+* **Adresse IP** : adresse IP du poste client
+
+
+Consultation du journal
+#######################
+
+Le listing du journal affiche par défaut les événements des **31 derniers
+jours**. Ce filtre par défaut est automatiquement désactivé lorsqu'une
+recherche avancée est lancée.
+
+
+Recherche avancée
+=================
+
+La recherche avancée permet de filtrer les résultats selon les critères
+suivants :
+
+* **Utilisateur** : filtre sur le login
+* **Action** : filtre sur le libellé de l'action (en français : Connexion,
+ Création, etc.)
+* **Type d'objet** : filtre sur le libellé du type d'objet (Dossier
+ d'instruction, Demandeur, etc.)
+* **Identifiant d'objet** : filtre sur l'identifiant de l'enregistrement
+* **Plage de dates** : champs « du » et « au » au format jj/mm/aaaa
+
+.. note::
+
+ Lorsqu'une plage de dates est saisie, le filtre par défaut de 31 jours est
+ désactivé, ce qui permet de consulter l'historique au-delà de cette période.
+
+
+Navigation vers l'objet source
+==============================
+
+Depuis la fiche détail d'une ligne d'audit, un bouton **Consulter la fiche**
+permet de naviguer directement vers l'objet concerné dans l'application
+(dossier d'instruction, demandeur, etc.).
+
+Ce bouton est masqué dans les cas suivants :
+
+* L'action tracée est une **suppression** (l'objet n'existe plus)
+* L'objet référencé **n'existe plus** en base de données
+* Le type d'objet ne correspond pas à une fiche navigable (tables de liens
+ internes, tables techniques)
+
+
+Lecture seule
+=============
+
+Le journal d'audit est strictement en **lecture seule** :
+
+* Aucun bouton d'ajout n'est disponible sur le listing
+* Les fiches détail ne proposent ni modification ni suppression
+
+Cette restriction garantit l'intégrité des traces d'audit.
+
+
+Référentiels d'audit
+#####################
+
+(:menuselection:`Administration --> Actions d'audit`)
+
+(:menuselection:`Administration --> Types d'objet audités`)
+
+Deux tables de référence sont consultables par l'administrateur technique et
+fonctionnel :
+
+* **Actions d'audit** : liste des types d'actions tracées (Connexion, Création,
+ Modification, Suppression, Consultation, Export, Import, etc.)
+* **Types d'objet audités** : liste des entités métier connues du journal
+ (alimentée automatiquement lors de la première occurrence)
+
+Ces référentiels sont également en **lecture seule** : aucune action d'ajout,
+de modification ou de suppression n'est possible.


=====================================
source/manuel_utilisateur/parametrage.rst
=====================================
@@ -235,7 +235,7 @@ Le champ 'Liste de diffusion' peut contenir plusieurs adresses e-mail séparées

Le champ 'notification par mail' sert à indiquer si le service souhaite être
notifié par mail lors de l'ajout d'une nouvelle demande de consultation. Le mail envoyé
-au service consulté contient 2 liens d'accès à openADS, qui sont :ref:`paramétrables <administration_parametrage_service_consulte>`.
+au service consulté contient 2 liens d'accès à openADS, qui sont :ref:`paramétrables <administration_parametrage_service>`.

Le champ 'type de délai' spécifie le type du délai, c'est-à-dire si le calcul de la date limite doit être fait en mois ou en jours.

@@ -355,6 +355,8 @@ Les champs de ce formulaire sont :
- "Accepte la notification par mail" : case à cocher permettant de savoir si la notification par courriel est possible pour le tiers.
- "Identifiant acteur Plat'AU" : identifiants de l'acteur sur Plat'AU. Ce champ peut en contenir plusieurs séparés par des sauts de ligne.

+.. _parametrage_export_tiers_consultes:
+
Export des tiers consultés
==========================

@@ -548,6 +550,10 @@ Les champs du formulaire lors de l'ajout :
On ne peut pas ajouter un type de document de "catégorie de documents" **Plat'AU**. Les types de document de cette catégorie sont réservés.
Ils ne peuvent être ni modifiés ni supprimés.

+.. important::
+
+ Les codes des types de documents de catégorie **Plat'AU** sont utilisés pour résoudre le type de document lors de la réception de :ref:`documents d'instruction importés transmis par Plat'AU<instruction_document_instruction_importe_platau>`. Si le code transmis par Plat'AU ne correspond à aucun type existant dans cette catégorie, la tâche entrante échoue.
+
Toute autre **catégorie de documents** peut être ajoutée, modifiée ou supprimée.
(Ex: un type de document avec la **catégorie de documents** "Autre")



=====================================
source/manuel_utilisateur/parametrage_dossier.rst
=====================================
@@ -182,7 +182,7 @@ les dossiers, il est alors possible de tirer parti des champs suivants disponibl

* **Requêtes** : Requêtes qui seront exécutées pour interroger la base de données et en extraire des
informations du dossier
-* **Modèle d'affichage** : Modèle d'affichage qui sera utilisé pour afficher les données extraites
+* **Gabarit** : :ref:`Gabarit <administration_gabarit>` qui sera utilisé pour afficher les données extraites
sur la page du dossier


@@ -583,12 +583,12 @@ fieldset « Données complémentaires » :

* **Requêtes (instruction)** : Requêtes qui seront exécutées pour interroger la base de données et
en extraire des informations de l'instruction (à présenter sur la page de l'instruction)
-* **Modèle d'affichage (instruction)** : Modèle d'affichage qui sera utilisé pour afficher les
+* **Gabarit (instruction)** : :ref:`Gabarit <administration_gabarit>` qui sera utilisé pour afficher les
données extraites sur la page de l'instruction
* **Requêtes (listing)** : Requêtes qui seront exécutées pour interroger la base de données et en
extraire des informations de l'instruction (à présenter sur la ligne de l'instruction dans le
listing des instructions d'un dossier)
-* **Modèle d'affichage (listing)** : Modèle d'affichage qui sera utilisé pour afficher les
+* **Gabarit (listing)** : :ref:`Gabarit <administration_gabarit>` qui sera utilisé pour afficher les
données extraites sur la ligne de l'instruction dans le listing des instructions d'un dossier





View it on GitLab: https://gitlab.com/openmairie/openads-documentation/-/compare/e8ec81105d73790c72eb5830d912725f539a2a8c...34ca2308c9b173f182edb387ffa465d7305fbaec

--
View it on GitLab: https://gitlab.com/openmairie/openads-documentation/-/compare/e8ec81105d73790c72eb5830d912725f539a2a8c...34ca2308c9b173f182edb387ffa465d7305fbaec
You're receiving this email because of your account on gitlab.com. Manage all notifications: https://gitlab.com/-/profile/notifications | Help: https://gitlab.com/help


Reply all
Reply to author
Forward
0 new messages