Repository navigation
Movendo da Interface CLI para Interface Web Completa e Roteamento FastAPI - #76
Merged
Merged
Conversation
Ainda preciso implementar o drag and drop futuramente
… utilitário só em vez de repetir em cada arquivo
Tem que fazer para os outros admins ainda, como storyteller de botc e talvez criar uma classe para admin de votação da australia
…de admin no router de autenticação
…vez do que se encontra ao rodar
…ndo feitos de maneiras que nunca dava para alcançar
…argumentos das funções dos routers
…as nos tratamentos
…a passar no linter
caio-unicamp
requested review from
GiizAzul,
LeonerdCdL,
Okynaua and
jsnardo281272
October 8, 2026 23:00
jsnardo281272
approved these changes
Oct 9, 2026
jsnardo281272
left a comment
Collaborator
There was a problem hiding this comment.
Boa base pra interface, tá aprovado :)
This was
linked to
issues
Oct 9, 2026
Closed
Closed
6 tasks done
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Resumo
Este Pull Request introduz a refatoração completa da aplicação de um modelo baseado em CLI (Command Line Interface) para uma Interface Web completa e responsiva, utilizando FastAPI e Jinja2. O foco principal desta entrega é garantir acessibilidade para usuários não técnicos, centralizar a navegação em um Dashboard e desacoplar a lógica de negócio de entradas de terminal (input/print).
Issues Vinculadas
Resolves #35 (Interface visual intuitiva para não técnicos)
Resolves #45 (Retorno ao menu principal mantendo a sessão)
Resolves #38 (Configuração do Frontend base e rotas)
Resolves #39 (Refatoração da camada de serviço desacoplando CLI)
Resolves #46 (Dashboard central e preservação do estado de autenticação)
O que foi implementado
1. Refatoração Backend e API (Desacoplamento)
Remoção de CLI acoplado: A lógica core dos domínios (CACo, Austrália, BoTC) foi totalmente desacoplada de print() e input().
Roteadores FastAPI: Implementação da arquitetura baseada em rotas com arquivos separados (auth_router.py, australia_router.py, caco_router.py, botc_router.py) expondo a lógica via HTTP.
Injeção de Dependência: Uso do Annotated[Usuario, Depends(obter_usuario_logado)] para validar requisições e carregar o escopo do usuário em tempo real.
2. Interface de Usuário e Frontend (Jinja2 + CSS)
Layout Base: Criação do base.html com cabeçalho de contexto e controle universal de Logout.
Autenticação: Telas de Login e Cadastro, com feedback visual (Alerts) para senhas erradas ou tipos de conta inválidos.
Telas de Votação (3 Domínios):
Austrália: Cédula renderizada dinamicamente. Validações matemáticas estritas no backend (rejeição de posições repetidas, saltadas ou falta de candidatos).
CACo (Assembleia): Tela com controles de Gestão (Iniciar/Encerrar Votação) e botões de voto para os estudantes. Inclusão de tela com barra de progresso visual simulando resultados reais.
Blood on the Clocktower: Interface da cidade permitindo que o Storyteller realize apurações e levante votos com as restrições corretas de escopo.
3. Dashboard Central e Fluxo Contínuo
Gestão de Sessão: Implementação de Cookies HTTPOnly para gerenciar as sessões, garantindo que a transição entre telas ocorra sem perda de autenticação.
Hub Direcional: Dashboard exibe apenas os painéis permitidos pelo escopo da conta (Roteamento Polimórfico).
Bloqueio de Voto Duplo: Controle defensivo em memória (app.state) que intercepta usuários que já votaram, impedindo que a cédula seja contabilizada duas vezes e exibindo erro claro na interface.
Qualidade e Segurança
Critérios de Aceitação
Descrição Técnica
Configurar a base do projeto frontend e o sistema de roteamento (rotas da aplicação), criando o esqueleto onde as telas serão construídas.
Checklist de Implementação
input()de dentro das classes de serviço removidas.ServicoAutenticacaopara a Web.Dashboard.htmlque busca e lista as pautas ativas no backend.