Application de gestion de documents (GED) pour DataFair : arborescence de dossiers et de fichiers stockés comme pièces jointes d'un jeu de données, dépôt par glisser-déposer, renommage, versionnement et historique des révisions.
Vue 3.5 (Composition API, <script setup lang="ts">), Vuetify 4, Vite 8, TypeScript strict, @data-fair/lib-vuetify 2.x / lib-vue / lib-utils, Playwright (tests unitaires et e2e), ESLint 9 + husky + commitlint.
npm install
npm run devnpm run dev génère au premier lancement un .env git-ignoré (ports APP_PORT, DEV_SERVER_PORT, E2E_PORT) puis ouvre une session Zellij avec :
vite(application, portAPP_PORT)df-dev-server(proxy de développement, portDEV_SERVER_PORT)
La configuration de développement courante vit dans .dev-config.json (git-ignoré) : l'UI du dev-server permet de copier la configuration d'une application réelle plutôt que de l'écrire à la main.
| Script | Rôle |
|---|---|
npm run dev |
environnement de dev complet (df-dev-env + zellij) |
npm run dev-app |
serveur Vite seul |
npm run build |
build de production (dist/) |
npm run lint / lint-fix |
ESLint |
npm run type-check |
vue-tsc |
npm run build-types |
génère les types TS depuis public/config-schema.json (à relancer après toute modification du schéma) |
npm run test / test-unit / test-e2e |
Playwright |
npm run quality |
lint + build-types + type-check + build + tests + audit (exécuté au pre-push) |
public/config-schema.json est la source unique (vocabulaire VJSF 3) : il est servi tel quel à DataFair et ré-exporté par src/config/schema.ts pour générer les types (src/config/.type/, git-ignoré, ré-exportés par src/config/index.ts). Le sélecteur de jeu de données (facultatif) filtre les jeux de données éditables exposant une pièce jointe (rest=true&short-concept=attachment).
Par défaut la GED crée et gère son propre jeu de données, fragment de l'application (partOf), ce qui réserve l'accès aux membres ayant des droits sur l'application. Le schéma est construit à partir des colonnes techniques (dont le champ pièce jointe attachmentPath, concept attachment) et des champs de métadonnées déclarés dans la configuration : ajouter un champ de métadonnées ajoute la colonne correspondante (jamais de suppression). Le champ datasets permet de sélectionner un jeu de données existant à la place, à condition qu'il soit éditable, finalisé, avec historique activé (rest.history=true) et un champ pièce jointe.
Une barre de recherche interroge en plein-texte (nom + métadonnées textuelles) l'ensemble de l'arborescence via l'API /lines (q/q_fields) et affiche les résultats avec leur dossier.
npm run test-unit # fonctions pures, sans serveur
npm run test-e2e # contre le serveur Vite, API data-fair entièrement mockéeLes e2e (tests/e2e/) injectent window.APPLICATION et mockent l'API (lignes, _bulk_lines, révisions, pièces jointes) ainsi que le WebSocket : aucune instance data-fair réelle n'est nécessaire.
pre-commit: lintcommit-msg: commitlint (messages conventionnels)pre-push:npm run quality