Skip to content

Commit 5fa3bd7

Browse files
committed
chore: ajusta DTO e defaults da genealogia IA
1 parent d3a3b2f commit 5fa3bd7

2 files changed

Lines changed: 47 additions & 27 deletions

File tree

src/modules/reproducao/genealogia/dto/analise-genealogica.dto.ts

Lines changed: 45 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,55 +1,74 @@
11
import { ApiProperty } from '@nestjs/swagger';
22

33
/**
4-
* Informações sobre ancestral comum na análise genealógica
4+
* Dados dos pais retornados pela IA.
55
*/
6-
export class AncestralComumDto {
7-
@ApiProperty({ example: '123e4567-e89b-12d3-a456-426614174000', description: 'ID do ancestral comum' })
8-
idBufalo: string;
6+
export class PaisDto {
7+
@ApiProperty({ example: '123e4567-e89b-12d3-a456-426614174000', description: 'ID do pai', nullable: true })
8+
paiId: string | null;
99

10-
@ApiProperty({ example: 'Potente', description: 'Nome do ancestral' })
11-
nome: string;
10+
@ApiProperty({ example: '234e5678-e89b-12d3-a456-426614174001', description: 'ID da mãe', nullable: true })
11+
maeId: string | null;
12+
}
13+
14+
/**
15+
* Resumo agregado retornado pela IA (quantidades de ancestrais/descendentes).
16+
*/
17+
export class ResumoGenealogicoDto {
18+
@ApiProperty({ example: 10, description: 'Total de ancestrais identificados' })
19+
totalAncestrais: number;
1220

13-
@ApiProperty({ example: 2, description: 'Gerações até o pai' })
14-
geracoesAtePai: number;
21+
@ApiProperty({ example: 4, description: 'Total de descendentes identificados' })
22+
totalDescendentes: number;
1523

16-
@ApiProperty({ example: 3, description: 'Gerações até a mãe' })
17-
geracoesAteMae: number;
24+
@ApiProperty({ example: 3, description: 'Número de gerações de ancestrais retornadas' })
25+
geracoesAncestrais: number;
1826

19-
@ApiProperty({ example: 3.125, description: 'Contribuição para consanguinidade em %' })
20-
contribuicaoConsanguinidade: number;
27+
@ApiProperty({ example: 2, description: 'Número de gerações de descendentes retornadas' })
28+
geracoesDescendentes: number;
2129
}
2230

2331
/**
24-
* Resposta da análise genealógica completa de um búfalo
32+
* Resposta da análise genealógica completa de um búfalo, alinhada ao payload atual da IA.
2533
*/
2634
export class AnaliseGenealogicaDto {
2735
@ApiProperty({ example: '123e4567-e89b-12d3-a456-426614174000', description: 'ID do búfalo analisado' })
2836
idBufalo: string;
2937

30-
@ApiProperty({ example: 'Valente', description: 'Nome do búfalo' })
31-
nome?: string;
38+
@ApiProperty({ example: 'M', enum: ['M', 'F'], description: 'Sexo do búfalo' })
39+
sexo: string;
3240

33-
@ApiProperty({ example: 3.125, description: 'Coeficiente de consanguinidade em %' })
41+
@ApiProperty({ example: 3.12, description: 'Coeficiente de consanguinidade em %' })
3442
consanguinidade: number;
3543

36-
@ApiProperty({ example: 'BAIXO', enum: ['BAIXO', 'MODERADO', 'ALTO', 'CRÍTICO'], description: 'Nível de risco genético' })
44+
@ApiProperty({ example: 'Baixo', enum: ['Baixo', 'Moderado', 'Alto', 'Extremo'], description: 'Nível de risco genético' })
3745
riscoGenetico: string;
3846

39-
@ApiProperty({ example: 4, description: 'Número de gerações analisadas' })
40-
geracoesAnalisadas: number;
47+
@ApiProperty({ example: 'Consanguinidade < 3.125% - Risco baixo', description: 'Descrição textual do risco' })
48+
descricaoRisco: string;
4149

42-
@ApiProperty({ example: 6, description: 'Total de ancestrais identificados' })
43-
totalAncestrais: number;
50+
@ApiProperty({ example: false, description: 'Indica se o animal é fundador (sem pais cadastrados)' })
51+
eFundador: boolean;
52+
53+
@ApiProperty({ type: PaisDto, description: 'Pais conhecidos do búfalo' })
54+
pais: PaisDto;
4455

45-
@ApiProperty({ type: [AncestralComumDto], description: 'Lista de ancestrais comuns identificados' })
46-
ancestraisComuns: AncestralComumDto[];
56+
@ApiProperty({
57+
example: { geracao_1: ['pai-id', 'mae-id'], geracao_2: ['avo1', 'avo2'] },
58+
description: 'Ancestrais organizados por geração',
59+
type: Object,
60+
})
61+
ancestrais: Record<string, string[]>;
4762

4863
@ApiProperty({
49-
example: 'Animal com consanguinidade baixa. Adequado para reprodução sem restrições significativas.',
50-
description: 'Recomendações baseadas na análise',
64+
example: { geracao_1: ['filho1', 'filho2'] },
65+
description: 'Descendentes organizados por geração',
66+
type: Object,
5167
})
52-
recomendacoes: string;
68+
descendentes: Record<string, string[]>;
69+
70+
@ApiProperty({ type: ResumoGenealogicoDto, description: 'Resumo agregado de ancestrais e descendentes' })
71+
resumo: ResumoGenealogicoDto;
5372
}
5473

5574
/**

src/modules/reproducao/genealogia/genealogia-ia.service.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,8 @@ export class GenealogiaIAService implements OnModuleInit {
2424
private readonly configService: ConfigService,
2525
private readonly genealogiaRepo: GenealogiaRepositoryDrizzle,
2626
) {
27-
this.iaApiUrl = this.configService.get<string>('IA_API_URL') || 'http://localhost:8000';
27+
// Mantém valor vindo do ambiente, mas garante um padrão alinhado ao env.example
28+
this.iaApiUrl = this.configService.get<string>('IA_API_URL') || 'http://localhost:5001';
2829
}
2930

3031
onModuleInit() {

0 commit comments

Comments
 (0)