Parte de #76.
Los recursos ya usan taxonomía como datos (categories + category_aliases, con resolución por normalización lower+unaccent+trim). needs y offers siguen con un enum hardcodeado. Migrarlos al mismo modelo para tener categorías coherentes en recursos/necesidades/ofertas y habilitar el matching por categoría.
Coordinar con el épico de destinatarios #59: #62 (taxonomía de tipos de destinatario) usa el mismo patrón, y el agregado needs lo tocan ambas líneas — secuenciar para evitar conflictos.
Aceptación:
needs/offers referencian categories (con alias) en lugar del enum, sin perder datos (migración de los valores existentes).
CategoryResolver compartido para recursos/needs/offers.
- Migración versionada (siguiente número libre) + tests.
- Sin romper la API pública;
pnpm gen:api si cambian DTOs.
Parte de #76.
Los recursos ya usan taxonomía como datos (
categories+category_aliases, con resolución por normalización lower+unaccent+trim).needsyofferssiguen con un enum hardcodeado. Migrarlos al mismo modelo para tener categorías coherentes en recursos/necesidades/ofertas y habilitar el matching por categoría.Coordinar con el épico de destinatarios #59: #62 (taxonomía de tipos de destinatario) usa el mismo patrón, y el agregado
needslo tocan ambas líneas — secuenciar para evitar conflictos.Aceptación:
needs/offersreferenciancategories(con alias) en lugar del enum, sin perder datos (migración de los valores existentes).CategoryResolvercompartido para recursos/needs/offers.pnpm gen:apisi cambian DTOs.