DOCS: Documentação inicial do projeto
This commit is contained in:
parent
d1448404e8
commit
ed607df252
155
README.md
Normal file
155
README.md
Normal file
@ -0,0 +1,155 @@
|
||||
# Sothis Contratação API
|
||||
|
||||
## Visão Geral
|
||||
|
||||
Esta API foi desenvolvida para automatizar e facilitar o processo de novas contratações. Suas duas funcionalidades principais são:
|
||||
|
||||
1. **Consulta de Viabilidade**: Verifica se um determinado endereço (baseado em CEP e número) possui viabilidade técnica para instalação de serviços.
|
||||
2. **Criação de Prospectos**: Registra um novo cliente potencial (prospect) no sistema de gestão Hubsoft.
|
||||
|
||||
A aplicação é construída em Node.js com Express e segue uma arquitetura modular para separação de responsabilidades.
|
||||
|
||||
## Features
|
||||
|
||||
- **Servidor Express**: API RESTful robusta e performática.
|
||||
- **Arquitetura Modular**: Lógica de negócio organizada no módulo `contratacao`, facilitando a manutenção e expansão.
|
||||
- **Serviços Externos**: Integração com múltiplas APIs de terceiros para consulta de CEP, geolocalização e gestão de clientes.
|
||||
- **Logging Avançado**: Utiliza `winston` para registrar logs da aplicação e de erros em arquivos diários rotacionados.
|
||||
- **Gestão de Ambiente**: Usa `dotenv` para gerenciar configurações de desenvolvimento e produção de forma segura e isolada.
|
||||
- **Desenvolvimento Otimizado**: `nodemon` para reinicialização automática do servidor em ambiente de desenvolvimento.
|
||||
|
||||
## Pré-requisitos
|
||||
|
||||
- Node.js (versão 18.x ou superior recomendada)
|
||||
- npm (geralmente instalado junto com o Node.js)
|
||||
|
||||
## 1. Instalação
|
||||
|
||||
Clone o repositório e instale as dependências:
|
||||
|
||||
```bash
|
||||
npm install
|
||||
```
|
||||
|
||||
## 2. Configuração
|
||||
|
||||
A aplicação utiliza arquivos `.env` para carregar suas configurações. Você precisará criar dois arquivos na raiz do projeto:
|
||||
|
||||
- `.env.development` (para ambiente de desenvolvimento)
|
||||
- `.env.production` (para ambiente de produção)
|
||||
|
||||
Preencha os arquivos com as seguintes variáveis de ambiente:
|
||||
|
||||
```env
|
||||
# Porta da API (padrão: 3000)
|
||||
PORT=3000
|
||||
|
||||
# Chave da API do Google Maps Geocoding
|
||||
GOOGLE_API_KEY=SUA_CHAVE_AQUI
|
||||
|
||||
# Configurações da API GeoGrid
|
||||
GEOGRID_API_URL=URL_DA_API_GEOGRID
|
||||
GEOGRID_API_KEY=SUA_CHAVE_GEOGRID_AQUI
|
||||
GEOGRID_API_COOKIE=SEU_COOKIE_GEOGRID_AQUI
|
||||
|
||||
# Configurações da API Hubsoft
|
||||
HUBSOFT_URL=URL_DO_HUBSOFT
|
||||
HUBSOFT_CLIENT_ID=SEU_CLIENT_ID_HUBSOFT
|
||||
HUBSOFT_CLIENT_SECRET=SEU_CLIENT_SECRET_HUBSOFT
|
||||
HUBSOFT_USERNAME=SEU_USUARIO_HUBSOFT
|
||||
HUBSOFT_PASSWORD=SUA_SENHA_HUBSOFT
|
||||
HUBSOFT_GRANT_TYPE=password
|
||||
```
|
||||
|
||||
## 3. Rodando a Aplicação
|
||||
|
||||
### Modo de Desenvolvimento
|
||||
|
||||
Este comando inicia a API com `nodemon`, que reinicia o servidor automaticamente a cada alteração nos arquivos. As configurações serão carregadas do `.env.development`.
|
||||
|
||||
```bash
|
||||
npm run dev:api
|
||||
```
|
||||
|
||||
### Modo de Produção
|
||||
|
||||
Este comando inicia a API de forma otimizada para produção usando `node`. As configurações serão carregadas do `.env.production`.
|
||||
|
||||
```bash
|
||||
npm run start:api
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Documentação da API
|
||||
|
||||
O prefixo para todos os endpoints é `/api`.
|
||||
|
||||
### Consulta de Viabilidade
|
||||
|
||||
Verifica a viabilidade de serviço para um endereço.
|
||||
|
||||
- **Endpoint**: `POST /viabilidade`
|
||||
- **Corpo da Requisição** (`application/json`):
|
||||
|
||||
```json
|
||||
{
|
||||
"cep": "06419240",
|
||||
"numero": 303
|
||||
}
|
||||
```
|
||||
|
||||
- **Resposta de Sucesso** (`200 OK`):
|
||||
|
||||
```json
|
||||
{
|
||||
"bairro": "Chácaras Marco",
|
||||
"cidade": "Barueri",
|
||||
"estado": "SP",
|
||||
"logradouro": "Rua Imirim",
|
||||
"naoDedicado": true,
|
||||
"dedicado": true
|
||||
}
|
||||
```
|
||||
|
||||
- **Respostas de Erro**:
|
||||
- `400 Bad Request`: Se `cep` ou `numero` não forem fornecidos.
|
||||
- `404 Not Found`: Se o endereço não for encontrado para o CEP informado.
|
||||
- `500 Internal Server Error`: Para outras falhas no processo.
|
||||
|
||||
### Criação de Prospecto
|
||||
|
||||
Cria um novo cliente potencial no Hubsoft.
|
||||
|
||||
- **Endpoint**: `POST /prospecto`
|
||||
- **Corpo da Requisição** (`application/json`):
|
||||
|
||||
```json
|
||||
{
|
||||
"cep": "06419240",
|
||||
"servicoId": 1,
|
||||
"servicoValor": 100.00,
|
||||
"numero": "303",
|
||||
"endereco": "Rua Imirim",
|
||||
"bairro": "Chácaras Marco",
|
||||
"tipoPessoa": "F",
|
||||
"nomeRazaoSocial": "Nome do Cliente",
|
||||
"cpfCnpj": "123.456.789-00",
|
||||
"email": "cliente@email.com",
|
||||
"telefone": "11999998888"
|
||||
}
|
||||
```
|
||||
|
||||
- **Resposta de Sucesso** (`200 OK`):
|
||||
|
||||
```json
|
||||
{
|
||||
"message": "Prospecto criado com sucesso",
|
||||
"data": {
|
||||
// ... dados retornados pela API do Hubsoft
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
- **Respostas de Erro**:
|
||||
- `500 Internal Server Error`: Se ocorrer um erro na comunicação com o Hubsoft.
|
||||
Loading…
Reference in New Issue
Block a user