diff --git a/.gitignore b/.gitignore index e69de29..7cf7be9 100644 --- a/.gitignore +++ b/.gitignore @@ -0,0 +1,143 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +lerna-debug.log* + +# Diagnostic reports (https://nodejs.org/api/report.html) +report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage +*.lcov + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# Snowpack dependency directory (https://snowpack.dev/) +web_modules/ + +# TypeScript cache +*.tsbuildinfo + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Optional stylelint cache +.stylelintcache + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variable files +.env +.env.* +!.env.example + +# parcel-bundler cache (https://parceljs.org/) +.cache +.parcel-cache + +# Next.js build output +.next +out + +# Nuxt.js build / generate output +.nuxt +dist +.output + +# Gatsby files +.cache/ +# Comment in the public line in if your project uses Gatsby and not Next.js +# https://nextjs.org/blog/next-9-1#public-directory-support +# public + +# vuepress build output +.vuepress/dist + +# vuepress v2.x temp directory +.temp + +# Sveltekit cache directory +.svelte-kit/ + +# vitepress build output +**/.vitepress/dist + +# vitepress cache directory +**/.vitepress/cache + +# Docusaurus cache and generated files +.docusaurus + +# Serverless directories +.serverless/ + +# FuseBox cache +.fusebox/ + +# DynamoDB Local files +.dynamodb/ + +# Firebase cache directory +.firebase/ + +# TernJS port file +.tern-port + +# Stores VSCode versions used for testing VSCode extensions +.vscode-test + +# pnpm +.pnpm-store + +# yarn v3 +.pnp.* +.yarn/* +!.yarn/patches +!.yarn/plugins +!.yarn/releases +!.yarn/sdks +!.yarn/versions + +# Vite files +vite.config.js.timestamp-* +vite.config.ts.timestamp-* +.vite/ \ No newline at end of file diff --git a/TODO.md b/TODO.md new file mode 100644 index 0000000..f9b56c3 --- /dev/null +++ b/TODO.md @@ -0,0 +1,42 @@ +# TODO + +## Prochaines tâches frontend + +### Édition des nœuds Contrôle (nesting) + +Le modèle de graphe actuel est plat (`script: Block[]`, aucun champ `children`). +L'API accepte déjà `children: PipelineNode[]` sur chaque nœud — on envoie `[]` partout pour l'instant. + +Ce qu'il faut faire : +- Ajouter `children: Block[]` sur le type `Block` dans `blockHelpers.ts` +- Gérer l'imbrication dans le store (`addBlock` dans un parent, `deleteBlock` récursif, etc.) +- Rendre les blocs Contrôle avec une zone enfant dans le canvas +- Envoyer les vrais enfants dans le payload API +- Vérifier `BlockDetail.children_allowed` pour conditionner l'UI + +### Adapter params → segments + +`BlockDetail.params` est un objet libre (`additionalProperties: true` dans le spec). +L'adaptateur dans `src/api/client.ts` (`adaptParam`) fait des hypothèses sur la forme de chaque valeur (`{ default, options? }`). + +À valider dès qu'un vrai catalogue backend est disponible — ajuster si la structure diffère. + +### Bouton "Générer le code" + +`generatePipelineCode(id)` est câblé dans `src/api/client.ts` (`POST /api/pipelines/{id}/generate`). +Pas encore exposé dans l'UI. Ajouter un bouton dans `EditorHeader` qui affiche le code généré. + +### Retry dans la modal "Éditeur non disponible" + +La modal affiche un message d'erreur précis (réseau vs. réponse inattendue) mais propose seulement "Retour". +Ajouter un bouton "Réessayer" qui relance `fetchCatalog()` sans repasser par la home. + +### Nom du pipeline + +Le nom est fixé à `'mon-premier-modèle'` dans `useBlockRunner.ts`. +À terme : champ éditable dans `EditorHeader` (lié à `useAppStore`), envoyé dans `PipelineCreate.name`. + +### Auth + +Aucune gestion de token pour l'instant. `src/api/client.ts` reste sans headers d'auth. +À ajouter quand le backend expose des routes protégées. diff --git a/frontend/.env.example b/frontend/.env.example new file mode 100644 index 0000000..c2058b5 --- /dev/null +++ b/frontend/.env.example @@ -0,0 +1 @@ +VITE_API_BASE_URL=http://localhost:8000 diff --git a/frontend/.gitignore b/frontend/.gitignore new file mode 100644 index 0000000..f06235c --- /dev/null +++ b/frontend/.gitignore @@ -0,0 +1,2 @@ +node_modules +dist diff --git a/frontend/index.html b/frontend/index.html new file mode 100644 index 0000000..3570690 --- /dev/null +++ b/frontend/index.html @@ -0,0 +1,15 @@ + + +
+ + ++ Chaque étape pour faire apprendre une machine devient un bloc coloré. +
+{desc}
++ Empile des blocs colorés pour construire un modèle qui apprend tout seul : reconnaître des images, comprendre des phrases, deviner des réponses. Pas besoin de savoir programmer, il suffit d'assembler. +
+