# Análise do estado do projeto — 2026-08-13

## Ambiente

- Containers `app`, `database`, `redis`, `mailhog` saudáveis (Up 2h, healthy).
- Branch `master` (1 commit à frente de origin/master), último commit `4cc4268` (seeds sync 2026-08-12).

## 1. Trabalho em andamento (não commitado — por design)

Plano `plan/07_galeria.md` **concluído** (Status: done, 4/4 sub-tasks).
Mudança: crop da Gallery seleciona a imagem completa por padrão.

- `V2/Services/Gallery/Views/components/logic/scripts/{upload-handler,detail-manager}.blade.php`
  — `autoCropArea: 0.9` → `1` (2 linhas, diff limpo)
- `tests/Unit/V2/Services/Gallery/Views/CropperConfigTest.php` — novo, 3 testes / 7 asserts
- Regra do plano ("Nunca commitar") respeitada.

## 2. Pendência `plan/ux_fix/` — CONFIRMADO 100% APLICADO

Verificação no runtime (hoje):

| Item (05-execucao.md) | Status | Evidência |
|---|---|---|
| #1/#2 Bridge vars no SleConfigsSeeder | ✅ | `v2_structural_portal_contents.css_head` contém bridge (`%tenant-primary%` = t) |
| #3 Badge tags /noticia/* | ✅ | show.blade.php:307 `bg-secondary bg-opacity-25 text-dark` |
| #4 Estrela Destaques | ✅ | show.blade.php:428 `color: var(--tenant-primary)` + `aria-hidden` |
| #5 A11y bar 28px | ✅ | bar-buttons.blade.php:15-16 `min-width/min-height: 28px` |
| #6/#7 Equalização de cards | ✅ | portal-noticias.css e portal-agenda.css com bloco "CARD HEIGHT EQUALIZATION" |
| #8 Overlap -24px /agenda | ✅ | index.blade.php sem `margin-top: -24px` (ausente do arquivo) |
| #9 Re-seed SLE | ✅ | bridge presente no banco ⇒ seeder executado |
| #10 Limpar cache | ✅ | Redis: 1 chave `laravel:page:*` (renova em ≤5min TTL) |

**Conclusão:** o loop de execução do ux_fix foi fechado. As recomendações #1 e #3 do relatório anterior
podem ser arquivadas.

## 3. Novo achado: suíte V2 Feature é FLÁCIA (rate limiting)

- Passa isolada: `FeedRssServiceTest` 9/9 OK.
- Passa isolada em pares com os testes de API (20/20 OK).
- Em 4 runs consecutivos da suíte completa: 2x OK (197 tests, 760 asserts), 1x 17 falhas, 1x 5 falhas.

**Causa raiz:** `ThrottleApiToken` (rate limiter por token/IP) nos testes de API:
`UnidadeRegionalNewsApiControllerTest` e `UnidadeRegionalEmpresaApiControllerTest`.
Quando a suíte roda várias vezes em sequência, o `RateLimiter` (Redis) acumula
`attempts` na chave `api_token:*` e os testes passam a receber **429** em vez de
201/401/403/404/409/422/200 — falhas não relacionadas a regressão de código.

- Afetados: 17 testes nos 2 controllers (todos com `Expected ... but received 429`).
- Mecanismo: `V2/Core/Middleware/ThrottleApiToken.php` — `$limiter->hit()` nunca é limpo
  entre execuções de teste (Redis persiste além do `DatabaseTransactions`, que só cobre SQL).
- Anomalia "3 vs 2" no `FeedRssServiceTest::test_stats_reflects_real_data` observada em 1 run:
  também ligada a estado residual de run anterior (1 item órfão). O banco está vazio (0 rows) após a suíte.

**Correção sugerida:** limpar as chaves de throttle no `setUp`/`tearDown` dos testes de API
(ou `Cache::forget` no RateLimiter) — ex. `RateLimiter::clear('api_token:...')` ou flush
das chaves `laravel_cache:api_token:*` no Redis antes da suíte. Alternativa: `throttle.api` a 30 req/min
é alto demais para o volume de testes — subir para 200 ou desabilitar em `APP_ENV=testing`.

## 4. Riscos conhecidos (pré-existentes, sem regressão)

- **2 falhas PRÉ-EXISTENTES** V2 Unit: `CmsSidebarTest` + `CmsTypographyTest`
  (`V2/Layouts/Cms`) — confirmadas hoje (470 tests, 1286 asserts, 2 falhas).
  Reproduzem sem relação com a mudança da Gallery.
- V2 Feature: 197 tests / 760 asserts em execução estável; flakiness acima.
- Plano `05_minor_fixes_ui.md`: template vazio (dump de HTML do /associados), sem status —
  substituído de fato pelo `ux_fix`.

## 5. Recomendações

1. **Flakiness (prioridade):** isolar o RateLimiter nos testes de API (limpar chave Redis
   em setUp/tearDown ou subir limite em testing). Sem isso, runs CI consecutivos flakem.
2. Decidir destino das 2 falhas pré-existentes de Cms (corrigir ou registrar como dívida no wiki).
3. Arquivar/marcar `05_minor_fixes_ui.md` como superado pelo `ux_fix` (está sem template).
4. Quando o plano 07 for commitável (per decisão do dono), commitar Gallery + teste.
