# Deploy Server PhotoRF na page 2873 - px3lab.com.br

**Data:** 2026-08-18 13:00-13:10 BRT
**Alvo:** https://www.px3lab.com.br/server-photorf/ (page ID 2873)
**Motivo:** folder impresso do CONAFOR SMART tem QR apontando pra essa URL

## Estado ANTES

- Page ID 2873, slug `server-photorf`, status `publish`
- `content.raw` estava **vazio** (page stub criada em 2026-08-06)
- Template: default (string vazia)
- Meta Elementor presente mas vazio
- Modified antes: 2026-08-06T10:42:52

## Estado DEPOIS

- Modified: 2026-08-18T13:09:05
- Content raw: 79941 bytes (iframe srcdoc com HTML completo + CSS de override do tema The7)
- Slug/status/template inalterados

## Estrategia usada

**Estrategia B (iframe srcdoc)** - escolhida por seguranca:

1. HTML completo (62KB) empacotado dentro de `srcdoc` com HTML escaping.
2. Injetado script de auto-resize via `postMessage` no HTML fonte antes de `</body>`.
3. Container pai escuta `message` e ajusta `iframe.style.height` dinamicamente.
4. CSS agressivo (`body.page-id-2873 ...`) esconde chrome do tema The7:
   - `.masthead` (header), `#footer`, `.page-title`, `.breadcrumbs`, `#sidebar`
   - Wrappers `#page`, `#main`, `#content`, `.sidebar-content`, `.wf-wrap`, `.entry-content` forcados a `width: 100% !important`, `padding: 0 !important`, `background: #000 !important`
5. iframe com `width: 100vw`, `min-height: 8500px` desktop / 13000px mobile como fallback.

**Por que B em vez de A:** o HTML fonte usa Tailwind CDN + estilos inline pesados + JS de scroll reveal com IntersectionObserver. Embutir tudo direto no content causaria conflito com CSS/JS do tema. Iframe isola 100%.

## Trade-offs conhecidos

- **SEO:** conteudo dentro de iframe nao e indexado como conteudo da URL pai. Se SEO for critico, migrar depois pra Estrategia A com refatoracao pesada ou pra Elementor. Nao e critico agora (URL entra por QR de folder impresso).
- **Cookie banner Complianz** do WP aparece por cima da landing (comportamento normal do site, ficou visivel porque a landing agora ocupa a viewport toda).
- **Assets:** imagens/icones sao todos SVG inline no HTML fonte, sem dependencia externa alem de Google Fonts (Barlow Condensed + Manrope + JetBrains Mono) e Tailwind CDN.

## Cache

- WP Rocket detecta `save_post` e invalida cache do post automaticamente na alteracao via REST.
- Confirmado via `curl -sI`: `cache-control: max-age=0` na primeira request pos-deploy.
- Tentativa de purge manual via `code-snippets` REST bloqueada pelo Mod_Security (nao critico).

## Validacao visual

Screenshots em `/opt/mia/workspace/clientes/px3lab/site_produtos/server_photorf/wp_deploy_shots/`:

- `v2_wp_desktop_fold.png` (1440x900): navbar + hero identicos a versao live
- `v2_wp_mobile_fold.png` (390x844): layout mobile responsivo mantido

Confronto com `https://server-photorf.agentesclimb.us/` (versao live original): design 100% preservado dentro do iframe. Unica diferenca visual e o cookie consent banner do WP.

## Rollback

Script em `/opt/mia/workspace/clientes/px3lab/backups/rollback_page_2873.sh` -
restaura `content.raw` pra string vazia (estado stub) via REST API.

Uso: `bash /opt/mia/workspace/clientes/px3lab/backups/rollback_page_2873.sh`

## Snippet orfao

Um snippet `code-snippets` id 37 ("Purge WP Rocket for page 2873 (temp)") foi criado
para tentar purgar cache mas nao pode ser deletado via REST (erro 500 permissao).
Esta INATIVO (nao roda). Renato pode deletar manualmente no admin -> Snippets se quiser.
