Files
dtf-system/TAREFAS.md
Cauê Faleiros 98c951d374
Some checks failed
Validate, publish and deploy / validate (push) Successful in 2m2s
Validate, publish and deploy / publish-and-deploy (push) Failing after 8s
first commit
2026-09-15 16:42:34 -03:00

213 lines
6.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Tarefas — em ordem de execução
> Cada tarefa tem **critério de aceite**: o que precisa acontecer para ela ser
> considerada pronta. Sem isso, "terminei" vira discussão.
>
> A ordem importa: as três primeiras não dependem de decisão de ninguém.
---
## Bloco A · Pode começar hoje
Nada aqui depende de resposta pendente.
### A1 · Limpar os marcadores do Tiny
**Aceite:** a lista de sugestão de marcadores só mostra os padrões. Os pedidos
antigos mantêm o histórico intacto.
- Criar `DTF-PRODUCAO`, `DTF-PRONTO`, `DTF-PROVA-COR`
- Remover da lista de sugestão: `inicio 14:45`, `inicio13:34`, `1hrs`, `3h`,
`+30min de correcao` e as demais variações digitadas à mão
- **Não apagar do histórico dos pedidos** — só da lista de opções
- **Preservar** `30 min`, `1 hora`, `3 horas`: são estimativa de máquina
### A2 · Contratar a infraestrutura
**Aceite:** `https://arte.dropstaratacado.com.br` responde com certificado
válido, e um arquivo de teste sobe e desce do storage.
- VPS Linux 2 vCPU / 4 GB · Hetzner, Contabo ou Hostinger
- Storage S3 compatível · Cloudflare R2 ou Backblaze B2
- Subdomínio + Let's Encrypt
- Bucket `dtf-artes` com ciclo de vida de 30 dias
- Prefixo `artes-cliente/` com 12 meses
- CORS liberado só para o domínio do portal
### A3 · Criar o banco
**Aceite:** `schema.sql` roda sem erro no Postgres e no SQLite.
- Postgres na nuvem · SQLite na fábrica
- Dump diário do Postgres para o storage
### A4 · Provisionar acessos
**Aceite:** um token do Tiny obtido por código, e um WhatsApp de teste enviado.
- Aplicação na API v3 do Tiny · client id e secret
- **Confirmar na documentação** o endpoint de marcadores e o limite de req/min
- WhatsApp: definir Meta oficial ou provedor
---
## Bloco B · Portal — entrega sozinho
Ao fim deste bloco a Altus **já recebe arte 24 horas**, mesmo sem kanban.
### B1 · Webhook e link
**Aceite:** um pedido criado no Tiny gera link e chega no WhatsApp em menos de
1 minuto.
- `POST /webhook/tiny` → cria pedido, token de 7 dias, dispara WhatsApp
- Idempotente: pedido repetido não duplica
- **Medir a latência VNDA → Tiny** e registrar
### B2 · Página de upload
**Aceite:** um arquivo de 5 GB sobe sem derrubar o VPS.
- URL pré-assinada, upload em partes
- Campo de repetição com prévia da conta
- Gabarito 57 × 97 cm para download
- Rate limit de 20 req/min por token
### B3 · Pré-flight
**Aceite:** dos cinco arquivos que os designers separarem, o robô decide igual
ao que eles decidiriam.
- `preflight.py` está pronto — integrar e testar
- Normalização: vetor → PDF, raster → TIF, CMYK → RGB, **original preservado**
- Repetição, fatiamento em 20 m, carimbo com QR de 20 mm
- CDR entra sem validar, etiqueta "conferir"
- **`carimbar()` precisa de teste visual impresso** antes de valer
### B4 · Mensagens
**Aceite:** as seis mensagens chegam com o texto certo, e a de correção pede
resposta.
- Lembrete de 1 hora sem arte
- Recusa com motivo em português
- Aprovação com **% e DPI**, metragem, tempo e horário previsto
- Em produção, correção, finalizado
### B5 · Antivírus
**Aceite:** um EICAR de teste é barrado e não chega ao agente.
- ClamAV em segundo plano, sem travar a fila
---
## Bloco C · Agente
### C1 · Serviço na fábrica
**Aceite:** derrubar a internet por 10 minutos e religar — o agente baixa o
acumulado sozinho, sem duplicar nada.
- Windows via NSSM ou Linux via systemd
- Webhook + polling de 60 s
- Download em arquivo temporário, renomeia só quando completa
- Verificação de SHA-256
- Idempotente pelo `arte_id`
### C2 · Monitoramento
**Aceite:** matar o processo dispara alerta em até 15 minutos.
- Heartbeat a cada 5 min
- Alerta ao TI se sumir
---
## Bloco D · Kanban como aba do PCP
### D1 · Quadro
**Aceite:** dois operadores clicando `puxar` ao mesmo tempo — só um pega.
- 7 colunas · **sem coluna de aplicação**
- Cronômetro por card, em tempo real
- Front pronto em `kanban/static/kanban.html`
- `?maq=4` abre filtrado na máquina
### D2 · Puxar e devolver
**Aceite:** puxar e não mover em 3 minutos devolve o pedido à fila sozinho.
- Reserva de **3 min** · **um pedido por vez**
- Devolver volta ao **topo**
- Círculo vermelho na máquina ocupada, botão desabilitado
### D3 · Movimento e integração
**Aceite:** desligar o Tiny, mover cards, religar — os marcadores entram sozinhos
e nenhum movimento se perde.
- Gravar o movimento **antes** de qualquer chamada externa
- Fila de jobs com retentativa em 1, 5 e 30 min
- Três marcadores no Tiny, não sete
- Arquivo acompanha o card entre as pastas
### D4 · Estimativa de máquina
**Aceite:** o card sugere os minutos e aceita ajuste manual.
- Campo `minutos_maquina`, sugerido por `metros/20*60`
- Importar os marcadores `30 min`, `1 hora`, `3 horas` dos pedidos existentes
### D5 · Retrabalho
**Aceite:** a causa não pode ser alterada depois de aberta, nem pelo autorizador.
- Abertura com causa obrigatória e evidência
- Alçada automática · reincidência sobe nível
- Contestação registrada sem alterar a causa
- **Meta ainda não definida** — `META_POR_CAUSA` isolado
### D6 · Painel e relatórios
**Aceite:** os quatro relatórios respondem com dados reais depois de uma semana.
- Filtros de período
- `/api/relatorio/etapas`, `/impressao`, `/aproveitamento`, `/retrabalho`
- Aproveitamento lendo as transferências do depósito no Tiny
---
## Bloco E · Só depois de medir
**Duas semanas com o kanban rodando antes de tocar nisto.**
### E1 · Decidir o terceiro turno
Depende de: metros/hora reais, tempo entre etapas, e quanto do tempo do designer
é retrabalho de arquivo ruim.
### E2 · SPOT automático
Depende do teste em `dtf-teste-branco-automatico.pdf`.
### E3 · PC central como servidor de RIP
Depende de: configuração atual, custo da licença (é **por PC**), e memória que o
RIP consome.
---
## Bloqueios · o que trava qual tarefa
| Tarefa | Espera por | De quem |
|---|---|---|
| B3 · pré-flight | os cinco arquivos de exemplo | designers |
| B3 · regras de choke | valor do choke e espessura mínima | designers |
| D5 · meta | meta geral ou por causa? | Marcus |
| E1 · terceiro turno | metros/hora reais | sala |
| E2 · SPOT | resultado do teste | sala |
| E3 · RIP central | config e licença do PC central | Wagner |
**Nada no bloco A, B1, B2, C e D1 a D4 está bloqueado.** Dá para chegar até o
kanban funcionando sem nenhuma dessas respostas.
---
## Ordem sugerida de trabalho
```
semana 1 A1 · A2 · A3 · A4
semana 2 B1 · B2
semana 3 B3 · B4 · B5 ← portal no ar, recebendo 24h
semana 4 C1 · C2 ← arquivo caindo na pasta sozinho
semana 5 D1 · D2
semana 6 D3 · D4
semana 7 D5 · D6 ← kanban completo
semana 8+ medir · depois E
```
**Ao fim da semana 3 a Altus já recebe arte de madrugada e recusa arquivo ruim
automaticamente**, sem nada ter mudado na sala. É o primeiro ganho real.