Skip to content

v0.2.1

Choose a tag to compare

@SantinoZucconi SantinoZucconi released this 13 May 02:43
· 180 commits to main since this release
4042d7b
Dev (#19)

* feat(auth): add password reset schemas (US-03)

* feat: add schemas and types for user profile and vehicle management

* feat(us-21): add favorite schemas, recover missing auth/vehicle schemas

## Especificación funcional

### Nuevos schemas — Gestión de favoritos (US-21)

`src/schemas/favorite.schema.ts` define el contrato entre `api` y `web`
para el feature de favoritos del conductor:

- `AddFavoriteRequestSchema` — body del POST /favorites: { vehicleId: UUID }
- `AddFavoriteResponseSchema` — respuesta 201: { id, vehicleId, conductorId, createdAt (ISO) }
- `FavoriteItemSchema` — elemento individual en la lista: { id, vehicleId, createdAt }
- `ListFavoritesResponseSchema` — respuesta del GET /favorites: { items: FavoriteItem[] }

Todos los IDs son UUID v4 (z.string().uuid()). Las fechas son ISO 8601
(z.string().datetime()). Sigue las convenciones del paquete (money en cents,
fechas ISO, IDs UUID).

### Nuevos error codes

`src/errors/error-codes.ts` agrega dos códigos al enum:
- `FAVORITE_ALREADY_EXISTS` — el conductor ya tiene ese vehículo en favoritos (→ 409)
- `FAVORITE_NOT_FOUND` — se intenta eliminar un favorito que no existe (→ 404)

El `api` mapea estos códigos en su `DomainExceptionFilter`.
El `web` puede ramificar sobre ellos sin usar el HTTP status directamente.

### Recuperación de schemas pre-existentes

`src/auth/login.ts` y `src/auth/vehicle.ts` existían en `main` pero no
habían sido mergeados a `dev`. Al crear la rama `us-21` desde `dev`, estos
archivos no estaban presentes. Fueron recuperados del paquete publicado
v0.1.3 para mantener compatibilidad con el `api` (que importa
`CreateVehicleRequestSchema`, `LoginUserRequestSchema`, etc.).

Sin estos archivos, el `api` en rama `us-21` fallaba al importar schemas
que no encontraba en el contracts local (cuando se usa `pnpm link` para
desarrollo cross-repo sin publicar).

`src/index.ts` ahora exporta los 6 módulos: register, login, vehicle,
error-codes, problem-details, favorite.schema.

### Tests

`test/schemas/favorite.schema.test.ts` — 16 casos Vitest:
- parse con valores válidos para cada schema
- rechazo de UUID mal formado, datetime inválido, campos faltantes
- rechazo de vehicleId inválido dentro de un array (ListFavorites)

Ejecutar: `pnpm test` (requiere Node ≥ 22 y pnpm ≥ 11)
Resultado verificado: 24/24 tests pasan (8 pre-existentes + 16 nuevos)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat: vehicle dtos

* feat: manage vehicle dtos (#13)

* feat: vehicle dtos

* fix: vehicle file and adding  field in get response dto

* fix: manage vehicle dtos (#14)

* feat: vehicle dtos

* fix: manage vehicle dtos

* merge dev into us-21 and resolve conflicts

Agent-Logs-Url: https://github.com/rocket-lease/contracts/sessions/db5e165c-04f0-40a1-9b81-0f1e7ac44b98

Co-authored-by: echepereza <142249406+echepereza@users.noreply.github.com>

* fix: missing `isAccessible` field in create vehicle dto (#15)

* feat: vehicle dtos

* fix: manage vehicle dtos

* chore(us-21): remove dead auth/vehicle.ts recovered in previous commit

src/vehicle/vehicle.ts (from dev) supersedes the compatibility copy we
added in auth/vehicle.ts. The public index.ts already exports from
vehicle/vehicle, so auth/vehicle.ts was unreachable dead code.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* chore: drop misplaced auth/vehicle.ts (vehicle schemas live in their own module)

* Nuevos campos en publish y get vehicle

* fix: strict UpdateVehicleSchema

---------

Co-authored-by: Aizen Sanchez <127356367+AizenSanchez@users.noreply.github.com>
Co-authored-by: echepereza <epereza@fi.uba.ar>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: SantinoZucconi <santinozucconi@gmail.com>
Co-authored-by: Santino Zucconi <107319354+SantinoZucconi@users.noreply.github.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: echepereza <142249406+echepereza@users.noreply.github.com>
Co-authored-by: juanma <drjuanma2712@gmail.com>