diff --git a/src/modules/policy-engine/policy-engine.controller.ts b/src/modules/policy-engine/policy-engine.controller.ts index 8348632..934f009 100644 --- a/src/modules/policy-engine/policy-engine.controller.ts +++ b/src/modules/policy-engine/policy-engine.controller.ts @@ -10,13 +10,31 @@ import { Query, } from '@nestjs/common'; import { PolicyEngineService } from './policy-engine.service'; +import { PolicyEvaluationService } from './policy-evaluation.service'; +import type { EvaluationInput } from './services/master-value-resolver.service'; import { CreatePolicyDto } from './dto/create-policy.dto'; import { UpdatePolicyDto } from './dto/update-policy.dto'; import { PolicyStatus, AudienceType } from './entities/policy.enums'; @Controller('policy-engine') export class PolicyEngineController { - constructor(private readonly policyEngineService: PolicyEngineService) { } + constructor( + private readonly policyEngineService: PolicyEngineService, + private readonly policyEvaluationService: PolicyEvaluationService, + ) { } + + @Post('evaluate') + async evaluate(@Body() input: EvaluationInput) { + return this.policyEvaluationService.evaluateIncident(input); + } + + @Post('evaluate-batch') + async evaluateBatch(@Body() inputs: EvaluationInput[]) { + const list = Array.isArray(inputs) ? inputs : [inputs]; + return Promise.all( + list.map((item) => this.policyEvaluationService.evaluateIncident(item)), + ); + } @Post() async create(@Body() createPolicyDto: CreatePolicyDto) { diff --git a/src/modules/recovery-incident/dto/create-recovery-incident.dto.ts b/src/modules/recovery-incident/dto/create-recovery-incident.dto.ts index 67441c0..5a2c047 100644 --- a/src/modules/recovery-incident/dto/create-recovery-incident.dto.ts +++ b/src/modules/recovery-incident/dto/create-recovery-incident.dto.ts @@ -88,4 +88,8 @@ export class CreateRecoveryIncidentDto { @IsBoolean() @IsOptional() isPerksClaimed?: boolean; + + @IsString() + @IsOptional() + recoverySource?: string; } diff --git a/src/modules/recovery-incident/entities/recovery-incident.entity.ts b/src/modules/recovery-incident/entities/recovery-incident.entity.ts index b9ca107..9481585 100644 --- a/src/modules/recovery-incident/entities/recovery-incident.entity.ts +++ b/src/modules/recovery-incident/entities/recovery-incident.entity.ts @@ -75,6 +75,9 @@ export class RecoveryIncident { @Column({ name: 'is_perks_claimed', type: 'boolean', default: false }) isPerksClaimed!: boolean; + @Column({ name: 'recovery_source', type: 'varchar', length: 100, nullable: true, default: 'Manual Disruption Entry' }) + recoverySource?: string; + @OneToOne('IncidentEvaluation', 'incident', { onDelete: 'CASCADE' }) evaluation?: IncidentEvaluation;