> For the complete documentation index, see [llms.txt](https://documentation.efalia.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://documentation.efalia.com/connecteurs/connecteurs-generiques/mgdex/module-scanneddocflow.md).

# Module ScannedDocFlow

## Principe

ScannedDocFlow est une déclinaison standard du connecteur [MGDex](/connecteurs/connecteurs-generiques/mgdex.md), livrée pré-installée avec Multigest mais **désactivée par défaut**. Elle assure la traçabilité des documents numérisés tout au long de leur parcours : de leur import en bannette de numérisation jusqu'à leur indexation finale dans une armoire.

Comme les autres déclinaisons de MGDex, ScannedDocFlow s'appuie sur une base de données intermédiaire (MySQL), alimentée quotidiennement par un script de synchronisation. Il est possible d'accéder aux données de cette base :

* directement, en connectant un outil tiers (par exemple Business Object) sur la base ;
* via les WebServices REST exposés par le module.

## Activation

Lors de l'installation standard de Multigest, le module MGDex est pré-installé et la configuration Apache correspondante est prévue, mais désactivée.

{% stepper %}
{% step %}

## Vérifier la présence des fichiers de configuration

Vérifier que le sous-dossier `[…]\Apache2-4\conf\extra\MODULES_MULTIGEST\MGDEX\` contient bien les fichiers `httpd-vh-mgdex.conf` et `httpd-vh-ssl-mgdex.conf`.

{% hint style="warning" %}
S'ils sont absents, la version de Multigest installée est trop ancienne : contacter le support Efalia pour obtenir la configuration la plus récente.
{% endhint %}
{% endstep %}

{% step %}

## Activer les quatre Virtual Hosts

Vérifier, dans les fichiers ci-dessous, que la ligne d'inclusion correspondante n'est pas commentée (elle ne doit pas être précédée du caractère `#`) :

| Fichier                                                                    | Ligne à vérifier                                                     |
| -------------------------------------------------------------------------- | -------------------------------------------------------------------- |
| `[…]\Apache2-4\conf\extra\HTTP\httpd-virtualhosts.conf`                    | `Include conf/extra/MODULES_MULTIGEST/Activation-modules-HTTP.conf`  |
| `[…]\Apache2-4\conf\extra\HTTPS\httpd-ssl-virtualhosts.conf`               | `Include conf/extra/MODULES_MULTIGEST/Activation-modules-HTTPS.conf` |
| `[…]\Apache2-4\conf\extra\MODULES_MULTIGEST\Activation-modules-HTTP.conf`  | `Include conf/extra/MODULES_MULTIGEST/MGDEX/httpd-vh-mgdex.conf`     |
| `[…]\Apache2-4\conf\extra\MODULES_MULTIGEST\Activation-modules-HTTPS.conf` | `Include conf/extra/MODULES_MULTIGEST/MGDEX/httpd-vh-ssl-mgdex.conf` |
| {% endstep %}                                                              |                                                                      |

{% step %}

## Relancer Apache

Relancer le service Apache pour prendre en compte les Virtual Hosts.
{% endstep %}

{% step %}

## Vérifier l'accès au module

Vérifier que l'URL `http://publicUrl:8086/app.php/sdf/` aboutit bien à la page d'accueil du module ScannedDocFlow.
{% endstep %}
{% endstepper %}

## Script de synchronisation

Le script doit être lancé quotidiennement — idéalement vers 4h du matin — et nécessite quelques minutes pour s'exécuter. Il alimente la base intermédiaire à partir des événements survenus **la veille du jour d'exécution**, entre minuit et 23h59.

Son algorithme se déroule en trois étapes :

1. **Identifier les documents concernés**, c'est-à-dire ceux ayant enregistré au moins une des actions suivantes sur la fenêtre considérée : import en bannette de numérisation, déplacement en bannette intermédiaire, indexation vers une armoire, édition ou renommage du document.
2. **Extraire, pour chacun de ces documents**, ses propriétés à chacune des étapes qu'il a traversées (bannette de numérisation, bannette intermédiaire, armoire d'indexation) — lorsque le document n'a pas encore atteint une étape, les données correspondantes ne peuvent naturellement pas être récupérées.
3. **Créer un enregistrement par document** dans la base MGDex.

{% hint style="info" %}
Lorsqu'un document est indexé, il est supprimé des bannettes et l'essentiel de ses informations (nom, taille…) disparaît avec lui. Ces données ne peuvent alors être retrouvées que dans les fichiers de logs, lorsqu'ils sont encore présents — elles sont fiables dans ce cas, mais leur conservation n'est pas garantie.
{% endhint %}

Le paramétrage repose sur le fichier `config.php` à la racine du projet (connexion à la base de données, nom de la base Multigest, dossier de dépôt des exports CSV) et sur un jeu de requêtes SQL fourni dans `/scanned_doc_flow/requests/`. Le lancement quotidien s'effectue via le fichier `synchronizeDatas.bat`, généralement programmé avec le planificateur de tâches Windows (`schtasks`).

## Objets et propriétés de la base de données

### mgdex\_armoire

Liste exhaustive des armoires de l'instance Multigest.

* `id`
* `name`
* `typology` — 1 pour une armoire en mode dossier, 0 pour une armoire en mode fichier
* `pathfile` — chemin physique de stockage des documents de l'armoire

### mgdex\_bannette

Liste exhaustive des bannettes de l'instance Multigest.

* `id` (int)
* `title` (varchar 255) — nom de la bannette
* `quantity_of_documents` (int) — quantité de documents présents dans la bannette

### mgdex\_daily\_bannettes\_documents\_events

Table centrale du module : liste des documents concernés par un événement d'écriture survenu sur la journée identifiée.

* `id`, `document_id` — identifiants du document et du document dans son armoire
* `bannette_a_id`, `bannette_a_name`, `bannette_a_datetime`, `bannette_a_user`, `bannette_a_filename`, `bannette_a_filesize` — propriétés du document en **bannette de numérisation**
* `bannette_b_id`, `bannette_b_name`, `bannette_b_datetime`, `bannette_b_user`, `bannette_b_filename`, `bannette_b_filesize`, `bannette_b_alteration` — propriétés du document en **bannette intermédiaire** (`bannette_b_alteration` : indicateur d'altération du document, 0 non / 1 oui)
* `armoire_id`, `armoire_name`, `armoire_datetime`, `armoire_user`, `armoire_filename`, `armoire_pdc`, `armoire_filesize`, `armoire_alteration` — propriétés du document en **armoire d'indexation**

### mgdex\_mg\_users

Liste exhaustive des utilisateurs de l'instance Multigest.

* `id` (int) — identifiant de l'utilisateur Multigest (champ IDU)
* `login` (varchar 255)
* `full_name` (varchar 255)

## WebServices

### Récupération des documents

Retourne la liste de tous les documents importés par le script. Les paramètres `first` et `quantity` permettent de paginer les résultats.

```
http://mgdex/sdf/documents/{first}{quantity}.{format}
```

* `first` (facultatif) : indice du premier document à retourner.
* `quantity` (facultatif) : nombre de documents à retourner.
* `format` (facultatif) : `html`, `json` ou `csv`.

Exemple d'appel : `http://mgdex/sdf/documents/100/50.json`

### Export de la liste en CSV

Retourne la même liste, exportée en CSV. Le fichier est enregistré sous le chemin défini dans la configuration (`path_to_sdf_export_files` / `$exportFolder`). Le format `download` permet de télécharger directement le fichier CSV, le format `report` affiche un bref rapport d'exécution.

```
http://mgdex/sdf/export/csv/{format}
```

Exemples d'appel : `http://mgdex/sdf/export/csv/download` · `http://mgdex/sdf/export/csv/report`


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://documentation.efalia.com/connecteurs/connecteurs-generiques/mgdex/module-scanneddocflow.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
