API em .NET para geração dinâmica de relatórios com IA, transformando prompts em consultas SQL seguras para PostgreSQL e exportando resultados em PDF e Excel.
C#
0
14 commits
updated May 18, 2026
O ReportGenerator AI é uma API desenvolvida em .NET para geração dinâmica de relatórios a partir de prompts em linguagem natural.
A proposta do projeto é permitir que o usuário informe o tipo de relatório desejado, enquanto a aplicação utiliza recursos de IA para interpretar a solicitação, gerar uma consulta SQL segura para PostgreSQL, executar a busca em modo somente leitura e disponibilizar os dados em formato de pré-visualização, PDF ou Excel.
Este projeto foi criado com o objetivo de estudar e aplicar conceitos de:
O fluxo principal da aplicação é:
Exemplo de prompt:
Liste os clientes que não compram há mais de 30 dias, mostrando nome, última compra e total faturado.
src/
├── Relatorios.Api/
│ └── Camada responsável pelos controllers, autenticação, middlewares e configuração da API.
│
├── Relatorios.Application/
│ └── Camada responsável pelos casos de uso, regras de aplicação e contratos internos.
│
├── Relatorios.Contracts/
│ └── Camada responsável pelos requests e responses expostos pela API.
│
├── Relatorios.Domain/
│ └── Camada responsável pelas entidades, modelos de domínio e estruturas de relatório.
│
└── Relatorios.Infrastructure/
└── Camada responsável por banco de dados, IA, geração de arquivos, segurança e integrações externas.
POST /api/auth/register
Cria um novo usuário.
POST /api/auth/login
Realiza login e retorna um token JWT.
PUT /api/auth/change-password
Altera a senha do usuário autenticado.
POST /api/reports/preview-dynamic
Gera uma prévia de relatório dinâmico a partir de um prompt.
POST /api/reports/generate-dynamic/from-history
Gera um arquivo de relatório em PDF ou Excel com base em um histórico já existente.
GET /api/reports/dynamic-history
Lista o histórico de relatórios dinâmicos.
GET /api/reports/dynamic-history/{id}
Busca os detalhes de um relatório pelo ID.
Um dos pontos principais do projeto é impedir que a IA gere comandos perigosos para o banco de dados.
A aplicação valida o SQL gerado antes da execução e permite apenas consultas iniciadas com:
SELECT
ou
WITH ... SELECT
Comandos como os abaixo são bloqueados:
INSERT
UPDATE
DELETE
DROP
CREATE
ALTER
TRUNCATE
MERGE
EXEC
CALL
COPY
VACUUM
ANALYZE
Além disso, a aplicação também bloqueia múltiplos comandos, comentários SQL e funções perigosas.
A aplicação suporta geração de relatórios em:
O relatório em PDF é gerado com QuestPDF.
O relatório em Excel é gerado com ClosedXML, criando uma planilha com os dados e outra com metadados do relatório.
Antes de executar o projeto, configure as variáveis sensíveis da aplicação.
Exemplo de configurações necessárias:
{
"Jwt": {
"SecretKey": "sua-chave-jwt-com-no-minimo-32-caracteres",
"Issuer": "ReportGeneratorAI",
"Audience": "ReportGeneratorAI"
},
"Postgres": {
"ConnectionString": "Host=localhost;Port=5432;Database=sua_base;Username=seu_usuario;Password=sua_senha"
},
"OpenAi": {
"ApiKey": "sua-chave-da-openai",
"BaseUrl": "https://api.openai.com/v1",
"Model": "modelo-utilizado"
},
"ReportStorage": {
"BasePath": "reports"
},
"Cors": {
"AllowedOrigins": [
"http://localhost:5173"
]
}
}
Nunca envie chaves de API, senhas ou connection strings reais para o GitHub.
Clone o repositório:
git clone https://github.com/lucasrpinto/ReportGenerator_AI.git
Acesse a pasta do projeto:
cd ReportGenerator_AI
Restaure os pacotes:
dotnet restore
Execute a API:
dotnet run --project src/Relatorios.Api
Acesse o Swagger em ambiente de desenvolvimento:
https://localhost:porta/swagger
Após realizar login e obter o token JWT, envie uma requisição para gerar uma prévia de relatório:
POST /api/reports/preview-dynamic
Authorization: Bearer seu_token
Content-Type: application/json
Body:
{
"prompt": "Liste os pedidos com cliente, valor bruto, valor estornado e valor líquido"
}
A API retornará informações como:
{
"historyId": "00000000-0000-0000-0000-000000000000",
"sql": "SELECT ...",
"rowCount": 10,
"executionTimeMs": 120,
"columns": [],
"rows": []
}
Projeto em desenvolvimento.
Funcionalidades já presentes:
Desenvolvido por Lucas R. Pinto.
API em .NET para geração dinâmica de relatórios com IA, transformando prompts em consultas SQL seguras para PostgreSQL e exportando resultados em PDF e Excel.
C#
0
14 commits
updated May 18, 2026
O ReportGenerator AI é uma API desenvolvida em .NET para geração dinâmica de relatórios a partir de prompts em linguagem natural.
A proposta do projeto é permitir que o usuário informe o tipo de relatório desejado, enquanto a aplicação utiliza recursos de IA para interpretar a solicitação, gerar uma consulta SQL segura para PostgreSQL, executar a busca em modo somente leitura e disponibilizar os dados em formato de pré-visualização, PDF ou Excel.
Este projeto foi criado com o objetivo de estudar e aplicar conceitos de:
O fluxo principal da aplicação é:
Exemplo de prompt:
Liste os clientes que não compram há mais de 30 dias, mostrando nome, última compra e total faturado.
src/
├── Relatorios.Api/
│ └── Camada responsável pelos controllers, autenticação, middlewares e configuração da API.
│
├── Relatorios.Application/
│ └── Camada responsável pelos casos de uso, regras de aplicação e contratos internos.
│
├── Relatorios.Contracts/
│ └── Camada responsável pelos requests e responses expostos pela API.
│
├── Relatorios.Domain/
│ └── Camada responsável pelas entidades, modelos de domínio e estruturas de relatório.
│
└── Relatorios.Infrastructure/
└── Camada responsável por banco de dados, IA, geração de arquivos, segurança e integrações externas.
POST /api/auth/register
Cria um novo usuário.
POST /api/auth/login
Realiza login e retorna um token JWT.
PUT /api/auth/change-password
Altera a senha do usuário autenticado.
POST /api/reports/preview-dynamic
Gera uma prévia de relatório dinâmico a partir de um prompt.
POST /api/reports/generate-dynamic/from-history
Gera um arquivo de relatório em PDF ou Excel com base em um histórico já existente.
GET /api/reports/dynamic-history
Lista o histórico de relatórios dinâmicos.
GET /api/reports/dynamic-history/{id}
Busca os detalhes de um relatório pelo ID.
Um dos pontos principais do projeto é impedir que a IA gere comandos perigosos para o banco de dados.
A aplicação valida o SQL gerado antes da execução e permite apenas consultas iniciadas com:
SELECT
ou
WITH ... SELECT
Comandos como os abaixo são bloqueados:
INSERT
UPDATE
DELETE
DROP
CREATE
ALTER
TRUNCATE
MERGE
EXEC
CALL
COPY
VACUUM
ANALYZE
Além disso, a aplicação também bloqueia múltiplos comandos, comentários SQL e funções perigosas.
A aplicação suporta geração de relatórios em:
O relatório em PDF é gerado com QuestPDF.
O relatório em Excel é gerado com ClosedXML, criando uma planilha com os dados e outra com metadados do relatório.
Antes de executar o projeto, configure as variáveis sensíveis da aplicação.
Exemplo de configurações necessárias:
{
"Jwt": {
"SecretKey": "sua-chave-jwt-com-no-minimo-32-caracteres",
"Issuer": "ReportGeneratorAI",
"Audience": "ReportGeneratorAI"
},
"Postgres": {
"ConnectionString": "Host=localhost;Port=5432;Database=sua_base;Username=seu_usuario;Password=sua_senha"
},
"OpenAi": {
"ApiKey": "sua-chave-da-openai",
"BaseUrl": "https://api.openai.com/v1",
"Model": "modelo-utilizado"
},
"ReportStorage": {
"BasePath": "reports"
},
"Cors": {
"AllowedOrigins": [
"http://localhost:5173"
]
}
}
Nunca envie chaves de API, senhas ou connection strings reais para o GitHub.
Clone o repositório:
git clone https://github.com/lucasrpinto/ReportGenerator_AI.git
Acesse a pasta do projeto:
cd ReportGenerator_AI
Restaure os pacotes:
dotnet restore
Execute a API:
dotnet run --project src/Relatorios.Api
Acesse o Swagger em ambiente de desenvolvimento:
https://localhost:porta/swagger
Após realizar login e obter o token JWT, envie uma requisição para gerar uma prévia de relatório:
POST /api/reports/preview-dynamic
Authorization: Bearer seu_token
Content-Type: application/json
Body:
{
"prompt": "Liste os pedidos com cliente, valor bruto, valor estornado e valor líquido"
}
A API retornará informações como:
{
"historyId": "00000000-0000-0000-0000-000000000000",
"sql": "SELECT ...",
"rowCount": 10,
"executionTimeMs": 120,
"columns": [],
"rows": []
}
Projeto em desenvolvimento.
Funcionalidades já presentes:
Desenvolvido por Lucas R. Pinto.