From b701becab7731470e0256b004d7e05306a69aecf Mon Sep 17 00:00:00 2001 From: enlineawork Date: Wed, 9 Sep 2026 14:10:20 -0300 Subject: [PATCH] =?UTF-8?q?F6.1=20=C2=B7=20usar=20cat=C3=A1logo=20contextu?= =?UTF-8?q?al=20por=20tipo=20en=20Yacimientos?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../f3-finding-catalog-resolver.service.ts | 26 +++++++++++++++---- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/api-v3/src/inspection-findings/f3-finding-catalog-resolver.service.ts b/api-v3/src/inspection-findings/f3-finding-catalog-resolver.service.ts index ef210e7..058002e 100644 --- a/api-v3/src/inspection-findings/f3-finding-catalog-resolver.service.ts +++ b/api-v3/src/inspection-findings/f3-finding-catalog-resolver.service.ts @@ -1,10 +1,14 @@ import { Injectable, NotFoundException } from '@nestjs/common'; import { DataSource } from 'typeorm'; import type { ListFindingCatalogQueryDto } from './dto/list-finding-catalog-query.dto'; +import { FindingCatalogService } from './finding-catalog.service'; @Injectable() export class F3FindingCatalogResolverService { - constructor(private readonly dataSource: DataSource) {} + constructor( + private readonly dataSource: DataSource, + private readonly contextualCatalog: FindingCatalogService, + ) {} async listApplicableForAsset(assetId: string, query: ListFindingCatalogQueryDto) { const [asset] = await this.dataSource.query(` @@ -36,17 +40,28 @@ export class F3FindingCatalogResolverService { enabled: true, code: 'OTHER', label: 'OTROS', - help: 'Usalo cuando el Hallazgo no exista entre los asociados a esta clasificación. Quedará registrado para revisión en oficina.', + help: 'Usalo cuando el Hallazgo no exista entre los asociados a este Inventario. Quedará registrado para revisión en oficina.', }; + if (asset.typeCode.toLowerCase() === 'yacimiento') { + const contextual = await this.contextualCatalog.listApplicableForAsset(assetId, query); + return { + ...contextual, + inventoryFamily: null, + catalogSource: 'ASSET_TYPE' as const, + configurationReason: contextual.configurationReason + ?? 'Hallazgos asociados al tipo Yacimiento. OTROS permanece siempre disponible.', + other, + }; + } + if (!asset.familyId || asset.familyActive !== true) { return { asset: { id: asset.id, code: asset.code, name: asset.name }, inventoryFamily: null, + catalogSource: 'INVENTORY_FAMILY' as const, typeConfigured: false, - configurationReason: asset.typeCode.toLowerCase() === 'yacimiento' - ? 'El Yacimiento admite Hallazgos directos. Como no posee clasificación técnica, usá siempre OTROS / Agregar otro para describir el Hallazgo.' - : 'El elemento todavía no tiene una clasificación técnica activa.', + configurationReason: 'El elemento todavía no tiene una clasificación técnica activa.', categories: [], items: [], other, @@ -103,6 +118,7 @@ export class F3FindingCatalogResolverService { name: asset.familyName, level: asset.familyLevel, }, + catalogSource: 'INVENTORY_FAMILY' as const, typeConfigured: true, configurationReason: `Hallazgos asociados a la clasificación técnica ${asset.familyName ?? asset.familyCode ?? ''}`.trim(), categories,