feat(tags): gestion des tags dans le formulaire carte (max 3, suggestions, normalisation)

- schéma zod : tags normalisés (trim + minuscules + dédupe), 3 max par carte
- couche générique : findTags (MySQL + Mongo), service tags()
- API GET /api/tags + cardsApi.tags() pour les suggestions
- formulaire : saisie + ajout (Entrée/bouton), suggestions des tags existants,
  chips supprimables, compteur n/3, blocage au-delà de 3
- tests : schémas, repositories, service, route, api-client, formulaire
This commit is contained in:
devcodetools committed 2026-09-22 10:18:13 +02:00
1 parent 31283ada26
commit 67569e2d16
18 files changed
+334 -8

No files matched your search

@@ -141,4 +141,11 @@ describe('MongoCardRepository', () => {
collection.distinct.mockResolvedValueOnce(['react', 'docker'])
await expect(repo.findThemes()).resolves.toEqual(['docker', 'react'])
})
it('findTags renvoie les tags distincts triés', async () => {
const { repo, collection } = setup()
collection.distinct.mockResolvedValueOnce(['scope', 'docker'])
await expect(repo.findTags()).resolves.toEqual(['docker', 'scope'])
expect(collection.distinct).toHaveBeenCalledWith('tags')
})
})