Feature #223: supplyline + supplyid#252
Open
jesusareyesv wants to merge 2 commits into
Open
Conversation
Añade un campo opcional supplyId al value object SupplyLine (soft link al catálogo Supply de GlobalEmergency#228), sus columnas/mappers Drizzle compartidos y los DTOs de request/response. Migración 0043 agrega la columna nullable supply_id con FK a supplies(id) ON DELETE SET NULL en las 4 tablas de líneas (need_items, offer_items, resource_items, donation_intake_lines). Las líneas en jsonb (containers.lines, shipments.items) heredan el campo vía snapshot. name se conserva para filas legacy y la opción "Otro" (supplyId null). Refs GlobalEmergency#223
a4e8993 to
5e15544
Compare
|
The latest updates on your projects. Learn more about Vercel for GitHub. 1 Skipped Deployment
|
…as de material Hila el soft link supplyId desde el request hasta el snapshot en cada superficie de línea: needs, offers (oferta + intake de donación), inventario de recursos, contenedores y envíos. La dedup de inventario distingue una línea catalogada de una de texto libre con el mismo nombre. Las vistas de respuesta exponen supplyId (null en filas legacy). Refs GlobalEmergency#223
5e15544 to
996800b
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Resumen
Añade un enlace opcional (soft link)
supplyIdal value objectSupplyLinepara que cada línea de material pueda apuntar al catálogo maestro
Supply(epic #228), sin romper las líneas existentes de texto libre ni la opción
"Otro" (que quedan con
supplyId = null).Alcance mínimo del issue: solo el enlace opcional y su propagación por VO / BD /
DTOs. La UI de captura (#224) y el backfill de filas legacy (#226) quedan fuera.
Qué cambia:
SupplyLine(contextosupplies, upstream): nuevo campo opcionalsupplyId: string | nullen props y snapshot. Se normaliza (trim→null,sin validación de formato en el dominio). Los snapshots viejos sin la clave
rehidratan como
null.supply-line-columns.ts): columnasupply_id(nullable) y propagación enrowToSupplyLineSnapshot/supplyLineToColumns. Esto cubre las 4 tablas de líneas a la vez.0044_supply_line_supply_id.sql: agrega la columna nullablesupply_idcon FK asupplies(id) ON DELETE SET NULLenneed_items,offer_items,resource_itemsydonation_intake_lines. Idempotente(
ADD COLUMN IF NOT EXISTS+DROP CONSTRAINT IF EXISTSantes deADD CONSTRAINT). Las líneas en jsonb (containers.lines,shipments.items)heredan el campo vía
SupplyLineSnapshot, sin columna.supply-line.dto.ts): request con@IsOptional() @IsUUID();response con
supplyId: string | nullpara quetsc(
exactOptionalPropertyTypes) marque cualquier sitio donde se pierda.e intake de donación), inventario de recursos, contenedores y envíos
(logistics). La dedup de inventario distingue una línea catalogada de una de
texto libre con el mismo nombre. Las vistas de respuesta exponen
supplyId(
nullen filas legacy).Validación
pnpm --filter api build(tsc /exactOptionalPropertyTypes) — verdeeslint --max-warnings=0yprettier --check— limpiospnpm --filter api test— verde en CI (incluye los int-spec con BD); seactualizó la aserción de snapshot completo en
drizzle-resource.repository.int-spec.tspara incluirsupplyId: nullnull), aserción delos mappers de columnas, y casos de dominio en
resource.spec.ts(round-trip de
supplyId+ no-merge de línea catalogada vs texto libre)start:dev): POST de need/offer/resource/containercon un
supplyIdreal → GET y ver el enlace; POST sinsupplyId(ruta"Otro") →
null0044)pnpm gen:api+ commit depackages/api-client/src/schema.ts(arranca
AppModule→ requiere Postgres + Redis; correr donde haya infra yverificar que
supplyIdaparece en los schemas request/response de la línea)Cierre