Skip to content

feat(resources): editar ubicación de un punto in-place (PATCH) - #434

Merged
vgpastor merged 1 commit into
mainfrom
feature/edit-resource-location
Jul 26, 2026
Merged

feat(resources): editar ubicación de un punto in-place (PATCH)#434
vgpastor merged 1 commit into
mainfrom
feature/edit-resource-location

Conversation

@vgpastor

Copy link
Copy Markdown
Contributor

Qué

Permite corregir la geolocalización (dirección + coordenadas) de un punto ya creado vía PATCH /resources/:resourceId, sin tener que descartar+recrear (que cambia el id).

Por qué

Operando la emergencia de incendios se detectó que varias coordenadas eran aproximadas/erróneas y no había forma de corregirlas: el edit solo tocaba name/description/contact/schedule y discard no aplica a puntos publicados. La única vía era recrear el punto (nuevo id, se pierde historial).

Cambios

  • Resource: location pasa a mutable (_location + getter); edit() acepta location.
  • EditResourceProps / EditResourceCommand / EditResourceDto: nuevo campo opcional location (LocationDto).
  • edit-resource: el diff de auditoría incluye address/latitude/longitude.
  • Fix de bug latente: el bloque set del upsert del repositorio Drizzle no incluía description ni address/latitude/longitude → editar esos campos en un punto ya persistido no se guardaba. Ahora sí.
  • Regenerado packages/api-client/src/schema.ts.

Gate

pnpm --filter api build ✅ · eslint/prettier ✅ · 1633 tests ✅ (nuevo test de edición de ubicación en edit-resource.spec.ts).

Notas

  • API-only. La UI de edición de ubicación en el panel web queda como follow-up (próximo PR de la tanda: capacidad/ocupación, estados preparing/assisted, y campos estructurados servicios/cobertura/fuente).

El endpoint PATCH /resources/:id solo permitía cambiar name/description/
contact/schedule; para corregir coordenadas había que descartar+recrear
(cambiando el id). Se añade `location` (dirección + coordenadas) a la
edición: EditResourceProps/Command, EditResourceDto y el diff de auditoría.

Además arregla un bug latente: el bloque `set` del upsert del repositorio
NO incluía description ni address/latitude/longitude, así que editar esos
campos en un punto ya persistido no se guardaba.
@vercel

vercel Bot commented Jul 25, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
response-grid Ready Ready Preview, Comment Jul 25, 2026 11:28pm

Request Review

@vgpastor
vgpastor merged commit a2773ff into main Jul 26, 2026
12 of 13 checks passed
@vgpastor
vgpastor deleted the feature/edit-resource-location branch July 26, 2026 04:40
vgpastor added a commit that referenced this pull request Jul 26, 2026
## Qué

Añade al agregado `Resource` cuatro campos nuevos (todos nullable),
fijables al registrar y editables después vía `PATCH /resources/:id`, y
expuestos en la vista pública:

- **`capacity`** / **`occupancy`** — aforo total y ocupación actual del
refugio.
- **`sourceOrganisation`** / **`sourceUrl`** — organismo oficial que
publica el dato y enlace a la fuente (distinto de `provenance`, ingesta
externa).

Sale de la carga de refugios de los incendios: los MD de SITREM traían
aforo, ocupación y fuente oficial que acababan como texto libre en
`description`.

## Cambios

- Migración `0059_resource_capacity_source.sql`.
- Dominio
(props/snapshot/getters/`register`/`fromSnapshot`/`edit`/`toSnapshot`;
números sin trim, source con trim y vacío→null).
- `register-resource` / `edit-resource` (comandos + diff de auditoría).
- `ingest-external-resources`: preserva los 4 en update, `null` en
insert.
- DTOs (`RegisterResourceDto`, `EditResourceDto`) y vista pública
(`ResourceView` + `ResourceViewDto`).
- Repositorio Drizzle: schema, 3 mapeadores, `insert` y `set` del
upsert.
- `packages/api-client/src/schema.ts` regenerado.

## Gate

`nest build` ✅ · eslint/prettier ✅ · 1635 tests ✅.

## Nota

Reemplaza a #435 (se cerró sola al mergear #434 y borrarse su rama
base). Ya rebasada sobre `main`; el diff es solo el enriquecimiento.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant