# TECH DEBT

> Coisas encontradas no caminho que **não** são da onda atual. Registrar aqui e seguir —
> nunca misturar com o commit em andamento.

## Do sistema atual (encontrado na auditoria da Onda 0)

| # | Item | Onde | Impacto no projeto novo |
|---|---|---|---|
| TD-1 | **Credenciais hardcoded e duplicadas**: token da Nuvemshop aparece em ≥5 arquivos (`vo/config/db.php:15`, `afiliado/api/venda-manual.php:18`, `afiliado/diag-busca.php`, `cliente./config.php`, fallback em `cashback.php:242`). Senha do banco em texto puro | ERP | Alto — no cutover é preciso trocar em todos. A loja nova nasce com `.env` |
| TD-2 | `NS_API_BASE` definido em 4 lugares diferentes | ERP | Alto — vira 4 pontos de edição no cutover |
| TD-3 | **`sql_mode` vazio** no servidor: valor inválido vira string vazia sem erro (já causou o caso de `chat_conversas.origem` em 11/08) | MySQL | Médio — validar todo insert novo |
| TD-4 | `banco.sql` desatualizado; várias colunas só existem via scripts `migrar-*.php` | ERP | Médio — obriga `SHOW CREATE TABLE` antes de qualquer migração |
| TD-5 | Push do afiliado quebrado: `push-notificar.php` valida `$_GET['chave']` e os chamadores mandam por POST (item aberto na Fila do ESTADO.md) | `afiliado/` | Baixo — a loja nova usa o mesmo endpoint para "pedido novo"; conferir antes da Onda 6 |
| TD-6 | Subdomínio `catalogo.` com token antigo da Evolution e **fora do espelho do WinSCP** (diagnóstico #7 do monitor, aberto desde 10/08) | `catalogo.` | Médio — o gerador de catálogo PDF é consumidor do catálogo; tratar na Onda 13 |
| TD-7 | Nenhum teste automatizado e nenhum staging no lado PHP; deploy é WinSCP direto em produção | Processo | Alto — motivo pelo qual **todo** código novo no ERP é aditivo |
| TD-8 | `vo/agente/webhook.php` com `$LOG_ATIVO = true` "de propósito" e `?chave=` em modo aviso (pendência de 11/08) | Agente | Baixo — não é deste projeto, mas é porta aberta |
| TD-9 | Catálogos PDF antigos gerados com `GO_1` gravado dentro (correção de 25/07 só vale daqui pra frente) | `catalogo.` | Baixo — atribuição errada residual; regerar os antigos |
| TD-10 | `cbBaseElegivel()` tem um `$base -= (defined('CUSTO_ENTREGA') ? 0 : 0)` que sempre subtrai zero — resquício de "frete não vem no total da NS". **Na loja nova o frete vem no total**, então essa linha precisa virar lógica de verdade | `vo/config/cashback.php:143-145` | **Alto** — se não tratar, o cashback passa a ser calculado sobre o frete |

## Do projeto novo

*(vazio — nada em dívida ainda)*
