======================================================================== SISTEMA DE NOMEACOES - DRH/PMRR Manual de implantacao (para a DTI) Origem: GAPE/DRH-PMRR ======================================================================== 1) O QUE E Aplicacao web local. Um servidor HTTP em Python (biblioteca PADRAO) serve duas telas: - DESKTOP (equipe DRH): "Sistema de Nomeacoes - DRH.html" edicao completa - pede LOGIN. - APP CELULAR (PWA): "app-celular.html" consulta livre; edicao com PIN. Toda a base de dados e um arquivo JSON local (base-nomeacoes-drh.json). Nada depende de nuvem de terceiros. 2) REQUISITOS - Python 3.8+ (testado no 3.12). - So usa a biblioteca PADRAO para RODAR (nao precisa "pip install"). - Porta TCP 8000 (ajustavel em servidor.py, variavel PORTA). 3) COMO RODAR (teste rapido) No diretorio do projeto: python servidor.py Acessar: http://localhost:8000 (Desktop pede senha; o app do celular abre direto.) 4) AUTENTICACAO --> TROCAR ANTES DE PUBLICAR No topo de servidor.py: USUARIO / SENHA = login do DESKTOP (atual: drh / pmrr@gape) PIN_APP = PIN de edicao no APP (atual: pmrr@gape) >>> Trocar por senha forte antes de expor no dominio. A tela de login e servida pelo proprio servidor (cookie de sessao, SameSite=Lax). O app usa cabecalho Basic (app:PIN) so para EDITAR; a CONSULTA e publica (sem senha), por decisao da DRH. 5) PUBLICAR NO DOMINIO DA PMRR (producao) O servidor escuta em 0.0.0.0:8000 em HTTP. Recomenda-se coloca-lo ATRAS de um proxy reverso com HTTPS (nginx / Apache / IIS-ARR), apontando https://nomeacoes.SEU-DOMINIO -> http://127.0.0.1:8000 Exemplo nginx: server { server_name nomeacoes.SEU-DOMINIO; location / { proxy_pass http://127.0.0.1:8000; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $remote_addr; } # + certificado TLS (Let's Encrypt ou cert da PMRR) } Observacao: o servidor ja manda "Cache-Control: no-store" e cookies SameSite=Lax; funciona bem atras de proxy HTTPS. 6) RODAR COMO SERVICO (ficar sempre no ar) LINUX (systemd) -> /etc/systemd/system/nomeacoes.service: [Unit] Description=Sistema de Nomeacoes DRH After=network.target [Service] WorkingDirectory=/caminho/do/projeto ExecStart=/usr/bin/python3 servidor.py Restart=always [Install] WantedBy=multi-user.target Depois: systemctl enable --now nomeacoes WINDOWS SERVER -> usar NSSM: nssm install Nomeacoes "C:\Python\python.exe" servidor.py (definir o diretorio de trabalho = pasta do projeto; Restart=always) 7) DADOS E BACKUP (IMPORTANTE) - Todo o estado fica em base-nomeacoes-drh.json (gravacao atomica a cada alteracao). E a UNICA fonte de verdade dos lancamentos. - Fazer BACKUP DIARIO desse arquivo (copia versionada). - Nao expor esse arquivo publicamente (o servidor NAO o serve; manter permissoes do SO). 8) ESTRUTURA DO PACOTE servidor.py ................... o servidor Sistema de Nomeacoes - DRH.html tela DESKTOP (equipe) app-celular.html ............. APP do celular (PWA) dados.json ................... efetivo + funcoes (gerado) base-nomeacoes-drh.json ...... LANCAMENTOS (dado vivo; backup!) manifest*.json, sw.js, icone-*.png ... PWA / icones Acervo/Fotos/ ................ fotos do efetivo (servidas em /Acervo/Fotos/) Acervo/Modelos/ .............. brasoes usados na tela de login exonerados.json .............. Portarias 1746/1744 (so p/ rebuild) 9) SEGURANCA / PRIVACIDADE - Base e fotos ficam SO no servidor da PMRR. Sem nuvem externa. - As telas mostram apenas foto + nome de guerra + dados funcionais (posto, quadro, funcao). Dados sensiveis (CPF, filiacao) NAO estao nesta base e NAO circulam. - Recomendado: acesso pela rede da PMRR / VPN, HTTPS obrigatorio, senha forte, backup do JSON. 10) RECONSTRUIR O HTML (opcional) A ferramenta de build (montar_sistema.py) NAO vai neste pacote (usa planilhas com dados sensiveis). Se precisarem regenerar o HTML apos mudanca no QDE/almanaque, solicitar a DRH/GAPE. ------------------------------------------------------------------------ Duvidas tecnicas: GAPE/DRH - PMRR ========================================================================