# J) ARQUIVOS E SISTEMAS QUE **NÃO** DEVEM SER TOCADOS

> O sistema atual move comissão, saque, pedido e pagamento de montador.
> Ele **não tem staging e não tem teste automatizado** — o WinSCP publica direto em produção.
> A regra deste projeto é: **a loja nova nasce ao lado, nunca por cima.**

---

## 1. Pasta inteira em modo somente-leitura

`C:\Users\mac\Documents\Sistema MMN Oferta Distribuidora\` — **nada é editado ali** até a
Onda 6, e mesmo então só por **arquivos novos** (`vo/api/loja-*.php`).

## 2. Coração financeiro — não encostar

| Arquivo | Por quê |
|---|---|
| `vo/api/dar-baixa.php` | Gera as comissões MMN (3/2/1 %), cashback, CAPI, meta, CRM. Uma linha errada = dinheiro errado na mão de 90 afiliados |
| `vo/api/estornar-pedido.php`, `vo/api/apagar-pedido.php`, `vo/estornar.php` | Cancelamento de comissão e cashback |
| `vo/cron-liberar.php` | `pendente` → `disponivel` |
| `vo/cron-metas.php` | Bônus de meta (nível 0) |
| `afiliado/api/solicitar-saque.php` | Vincula comissões ao saque |
| `vo/afiliados.php` (aba saques) | Aprovação/pagamento |
| `vo/config/cashback.php` | Ledger. A regra do "saldo é soma" não se negocia |

## 3. WhatsApp / Evolution — a regra que custou 5 dias

| Arquivo | Por quê |
|---|---|
| `vo/config/whatsapp.php`, `afiliado/config.php`, `motorista./config.php`, `cliente./config.php` | Contêm `evoCorpoConectar()`. **`POST /instance/connect` com corpo vazio APAGA o webhook** e o sistema fica cego sem avisar (06–13/08/2026, ~200 mensagens perdidas) |
| `vo/cron-vigia-whatsapp.php` | Vigia de conexão + vigia de webhook (6h sem mensagem = alerta) |
| `vo/agente/webhook.php` | Recebe **toda** mensagem ao vivo. Tem regras finas de grupo, `fromMe`, afiliado, story |

## 4. Agente IA, CRM e Marketing OS

`vo/agente/**` (Orchestrator, Agents, Intelligence, Transport, LLM, `catalogo_indice`) ·
`afiliado/funil.php`, `clientes.php`, `cliente.php`, `crm_api.php`, `crm_score.php`, `meu-dia.php` ·
`vo/crm.php`, `vo/equipe.php`, `vo/cron-crm-*.php` ·
`vo/marketing.php`, `vo/marketing-criativos.php`, `vo/config/meta.php`, `vo/cron-*-anuncios.php`,
`vo/cron-sincronizar-meta.php`, `vo/cron-sincronizar-publicos.php`.

⚠️ `$APLICAR_VIA_API = false` em `marketing.php` **fica false** — reativar derruba anúncios
(incidente de 23/07: reenviar `targeting` desanexa o formulário de lead).

## 5. Montagem / OS / montadores

`vo/ordens.php`, `vo/api/salvar-os.php`, `vo/montadores.php`, `vo/aprovar-montador.php`,
`afiliado/montador.php`, tabela `ordens_servico`, `montadores`, e a pasta
`vo/fotos_os/` — **a foto é a prova que libera o pagamento do montador.**

## 6. App Flutter (outro chat cuida)

`afiliado/push_fcm.php`, `fcm-chave.php`, `api/salvar-token-fcm.php`, `migrar-fcm.php`,
`diag-fcm.php`, tabela `afiliado_fcm_tokens`, `vo/cron-os-nao-aceita.php`,
`vo/migrar-os-push.php`. Projeto em `C:\develop\app-oferta`.

## 7. Vendor e runtime

`vo/catalogo/mpdf/`, `vo/catalogo/dompdf/`, `catalogo./mpdf/`, `catalogo./dompdf/`,
`afiliado/chat_midia/`, `afiliado/fotos/`, `afiliado/videos/`, `vo/criativos/`,
`vo/agente/cache/`, `vo/agente/pdfs/`, `*.log`, `*.bak-*`.

## 8. Banco `ofertadi_os`

- ❌ nenhum `DROP`, `RENAME`, `ALTER ... MODIFY` em coluna existente;
- ❌ nenhum `DELETE` de dado histórico;
- ✅ permitido apenas `ADD COLUMN` / `CREATE TABLE` **novo e aditivo**, com justificativa neste repo;
- ⚠️ o servidor está com **`sql_mode` vazio**: valor inválido é trocado por string vazia **sem erro**.
  Todo `ENUM`/`VARCHAR` novo precisa ser conferido depois do insert;
- ⚠️ `banco.sql` está desatualizado — sempre conferir com `SHOW CREATE TABLE` antes.

## 9. Segredos

- ❌ **nunca** copiar `DB_PASS`, `ACCESS_TOKEN` da Nuvemshop, `EVO_TOKEN`, token da Meta ou
  o JSON do Google Drive para o projeto novo, para um commit, ou para um chat.
- O projeto novo usa `.env` fora do git, com credenciais **próprias**.
- Segredos do servidor moram em `/home4/ofertadi/segredos/` (fora dos domínios) — continua assim.

## 10. Subdomínios que não podem cair

`vo.` · `afiliado.` · `motorista.` · `cliente.` · `catalogo.` — a loja nova sobe em
`lojavirtual.ofertadistribuidora.com.br` e **só depois** disputa o domínio raiz.
