1. Propósito e Escopo
Este documento define todos os prompts, configurações de memória, transição entre estados e demais requisitos funcionais para o Agente de IA "Elaboração de Relatório de Perfil de Investidor", uma solução projetada para sintetizar dados coletados de entrevistas e questionários em relatórios personalizados de perfil de investidor. Essa documentação é um modelo de PRD ou Documento de Requisitos de Produto específicos para construção de Agentes de IA.
O objetivo principal é transformar as informações coletadas em relatórios detalhados que destacam recomendações personalizadas de investimento, alinhadas aos objetivos e perfil de risco do investidor.
2. Contexto e Problema
Cenário Atual
No cenário atual, a análise e síntese de dados coletados de entrevistas e questionários para a elaboração de relatórios de perfil de investidor é um processo manual e suscetível a erros. Os principais desafios incluem:
- Síntese eficaz das informações coletadas para gerar relatórios precisos.
- Necessidade de personalização das recomendações de investimento com base no perfil do investidor.
Problemas Identificados
- Tempo e Recursos: O processo manual consome tempo e recursos significativos, limitando a capacidade de atender a um grande número de clientes.
- Precisão e Consistência: A análise manual pode levar a inconsistências e erros nos relatórios gerados.
- Personalização: A dificuldade em personalizar recomendações de investimento com base em perfis individuais pode resultar em sugestões genéricas ou inadequadas.
3. Impactos Esperados
A implementação deste agente de IA visa alcançar os seguintes resultados:
- Aumento da Eficiência: Automatizar a síntese de dados e geração de relatórios reduzirá o tempo necessário para produzir cada relatório.
- Melhoria na Precisão: A aplicação de algoritmos de análise de dados assegurará maior precisão e consistência nos relatórios gerados.
- Personalização Avançada: As recomendações serão mais bem alinhadas aos objetivos e perfil de risco de cada investidor.
4. Visão Geral da Solução
O agente de IA para elaboração de relatórios de perfil de investidor processa dados coletados de entrevistas e questionários, aplica algoritmos de análise de dados para interpretar as respostas e gera relatórios detalhados com recomendações personalizadas. A seguir são detalhadas todas as regras de negócio e especificações funcionais necessárias para que esse agente atue como um assistente útil e autônomo na elaboração de relatórios de perfil de investidor que seguem as especificidades de cada cliente.
A solução consiste em um fluxo de automação composto por 4 agentes de IA. O processo inicia com a normalização e validação dos dados de entrada e termina com a elaboração do relatório final do perfil de investidor.
| Agentes | Função Principal |
|---|---|
Agente de Normalização e Validação de Entradas (RF 1)
| Unificar e validar os dados brutos de entrevistas e questionários em um esquema padronizado. |
Agente de Síntese de Dados de Entrevistas e Questionários (RF 2)
| Gerar uma síntese coerente e acionável dos dados normalizados. |
Agente de Classificação de Perfil de Investidor (RF 3)
| Classificar o perfil de risco do investidor e definir limites de adequação com base na síntese. |
Agente de Elaboração de Relatório de Perfil de Investidor (RF 4)
| Produzir o relatório final do perfil de investidor com recomendações personalizadas. |
5. Protótipos
Para proporcionar uma visão clara e tangível da solução proposta, criamos protótipos interativos que demonstram tanto o fluxo de trabalho dos agentes quanto o resultado final que o cliente receberá. Explore os links abaixo para entender melhor a solução em ação.
6. Requisitos Funcionais
RF 1. Agente de Normalização e Validação de Entradas
1.1 Tarefa do Agente
Unificar e validar os dados brutos de entrevistas e questionários em um esquema padronizado, pronto para análise.
1.2 Prompt ou Instruções do Agente
# 1. Contexto e explicações sobre inputs iniciais
Você está recebendo dados brutos heterogêneos de entrevistas e questionários em JSON. Esses dados contêm informações de texto livre, múltipla escolha, escalas e números.
# 2. Objetivo
Unificar e validar esses dados em um JSON único e padronizado com campos normalizados, tipos coerentes, valores em escalas definidas e lista de inconsistências ou ausências tratadas.
# 3. Regras que você deve seguir para gerar sua resposta
- Mapeie todos os campos recebidos para um esquema alvo com as chaves: identificacao.{nome,idade,sexo,estado_civil}, renda.{mensal_liquida,estabilidade_meses}, patrimonio.{total,liquidez_imediata}, objetivos.[{descricao,prioridade,horizonte_anos,valor_objetivo}], conhecimento.{autoavaliacao_1a5,experiencia_anos,exposicao_produtos:[produtos]}, risco.{tolerancia_1a5,capacidade_perda_percentual,necessidade_liquidez_1a5}, preferencias.{esg_boolean,restricoes_setoriais:[setor],preferencia_tributaria:[opcao]}, constraints.{nao_investir_em:[itens]}
- Converta escalas textuais para numéricas onde aplicável: {muito_baixo=1, baixo=2, médio=3, alto=4, muito_alto=5}. Normalize sim/nao para boolean. Remova símbolos monetários e converta valores para número em BRL.
- Trate campos ausentes definindo null e registre em inconsistencias.missing_fields a lista de chaves ausentes. Não infira valores não declarados.
- Valide faixas: idade [18..100]; renda_mensal >= 0; patrimonio_total >= 0; capacidade_perda_percentual [0..100]; horizontes em anos [0..60]. Valores fora de faixa devem ser corrigidos para null e registrados em inconsistencias.out_of_range com {campo,valor_recebido,faixa_esperada}.
- Detecte contradições: necessidade_liquidez_1a5 >=4 e horizonte_anos >=20 para o mesmo objetivo; capacidade_perda_percentual <5 e tolerancia_1a5>=4; renda_mensal=0 e patrimonio_total alto (>1e6). Liste em inconsistencias.contradicoes com {tipo,descricao,evidencias}.
- Derive campos auxiliares: idade_grupo ∈ {18-25,26-35,36-45,46-60,60+}; renda_faixa ∈ {ate_3k,3k-10k,10k-25k,25k-50k,50k+}; patrimonio_faixa ∈ {ate_50k,50k-200k,200k-1m,1m-5m,5m+}.
- Padronize prioridades de objetivos para inteiros 1 (mais alto) a 3 (mais baixo); se ausente, atribua 2 e marque em inconsistencias.assumptions.
- Saída deve incluir carimbo: meta.processing_version='v1' e meta.timestamp_iso. 1.3 Configurações do Agente
1.3.1 Especificação do Input
- Mecanismo de Acionamento: Este agente é o ponto de partida do fluxo e deve ser acionado pelo envio de dados de entrevistas e questionários via API. Na fase de testes, os dados serão enviados pelo agente diretamente por upload de um arquivo JSON na interface da Prototipe AI, para acelerar o processo de validação.
- Tipo do input: O input inicial para o fluxo é um arquivo JSON contendo dados brutos de entrevistas e questionários.
-
Formatos Suportados: Esse agente deve ser capaz de receber arquivos nos formatos:
.json. - Número de caracteres esperado: Este agente deve ter capacidade para processar um input de texto com até 100.000 caracteres.
1.3.2 Especificação do Output
- Formato de output: O output deve ser um JSON único e padronizado com campos normalizados, tipos coerentes e uma lista de inconsistências ou ausências tratadas.
-
Exemplo de Estrutura de Output:
{ "identificacao": { "nome": "João Silva", "idade": 30, "sexo": "masculino", "estado_civil": "solteiro" }, "renda": { "mensal_liquida": 5000, "estabilidade_meses": 24 }, "patrimonio": { "total": 200000, "liquidez_imediata": 50000 }, "objetivos": [ { "descricao": "Comprar uma casa", "prioridade": 1, "horizonte_anos": 10, "valor_objetivo": 300000 } ], "conhecimento": { "autoavaliacao_1a5": 3, "experiencia_anos": 5, "exposicao_produtos": ["ações", "fundos imobiliários"] }, "risco": { "tolerancia_1a5": 4, "capacidade_perda_percentual": 10, "necessidade_liquidez_1a5": 2 }, "preferencias": { "esg_boolean": true, "restricoes_setoriais": ["tabaco"], "preferencia_tributaria": ["isencao_IR"] }, "constraints": { "nao_investir_em": ["armas"] }, "inconsistencias": { "missing_fields": [], "out_of_range": [], "contradicoes": [] }, "meta": { "processing_version": "v1", "timestamp_iso": "2025-12-22T08:08:00Z" } } - Número de caracteres esperado: O JSON final deve ser conciso e informativo, com um tamanho estimado em torno de 5.000 caracteres.
1.3.3 Parâmetros de Geração
- Modelo: GPT-5
- Temperatura: 0.6
1.3.4 Ferramentas do Agente
- Documentos: Não consulta documentos externos.
- Calculadora: Não utiliza.
- Busca Online: Não utiliza.
- Sistemas Externos: Não se conecta a sistemas externos.
1.3.5 Memória
- Visibilidade das Instruções (Prompt): As instruções deste agente não devem ser visíveis para nenhum agente subsequente.
- Visibilidade da Resposta: A resposta gerada por este agente deve ser visível para o Agente de Síntese de Dados de Entrevistas e Questionários (RF 2).
1.3.6 Regras de Orquestração e Transição
Ao concluir sua execução, esse agente aciona o Agente de Síntese de Dados de Entrevistas e Questionários (RF 2).
RF 2. Agente de Síntese de Dados de Entrevistas e Questionários
2.1 Tarefa do Agente
Gerar uma síntese coerente e acionável dos dados normalizados para suportar classificação de perfil.
2.2 Prompt ou Instruções do Agente
# 1. Contexto e explicações sobre inputs iniciais Você está recebendo um JSON padronizado e validado produzido pelo Agente de Normalização e Validação de Entradas. Este JSON contém indicadores-chave e uma lista consolidada de riscos e necessidades do investidor. # 2. Objetivo Gerar uma síntese coerente e acionável desses dados para suportar a classificação de perfil de investidor. # 3. Regras que você deve seguir para gerar sua resposta - Construa indicadores: horizonte_global_anos = média ponderada dos objetivos por prioridade (peso 3 para prioridade 1, 2 para 2, 1 para 3); necessidade_liquidez = máximo de risco.necessidade_liquidez_1a5 e sinalizadores de objetivos com horizonte <=1 ano. - Calcule estabilidade_renda_score: se estabilidade_meses>=24 então 5; 12-23 então 4; 6-11 então 3; 1-5 então 2; 0 então 1. - Determine conhecimento_score = clamp(conhecimento.autoavaliacao_1a5,1,5); experiencia_score = min(5, 1 + floor(conhecimento.experiencia_anos/3)). - Produza resumo_narrativo em até 120 palavras cobrindo: renda_faixa, patrimonio_faixa, principais objetivos (top 3), horizonte_global_anos, necessidade_liquidez, preferências ESG/tributárias e restrições. - Consolide riscos_identificados: ['alta_necessidade_liquidez' se necessidade_liquidez>=4, 'baixa_capacidade_perda' se capacidade_perda_percentual<=5, 'renda_instavel' se estabilidade_renda_score<=2, 'conhecimento_baixo' se conhecimento_score<=2]. - Liste inconsistencias herdadas do agente anterior e acrescente divergencias se resumo_narrativo exigir suavizações (sem alterar números). - Garanta que todos os números estejam em escala 1..5 onde indicado e anos em inteiros. Inclua meta.processing_version='v1' e herde meta.timestamp_iso.
2.3 Configurações do Agente
2.3.1 Especificação do Input
- Mecanismo de Acionamento: Este agente deve ser acionado automaticamente após a conclusão do agente anterior (RF 1).
- Tipo do input: Este agente deve ser apto a receber como input um JSON padronizado e validado contendo dados de entrevistas e questionários.
-
Formatos Suportados: Esse agente deve ser capaz de receber inputs no formato:
.json. - Número de caracteres esperado: Este agente deve ter capacidade para processar um input de texto com até 5.000 caracteres.
2.3.2 Especificação do Output
- Formato de output: O output deve ser um JSON de síntese com indicadores-chave, resumo narrativo e lista consolidada de riscos e necessidades.
-
Exemplo de Estrutura de Output:
{ "indicadores_chave": { "horizonte_global_anos": 10, "necessidade_liquidez": 3, "estabilidade_renda_score": 4, "conhecimento_score": 3, "experiencia_score": 4 }, "resumo_narrativo": "João Silva possui uma renda mensal na faixa de 3k-10k e um patrimônio na faixa de 50k-200k. Seus principais objetivos incluem comprar uma casa, e ele possui um horizonte global de 10 anos. Suas necessidades de liquidez são moderadas, e ele tem preferências por investimentos ESG e restrições setoriais em tabaco." "riscos_identificados": ["renda_instavel", "conhecimento_baixo"], "inconsistencias": { "missing_fields": [], "out_of_range": [], "contradicoes": [] }, "meta": { "processing_version": "v1", "timestamp_iso": "2025-12-22T08:08:00Z" } } - Número de caracteres esperado: O JSON de síntese deve ser conciso e informativo, com um tamanho estimado em torno de 3.000 caracteres.
2.3.3 Parâmetros de Geração
- Modelo: GPT-5
- Temperatura: 0.6
2.3.4 Ferramentas do Agente
- Documentos: Não consulta documentos externos.
- Calculadora: Não utiliza.
- Busca Online: Não utiliza.
- Sistemas Externos: Não se conecta a sistemas externos.
2.3.5 Memória
- Visibilidade das Instruções (Prompt): As instruções deste agente não devem ser visíveis para nenhum agente subsequente.
- Visibilidade da Resposta: A resposta gerada por este agente deve ser visível para o Agente de Classificação de Perfil de Investidor (RF 3).
2.3.6 Regras de Orquestração e Transição
Ao concluir sua execução, esse agente aciona o Agente de Classificação de Perfil de Investidor (RF 3).
RF 3. Agente de Classificação de Perfil de Investidor
3.1 Tarefa do Agente
Classificar o perfil de risco do investidor e definir limites de adequação (suitability) com base na síntese.
3.2 Prompt ou Instruções do Agente
# 1. Contexto e explicações sobre inputs iniciais
Você está recebendo um JSON de síntese com indicadores de risco, horizonte, conhecimento/experiência e necessidades do investidor.
# 2. Objetivo
Classificar o perfil de risco do investidor e definir limites de adequação (suitability) com base na síntese recebida.
# 3. Regras que você deve seguir para gerar sua resposta
- Compute risk_score (0..100) com pesos: tolerancia_1a5 (40%), horizonte_global_anos (20%), conhecimento_score (15%), experiencia_score (10%), estabilidade_renda_score (10%), necessidade_liquidez (−15%).
- Normalização dos componentes: tolerancia_norm = (tolerancia_1a5−1)/4*100; conhecimento_norm idem; experiencia_norm idem; estabilidade_norm idem; horizonte_norm = min(horizonte_global_anos,30)/30*100; liquidez_norm = (necessidade_liquidez−1)/4*100; risk_score = 0.40*tolerancia_norm + 0.20*horizonte_norm + 0.15*conhecimento_norm + 0.10*experiencia_norm + 0.10*estabilidade_norm − 0.15*liquidez_norm.
- Ajustes: se idade_grupo='60+' subtraia 5 pontos; se capacidade_perda_percentual>=25 some 3 pontos; se 'alta_necessidade_liquidez' subtraia 5 adicionais.
- Mapeie categoria: Conservador (<30), Moderado (30..59), Arrojado (60..79), Agressivo (>=80).
- Defina faixas de alocação máximas por categoria: Conservador {renda_fixa: 80-100, multimercado: 0-10, renda_variavel: 0-10, internacional: 0-10, caixa: 0-20, alternativos: 0-5}; Moderado {renda_fixa: 50-80, multimercado: 0-20, renda_variavel: 0-30, internacional: 0-20, caixa: 0-15, alternativos: 0-10}; Arrojado {renda_fixa: 30-60, multimercado: 0-25, renda_variavel: 10-50, internacional: 0-30, caixa: 0-10, alternativos: 0-15}; Agressivo {renda_fixa: 10-40, multimercado: 0-30, renda_variavel: 20-70, internacional: 0-40, caixa: 0-10, alternativos: 0-20}.
- Imponha restrições: se necessidade_liquidez>=4, caixa mínimo 10%; se horizonte_global_anos<=2, renda_variavel máximo 10% e alternativos 0%; se conhecimento_score<=2, desabilitar derivativos e produtos complexos.
- Inclua suitability_flags: {produtos_complexos_permitidos:boolean, investimento_no_exterior_permitido:boolean, alavancagem_permitida:false sempre}. Baseie 'exterior' em tolerancia_norm>=50 e horizonte_global_anos>=3.
- Justifique em até 80 palavras a categoria com dados objetivos (tolerância, horizonte, liquidez, conhecimento).
- Inclua meta.processing_version='v1' e herde meta.timestamp_iso. 3.3 Configurações do Agente
3.3.1 Especificação do Input
- Mecanismo de Acionamento: Este agente deve ser acionado automaticamente após a conclusão do agente anterior (RF 2).
- Tipo do input: Este agente deve ser apto a receber como input um JSON de síntese contendo indicadores de risco, horizonte, conhecimento/experiência e necessidades do investidor.
-
Formatos Suportados: Esse agente deve ser capaz de receber inputs no formato:
.json. - Número de caracteres esperado: Este agente deve ter capacidade para processar um input de texto com até 3.000 caracteres.
3.3.2 Especificação do Output
- Formato de output: O output deve ser um JSON de perfil contendo categoria, score, justificativas, limites de alocação por classe de ativos e restrições de suitability.
-
Exemplo de Estrutura de Output:
{ "categoria": "Moderado", "risk_score": 55, "justificativa": "Com base na tolerância ao risco moderada, horizonte de 10 anos e necessidade de liquidez, o perfil é classificado como Moderado.", "limites_de_alocacao": { "renda_fixa": "50-80%", "multimercado": "0-20%", "renda_variavel": "0-30%", "internacional": "0-20%", "caixa": "0-15%", "alternativos": "0-10%" }, "restricoes": { "produtos_complexos_permitidos": false, "investimento_no_exterior_permitido": true, "alavancagem_permitida": false }, "meta": { "processing_version": "v1", "timestamp_iso": "2025-12-22T08:08:00Z" } } - Número de caracteres esperado: O JSON de perfil deve ser conciso e informativo, com um tamanho estimado em torno de 2.000 caracteres.
3.3.3 Parâmetros de Geração
- Modelo: GPT-5
- Temperatura: 0.6
3.3.4 Ferramentas do Agente
- Documentos: Não consulta documentos externos.
- Calculadora: Não utiliza.
- Busca Online: Não utiliza.
- Sistemas Externos: Não se conecta a sistemas externos.
3.3.5 Memória
- Visibilidade das Instruções (Prompt): As instruções deste agente não devem ser visíveis para nenhum agente subsequente.
- Visibilidade da Resposta: A resposta gerada por este agente deve ser visível para o Agente de Elaboração de Relatório de Perfil de Investidor (RF 4).
3.3.6 Regras de Orquestração e Transição
Ao concluir sua execução, esse agente aciona o Agente de Elaboração de Relatório de Perfil de Investidor (RF 4).
RF 4. Agente de Elaboração de Relatório de Perfil de Investidor
4.1 Tarefa do Agente
Produzir o relatório final do perfil de investidor com recomendações personalizadas, alinhadas a objetivos e perfil de risco.
4.2 Prompt ou Instruções do Agente
# 1. Contexto e explicações sobre inputs iniciais
Você está recebendo um JSON de perfil (categoria, score, limites) e a síntese de dados do investidor.
# 2. Objetivo
Produzir o relatório final do perfil de investidor com recomendações personalizadas, alinhadas a objetivos e perfil de risco.
# 3. Regras que você deve seguir para gerar sua resposta
- Estruture o relatório em seções: 1) Resumo Executivo; 2) Dados do Investidor (somente informações não sensíveis além do primeiro nome e faixas); 3) Perfil e Justificativa; 4) Objetivos e Horizontes; 5) Recomendações de Alocação (% por classe: caixa, renda fixa, multimercado, renda variável, internacional, alternativos); 6) Sugestões de Produtos Exemplificativos (genéricos, sem marcas); 7) Rebalanceamento e Próximos Passos; 8) Disclaimers de suitability.
- Calcule a alocação sugerida garantindo que o somatório seja 100%, respeitando as faixas da categoria e restrições (ex.: liquidez>=10% quando necessidade_liquidez>=4; RV<=10% se horizonte<=2). Aumente caixa/renda_fixa para objetivos de curto prazo; aumente RV e internacional para horizonte longo e alta tolerância, dentro dos limites.
- Considere preferências: se preferencias.esg_boolean=true, priorize estratégias ESG; se preferencia_tributaria inclui 'isencao_IR', destaque LCIs/LCAs/CRI/CRA isentos dentro de renda fixa quando elegíveis.
- Evite recomendações de ativos específicos por ticker/marca. Use categorias (ex.: 'ETF de índice amplo', 'título público IPCA+ 2030').
- Inclua plano de rebalanceamento: periodicidade trimestral ou semestral conforme volatilidade esperada da categoria (Conservador: semestral; Moderado/Arrojado/Agressivo: trimestral).
- Apresente riscos principais: alinhe com riscos_identificados da síntese. Inclua aviso de que retornos não são garantidos e que a decisão final cabe ao investidor/assessor.
- Anexe JSON de metadados ao final do relatório com: {categoria, risk_score, faixas_usadas, alocacao_recomendada_por_classe, restricoes_aplicadas, data_iso}.
- Mantenha linguagem clara, sem jargões excessivos. Números com 0 casa decimal para percentuais. Não extrapole além dos dados fornecidos; quando houver incerteza, explicite suposições no texto. 4.3 Configurações do Agente
4.3.1 Especificação do Input
- Mecanismo de Acionamento: Este agente deve ser acionado automaticamente após a conclusão do agente anterior (RF 3).
- Tipo do input: Este agente deve ser apto a receber como input um JSON de perfil contendo categoria, score, limites de alocação por classe de ativos e restrições de suitability, além da síntese de dados do investidor.
-
Formatos Suportados: Esse agente deve ser capaz de receber inputs no formato:
.json. - Número de caracteres esperado: Este agente deve ter capacidade para processar um input de texto com até 5.000 caracteres.
4.3.2 Especificação do Output
- Formato de output: O output deve ser um relatório de perfil de investidor em formato markdown, com seções padronizadas e recomendações de alocação; anexo de metadados em JSON.
-
Exemplo de Estrutura de Output:
# Resumo Executivo João Silva possui perfil de risco Moderado com um horizonte de investimento de 10 anos. As recomendações a seguir são personalizadas de acordo com seus objetivos e restrições. # Dados do Investidor - Nome: João Silva - Renda Mensal: 3k-10k - Patrimônio: 50k-200k # Perfil e Justificativa O perfil de risco é classificado como Moderado com base na tolerância ao risco, horizonte de 10 anos e necessidade de liquidez. # Objetivos e Horizontes - Comprar uma casa em 10 anos # Recomendações de Alocação - Renda Fixa: 50-80% - Multimercado: 0-20% - Renda Variável: 0-30% - Internacional: 0-20% - Caixa: 0-15% - Alternativos: 0-10% # Sugestões de Produtos Exemplificativos - ETF de índice amplo - Título público IPCA+ 2030 # Rebalanceamento e Próximos Passos Recomenda-se um rebalanceamento trimestral devido à volatilidade esperada. # Disclaimers de Suitability Retornos não são garantidos. A decisão final cabe ao investidor/assessor. --- { "categoria": "Moderado", "risk_score": 55, "faixas_usadas": { "renda_fixa": "50-80%", "multimercado": "0-20%", "renda_variavel": "0-30%", "internacional": "0-20%", "caixa": "0-15%", "alternativos": "0-10%" }, "alocacao_recomendada_por_classe": { "renda_fixa": 65, "multimercado": 10, "renda_variavel": 15, "internacional": 5, "caixa": 5, "alternativos": 0 }, "restricoes_aplicadas": { "produtos_complexos_permitidos": false, "investimento_no_exterior_permitido": true, "alavancagem_permitida": false }, "data_iso": "2025-12-22T08:08:00Z" } - Número de caracteres esperado: O relatório final deve ser detalhado e informativo, com um tamanho estimado em torno de 10.000 caracteres.
4.3.3 Parâmetros de Geração
- Modelo: GPT-5
- Temperatura: 0.6
4.3.4 Ferramentas do Agente
- Documentos: Não consulta documentos externos.
- Calculadora: Não utiliza.
- Busca Online: Não utiliza.
- Sistemas Externos: Não se conecta a sistemas externos.
4.3.5 Memória
- Visibilidade das Instruções (Prompt): As instruções deste agente não devem ser visíveis para nenhum agente subsequente.
- Visibilidade da Resposta: A resposta gerada por este agente é o entregável final e não é passada para outros agentes internos.
4.3.6 Regras de Orquestração e Transição
A execução deste agente finaliza o fluxo. O relatório gerado é o resultado que deve ser disponibilizado ao usuário.