Evaluando propuestas

Sistema No Cod De Aprovação De Cadastro E Geração De Contrato E E Coleta De Assinatura.

Publicado el 09 Octubre, 2025 en Programación y Tecnología

Sobre este proyecto

Abierto

🚀 Guia Técnico de Implementação - Sistema de Fiador Profissional

📌 Visão Geral do Projeto

Este documento contém todas as instruções necessárias para implementar um sistema automatizado de aprovação de cadastro para serviço de fiador profissional de aluguel.

Objetivo do Sistema

Automatizar o processo de análise, aprovação e geração de contratos para candidatos a locação com fiança profissional, reduzindo o tempo de processamento de 2-4 horas para 2-5 minutos.




📦 Estrutura do Projeto

Plain Text


sistema-fiador/
├── backend/                    # api rest em python/fastapi
│  ├── app/
│  │  ├── api/              # rotas da api
│  │  │  ├── candidatos.py  # Gestão de candidatos
│  │  │  ├── contratos.py  # Gestão de contratos (nova funcionalidade)
│  │  │  ├── webhooks.py    # Webhooks de pagamento/assinatura
│  │  │  └── admin.py      # Rotas administrativas
│  │  ├── models/            # Modelos de dados
│  │  │  ├── candidato.py
│  │  │  └── contrato_dados.py  # NOVO
│  │  ├── services/          # Serviços de integração
│  │  │  ├── google_sheets_service.py
│  │  │  ├── serasa_service.py
│  │  │  ├── asaas_service.py
│  │  │  ├── clicksign_service.py
│  │  │  ├── contract_service.py
│  │  │  └── decision_engine.py
│  │  ├── templates/        # Templates de contratos
│  │  │  └── contrato_locacao_completo.html  # NOVO
│  │  └── main.py          # Aplicação principal
│  ├── config/
│  │  └── settings.py      # Configurações
│  ├── requirements.txt      # Dependências Python
│  └── .env.example        # Exemplo de variáveis de ambiente

├── frontend/                  # Dashboard em React
│  ├── src/
│  │  ├── components/
│  │  │  ├── ui/          # Componentes shadcn/ui
│  │  │  └── FormularioContrato.jsx  # NOVO
│  │  ├── App.jsx          # Dashboard principal
│  │  └── AppComContratos.jsx  # Dashboard atualizado (NOVO)
│  ├── package.json
│  └── vite.config.js

└── docs/                    # Documentação
    ├── Readme.md
    ├── guia-instalacao.Md
    ├── nova-funcionalidade-contratos.Md
    └── resumo-executivo.md





🔧 Tecnologias Utilizadas

Backend


Python 3.11+


FastAPI - Framework web moderno e rápido


Pydantic - Validação de dados


Jinja2 - Templates HTML


WeasyPrint - Geração de PDF


Requests - Chamadas HTTP para APIs externas


Loguru - Logging avançado

Frontend


React 18+ com Vite


shadcn/ui - Componentes UI modernos


Tailwind CSS - Estilização


Lucide React - Ícones

Integrações Externas


Google Sheets API - Captura de cadastros


Serasa Experian API - Consulta de crédito


Asaas API - Geração de boletos


ClickSign API - Assinatura digital




📋 PASSO 1: Configuração do Ambiente

1.1 Pré-requisitos

Certifique-se de ter instalado:


Python 3.11 ou superior


Node.js 18+ e npm


PostgreSQL 14+ (ou SQLite para desenvolvimento)


Git

1.2 Clonar/Extrair o Projeto

Bash


# Se recebeu via ZIP
unzip sistema-fiador-atualizado.zip
cd sistema-fiador

# Se usar Git
git clone <repositorio>
cd sistema-fiador


1.3 Configurar Backend

Bash


cd backend

# Criar ambiente virtual Python
python3 -m venv venv
source venv/bin/activate  # Linux/Mac
# ou
venv\Scripts\activate  # Windows

# Instalar dependências
pip install -r requirements.txt

# Copiar arquivo de configuração
cp .env.example .env


1.4 Configurar Frontend

Bash


cd ../Frontend

# Instalar dependências
npm install

# Copiar configurações (se necessário)
cp .env.example .env





🔑 PASSO 2: Obter Credenciais das APIs

2.1 Google Sheets API

1.
Acesse Google Cloud Console

2.
Crie um novo projeto

3.
Ative a Google Sheets API

4.
Crie credenciais do tipo Service Account

5.
Baixe o arquivo JSON de credenciais

6.
Salve como backend/config/google_credentials.json

7.
Compartilhe a planilha com o email do Service Account

Variáveis no .env:

Bash


GOOGLE_CREDENTIALS_FILE=config/google_credentials.json
GOOGLE_SHEET_ID=<ID_DA_SUA_PLANILHA>


2.2 Serasa Experian API

1.
Entre em contato com Serasa Experian

2.
Solicite acesso à API de Consulta de Crédito

3.
Obtenha as credenciais de produção

Variáveis no .env:

Bash


SERASA_API_KEY=<SUA_CHAVE>
SERASA_API_SECRET=<SEU_SECRET>
SERASA_BASE_URL=https://api.serasaexperian.com.br


⚠️ IMPORTANTE: Durante desenvolvimento, o sistema usa dados mockados. Para produção, você precisa das credenciais reais.

2.3 Asaas API (Boletos)

1.
Crie conta em Asaas.com

2.
Acesse Integrações → API

3.
Copie sua API Key

Variáveis no .env:

Bash


ASAAS_API_KEY=<SUA_API_KEY>
ASAAS_BASE_URL=https://api.asaas.com/v3
ASAAS_ENVIRONMENT=sandbox  # ou 'production'


2.4 ClickSign API (Assinatura Digital)

1.
Crie conta em ClickSign.com

2.
Acesse Configurações → API

3.
Gere um Access Token

Variáveis no .env:

Bash


CLICKSIGN_ACCESS_TOKEN=<SEU_TOKEN>
CLICKSIGN_BASE_URL=https://api.clicksign.com/v1





🗄️ PASSO 3: Configurar Banco de Dados

3.1 Opção A: PostgreSQL (Recomendado para Produção)

Bash


# Instalar PostgreSQL
# Ubuntu/Debian
sudo apt install postgresql postgresql-contrib

# Criar banco de dados
sudo -u postgres psql
create database fiador_db;
create user fiador_user with password 'senha_segura';
grant all privileges on database fiador_db to fiador_user;
\q


variáveis no .env:

Bash


DATABASE_URL=postgresql://fiador_user:senha_segura@localhost:5432/fiador_db


3.2 Opção B: SQLite (Desenvolvimento)

Variáveis no .env:

Bash


DATABASE_URL=sqlite:///./Fiador.db


3.3 Criar Tabelas

Crie o arquivo backend/database/schema.sql:

SQL


-- Tabela de candidatos
create table candidatos (
    id serial primary key,
    uuid varchar(36) unique not null,
    nome_completo varchar(255) not null,
    cpf varchar(14) unique not null,
    rg varchar(20),
    email varchar(255),
    celular varchar(20),
    data_nascimento date,
    renda_declarada decimal(10,2),
   
    -- dados da consulta
    score_credito integer,
    renda_estimada decimal(10,2),
    pendencias_financeiras jsonb,
   
    -- status
    status varchar(50) default 'pendente',
    decisao_automatica varchar(50),
    motivo_reprovacao text,
   
    -- auditoria
    created_at timestamp default current_timestamp,
    updated_at timestamp default current_timestamp,
    processed_at timestamp
);

-- tabela de dados dos contratos
create table contratos_dados (
    id serial primary key,
    candidato_uuid varchar(36) unique not null,
    dados jsonb not null,
    status varchar(50) default 'pendente',
    preenchido_por varchar(255),
    data_preenchimento timestamp,
    clicksign_document_key varchar(255),
    asaas_payment_id varchar(255),
    created_at timestamp default current_timestamp,
    updated_at timestamp default current_timestamp,
   
    foreign key (candidato_uuid) references candidatos(uuid)
);

-- tabela de pagamentos
create table pagamentos (
    id serial primary key,
    candidato_uuid varchar(36) not null,
    tipo varchar(50) not null,  -- 'taxa_cadastro', 'primeiro_aluguel'
    valor decimal(10,2) not null,
    status varchar(50) default 'pendente',
    asaas_payment_id varchar(255),
    boleto_url text,
    vencimento date,
    data_pagamento timestamp,
    created_at timestamp default current_timestamp,
   
    foreign key (candidato_uuid) references candidatos(uuid)
);

-- tabela de contratos
create table contratos (
    id serial primary key,
    candidato_uuid varchar(36) not null,
    arquivo_path text,
    clicksign_document_key varchar(255),
    status varchar(50) default 'pendente',  -- 'pendente', 'enviado', 'assinado'
    data_envio timestamp,
    data_assinatura timestamp,
    created_at timestamp default current_timestamp,
   
    foreign key (candidato_uuid) references candidatos(uuid)
);

-- índices
create index idx_candidatos_cpf on candidatos(cpf);
create index idx_candidatos_status on candidatos(status);
create index idx_contratos_dados_status on contratos_dados(status);
create index idx_pagamentos_status on pagamentos(status);


execute:

bash


psql -u fiador_user -d fiador_db -f backend/database/schema.sql





⚙️ PASSO 4: Configurar Variáveis de Ambiente

Edite o arquivo backend/.env com todas as configurações:

Bash


# Ambiente
environment=development  # ou 'production'
debug=true

# banco de dados
database_url=postgresql://fiador_user:senha_segura@localhost:5432/fiador_db

# google sheets
google_credentials_file=config/google_credentials.json
GOOGLE_SHEET_ID=1abc123def456ghi789jkl
GOOGLE_SHEET_NAME=Cadastros

# Serasa Experian
SERASA_API_KEY=sua_chave_aqui
SERASA_API_SECRET=seu_secret_aqui
SERASA_BASE_URL=https://api.serasaexperian.com.br
SERASA_MOCK_MODE=True  # True para desenvolvimento

# Asaas (Boletos)
ASAAS_API_KEY=sua_api_key_aqui
ASAAS_BASE_URL=https://api.asaas.com/v3
ASAAS_ENVIRONMENT=sandbox

# ClickSign (Assinatura Digital)
CLICKSIGN_ACCESS_TOKEN=seu_token_aqui
CLICKSIGN_BASE_URL=https://api.clicksign.com/v1

# Dados da Imobiliária
Imobiliaria_nome="silva medeiros imóveis ltda - me"
imobiliaria_cnpj="02.689.804/0001-75"
IMOBILIARIA_ENDERECO="Avenida V - 08 Qd. 26 Lt. 05, Papillon Park, Aparecida de Goiânia - GO"
IMOBILIARIA_CEP="74950-190"
IMOBILIARIA_TELEFONE="(62) 3085-6242"
IMOBILIARIA_EMAIL="caixavivaimoveis@gmail.com"

# Regras de Decisão
SCORE_MINIMO_APROVACAO=700
SCORE_MINIMO_ANALISE_MANUAL=600
RENDA_MINIMA_MULTIPLICADOR=3  # Renda deve ser 3x o aluguel

# Segurança
SECRET_KEY=gere_uma_chave_secreta_aleatoria_aqui
CORS_ORIGINS=http://localhost:5173,http://localhost:3000

# Logs
LOG_LEVEL=INFO
LOG_FILE=logs/app.log





🚀 PASSO 5: Executar o Sistema

5.1 Iniciar Backend

Bash


cd backend
source venv/bin/activate

# Executar em modo desenvolvimento
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000

# Ou em produção
uvicorn app.main:app --host 0.0.0.0 --port 8000 --workers 4


Acesse a documentação automática:


Swagger UI: http://localhost:8000/docs


ReDoc: http://localhost:8000/redoc

5.2 Iniciar Frontend

Bash


cd frontend

# Modo desenvolvimento
npm run dev
# Acesse: http://localhost:5173

# Build para produção
npm run build
npm run preview





🧪 PASSO 6: Testar o Sistema

6.1 Testar Backend (API)

Bash


# Verificar saúde da API
curl http://localhost:8000/health

# Listar contratos pendentes
curl http://localhost:8000/api/v1/contratos/pendentes

# Processar novos cadastros
curl -X POST http://localhost:8000/api/v1/candidatos/processar


6.2 Testar Frontend

1.
Abra http://localhost:5173

2.
Verifique o dashboard

3.
Clique em "Processar Novos Cadastros"

4.
Verifique se aparecem contratos pendentes

5.
Clique em "Preencher Dados"

6.
Preencha o formulário

7.
Salve e verifique se o contrato é gerado

6.3 Testar Fluxo Completo

Cenário de Teste:

1.
Adicionar candidato no Google Sheets


Nome: João da Silva


CPF: 123.456.789-00


Email: joao@example.com


Renda: R$ 8.000,00



2.
Processar cadastro


Clique em "Processar Novos Cadastros"


Sistema consulta Serasa (mock)


Decisão automática: Aprovado



3.
Preencher dados do contrato


Candidato aparece em "Aguardando Dados"


Clique em "Preencher Dados"


Preencha todas as abas


Salve



4.
Verificar geração


Contrato PDF gerado em backend/contratos/


Enviado para ClickSign (se configurado)


Boleto gerado no Asaas (se configurado)






🔄 PASSO 7: Fluxo de Trabalho Detalhado

7.1 Fluxo do Candidato

Plain Text


1. Candidato preenche formulário Google Forms
  ↓
2. Dados salvos no Google Sheets
  ↓
3. Sistema detecta novo registro (polling ou webhook)
  ↓
4. Consulta Serasa Experian
  ↓
5. Motor de Decisão avalia:
  - Score ≥ 700 → APROVADO
  - Score 600-699 → análise manual
  - score < 600 → reprovado
  ↓
6. Se APROVADO:
  ↓
7. Candidato vai para "Aguardando Dados do Contrato"
  ↓
8. Corretor preenche dados personalizáveis
  ↓
9. Sistema gera contrato PDF
  ↓
10. Envia para ClickSign
    ↓
11. Gera boleto do primeiro aluguel
    ↓
12. Envia emails de notificação
    ↓
13. Aguarda assinatura
    ↓
14. Processo concluído ✅


7.2 Endpoints da API

Candidatos

Plain Text


post  /api/v1/candidatos/processar
get    /api/v1/candidatos
get    /api/v1/candidatos/{uuid}
put    /api/v1/candidatos/{uuid}/status
post  /api/v1/candidatos/{uuid}/aprovar-manual
post  /api/v1/candidatos/{uuid}/reprovar-manual


contratos (nova funcionalidade)

plain text


get    /api/v1/contratos/pendentes
get    /api/v1/contratos/{candidato_uuid}/dados
post  /api/v1/contratos/{candidato_uuid}/preencher
post  /api/v1/contratos/{candidato_uuid}/validar


webhooks

plain text


post  /api/v1/webhooks/asaas
post  /api/v1/webhooks/clicksign


admin

plain text


get    /api/v1/admin/estatisticas
get    /api/v1/admin/logs
post  /api/v1/admin/reprocessar/{uuid}





📊 passo 8: monitoramento e logs

8.1 Logs da Aplicação

Logs são salvos em backend/logs/app.log:

Bash


# Visualizar logs em tempo real
tail -f backend/logs/app.log

# Buscar erros
grep ERROR backend/logs/app.log

# Buscar por candidato específico
grep "123.456.789-00" backend/logs/app.log


8.2 Métricas Importantes

Monitore:


Taxa de aprovação automática


Tempo médio de processamento


Erros de integração com APIs


Contratos pendentes de preenchimento


Taxa de conversão (assinatura)




🔒 PASSO 9: Segurança

9.1 Checklist de Segurança




Alterar SECRET_KEY no .env




Usar HTTPS em produção




Configurar CORS corretamente




Validar todos os inputs




Não expor credenciais no código




Usar variáveis de ambiente




Implementar rate limiting




Logs de auditoria ativos




Backup automático do banco

9.2 LGPD - Proteção de Dados


Dados pessoais criptografados


Consentimento registrado


Logs de acesso


Direito ao esquecimento implementado


Política de privacidade clara




🚢 PASSO 10: Deploy em Produção

10.1 Opção A: VPS (DigitalOcean, AWS, etc.)

Bash


# 1. Configurar servidor
sudo apt update
sudo apt install python3-pip postgresql nginx

# 2. Clonar projeto
git clone <repo>
cd sistema-fiador

# 3. Configurar backend
cd backend
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt

# 4. Configurar Nginx
sudo nano /etc/nginx/sites-available/fiador

# Conteúdo:
server {
    listen 80;
    server_name seu-dominio.com;

    location /api {
        proxy_pass http://localhost:8000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }

    location / {
        root /var/www/fiador/frontend/dist;
        try_files $uri /index.html;
    }
}

# 5. Ativar site
sudo ln -s /etc/nginx/sites-available/fiador /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx

# 6. Configurar SSL (Let's Encrypt)
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d seu-dominio.com

# 7. Criar serviço systemd
sudo nano /etc/systemd/system/fiador-api.service

# Conteúdo:
[Unit]
Description=Fiador API
After=network.target

[Service]
User=ubuntu
WorkingDirectory=/home/ubuntu/sistema-fiador/backend
Environment="PATH=/home/ubuntu/sistema-fiador/backend/venv/bin"
ExecStart=/home/ubuntu/sistema-fiador/backend/venv/bin/uvicorn app.main:app --host 0.0.0.0 --port 8000

[Install]
WantedBy=multi-user.target

# 8. Iniciar serviço
sudo systemctl enable fiador-api
sudo systemctl start fiador-api
sudo systemctl status fiador-api


10.2 Opção B: Docker

Plain Text


# backend/Dockerfile
From python:3.11-slim

workdir /app

copy requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

COPY . .

CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000"]


Plain Text


# frontend/Dockerfile
from node:18-alpine

workdir /app

copy package*.Json ./
run npm install

copy . .
run npm run build

from nginx:alpine
copy --from=0 /app/dist /usr/share/nginx/html


yaml


# docker-compose.yml
version: '3.8'

services:
  db:
    image: postgres:14
    environment:
      POSTGRES_DB: fiador_db
      POSTGRES_USER: fiador_user
      POSTGRES_PASSWORD: senha_segura
    volumes:
      - postgres_data:/var/lib/postgresql/data

  backend:
    build: ./Backend
    ports:
      - "8000:8000"
    environment:
      DATABASE_URL: postgresql://fiador_user:senha_segura@db:5432/fiador_db
    depends_on:
      - db

  frontend:
    build: ./Frontend
    ports:
      - "80:80"
    depends_on:
      - backend

volumes:
  postgres_data:





🐛 PASSO 11: Troubleshooting

Problemas Comuns

1. Erro ao conectar com Google Sheets

Plain Text


Solução:
- Verificar se o arquivo de credenciais existe
- Verificar se a planilha foi compartilhada com o Service Account
- Verificar se a API está ativada no Google Cloud


2. Erro ao gerar PDF

Plain Text


Solução:
- Instalar dependências do WeasyPrint:
  sudo apt install libpango-1.0-0 libpangoft2-1.0-0


3. CORS Error no Frontend

Plain Text


Solução:
- Adicionar origem do frontend em CORS_ORIGINS no .env
- Verificar se backend está rodando


4. Banco de dados não conecta

Plain Text


Solução:
- Verificar se PostgreSQL está rodando: sudo systemctl status postgresql
- Verificar credenciais no DATABASE_URL
- Verificar se o banco foi criado





📚 PASSO 12: Documentação Adicional

Arquivos de Referência

1.
README.md - Visão geral do projeto

2.
guia-instalacao.md - Instalação básica

3.
nova-funcionalidade-contratos.md - Documentação técnica da nova funcionalidade

4.
resumo-visual-nova-funcionalidade.md - Guia visual com diagramas

5.
resumo-executivo.md - Análise de ROI e benefícios

APIs Externas - Documentação


Google Sheets API: https://developers.google.com/sheets/api


Serasa Experian: https://www.serasaexperian.com.br/portal-integracao/


Asaas: https://docs.asaas.com/


ClickSign: https://developers.clicksign.com/




✅ Checklist Final de Implementação

Desenvolvimento




Ambiente Python configurado




Ambiente Node.js configurado




Banco de dados criado




Variáveis de ambiente configuradas




Backend rodando localmente




Frontend rodando localmente




Testes básicos passando

Integrações




Google Sheets API configurada




Serasa API configurada (ou mock ativo)




Asaas API configurada




ClickSign API configurada




Webhooks testados

Produção




Servidor configurado




Domínio apontando




ssl/https ativo




banco de dados em produção




backup automático configurado




monitoramento ativo




logs funcionando

segurança




credenciais seguras




cors configurado




rate limiting ativo




lgpd em conformidade




📞 suporte e contato

para dúvidas técnicas durante a implementação:

1.
Consulte a documentação nos arquivos .md

2.
Verifique os logs em backend/logs/

3.
Teste os endpoints via Swagger UI

4.
Entre em contato com o solicitante do projeto




🎯 Resultado Esperado

Após seguir todos os passos, você terá:

✅ Sistema completamente funcional
✅ Dashboard administrativo operacional
✅ Processamento automático de candidatos
✅ Formulário de preenchimento de contratos
✅ Geração automática de PDFs
✅ Integração com assinatura digital
✅ Geração de boletos
✅ Monitoramento e logs

Contexto general del proyecto

Preciso de fazer um sistema de aprovação de cadastro utilizando tecnologia de programação no cód Um pouco sobre minha demanda : tenho uma empresa que oferece o serviço de fiador profissional para aluguel. 1. Os candidatos ao aluguel enviam seus dado como nome, cpf, e demais informações para cadastro e aprovação por meio de um fórmulario planilha Google. 2. De posse desses dados consulto manualmente os dados cadastrais e possíveis pendências financeiras e renda provável além de antecedentes criminais e jurídicos //// quando o cliente for aprovado abrir uma etapa (tela) em que o corretor coloca manualmente os dados personalizaveis do contrato: proprietário, imóvel, valor do aluguel e acessórios, numero de contas de agua, luz e iptu (anexo te mandei os modelo de contrato que precisam ser gerados em cada aprovação para ver os personalizaveis) e só apos o corretor preencher essa fase o fluxo segue normal 3. Se as informações acima (forem favoráveis score, renda provável e situação jurídica) aprovamos o cliente e enviamos o boleiro pra paga-me o da taxa de cadastro 4. Após a confirmação geramos um contrato com base em uma minta e enviamos para assinatura digital por plataformas como clicksign junto com o boleto do primeiro aluguel

Categoría Programación y Tecnología
Subcategoría Tiendas Online (e-commerce)
¿Cuál es el alcance del proyecto? Bug o cambio pequeño
¿Es un proyecto o una posición? Un proyecto
Actualmente tengo Tengo una idea
Disponibilidad requerida Según se necesite
Integraciones de API Otros (Otras APIs)
Roles necesarios Diseñar una landing page, Programador

Plazo de Entrega: No definido

Habilidades necesarias

Otros proyectos publicados por S. T. D. L.