Skip to content

alanncz/python-user-api-base

Repository files navigation

Sistema Multi-Agentes (SMA) com FastAPI e LangChain

📖 Descrição

Este projeto é uma aplicação web completa que serve como base para um Sistema Multi-Agentes (SMA). Ele inclui uma API RESTful robusta construída com FastAPI e uma interface web de administração para gerenciamento de usuários. O sistema possui um módulo de autenticação seguro com JWT e cookies, papéis de usuário (admin/comum) e uma fundação pronta para a integração de agentes de IA com LangChain.


✨ Funcionalidades

  • API RESTful: Construída com FastAPI e Pydantic para alta performance e validação de dados.
  • Autenticação Híbrida:
    • Login via API com Tokens JWT (Bearer Token).
    • Login via Interface Web com Cookies seguros (HttpOnly).
  • Sistema de Papéis: Diferenciação entre usuários admin e comum para controle de acesso.
  • Painel de Administração: Uma interface web (servida pelo FastAPI) onde administradores podem:
    • Listar todos os usuários.
    • Criar novos usuários (comuns ou administradores).
    • Atualizar informações de usuários.
    • Deletar usuários.
  • Segurança:
    • Hashing de senhas
    • Criação automática de um usuário administrador na inicialização a partir de variáveis de ambiente seguras.
  • Containerização: Aplicação 100% containerizada com Docker e Docker Compose para fácil configuração e implantação.

🛠️ Tecnologias Utilizadas

  • Backend: Python 3.13, FastAPI
  • Banco de Dados: MySQL 8.0
  • ORM: SQLAlchemy
  • Autenticação: Passlib, Python-JOSE
  • Validação de Dados: Pydantic
  • Interface Web: Jinja2, Bootstrap 5 (via CDN)
  • Containerização: Docker, Docker Compose

🚀 Como Iniciar a Aplicação

Siga os passos abaixo para configurar e executar o projeto localmente.

Pré-requisitos

  • Docker
  • Docker Compose (geralmente incluído no Docker Desktop)

Instalação

  1. Clone o repositório para a sua máquina local.

  2. Crie o arquivo de configuração de ambiente. Na raiz do projeto, crie uma cópia do arquivo .env.exemplo e renomeie-a para .env.

    cp .env.exemplo .env
  3. Preencha as variáveis no arquivo .env. Abra o arquivo .env e substitua os valores de exemplo pelas suas senhas e configurações.

    # Configurações do Banco de Dados
    MYSQL_ROOT_PASSWORD=sua_senha_root_super_secreta
    MYSQL_DATABASE=sma_db
    MYSQL_USER=sma_user
    MYSQL_PASSWORD=sua_senha_de_usuario
    
    # Credenciais do Usuário Administrador Padrão
    ADMIN_NOME=Administrador
    ADMIN_USUARIO=admin
    ADMIN_SENHA=admin_super_seguro
  4. Construa e inicie os contêineres. No terminal, na raiz do projeto, execute o seguinte comando:

    docker-compose up --build

    A aplicação estará disponível em http://localhost:8000 após a inicialização.


💻 Como Usar a Aplicação

Usuário Administrador

Na primeira vez que a aplicação é iniciada, um usuário administrador é criado automaticamente com as credenciais que você definiu em ADMIN_USUARIO e ADMIN_SENHA no arquivo .env.

Acessando o Painel de Administração

  1. Abra seu navegador e acesse http://localhost:8000.
  2. Você verá a página de login. Use as credenciais do administrador para entrar.
  3. Após o login, você será redirecionado para o painel em http://localhost:8000/dashboard.
  4. No painel, você pode gerenciar todos os usuários do sistema. O botão "Sair" no canto superior direito encerra sua sessão.

Acessando a API

A documentação interativa da API (Swagger UI) está disponível em:

  • http://localhost:8000/docs

Você pode usar essa interface para testar todos os endpoints da API. Para os endpoints protegidos, siga os seguintes passos:

  1. Use o endpoint POST /autenticacao/login para obter um token de acesso.
  2. Clique no botão "Authorize" no canto superior direito da página.
  3. Na janela que abrir, cole o seu token no campo de valor no formato Bearer <seu_token>.
  4. Agora você pode executar os endpoints protegidos.

About

Este projeto serve como uma base sólida para iniciar o desenvolvimento de APIs em Python, oferecendo uma estrutura limpa, modular e fácil de expandir. Ideal para quem deseja criar rapidamente serviços web com endpoints RESTful e boas práticas de organização de código.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors