# Plano de Execução — Ordem e Comandos

## Ordem de implementação

| Ordem | Ação | Arquivos | seeds | Depende de |
|-------|------|----------|-------|------------|
| 1 | Bridge de variáveis + fonte + btn-primary | `V2/Seeds/SleConfigsSeeder.php` | `sucesu-ac5e`, `sucesu-4935` | — |
| 2 | Substituir cores hardcoded nos overrides | `V2/Seeds/SleConfigsSeeder.php` | `sucesu-ac5e` | #1 (mesmo arquivo) |
| 3 | Fix badge tags (/noticia/*) | `V2/Modules/Publicacoes/Noticias/Views/portal/show.blade.php` L307 | `sucesu-a2f2` | — |
| 4 | Fix estrela "Destaques" (/noticia/*) | `V2/Modules/Publicacoes/Noticias/Views/portal/show.blade.php` L428 | `sucesu-a2f2` | — |
| 5 | Fix font-size buttons a11y bar | `V2/layouts/portal/header/accessibility/bar-buttons.blade.php` L14-17 | `sucesu-36ce` | — |
| 6 | Equalizar altura de cards (CSS) | `public/assets/css/modules/noticias/portal-noticias.css` | `sucesu-36ce` | — |
| 7 | Equalizar altura de cards (CSS) | `public/assets/css/modules/agenda/portal-agenda.css` | `sucesu-36ce` | — |
| 8 | Fix overlap -24px /agenda | `V2/Modules/Publicacoes/Agenda/Views/portal/index.blade.php` | `sucesu-36ce` | — |
| 9 | Re-seed do SLE | comando | — | #1, #2 |
| 10 | Limpar cache Redis | comando | — | #9 |
| 11 | Validar sniff_page (3 págs) | MCP | — | #9, #10 |
| 12 | Rodar suite de testes | comando | — | #1-#8 |
| 13 | Marcar issues como closed | comando sd | todos | #12 ✓ |

---

## Comandos por etapa

### Etapa 9: Re-seed do SLE

```bash
# As alterações no SleConfigsSeeder.php precisam ser aplicadas ao banco
docker compose exec app php artisan db:seed --class=SleConfigsSeeder

# Se precisar re-seed completo (inclui header/footer):
# docker compose exec app php artisan db:seed --class=StructuralPortalSeeder
```

### Etapa 10: Limpar cache de páginas do portal

```bash
# Invalida todas as páginas cacheadas (o page.cache usa chave laravel:page:{sha1(url)})
# Método 1: flush keys via redis-cli dentro do container
docker compose exec redis redis-cli --scan --pattern "laravel:page:*" | while read key; do docker compose exec redis redis-cli DEL "$key"; done

# Método 2 (mais rápido): flush direto via artisan tinker
docker compose exec app php artisan tinker --execute="Cache::tags('page')->flush();"

# Método 3: se não houver tags, usar o facade:
docker compose exec app php artisan tinker --execute="Illuminate\Support\Facades\Redis::connection()->del(Illuminate\Support\Facades\Redis::connection()->keys('laravel:page:*'));"
```

### Etapa 11: Validar com sniff_page (MCP)

Capturar 3 páginas-chave e rodar run_checks para confirmar que as cores e contrastes estão corretos:

```
Página 1: http://localhost:10011/
Página 2: http://localhost:10011/noticias
Página 3: http://localhost:10011/noticia/<slug-existente>

Para cada uma:
  sniff_page url=<url> selector="main" depth=4 compact=true contrast=true wait=["network-idle:1200:60000"]
  sniff_page url=<url> selector="header" depth=2 compact=true contrast=true
  sniff_page url=<url> selector="footer" depth=2 compact=true contrast=true
  run_checks jsonl=<main-snapshot> uniform=true rules=true

Verificar:
  - header bg computado = #1a3c6e (--tenant-primary)
  - footer bg computado = #1a3c6e
  - font-family computado = "Nunito Sans" (não "DM Sans")
  - .btn-primary computed bg = #1a3c6e (não #0d6efd)
  - run_checks: 0 contrast-aa FAIL (apenas breadcrumb warn)
  - run_checks: target-size 0 FAIL
  - run_checks: uniformity sem delta >10px entre rows
```

### Etapa 12: Suite de testes

```bash
docker compose exec app vendor/bin/phpunit --testsuite "V2 Unit"
docker compose exec app vendor/bin/phpunit --testsuite "V2 Feature"

# Se um arquivo específico falhar:
# docker compose exec app vendor/bin/phpunit --filter="NomeDoTeste"
```

### Etapa 13: Fechar issues

```bash
sd close sucesu-ac5e --reason "Bridge CSS no SleConfigsSeeder: vars legacy mapeadas para tenant vars. Ver /plan/ux_fix/02-p1-bridge-theme-vars.md"
sd close sucesu-a2f2 --reason "Badge tags opacity 10→25, star icon primary cor + aria-hidden. Ver /plan/ux_fix/03-p2-contraste-acessibilidade.md"
sd close sucesu-4935 --reason "btn-primary override via bridge CSS. Falso positivo: labels existem. Ver /plan/ux_fix/03-p2-contraste-acessibilidade.md"
sd close sucesu-36ce --reason "Card flex equalization, a11y bar min-size 28px. Falsos positivos documentados. Ver /plan/ux_fix/04-p3-grids-targets.md"
sd sync
```

---

## Resumo de arquivos a modificar

| # | Arquivo | Tipo | Mudança |
|---|---------|------|---------|
| 1 | `V2/Seeds/SleConfigsSeeder.php` | PHP seeder | Inserir bridge CSS (var mapping + font + btn-primary) entre linhas 58-60 |
| 2 | `V2/Seeds/SleConfigsSeeder.php` | PHP seeder | Substituir cores hardcoded nos overrides !important (linhas 61-97) |
| 3 | `V2/Modules/Publicacoes/Noticias/Views/portal/show.blade.php` | Blade | L307: `bg-opacity-10 text-secondary` → `bg-opacity-25 text-dark` |
| 4 | `V2/Modules/Publicacoes/Noticias/Views/portal/show.blade.php` | Blade | L428: `text-warning` → `style="color: var(--tenant-primary)" aria-hidden` |
| 5 | `V2/layouts/portal/header/accessibility/bar-buttons.blade.php` | Blade | L14-17: inline style + min-width/min-height 28px |
| 6 | `public/assets/css/modules/noticias/portal-noticias.css` | CSS | Adicionar flex equalization (final do arquivo) |
| 7 | `public/assets/css/modules/agenda/portal-agenda.css` | CSS | Adicionar flex equalization (final do arquivo) |
| 8 | `V2/Modules/Publicacoes/Agenda/Views/portal/index.blade.php` | Blade | Remover/compensar margin-top -24px |

**Total**: 6 arquivos únicos (2 com 2 mudanças cada = 8 alterações)

---

## Rollback

Se o bridge CSS causar regressão visual:

```bash
# Restaurar SleConfigsSeeder.php da versão original (git)
git checkout -- V2/Seeds/SleConfigsSeeder.php

# Re-seed
docker compose exec app php artisan db:seed --class=SleConfigsSeeder

# Limpar cache
docker compose exec redis redis-cli --scan --pattern "laravel:page:*" | while read key; do docker compose exec redis redis-cli DEL "$key"; done
```

---

## Nota sobre `color-mix` (P1 bridge)

O fallback recomendado para `--bg` no bridge CSS, em vez de `color-mix` (CSS Color Level 5):

```css
--bg: var(--color-bg-canvas);
```

O `--bg` legado (`rgba(28,113,166,0.05)`) é usado como tint sutil em backgrounds de seções. Substituir por `--color-bg-canvas` (`#f8f9fa`) remove a tintagem por cor primária, mas mantém a diferenciação visual. O efeito visual é sutil e aceitável para a correção. Se quiser manter a tintagem, usar:

```css
--bg: rgba(26, 60, 110, 0.05); /* tenant-primary #1a3c6e a 5% — fixo, não dinâmico */
```

Entre as duas opções, `var(--color-bg-canvas)` é mais limpo e 100% compatível.
