<!-- BEGIN CHANGE: mapa de paridade admin (Gesior -> portal) -->

# Paridade Admin - Gesior x Novo Portal

## Mapa de superficies

| Legado | Portal | Notas |
|---|---|---|
| `adminpanel.php` | `/admin` secao Contas | Lookup + mutacoes |
| `cpanel.php` | `/admin` secoes Contas / Moderacao / Ferramentas | Tools + danger zone |
| `shopadmin.php` / `shopguildadmin.php` | `/admin` Catalogo Shop | `AdminShopPanel` + `shop-admin.php` |
| CMS news/changelog/polls | `/admin` CMS | `AdminCmsPanel` |
| `serial.php` (staff) | `/admin` Serial Staff | sem gate Premium |
| `serial_players.php` (player) | `/serial-items` | Premium Account |
| `helpdesk.php` staff | `/support` + link no Dashboard/Moderacao | |

## ACL

| page_access | UI |
|---|---|
| > 2 | Dashboard, Contas (leitura), CMS, Moderacao (leitura), Serial, Tools |
| >= 5 | Economia, Catalogo Shop, mutacoes economicas |
| >= 6 | Audit log, password/ACL/delete/migrate, revelar secrets |

## Auditoria

Tabela `z_admin_audit` criada sob demanda pela API. Toda mutacao via `waAdminFinish` grava admin, acao, alvo, IP e timestamp.

Acoes criticas / economicas exigem `adminPassword` (senha da propria conta staff).

## Checklist de teste

- [ ] Manager (3): ve CMS; nao ve Economia/Shop; mutacao pontos 403
- [ ] Subadmin (5): Economia + shop CRUD; nao ve Audit; delete 403
- [ ] Admin (6): tudo; confirmacao de senha nas acoes criticas
- [ ] Dashboard mostra fila shop + doacoes unprocessed
- [ ] Suggest parcial no inspector
- [ ] Secrets mascarados ate "Mostrar secrets"
- [ ] Serial staff encontra item sem Premium
- [ ] Audit lista apos uma mutacao

<!-- END CHANGE -->
