﻿# Release 5: Revisión del back de un módulo

Copia este contenido en una página nueva de la wiki del grupo, con el título
**Revisión R5 back: `<nombre del módulo>`**. Una página por módulo revisado.

| Dato | Valor |
| :---- | :---- |
| **Propietario del módulo** | |
| **Nombre del módulo** | |
| **Entidad 1** | |
| **Entidad 2** | |
| **Entidad 3** | |

| Dato | Valor |
| :---- | :---- |
| **Revisor** | _(si el propietario se revisa a sí mismo, escribe su nombre aquí también)_ |

**Cómo usar esta lista.** Cada criterio se aplica a **las 3 entidades**. En la
columna *Comentario* escribe `Cumple` o, si falla, qué entidad y qué archivo
no cumple. El revisor **no corrige el código del propietario**: solo registra lo
que encuentra. Las correcciones las hace el propietario.

---

## Convenciones

| Criterio | Ejemplo | Comentario |
| :---- | :---- | :---- |
| **Paquete y carpeta.** Las clases del módulo están en el paquete `co.edu.uniandes.<nombreproyecto>.<nombremodulo>`, con el `nombreproyecto` acordado en grupo (igual para todos). La carpeta coincide con el paquete. | `co.edu.uniandes.musical.artistas`, en `src/main/java/co/edu/uniandes/musical/artistas/` | |
| **DTO.** Un archivo por entidad, llamado `<Entidad>DTO.java`. | `ArtistaDTO.java`, `AlbumDTO.java`, `CancionDTO.java` | |
| **Controller.** `<Entidad>Controller.java`, anotado `@RestController`. | `ArtistaController.java` | |
| **Endpoint de lectura.** `GET /<entidades>`, en un método llamado `findAll()`. | `GET /artistas` | |
| **Endpoint de creación.** `POST /<entidades>`, en un método `crear<Entidad>(@RequestBody <Entidad>DTO)`. Responde `201`, imprime el body en consola y no persiste. | `POST /artistas` en `crearArtista(...)` | |
| **Repository (contrato).** Interfaz `<Entidad>Repository.java`. | `ArtistaRepository.java` | |
| **Repository (fake).** `InMemory<Entidad>Repository.java`, anotado `@Repository`, que carga un JSON a objetos Java con `ObjectMapper`. | `InMemoryArtistaRepository.java` | |
| **Datos de ejemplo.** El JSON que carga el repository fake está en `src/main/resources/`. | `src/main/resources/datos.json` | |
| **Colecciones Postman.** Una por entidad, en la carpeta `collections/`, con el nombre `<Entidad>.postman_collection.json`. | `collections/Artista.postman_collection.json` | |
| **Environment de Postman.** Un único archivo para todo el módulo (no uno por entidad), con la variable `baseUrl`. | `collections/environment.postman_environment.json` | |
| **Valor de `baseUrl`.** El `Current value` es la URL local, no la de una VM. | `http://localhost:8080` | |

---

## Validación funcional

El revisor corre el módulo en **su propia máquina**, sin basarse en lo que el propietario dice que funciona.

| Criterio | Ejemplo | Comentario |
| :---- | :---- | :---- |
| **El back despliega.** `./mvnw spring-boot:run` arranca sin errores. | La consola termina con un mensaje `Started ...Application` | |
| **El front del propietario funciona con este back.** Con el back corriendo, el front del propietario muestra lista, detalle y formulario de crear de las 3 entidades. | Abrir `http://localhost:4200` y recorrer las 3 entidades | |

---

## Cierre del propietario

Antes de crear la rama de integración, el propietario vuelve a verificar su
módulo, **incluso si no tuvo revisor**.

- [ ] Corregí todo lo que quedó en los comentarios.
- [ ] Corrí mis Collections con Newman: todas en verde, mínimo 6 requests (un `GET` y un `POST` por entidad).
- [ ] Volví a correr `./mvnw spring-boot:run` y el back despliega sin errores.
- [ ] Fecha de la verificación final: ______
