Id:UUID -----> ID de la marca
name: String --> nombre de la marca o como se conoce
nif: String -------------> DNI de la empresa
logoUrl: String --------> link con el icono que representa la marca
country: String -----------> pais de la marca
website: String -----------> pagina web de la marca
logo: String ----------------> logo de la marca
active: Boolean ----------> si la marca esta activa
createdAt: LocalDateTime --------> cuando se registro la marca por primera vez en el ecommers
updateAt: LocalDateTime ----------> cuando hace un cambio de datos la marca, ejemplo cambia de dominio o logo
falta poner la relacion con producto, ya que una marcar tiene muchos productos es decir (MANY TO ONE)
Crear BrandController REST y MVC
Título: Implementar BrandController CRUD (REST + MVC)
Descripción: Endpoints CRUD: GET /api/brands, GET /api/brands/{id}, POST /api/brands, PUT /api/brands/{id}, DELETE /api/brands/{id}, GET /api/brands/search?name=. Usar DTOs para entrada/salida y MapStruct o mapeo manual.
Checklist
[ ] DTOs Request/Response con validaciones Bean Validation.
[ ] Servicio intermedio BrandService para lógica.
[ ] Controlador REST con constructor injection (Lombok @requiredargsconstructor).
[ ] Respuestas con códigos HTTP correctos y manejo de errores global.
Criterios de aceptación: Endpoints devuelven JSON; POST devuelve 201 con Location; validaciones activas.
Estimación: 1.5 días. Labels: backend, api, spring-boot.
Notas técnicas: Seguir buenas prácticas de Spring Boot y separación Controller/Service/Repository.
Plantillas Thymeleaf
Título: Crear templates Thymeleaf para Brand (list, form, detail)
Checklist
[ ] brands/list.html, brands/form.html, brands/detail.html.
[ ] Formularios con validación HTML5 y mensajes de error del servidor.
[ ] Enlaces a productos de la marca.
Criterios de aceptación: Navegación completa CRUD desde UI; formularios muestran errores.
Estimación: 1 día. Labels: frontend, thymeleaf.
Notas técnicas: Basarse en patrón MVC de Spring + Thymeleaf para CRUD.
Tests Repository
Título: Tests unitarios para BrandRepository
Checklist
[ ] Test findByName positivo/negativo.
[ ] Test persistencia de createdAt y updatedAt.
Estimación: 0.5 día. Labels: test, unit.
Tests Controller
Título: Tests de integración BrandController con MockMvc
Checklist
[ ] CRUD completo con MockMvc.
[ ] Validaciones de entrada y errores 400/404.
Estimación: 1 día. Labels: test, integration.
Validación NIF / VAT EU
Título: Implementar validación NIF/VAT y verificación VIES
Descripción: Añadir validación local por formato y checksum para España y opción de verificación remota contra VIES; almacenar verifiedAt y verificationStatus.
Checklist
[ ] Crear anotación @VatOrNif y VatOrNifValidator.
[ ] Validación local por país; para EU opción de llamada a VIES y manejo de errores de servicio.
[ ] Guardar resultado y timestamp.
Criterios de aceptación: nif validado en POST/PUT; si country es EU y se solicita, se consulta VIES y se persiste resultado.
Estimación: 2–3 días. Labels: compliance, validation.
Notas técnicas: VIES es el sistema oficial para verificar VAT intracomunitario; usarlo para justificar exenciones IVA y guardar evidencia de la verificación.
Relación Brand Product
Título: Añadir relación OneToMany Brand→Product y política de borrado
Checklist
[ ] @onetomany(mappedBy="brand") en Brand.
[ ] @manytoone en Product.
[ ] Decidir política de borrado (RESTRICT / SET_NULL / CASCADE) y documentarla.
Estimación: 0.5 día. Labels: db, jpa.

Id:UUID -----> ID de la marca
name: String --> nombre de la marca o como se conoce
nif: String -------------> DNI de la empresa
logoUrl: String --------> link con el icono que representa la marca
country: String -----------> pais de la marca
website: String -----------> pagina web de la marca
logo: String ----------------> logo de la marca
active: Boolean ----------> si la marca esta activa
createdAt: LocalDateTime --------> cuando se registro la marca por primera vez en el ecommers
updateAt: LocalDateTime ----------> cuando hace un cambio de datos la marca, ejemplo cambia de dominio o logo
falta poner la relacion con producto, ya que una marcar tiene muchos productos es decir (MANY TO ONE)
Crear BrandController REST y MVC
Título: Implementar BrandController CRUD (REST + MVC)
Descripción: Endpoints CRUD: GET /api/brands, GET /api/brands/{id}, POST /api/brands, PUT /api/brands/{id}, DELETE /api/brands/{id}, GET /api/brands/search?name=. Usar DTOs para entrada/salida y MapStruct o mapeo manual.
Checklist
[ ] DTOs Request/Response con validaciones Bean Validation.
[ ] Servicio intermedio BrandService para lógica.
[ ] Controlador REST con constructor injection (Lombok @requiredargsconstructor).
[ ] Respuestas con códigos HTTP correctos y manejo de errores global.
Criterios de aceptación: Endpoints devuelven JSON; POST devuelve 201 con Location; validaciones activas.
Estimación: 1.5 días. Labels: backend, api, spring-boot.
Notas técnicas: Seguir buenas prácticas de Spring Boot y separación Controller/Service/Repository.
Plantillas Thymeleaf
Título: Crear templates Thymeleaf para Brand (list, form, detail)
Checklist
[ ] brands/list.html, brands/form.html, brands/detail.html.
[ ] Formularios con validación HTML5 y mensajes de error del servidor.
[ ] Enlaces a productos de la marca.
Criterios de aceptación: Navegación completa CRUD desde UI; formularios muestran errores.
Estimación: 1 día. Labels: frontend, thymeleaf.
Notas técnicas: Basarse en patrón MVC de Spring + Thymeleaf para CRUD.
Tests Repository
Título: Tests unitarios para BrandRepository
Checklist
[ ] Test findByName positivo/negativo.
[ ] Test persistencia de createdAt y updatedAt.
Estimación: 0.5 día. Labels: test, unit.
Tests Controller
Título: Tests de integración BrandController con MockMvc
Checklist
[ ] CRUD completo con MockMvc.
[ ] Validaciones de entrada y errores 400/404.
Estimación: 1 día. Labels: test, integration.
Validación NIF / VAT EU
Título: Implementar validación NIF/VAT y verificación VIES
Descripción: Añadir validación local por formato y checksum para España y opción de verificación remota contra VIES; almacenar verifiedAt y verificationStatus.
Checklist
[ ] Crear anotación @VatOrNif y VatOrNifValidator.
[ ] Validación local por país; para EU opción de llamada a VIES y manejo de errores de servicio.
[ ] Guardar resultado y timestamp.
Criterios de aceptación: nif validado en POST/PUT; si country es EU y se solicita, se consulta VIES y se persiste resultado.
Estimación: 2–3 días. Labels: compliance, validation.
Notas técnicas: VIES es el sistema oficial para verificar VAT intracomunitario; usarlo para justificar exenciones IVA y guardar evidencia de la verificación.
Relación Brand Product
Título: Añadir relación OneToMany Brand→Product y política de borrado
Checklist
[ ] @onetomany(mappedBy="brand") en Brand.
[ ] @manytoone en Product.
[ ] Decidir política de borrado (RESTRICT / SET_NULL / CASCADE) y documentarla.
Estimación: 0.5 día. Labels: db, jpa.