Skip to content

docs(supplies): actualiza AGENTS.md y Swagger del catálogo de insumos#422

Open
nopestack wants to merge 5 commits into
GlobalEmergency:mainfrom
nopestack:docs/227-supplies-catalog
Open

docs(supplies): actualiza AGENTS.md y Swagger del catálogo de insumos#422
nopestack wants to merge 5 commits into
GlobalEmergency:mainfrom
nopestack:docs/227-supplies-catalog

Conversation

@nopestack

Copy link
Copy Markdown
Contributor

Closes #227

Resumen

La sección supplies de AGENTS.md describía el modelo anterior a la
epica #228 (un taxonomy compartido con Category/CategoryDefinition/
SupplyLine únicamente). Tras el merge reciente de #395, #396, #397,
#398, #399, #400, #405 y #408 el contexto es mucho más rico. Este PR
actualiza la documentación para reflejar el código real (leído
directamente, sin dar por buena la descripción original del issue):

  • Categoría: pasó de enum cerrado a CategorySlug data-driven
    validado; el enum sobrevive como semilla de slugs núcleo
    (CORE_CATEGORY_SLUGS), protegidos frente a archivado
    (CategoryProtectedError → 409).
  • Supply (master-data): código XXX-NNNN, variantes vía
    variantOfId + attributes, alias con resolución por
    nombre/traducciones/código, i18n base(es)+traducciones con
    fallback, nature (fungible/reusable/human), externalCodes
    (interop UNSPSC/HXL/…), merge de duplicados.
  • Metamodelo de atributos (AttributeDefinition): campos tipados
    por familia de categoría con herencia (resolveEffectiveSchema) y
    validación/coacción (validateAttributes).
  • Tenencia: scopeId global (null) + extensión aditiva por tenant;
    aclarado que los endpoints HTTP actuales sólo operan en scope global.
  • Gobernanza: catalogue:manage (sólo platform_admin hoy), slugs
    núcleo protegidos, proyección pública vs. admin.
  • Containers (palet/caja/lote, Empaquetado rastreable (Container palet/caja/lote) en supplies, reusando SupplyLine #140): ya implementados (no sólo
    "diseñado para"), documentados con su propio gate de autorización
    (coordinador de la emergencia, no catalogue:manage).

También se corrigió que apps/api/src/contexts/supplies es un host
hexagonal (casos de uso + Drizzle + HTTP) sobre el dominio real, que
vive en @globalemergency/warehouse-core (kernel/catalog/
containers), y que no usa @globalemergency/warehouse-postgres
para esta porción (esa persistencia hoy sólo cubre inventory/wms).

Swagger /docs

Se revisaron todos los controladores/DTOs de supplies (admin y
público). La mayoría ya tenía @ApiProperty/ejemplos completos de los
PRs recientes; los huecos reales eran las respuestas de error que
faltaban en los endpoints admin y público de insumos (404/400/409),
alineadas con lo que realmente lanza SuppliesDomainExceptionFilter.
Se regeneró apps/api/openapi.json y
packages/api-client/src/schema.ts (pnpm gen:api).

Alcance: sólo documentación y anotaciones Swagger — sin cambios de
lógica de dominio ni de docs/features/*.md (congelado).

Test plan

  • pnpm install --frozen-lockfile
  • pnpm --filter api build
  • pnpm --filter api exec eslint "{src,apps,libs,test}/**/*.ts" --max-warnings=0
  • pnpm --filter api exec prettier --check "src/**/*.ts" "test/**/*.ts"
  • pnpm --filter api test (252 suites, 1632 tests, todo verde)
  • pnpm --filter @reliefhub/api-client build && pnpm --filter web build
  • pnpm gen:api (openapi.json y schema.ts regenerados y commiteados)

nopestack added 5 commits July 6, 2026 09:54
Documenta el modelo real del catálogo maestro tras la epica GlobalEmergency#228 (GlobalEmergency#395,
GlobalEmergency#396, GlobalEmergency#397, GlobalEmergency#398, GlobalEmergency#399, GlobalEmergency#400, GlobalEmergency#405, GlobalEmergency#408): Supply como master-data
(código XXX-NNNN, variantes por variantOfId, alias, i18n base+traducciones
con fallback, naturaleza logística, external_codes de interop), el
metamodelo de atributos data-driven con herencia por categoría, la
tenencia global+tenant, la gobernanza admins-only con slugs núcleo
protegidos, y los containers (palet/caja/lote) ya implementados. Añade
las respuestas de error (404/400/409) que faltaban en los controladores
admin y público de supplies para que /docs las refleje, y regenera
openapi.json y el cliente tipado.
@nopestack
nopestack requested a review from vgpastor as a code owner July 17, 2026 08:56
@vercel

vercel Bot commented Jul 17, 2026

Copy link
Copy Markdown

@nopestack is attempting to deploy a commit to the GlobalEmergency Team on Vercel.

A member of the Team first needs to authorize it.

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.

[DOCS] Documentar el catalogo de insumos: AGENTS.md (supplies) y Swagger /docs

1 participant