# Captura do gráfico "Perfil de Desempenho" (Playwright) — relatório ARS

O relatório ARS embute o gráfico **Perfil de Desempenho** no DOCX. Em vez do
placeholder feio gerado por GD, o gráfico é capturado do **sistema real**
(Highcharts), pela rota por token:

```
{BASE}/site/grafico-perfil-desempenho-token?token={TOKEN}&contexto_id={ID}&aplicacao_id={APP}
```

onde `TOKEN = md5('gledson' . date('dmY'))` (o próprio controller valida).

## Como funciona (no servidor)

1. O PHP (`AnexoController::actionCreateArsRelatorio`) chama
   `arsGerarGraficoPerfilDesempenho()`, que:
   - tenta capturar via **Playwright** (`charts/perfil-desempenho/capture.js`);
   - se Node/Playwright **não estiver instalado** (ou falhar), usa o gráfico GD
     antigo (fallback) — o relatório **nunca quebra**;
   - o PNG temporário é apagado após o `save()` do DOCX.

## Instalar no servidor (Debian/Ubuntu — uma vez por deploy)

```bash
cd /caminho/do/app/eletrobras/charts/perfil-desempenho
sudo bash instalar-playwright.sh
```

No container de dev:

```bash
docker exec -it php74_apache bash -c "cd /var/www/html/eletrobras/charts/perfil-desempenho && bash instalar-playwright.sh"
```

O script:
- instala **Node 18** (nodesource);
- `npm install` + `npx playwright install --with-deps chromium`;
- adiciona `127.0.0.1 eletrobras.localhost` ao `/etc/hosts` (a captura roda no
  próprio host e o Chromium precisa resolver o `ServerName`);
- roda um teste de captura (contexto 666 / app 4 → `/tmp/perfil_666.png`).

### Instalação manual (sem o script)

```bash
# Node 18
curl -fsSL https://deb.nodesource.com/setup_18.x | bash -
apt-get install -y nodejs

cd /var/www/html/eletrobras/charts/perfil-desempenho
npm install --no-audit --no-fund

# Browsers em local acessível ao usuário web (o Apache roda como www-data):
export PLAYWRIGHT_BROWSERS_PATH=/ms-playwright
mkdir -p /ms-playwright
npx playwright install --with-deps chromium
chmod -R a+rX /ms-playwright

# permitir a própria captura (localhost -> vhost)
grep -q eletrobras.localhost /etc/hosts || echo "127.0.0.1 eletrobras.localhost" >> /etc/hosts
```

> **Importante**: se a geração do ARS roda no Apache como `www-data`, instale os
> browsers com `PLAYWRIGHT_BROWSERS_PATH=/ms-playwright` (o helper do PHP já usa
> esse caminho). Instalar só em `/root/.cache` não funciona porque o Apache não
> consegue ler `/root` → o DOCX sai com "Erro ao gerar a imagem".

## Testar a captura manualmente

```bash
TOKEN=$(php -r "echo md5('gledson' . date('dmY'));")
node capture.js \
  --url "http://eletrobras.localhost/site/grafico-perfil-desempenho-token?token=${TOKEN}&contexto_id=666&aplicacao_id=4" \
  --out /tmp/perfil_666.png \
  --width 1280 --height 720 --dsf 2 --wait 4500
```

## Pré-requisitos / observações

- **Node >= 16** (recomendado 18). PHP precisa de `shell_exec`/`proc_open`
  habilitados (se desabilitado, o ARS usa o GD).
- O Chromium roda com `--no-sandbox` (necessário em container Apache).
- O host da URL deve ser `eletrobras.localhost` (ou o `ServerName` do vhost);
  o `/etc/hosts` precisa apontá-lo para `127.0.0.1`.
- O gráfico capturado é o elemento `#perfilDesempenho` (Highcharts) da rota de
  token, com `deviceScaleFactor=2` para boa resolução no Word.
