feat(app) : phase 1 — registre, profils, moteur de recommandation, export markdown

- Schémas Zod partagés ($lib/schemas) : modèle, profil (PRD §4), null = « à vérifier »,
  sources[] obligatoires à chaque écriture
- Persistance YAML dans DATA_DIR + commits git automatiques (simple-git) ;
  seeds PRD au premier démarrage (1 modèle §4.1, 5 profils, 2 templates)
- CRUD registre et profils : pages liste/édition/création, form actions,
  champs tri-état, messages d'erreur Zod, commit par écriture
- Moteur de recommandation pur et testé (12 cas : nominal, licence null,
  seuil, statut mort, vram, modalité, fraîcheur, pénalités) : filtrage dur
  (requiert/exclut/obligatoire/mort) puis scoring pondéré (préférences,
  rang arena, fraîcheur, pénalités statut et champs null), justification
  et warnings (attribution, seuil, garde-fous, déclarations plateformes)
- POST /api/recommander (SSO requis) + page /recommander
- Exporteur markdown /exports : templates éditables, génération depuis le
  registre (tableaux registre + classements), commit par document
- Vérifié : check/lint/test (22) /build verts, test fumée HTTP complet
  (seed + git init, CRUD par form action, exports générés, filtres API,
  401/404), svelte-autofixer propre sur les 11 composants
This commit is contained in:
cyber-mawonaj
2026-08-01 10:19:42 -04:00
parent 4a108c1fda
commit 0c9f83d3f5
36 changed files with 2814 additions and 34 deletions
+6
View File
@@ -20,6 +20,7 @@
"@sveltejs/adapter-node": "^5.5.4",
"@sveltejs/kit": "^2.63.0",
"@sveltejs/vite-plugin-svelte": "^7.1.2",
"@types/js-yaml": "^4.0.9",
"@types/node": "^22",
"eslint": "^10.4.1",
"eslint-config-prettier": "^10.1.8",
@@ -33,5 +34,10 @@
"typescript-eslint": "^8.60.1",
"vite": "^8.0.16",
"vitest": "^4.1.8"
},
"dependencies": {
"js-yaml": "^5.2.3",
"simple-git": "^3.36.0",
"zod": "^4.4.3"
}
}