This website requires JavaScript.
e21b1646a7
feat: redesign da tela de login com identidade GTI
Gustavo and Claude Sonnet 5
2026-08-13 21:57:37 -03:00
310f5e1f71
feat: sistema de design (tokens claro/escuro) + sidebar responsiva em base.html
Gustavo and Claude Sonnet 5
2026-08-13 21:53:30 -03:00
7656f2261e
docs: corrige README contraditorio sobre HTTP Basic e SESSION_SECRET
Gustavo and Claude Sonnet 5
2026-08-13 21:19:09 -03:00
e5f5d4211c
fix: desativar/rebaixar funcionario nao revogava sessao ativa (ate 12h)
Gustavo and Claude Sonnet 5
2026-08-13 21:18:58 -03:00
ba8ffaede7
fix: bloqueia open-redirect via next=/\evil.com no login
Gustavo and Claude Sonnet 5
2026-08-13 21:18:46 -03:00
aa1c528197
fix: botao Sair quebrado em /clientes, /log e /gerador-chave (csrf_token vazio)
Gustavo and Claude Sonnet 5
2026-08-13 21:18:39 -03:00
a71b990a3c
docs: documenta login por sessao e perfis admin/padrao no README
Gustavo and Claude Sonnet 5
2026-08-13 21:04:37 -03:00
64990b6db2
fix: atualiza tests/test_main.py para login por sessao
Gustavo and Claude Sonnet 5
2026-08-13 21:01:36 -03:00
81f730df9e
feat: perfil admin/padrao em funcionarios, protege ultimo admin
Gustavo and Claude Sonnet 5
2026-08-13 20:56:52 -03:00
a2a5fc7905
feat: nav com botao Sair, Minha conta e Funcionarios so para admin
Gustavo and Claude Sonnet 5
2026-08-13 20:51:52 -03:00
09424e8afb
feat: liga login por sessao, middleware de usuario e handler de NaoAutenticado
Gustavo and Claude Sonnet 5
2026-08-13 20:49:05 -03:00
4a5c70861d
feat: tela Minha conta para trocar a propria senha
Gustavo and Claude Sonnet 5
2026-08-13 20:44:15 -03:00
c4079b3e47
feat: rotas de login/logoff (app/routers/auth.py)
Gustavo and Claude Sonnet 5
2026-08-13 20:38:43 -03:00
1b80290f6f
feat: login por sessao (troca HTTP Basic), UsuarioLogado, exigir_admin
Gustavo and Claude Sonnet 5
2026-08-13 20:33:30 -03:00
718e845651
feat: coluna PERFIL em FUNCIONARIO_PAINEL + contar_admins_ativos
Gustavo and Claude Sonnet 5
2026-08-13 20:29:45 -03:00
95b1da7c10
feat: token de sessao assinado (app/session.py)
Gustavo and Claude Sonnet 5
2026-08-13 20:25:18 -03:00
361c2ca770
feat: gerador de chave de instalacao (aluguel/compra) na tela /gerador-chave
Gustavo
2026-08-13 16:08:48 -03:00
3158a416a9
feat: preenchimento automatico de dados do cliente a partir do CNPJ
Gustavo
2026-08-13 15:05:26 -03:00
d18a5e6e29
feat: cabecalhos clicaveis para ordenar (crescente/decrescente) a lista de clientes
Gustavo
2026-08-13 14:37:25 -03:00
2f1d008404
fix: busca de clientes restrita ao campo escolhido em ordenar_por
Gustavo
2026-08-13 14:24:09 -03:00
8d83122e98
feat: login individual por funcionario (cadastro, senha com hash, ativar/desativar)
Gustavo
2026-08-13 14:19:58 -03:00
dad1abf30b
fix: parametro correto da API de rows do n8n (limit, nao take)
Gustavo
2026-08-13 14:14:40 -03:00
9ed0bf57c2
feat: log de acoes/envios, ordenacao/filtro, codigo sequencial, campos opcionais
Gustavo
2026-08-13 14:04:24 -03:00
bb8fd596b1
feat: protecao CSRF (double-submit cookie) e paginacao da lista de clientes
Gustavo
2026-08-13 11:02:17 -03:00
96cbd8a294
fix: normalizar CNPJ/telefone de CLIENTE antes de gravar (sem mascara)
Gustavo
2026-08-13 10:54:37 -03:00
9b04877d59
feat: formulario de edicao de contato na tela de detalhe do cliente
Gustavo
2026-08-13 10:52:50 -03:00
0d839949fe
fix: validacao de formulario, auth fail-closed, loop de confirmacao, hardening e docs (achados da revisao final)
Gustavo and Claude Sonnet 5
2026-08-13 10:46:23 -03:00
145f784577
feat: monta app final (main.py) e Docker end-to-end
Gustavo
2026-08-13 10:33:29 -03:00
9ebe6b1c68
feat: pagina do gerador de chave manual (client-side, sem gravar no banco)
Gustavo
2026-08-13 10:28:52 -03:00
f1139e8b3a
feat: rotas de CLIENTE_CONTATO na tela de detalhe do cliente
Gustavo
2026-08-13 10:25:20 -03:00
2c7bf429fc
fix: DV usa valor normalizado, botao de confirmar DV invalido, TemplateResponse sem warning
Gustavo
2026-08-13 10:12:26 -03:00
c7f2c5f92b
feat: rotas e telas de CLIENTE (listar, criar, editar, detalhe, excluir)
Gustavo
2026-08-13 10:07:15 -03:00
e93a0f3d1d
feat: login HTTP Basic
Gustavo
2026-08-13 10:00:52 -03:00
f510a1e17e
feat: leitura somente-leitura de status em Clientes_Chaves
Gustavo
2026-08-13 09:58:21 -03:00
fd4b749c87
feat: CRUD de CLIENTE_CONTATO
Gustavo
2026-08-13 09:54:26 -03:00
680b7433a4
fix: garantir limpeza de CLIENTE_CONTATO mesmo se assert falhar (test_excluir_cliente_com_contato_bloqueia)
Gustavo
2026-08-13 09:51:13 -03:00
2ecf866678
feat: CRUD de CLIENTE
Gustavo
2026-08-13 09:47:52 -03:00
880329bb8e
feat: factory de conexao MySQL
Gustavo
2026-08-13 09:45:26 -03:00
669e864141
feat: normalizacao de documento + validacao de DV (CPF/CNPJ alfanumerico)
Gustavo
2026-08-13 09:42:10 -03:00
143ad71822
chore: scaffold painel-clientes-web
Gustavo
2026-08-13 09:39:28 -03:00