feat: refonte métadonnées API + UX dossiers et import

- Nouveau schéma api_entries : convention+name, version X.X.X, provider,
  contacts splitées (name/entity/email), suppression des anciens champs
- Formulaire upload étape 2 : convention+nom, version 3 champs, fournisseur,
  contacts métier et technique obligatoires ; type détecté auto → select désactivé
- Validation YAML : redocly.yaml (extends: spec), support noms avec espaces,
  extraction métadonnées (name, version, description) depuis info YAML
- Dossiers : modale création avec champ Emplacement pré-initialisé depuis
  le contexte de navigation, options └ avec indentation par profondeur
- Import depuis un dossier : pré-sélection de la catégorie via queryParam
- Recherche étendue : name, provider, description, contacts
- Résolution @datacat/shared via workspace:* + compilation CJS avant NestJS

Generated with [Claude Code](https://claude.ai/code)
via [Happy](https://happy.engineering)

Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Happy <yesreply@happy.engineering>
This commit is contained in:
z3n
2026-06-11 13:38:14 +00:00
parent ef3884c68d
commit e85696079c
20 changed files with 911 additions and 519 deletions

51
pnpm-lock.yaml generated
View File

@@ -22,6 +22,9 @@ importers:
'@asyncapi/html-template':
specifier: 3.5.6
version: 3.5.6(@noble/hashes@1.8.0)(encoding@0.1.13)(typescript@5.9.3)
'@datacat/shared':
specifier: workspace:*
version: link:../shared
'@nestjs/common':
specifier: ^11.0.0
version: 11.1.22(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.2.2)(rxjs@7.8.2)
@@ -10189,7 +10192,7 @@ snapshots:
dependencies:
'@ampproject/remapping': 2.3.0
'@angular-devkit/architect': 0.1902.26(chokidar@4.0.3)
'@angular-devkit/build-webpack': 0.1902.26(chokidar@4.0.3)(webpack-dev-server@5.2.2(tslib@2.8.1)(webpack@5.105.0(postcss@8.5.12)))(webpack@5.105.0(esbuild@0.28.0)(postcss@8.5.12))
'@angular-devkit/build-webpack': 0.1902.26(chokidar@4.0.3)(webpack-dev-server@5.2.2(tslib@2.8.1)(webpack@5.105.0(postcss@8.5.12)))(webpack@5.105.0(postcss@8.5.12))
'@angular-devkit/core': 19.2.26(chokidar@4.0.3)
'@angular/build': 19.2.26(@angular/compiler-cli@19.2.22(@angular/compiler@19.2.22)(typescript@5.8.3))(@angular/compiler@19.2.22)(@types/node@22.19.19)(chokidar@4.0.3)(jiti@1.21.7)(less@4.2.2)(postcss@8.5.12)(tailwindcss@3.3.3(ts-node@10.9.2(@types/node@22.19.19)(typescript@5.8.3)))(terser@5.39.0)(typescript@5.8.3)(yaml@2.9.0)
'@angular/compiler-cli': 19.2.22(@angular/compiler@19.2.22)(typescript@5.8.3)
@@ -10203,14 +10206,14 @@ snapshots:
'@babel/preset-env': 7.26.9(@babel/core@7.26.10)
'@babel/runtime': 7.26.10
'@discoveryjs/json-ext': 0.6.3
'@ngtools/webpack': 19.2.26(@angular/compiler-cli@19.2.22(@angular/compiler@19.2.22)(typescript@5.8.3))(typescript@5.8.3)(webpack@5.105.0(esbuild@0.28.0)(postcss@8.5.12))
'@ngtools/webpack': 19.2.26(@angular/compiler-cli@19.2.22(@angular/compiler@19.2.22)(typescript@5.8.3))(typescript@5.8.3)(webpack@5.105.0(postcss@8.5.12))
'@vitejs/plugin-basic-ssl': 1.2.0(vite@7.3.3(@types/node@22.19.19)(jiti@1.21.7)(less@4.2.2)(sass@1.99.0)(terser@5.39.0)(yaml@2.9.0))
ansi-colors: 4.1.3
autoprefixer: 10.4.20(postcss@8.5.12)
babel-loader: 9.2.1(@babel/core@7.26.10)(webpack@5.105.0(esbuild@0.28.0)(postcss@8.5.12))
babel-loader: 9.2.1(@babel/core@7.26.10)(webpack@5.105.0(postcss@8.5.12))
browserslist: 4.28.2
copy-webpack-plugin: 12.0.2(webpack@5.105.0(esbuild@0.28.0)(postcss@8.5.12))
css-loader: 7.1.2(webpack@5.105.0(esbuild@0.28.0)(postcss@8.5.12))
copy-webpack-plugin: 12.0.2(webpack@5.105.0(postcss@8.5.12))
css-loader: 7.1.2(webpack@5.105.0(postcss@8.5.12))
esbuild-wasm: 0.28.0
fast-glob: 3.3.3
http-proxy-middleware: 3.0.5
@@ -10218,22 +10221,22 @@ snapshots:
jsonc-parser: 3.3.1
karma-source-map-support: 1.4.0
less: 4.2.2
less-loader: 12.2.0(less@4.2.2)(webpack@5.105.0(esbuild@0.28.0)(postcss@8.5.12))
license-webpack-plugin: 4.0.2(webpack@5.105.0(esbuild@0.28.0)(postcss@8.5.12))
less-loader: 12.2.0(less@4.2.2)(webpack@5.105.0(postcss@8.5.12))
license-webpack-plugin: 4.0.2(webpack@5.105.0(postcss@8.5.12))
loader-utils: 3.3.1
mini-css-extract-plugin: 2.9.2(webpack@5.105.0(esbuild@0.28.0)(postcss@8.5.12))
mini-css-extract-plugin: 2.9.2(webpack@5.105.0(postcss@8.5.12))
open: 10.1.0
ora: 5.4.1
picomatch: 4.0.4
piscina: 4.8.0
postcss: 8.5.12
postcss-loader: 8.1.1(postcss@8.5.12)(typescript@5.8.3)(webpack@5.105.0(esbuild@0.28.0)(postcss@8.5.12))
postcss-loader: 8.1.1(postcss@8.5.12)(typescript@5.8.3)(webpack@5.105.0(postcss@8.5.12))
resolve-url-loader: 5.0.0
rxjs: 7.8.1
sass: 1.85.0
sass-loader: 16.0.5(sass@1.85.0)(webpack@5.105.0(esbuild@0.28.0)(postcss@8.5.12))
sass-loader: 16.0.5(sass@1.85.0)(webpack@5.105.0(postcss@8.5.12))
semver: 7.7.1
source-map-loader: 5.0.0(webpack@5.105.0(esbuild@0.28.0)(postcss@8.5.12))
source-map-loader: 5.0.0(webpack@5.105.0(postcss@8.5.12))
source-map-support: 0.5.21
terser: 5.39.0
tree-kill: 1.2.2
@@ -10243,7 +10246,7 @@ snapshots:
webpack-dev-middleware: 7.4.2(tslib@2.8.1)(webpack@5.105.0(postcss@8.5.12))
webpack-dev-server: 5.2.2(tslib@2.8.1)(webpack@5.105.0(postcss@8.5.12))
webpack-merge: 6.0.1
webpack-subresource-integrity: 5.1.0(webpack@5.105.0(esbuild@0.28.0)(postcss@8.5.12))
webpack-subresource-integrity: 5.1.0(webpack@5.105.0(postcss@8.5.12))
optionalDependencies:
esbuild: 0.28.0
tailwindcss: 3.3.3(ts-node@10.9.2(@types/node@22.19.19)(typescript@5.8.3))
@@ -10277,7 +10280,7 @@ snapshots:
- webpack-cli
- yaml
'@angular-devkit/build-webpack@0.1902.26(chokidar@4.0.3)(webpack-dev-server@5.2.2(tslib@2.8.1)(webpack@5.105.0(postcss@8.5.12)))(webpack@5.105.0(esbuild@0.28.0)(postcss@8.5.12))':
'@angular-devkit/build-webpack@0.1902.26(chokidar@4.0.3)(webpack-dev-server@5.2.2(tslib@2.8.1)(webpack@5.105.0(postcss@8.5.12)))(webpack@5.105.0(postcss@8.5.12))':
dependencies:
'@angular-devkit/architect': 0.1902.26(chokidar@4.0.3)
rxjs: 7.8.1
@@ -13785,7 +13788,7 @@ snapshots:
'@next/swc-win32-x64-msvc@14.2.33':
optional: true
'@ngtools/webpack@19.2.26(@angular/compiler-cli@19.2.22(@angular/compiler@19.2.22)(typescript@5.8.3))(typescript@5.8.3)(webpack@5.105.0(esbuild@0.28.0)(postcss@8.5.12))':
'@ngtools/webpack@19.2.26(@angular/compiler-cli@19.2.22(@angular/compiler@19.2.22)(typescript@5.8.3))(typescript@5.8.3)(webpack@5.105.0(postcss@8.5.12))':
dependencies:
'@angular/compiler-cli': 19.2.22(@angular/compiler@19.2.22)(typescript@5.8.3)
typescript: 5.8.3
@@ -16051,7 +16054,7 @@ snapshots:
b4a@1.8.1: {}
babel-loader@9.2.1(@babel/core@7.26.10)(webpack@5.105.0(esbuild@0.28.0)(postcss@8.5.12)):
babel-loader@9.2.1(@babel/core@7.26.10)(webpack@5.105.0(postcss@8.5.12)):
dependencies:
'@babel/core': 7.26.10
find-cache-dir: 4.0.0
@@ -16729,7 +16732,7 @@ snapshots:
dependencies:
is-what: 3.14.1
copy-webpack-plugin@12.0.2(webpack@5.105.0(esbuild@0.28.0)(postcss@8.5.12)):
copy-webpack-plugin@12.0.2(webpack@5.105.0(postcss@8.5.12)):
dependencies:
fast-glob: 3.3.3
glob-parent: 6.0.2
@@ -16804,7 +16807,7 @@ snapshots:
shebang-command: 2.0.0
which: 2.0.2
css-loader@7.1.2(webpack@5.105.0(esbuild@0.28.0)(postcss@8.5.12)):
css-loader@7.1.2(webpack@5.105.0(postcss@8.5.12)):
dependencies:
icss-utils: 5.1.0(postcss@8.5.12)
postcss: 8.5.12
@@ -18750,7 +18753,7 @@ snapshots:
dependencies:
readable-stream: 2.3.8
less-loader@12.2.0(less@4.2.2)(webpack@5.105.0(esbuild@0.28.0)(postcss@8.5.12)):
less-loader@12.2.0(less@4.2.2)(webpack@5.105.0(postcss@8.5.12)):
dependencies:
less: 4.2.2
optionalDependencies:
@@ -18776,7 +18779,7 @@ snapshots:
libphonenumber-js@1.13.2: {}
license-webpack-plugin@4.0.2(webpack@5.105.0(esbuild@0.28.0)(postcss@8.5.12)):
license-webpack-plugin@4.0.2(webpack@5.105.0(postcss@8.5.12)):
dependencies:
webpack-sources: 3.4.1
optionalDependencies:
@@ -19068,7 +19071,7 @@ snapshots:
mimic-response@4.0.0: {}
mini-css-extract-plugin@2.9.2(webpack@5.105.0(esbuild@0.28.0)(postcss@8.5.12)):
mini-css-extract-plugin@2.9.2(webpack@5.105.0(postcss@8.5.12)):
dependencies:
schema-utils: 4.3.3
tapable: 2.3.3
@@ -20167,7 +20170,7 @@ snapshots:
postcss: 8.5.15
ts-node: 10.9.2(@types/node@22.19.19)(typescript@5.9.3)
postcss-loader@8.1.1(postcss@8.5.12)(typescript@5.8.3)(webpack@5.105.0(esbuild@0.28.0)(postcss@8.5.12)):
postcss-loader@8.1.1(postcss@8.5.12)(typescript@5.8.3)(webpack@5.105.0(postcss@8.5.12)):
dependencies:
cosmiconfig: 9.0.1(typescript@5.8.3)
jiti: 1.21.7
@@ -20863,7 +20866,7 @@ snapshots:
safer-buffer@2.1.2: {}
sass-loader@16.0.5(sass@1.85.0)(webpack@5.105.0(esbuild@0.28.0)(postcss@8.5.12)):
sass-loader@16.0.5(sass@1.85.0)(webpack@5.105.0(postcss@8.5.12)):
dependencies:
neo-async: 2.6.2
optionalDependencies:
@@ -21241,7 +21244,7 @@ snapshots:
source-map-js@1.2.1: {}
source-map-loader@5.0.0(webpack@5.105.0(esbuild@0.28.0)(postcss@8.5.12)):
source-map-loader@5.0.0(webpack@5.105.0(postcss@8.5.12)):
dependencies:
iconv-lite: 0.6.3
source-map-js: 1.2.1
@@ -22344,7 +22347,7 @@ snapshots:
webpack-sources@3.4.1: {}
webpack-subresource-integrity@5.1.0(webpack@5.105.0(esbuild@0.28.0)(postcss@8.5.12)):
webpack-subresource-integrity@5.1.0(webpack@5.105.0(postcss@8.5.12)):
dependencies:
typed-assert: 1.0.9
webpack: 5.105.0(esbuild@0.28.0)(postcss@8.5.12)