# Produção - ambiente mínimo do NVR integrado

Use este arquivo como referência para o `.env` real do `/platform` em produção.

## Variáveis que precisam ser preenchidas manualmente

- `APP_KEY`
- `DB_PASSWORD`
- `CENTRAL_SHARED_SECRET`
- `NVR_SHARED_SECRET`
- `NVR_REMOTE_SIGNING_KEY`

## Valores recomendados em produção

```dotenv
APP_NAME="NVR Platform Central"
APP_ENV=production
APP_DEBUG=false
APP_URL=https://nvr.seu-dominio.tld/nvr
APP_BASE_PATH=nvr
APP_TIMEZONE=America/Sao_Paulo
APP_KEY=preencher_chave_real

SESSION_NAME=nvr_platform_session
SESSION_COOKIE_PATH=/nvr
SESSION_COOKIE_DOMAIN=
SESSION_COOKIE_SAME_SITE=Lax
SESSION_SECURE_COOKIE=true
SESSION_TTL_HOURS=12

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=plataforma_central
DB_USERNAME=portal_user
DB_PASSWORD=preencher_senha_real
DB_CHARSET=utf8mb4
DB_COLLATION=utf8mb4_unicode_ci
DB_CONNECT_TIMEOUT=5
DB_SESSION_TIMEZONE=+00:00

CENTRAL_APP_URL=https://nvr.seu-dominio.tld
CENTRAL_API_URL=https://nvr.seu-dominio.tld/api
CENTRAL_SHARED_SECRET=preencher_segredo_real
CENTRAL_PRODUCT_CODE=nvr
CENTRAL_TIMEOUT=15
CENTRAL_SSO_ENABLED=true
CENTRAL_INTROSPECTION_ENABLED=true
CENTRAL_SSO_ISSUER=portal-principal
CENTRAL_SSO_AUDIENCE=platform
CENTRAL_SSO_TTL_SECONDS=120
CENTRAL_SSO_CLOCK_SKEW_SECONDS=30
CENTRAL_SSO_AUTO_PROVISION_TENANT=true
CENTRAL_SSO_AUTO_PROVISION_SITE=true
CENTRAL_SSO_SYNC_PLATFORM_ADMIN=false

AUTH_PREFER_CENTRAL_SSO=true
AUTH_LOCAL_LOGIN_FALLBACK_ENABLED=true
AUTH_LOCAL_LOGIN_EXPLICIT_ONLY=true
AUTH_DIRECT_CENTRAL_SSO_DISABLED=true

NVR_SHARED_SECRET=preencher_segredo_launch_real
NVR_TICKET_TTL_SECONDS=90
NVR_BASE_URL=https://nvr.seu-dominio.tld/nvr
NVR_LAUNCH_URL=https://nvr.seu-dominio.tld/nvr/launch.php
NVR_ALLOWED_HOSTS=nvr.seu-dominio.tld
NVR_REMOTE_SIGNING_KEY=preencher_segredo_remoto_real
```

## Convenção canônica desta rodada

- `CENTRAL_APP_URL` é a raiz oficial do portal/central e a origem canônica do launch/SSO central.
- `CENTRAL_API_URL` é a base canônica da API central. Se ficar vazia, o runtime deriva `CENTRAL_APP_URL + /api`.
- `CENTRAL_SHARED_SECRET` é o segredo canônico da integração central. O alias `SSO_CENTRAL_SHARED_SECRET` permanece apenas como compatibilidade transitória.
- Os parâmetros específicos do SSO central agora seguem a família `CENTRAL_SSO_*`.
- O contrato canônico do banco central continua em `DB_*`.

## Aliases deprecated mantidos apenas para compatibilidade transitória

- `SSO_CENTRAL_ENTRYPOINT_URL` → use `CENTRAL_APP_URL`
- `SSO_CENTRAL_SHARED_SECRET` → use `CENTRAL_SHARED_SECRET`
- `SSO_CENTRAL_ENABLED` → use `CENTRAL_SSO_ENABLED`
- `SSO_CENTRAL_ISSUER` → use `CENTRAL_SSO_ISSUER`
- `SSO_CENTRAL_AUDIENCE` → use `CENTRAL_SSO_AUDIENCE`
- `SSO_CENTRAL_TTL_SECONDS` → use `CENTRAL_SSO_TTL_SECONDS`
- `SSO_CENTRAL_CLOCK_SKEW_SECONDS` → use `CENTRAL_SSO_CLOCK_SKEW_SECONDS`
- `SSO_CENTRAL_AUTO_PROVISION_TENANT` → use `CENTRAL_SSO_AUTO_PROVISION_TENANT`
- `SSO_CENTRAL_AUTO_PROVISION_SITE` → use `CENTRAL_SSO_AUTO_PROVISION_SITE`
- `SSO_CENTRAL_SYNC_PLATFORM_ADMIN` → use `CENTRAL_SSO_SYNC_PLATFORM_ADMIN`
- `DB_CENTRAL_*` → use `DB_*`

## Observações importantes

- A versão oficial desta stack usa MariaDB/MySQL como banco padrão do projeto.
- O runtime oficial em produção também pressupõe `REDIS_CLIENT=phpredis` com a extensão `redis`, além de `mbstring`, `pcntl` e `opcache` ativos no PHP do host.
- `APP_URL` deve apontar para o mount publicado do NVR, por exemplo `https://nvr.seu-dominio.tld/nvr`.
- `SESSION_SECURE_COOKIE` deve permanecer `true` em HTTPS.
- `SESSION_COOKIE_PATH` deve refletir a subpasta real do NVR para não colidir com a sessão do portal principal.
- `SESSION_COOKIE_DOMAIN` pode permanecer vazio para manter o host atual; só defina quando a estratégia de domínio do portal exigir compartilhamento controlado.
- `SESSION_COOKIE_SAME_SITE=Lax` atende o handoff por redirecionamento do portal sem abrir a sessão para contextos cross-site desnecessários.
- O launch assinado do produto continua em `NVR_*`; o SSO/introspecção central continua em `CENTRAL_*` / `CENTRAL_SSO_*`; e o banco central continua em `DB_*`.
