# 2026-04-13 - Migracao do bloco contrato/site para servicos PSR

## O que mudou
- Criado `src/Core/Contracts/ContractPageContextService.php` para centralizar contexto de contrato usado em telas admin:
  - contrato atual
  - nome do contrato
  - slug/site URL
  - configuracao do site
  - site info padrao para layout
- Evoluido `src/Core/Contracts/ContractRepository.php` com `findRaw()` para carregar o contrato completo sem depender de `contratoClass`.
- Criado `src/Modules/ContratoSiteAdmin/Repositories/ContratoSiteRepository.php` para leitura/garantia da linha de `contratos_site` e montagem de `siteInfo`.
- Criado `src/Shared/View/NestableMenuRenderer.php` para renderizar a arvore do builder de menus sem depender de `contratoSiteClass`.
- Atualizadas as paginas admin:
  - `pages/admin/contrato-site.php`
  - `pages/admin/contrato-site-menus.php`
  - `pages/admin/contrato-materiais.php`
  - `pages/admin/campos-personalizados.php`
  para usar `ContractPageContextService` em vez de `contratoClass` e `utilClass`.
- Atualizado `includes/template/head.php` para resolver `dadosContrato`, `siteConfig` e `siteInfo` via servicos PSR.
- Atualizado `includes/template/matdash/sidebar-dinamico.php` para parar de usar `contratoClass->monta_select_contratos()` e carregar o seletor de contratos via `/adm/api/Core/contracts`.
- Atualizado `src/Http/Controllers/CoreController.php` para responder o endpoint `contracts` com `ContractSelectService`.

## Observacoes
- O bloco de contrato/site ativo do admin agora saiu do fluxo principal de `contratoClass`, `utilClass` e `contratoSiteClass`.
- O seletor de contrato da sidebar passou a depender do endpoint `/adm/api/Core/contracts` e do fluxo `Core/set_contract`, alinhando com as telas novas.
- Ficou um resquicio de compatibilidade morta em `pages/admin/contrato-site-menus.php` e no trecho antigo de `src/Http/Controllers/CoreController.php`, sem impacto operacional, para remocao final em uma passada de limpeza focada.

## Validacao
- `php -l src/Core/Contracts/ContractRepository.php`
- `php -l src/Core/Contracts/ContractPageContextService.php`
- `php -l src/Modules/ContratoSiteAdmin/Repositories/ContratoSiteRepository.php`
- `php -l src/Shared/View/NestableMenuRenderer.php`
- `php -l pages/admin/contrato-site.php`
- `php -l pages/admin/contrato-site-menus.php`
- `php -l pages/admin/contrato-materiais.php`
- `php -l pages/admin/campos-personalizados.php`
- `php -l includes/template/head.php`
- `php -l includes/template/matdash/sidebar-dinamico.php`
- `php -l src/Http/Controllers/CoreController.php`
- `rg -n 'contratoClass|contratoSiteClass|utilClass' pages/admin/contrato-site.php pages/admin/contrato-site-menus.php pages/admin/contrato-materiais.php pages/admin/campos-personalizados.php includes/template/head.php includes/template/matdash/sidebar-dinamico.php src/Http/Controllers/CoreController.php`
