From 6316717850fdd80b8df559a10e64b773b6009c54 Mon Sep 17 00:00:00 2001 From: admin-valentin Date: Sat, 1 Aug 2026 12:32:03 +0000 Subject: [PATCH] feat(CC-054): add ExternalDataController (legislation search/ask, capability) --- src/external-data/external-data.controller.ts | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 src/external-data/external-data.controller.ts diff --git a/src/external-data/external-data.controller.ts b/src/external-data/external-data.controller.ts new file mode 100644 index 0000000..ff5c296 --- /dev/null +++ b/src/external-data/external-data.controller.ts @@ -0,0 +1,41 @@ +import { Body, Controller, Post } from '@nestjs/common'; +import { IsNumber, IsOptional, IsString } from 'class-validator'; +import { ExternalDataService } from './external-data.service'; + +class LegislationSearchDto { + @IsString() scenario: string; + @IsOptional() @IsString() country?: string; + @IsOptional() @IsNumber() topK?: number; +} + +class LegislationAskDto { + @IsString() message: string; + @IsOptional() @IsString() sessionId?: string; +} + +class CapabilityCheckDto { + @IsString() capability: string; + @IsOptional() @IsString() context?: string; +} + +@Controller('external') +export class ExternalDataController { + constructor(private readonly svc: ExternalDataService) {} + + /** POST /v1/external/legislation/search — vector search, returnează secțiuni text */ + @Post('legislation/search') + searchLegislation(@Body() dto: LegislationSearchDto) { + return this.svc.searchLegislation(dto.scenario, dto.country, dto.topK); + } + + /** POST /v1/external/legislation/ask — răspuns AI via AnythingLLM agent */ + @Post('legislation/ask') + askLegislation(@Body() dto: LegislationAskDto) { + return this.svc.askLegislationAgent(dto.message, dto.sessionId); + } + + @Post('capability/check') + checkCapability(@Body() dto: CapabilityCheckDto) { + return this.svc.checkCapability(dto.capability, dto.context); + } +}