F3.1: usar familia técnica y exponer merge de catálogo

This commit is contained in:
2026-09-07 14:43:43 -03:00
parent 5fc239c664
commit 76b688ac82
@@ -6,15 +6,22 @@ import { CreateFindingCatalogItemDto } from './dto/create-finding-catalog-item.d
import { CreateFindingCategoryDto } from './dto/create-finding-category.dto'; import { CreateFindingCategoryDto } from './dto/create-finding-category.dto';
import { ListFindingCatalogProposalsQueryDto } from './dto/list-finding-catalog-proposals-query.dto'; import { ListFindingCatalogProposalsQueryDto } from './dto/list-finding-catalog-proposals-query.dto';
import { ListFindingCatalogQueryDto } from './dto/list-finding-catalog-query.dto'; import { ListFindingCatalogQueryDto } from './dto/list-finding-catalog-query.dto';
import { MergeFindingCatalogItemDto } from './dto/merge-finding-catalog-item.dto';
import { ReplaceFindingCatalogSelectionDto } from './dto/replace-finding-catalog-selection.dto'; import { ReplaceFindingCatalogSelectionDto } from './dto/replace-finding-catalog-selection.dto';
import { ReviewFindingCatalogProposalDto } from './dto/review-finding-catalog-proposal.dto'; import { ReviewFindingCatalogProposalDto } from './dto/review-finding-catalog-proposal.dto';
import { UpdateFindingCatalogItemDto } from './dto/update-finding-catalog-item.dto'; import { UpdateFindingCatalogItemDto } from './dto/update-finding-catalog-item.dto';
import { UpdateFindingCategoryDto } from './dto/update-finding-category.dto'; import { UpdateFindingCategoryDto } from './dto/update-finding-category.dto';
import { F3FindingCatalogResolverService } from './f3-finding-catalog-resolver.service';
import { FindingCatalogMergeService } from './finding-catalog-merge.service';
import { FindingCatalogService } from './finding-catalog.service'; import { FindingCatalogService } from './finding-catalog.service';
@Controller('finding-catalog') @Controller('finding-catalog')
export class FindingCatalogController { export class FindingCatalogController {
constructor(private readonly catalog: FindingCatalogService) {} constructor(
private readonly catalog: FindingCatalogService,
private readonly applicableCatalog: F3FindingCatalogResolverService,
private readonly catalogMerges: FindingCatalogMergeService,
) {}
@Get() @Get()
@RequirePermissions('finding_catalog.read') @RequirePermissions('finding_catalog.read')
@@ -27,8 +34,8 @@ export class FindingCatalogController {
applicable( applicable(
@Param('assetId', new ParseUUIDPipe({ version: '4' })) assetId: string, @Param('assetId', new ParseUUIDPipe({ version: '4' })) assetId: string,
@Query() query: ListFindingCatalogQueryDto, @Query() query: ListFindingCatalogQueryDto,
) { ): Promise<unknown> {
return this.catalog.listApplicableForAsset(assetId, query); return this.applicableCatalog.listApplicableForAsset(assetId, query);
} }
@Get('admin') @Get('admin')
@@ -123,6 +130,25 @@ export class FindingCatalogController {
return this.catalog.createItem(dto, principal, request); return this.catalog.createItem(dto, principal, request);
} }
@Get('items/:id/merge-status')
@RequirePermissions('finding_catalog.manage')
mergeStatus(
@Param('id', new ParseUUIDPipe({ version: '4' })) id: string,
): Promise<unknown> {
return this.catalogMerges.status(id);
}
@Post('items/:id/merge')
@RequirePermissions('finding_catalog.manage')
mergeItem(
@Param('id', new ParseUUIDPipe({ version: '4' })) id: string,
@Body() dto: MergeFindingCatalogItemDto,
@CurrentAuth() principal: AuthPrincipal,
@Req() request: RequestWithContext,
): Promise<unknown> {
return this.catalogMerges.merge(id, dto, principal, request);
}
@Patch('items/:id') @Patch('items/:id')
@RequirePermissions('finding_catalog.manage') @RequirePermissions('finding_catalog.manage')
updateItem( updateItem(