first commit
This commit is contained in:
212
TAREFAS.md
Normal file
212
TAREFAS.md
Normal file
@@ -0,0 +1,212 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user