F6.1 · usar catálogo contextual por tipo en Yacimientos

This commit is contained in:
2026-09-09 14:10:20 -03:00
parent 9983201de7
commit b701becab7
@@ -1,10 +1,14 @@
import { Injectable, NotFoundException } from '@nestjs/common'; import { Injectable, NotFoundException } from '@nestjs/common';
import { DataSource } from 'typeorm'; import { DataSource } from 'typeorm';
import type { ListFindingCatalogQueryDto } from './dto/list-finding-catalog-query.dto'; import type { ListFindingCatalogQueryDto } from './dto/list-finding-catalog-query.dto';
import { FindingCatalogService } from './finding-catalog.service';
@Injectable() @Injectable()
export class F3FindingCatalogResolverService { export class F3FindingCatalogResolverService {
constructor(private readonly dataSource: DataSource) {} constructor(
private readonly dataSource: DataSource,
private readonly contextualCatalog: FindingCatalogService,
) {}
async listApplicableForAsset(assetId: string, query: ListFindingCatalogQueryDto) { async listApplicableForAsset(assetId: string, query: ListFindingCatalogQueryDto) {
const [asset] = await this.dataSource.query(` const [asset] = await this.dataSource.query(`
@@ -36,17 +40,28 @@ export class F3FindingCatalogResolverService {
enabled: true, enabled: true,
code: 'OTHER', code: 'OTHER',
label: 'OTROS', 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) { if (!asset.familyId || asset.familyActive !== true) {
return { return {
asset: { id: asset.id, code: asset.code, name: asset.name }, asset: { id: asset.id, code: asset.code, name: asset.name },
inventoryFamily: null, inventoryFamily: null,
catalogSource: 'INVENTORY_FAMILY' as const,
typeConfigured: false, typeConfigured: false,
configurationReason: asset.typeCode.toLowerCase() === 'yacimiento' configurationReason: 'El elemento todavía no tiene una clasificación técnica activa.',
? '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.',
categories: [], categories: [],
items: [], items: [],
other, other,
@@ -103,6 +118,7 @@ export class F3FindingCatalogResolverService {
name: asset.familyName, name: asset.familyName,
level: asset.familyLevel, level: asset.familyLevel,
}, },
catalogSource: 'INVENTORY_FAMILY' as const,
typeConfigured: true, typeConfigured: true,
configurationReason: `Hallazgos asociados a la clasificación técnica ${asset.familyName ?? asset.familyCode ?? ''}`.trim(), configurationReason: `Hallazgos asociados a la clasificación técnica ${asset.familyName ?? asset.familyCode ?? ''}`.trim(),
categories, categories,