Este repositório contém uma API desenvolvida em Node.js que implementa métodos numéricos para resolver equações não lineares, tais como Bissecção, Falsa Posição, Newton-Raphson e Secante. Além disso, a API integra uma Inteligência Artificial (IA) utilizando a API Gemini, permitindo que os usuários façam perguntas sobre os cálculos realizados.
- Implementação dos métodos numéricos:
- Bissecção
- Falsa Posição
- Newton-Raphson
- Secante
- Integração com a IA Gemini para responder perguntas sobre os cálculos.
- Uso de cookies para gerenciamento de sessões sem necessidade de autenticação.
- Armazenamento de contexto utilizando Redis de terceiros (serviço online utilizado diretamente em produção).
- Documentação da API com Swagger.
- Contêineres Docker para fácil implantação.
- Docker instalado
- Docker Compose instalado
- **Conta e chave de API para a API Gemini (Google Generative AI)
-
Clone o repositório:
git clone https://github.com/Wanjos-eng/API-CalculoNumerico cd API-CalculoNumerico
-
Crie um arquivo
.env
na raiz do projeto e configure as seguintes variáveis de ambiente:PORT=3000 GEMINI_KEY= REDIS_HOST= REDIS_PORT= REDIS_PASSWORD= ALLOWED_ORIGINS= COOKIE_HTTPONLY= COOKIE_SECURE= COOKIE_SAMESITE= ENVIRONMENT=
- GEMINI_KEY: Obtenha sua chave de API no Google AI Studio.
- REDIS_: São informações fornecida pelo serviço Redis de terceiros.
OBS -Em processo de teste no desenvolvimento pode simplismente usar a biblioteca node-cache para testar as funcionalidades.
-
Certifique-se de que tem acesso ao serviço Redis de terceiros:
-
Construa e inicie os contêineres Docker:
docker-compose up --build
- Isso irá construir a imagem Docker da aplicação e iniciar o contêiner.
-
Acesse a documentação Swagger para visualizar os endpoints e exemplos de como ultilizar:
Abra o navegador e navegue até
http://localhost:3000/docs
. ou navegue atéhttps://api-calculonumerico.onrender.com/docs
.
-
Inicie o ambiente virtual:
npm run dev
-
Em caso de erro execute o comando para configurar o ambiente:
npm run setup
- POST
/bisseccao
- POST
/fp
- POST
/newton-raphson
- POST
/secante
- POST
/perguntar
- POST
/continuarSolucao
- Você pode baixar e instalar o Postman aqui.
- Após instalar e abrir o Postman, você verá uma tela para criar uma nova requisição.
- Clique no botão New no canto superior esquerdo.
- Selecione HTTP Request.
- No campo à esquerda da URL, altere o método para POST.
- No campo ao lado do método POST, insira a URL do endpoint (exemplo: http://localhost:3000/newton-raphson).
- Clique na aba Body abaixo do campo de URL.
- Selecione a opção raw.
- No menu suspenso à direita, selecione o tipo de dados que será enviado, geralmente JSON.
- Insira os dados no formato JSON que serão enviados na requisição, como na parte 2 a seguir.
- É importante verificar na documentação o formato correto para fazer a requisição.
Faça uma requisição POST
para um dos endpoints dos métodos, fornecendo os parâmetros necessários no corpo da requisição.
Exemplo de requisição para o método da Bissecção:
POST /bisseccao
Content-Type: application/json
{
"funcao": "x^2 - 4",
"intervalo": [0, 5],
"tolerancia": 0.001,
"maxIteracao": 100
}
Após executar um método numérico, faça uma requisição POST
para /ia/perguntar
, fornecendo a sua pergunta.
Exemplo de requisição:
POST /perguntar
Content-Type: application/json
{
"pergunta": "Como o método determinou a raiz aproximada?"
}
A IA irá responder com base no contexto do cálculo que você executou anteriormente.
Após executar um método numérico, faça uma requisição POST
para /ia/perguntar
, fornecendo a sua pergunta.
Exemplo de requisição:
POST /continuarSolucao
Content-Type: application/json
{
"metodoEscolhido": "falsaPosicao",
"novasIteracoes": 10,
}
A o metodo irá continuar com base no contexto do cálculo que você executou anteriormente.
Contribuições são bem-vindas! Sinta-se à vontade para abrir issues e pull requests.
Para contribuir:
- Faça um fork do projeto.
- Crie uma branch para sua feature (
git checkout -b feature/nova-feature
). - Commit suas mudanças (
git commit -am 'Adiciona nova feature'
). - Faça push para a branch (
git push origin feature/nova-feature
). - Abra um Pull Request.
Desenvolvido por: