Pular para o texto
lets-work Docs

Entrar

Operação

No servidor

Esta página explica como o lets-work roda por dentro: o container, as rotinas diárias, as cópias de segurança e a atualização.

Visão geral

O lets-work roda num servidor próprio da byescaleira, num container Docker. Um proxy na frente dele, o Caddy, recebe o tráfego de letswork.byescaleira.com com HTTPS e repassa para o container. O container só aceita conexões do próprio servidor.

O login é feito pelo byescaleira-auth. No servidor não roda nenhum Claude: a triagem e a análise vêm do Claude de cada pessoa, pelo MCP.

O container

A imagem tem dois estágios: um compila o site com Node 22 e Next.js, e o outro leva só o resultado e as ferramentas que leem os editais:

  • bsdtar, para abrir ZIP, RAR, 7z e TAR;
  • pdftotext e pdftoppm, para ler PDF e transformar páginas escaneadas em imagem;
  • catdoc e unrtf, para DOC e RTF.

O container roda endurecido:

ProteçãoO que faz
Usuário sem privilégioO processo não roda como administrador
Raiz só de leituraO código não pode ser alterado por dentro; só a pasta de dados aceita escrita
Sem capacidades extrasO processo não ganha nenhum poder especial do sistema
Sem novos privilégiosNenhum programa dentro do container sobe de nível
Limites1 GB de memória e um teto de processos
Pasta temporária sem execuçãoOs arquivos baixados não podem rodar como programa
Verificação de saúdeA cada 30 segundos, o container confere se o banco abre, pelo endereço /api/health
Reinício automáticoSe o processo cair, o Docker sobe de novo

Os conversores dos editais recebem só o mínimo do ambiente, nunca as configurações secretas do servidor.

Os dados

Uma pasta de dados fica fora do container e guarda:

  • o banco, um arquivo SQLite;
  • os editais preparados, um diretório por contratação;
  • as cópias de segurança.

A imagem nunca leva dados, segredos nem documentos da empresa.

Rotinas diárias

As rotinas rodam pelo agendador do servidor. Os horários abaixo são de Campo Grande (UTC-4).

RotinaQuandoO que faz
Cópia de segurançaTodo dia, 03:30Copia o banco, confere e guarda as 14 mais recentes
Coleta do PNCPTodo dia, 04:00Busca as contratações abertas. Veja Coleta do PNCP
Limpeza dos editaisDomingo, 05:30Apaga os editais preparados há mais de 30 dias

Cada rotina escreve num log próprio. Os logs giram toda semana e guardam 8 semanas.

Cópia de segurança conferida

Todo dia, o lets-work faz uma cópia completa do banco e confere antes de aceitar:

  1. Copia o banco para um arquivo temporário.
  2. Roda a verificação de integridade do SQLite na cópia.
  3. Confere que a cópia tem oportunidades e não tem menos que o banco tinha na hora da cópia.
  4. Só então dá o nome final à cópia e apaga as mais antigas, deixando 14.

Se qualquer conferência falhar, a cópia temporária é apagada e as anteriores ficam intactas. As cópias só podem ser lidas pelo dono da pasta. Hoje elas ficam no próprio servidor.

Limpeza semanal

Os editais baixados ocupam espaço. Aos domingos, a limpeza apaga as pastas de editais preparados há mais de 30 dias, pela data do preparo. Ela só mexe em pastas com o nome de um edital. As análises gravadas no banco continuam.

Atualização

O código chega ao servidor por uma lista de arquivos permitidos: os arquivos de configuração do build, o código, os arquivos públicos, os scripts e as rotinas. Nada fora da lista vai, e a raiz do projeto nunca é enviada inteira, porque a pasta local tem documentos da empresa.

  1. Simular o envio pela lista e conferir o que mudaria.
  2. Enviar de verdade, pela mesma lista.
  3. Reconstruir e subir o container.
  4. Conferir que /api/health responde.

O que esperar

  • O lets-work fica no ar sozinho: coleta, cópia e limpeza não precisam de ninguém.
  • Uma coleta agendada não roda se já houver uma em andamento.
  • Durante uma atualização, o site pode ficar fora por alguns segundos enquanto o container sobe de novo.