# Amazon SiteStripe + Playwright (Planejado)

## Objetivo

Documentar a proposta de integrar Playwright ao fluxo atual para:
- gerar link curto (`amzn.to`) via SiteStripe;
- reaproveitar o texto já montado no Laravel;
- publicar nos grupos Telegram com o link curto de afiliado.

Status: **planejado para avaliação futura** (sem implementação neste momento).

Decisão operacional atual: publicar Amazon no Telegram com link canônico afiliado primeiro.
Detalhes do fluxo atual: `docs/AMAZON_TELEGRAM_PUBLICACAO.md`.

---

## Contexto atual

- O sistema já gera link afiliado canônico da Amazon (`/dp/ASIN?tag=...`).
- O texto de oferta já é montado e usado no fluxo atual.
- O bloco de Prime também pode receber a mesma `tag` de afiliado.
- Falta apenas automatizar a geração de link curto `amzn.to` no padrão SiteStripe.

---

## Arquitetura proposta (MVP)

1. Laravel resolve produto e monta texto base.
2. Laravel chama script Node + Playwright.
3. Playwright abre página do produto com sessão logada no Associates.
4. Playwright usa SiteStripe para gerar link curto.
5. Script retorna JSON com `short_url`.
6. Laravel substitui o link canônico pelo curto.
7. Pipeline segue para publicação no Telegram.

---

## Componentes sugeridos

- `scripts/sitestripe-shortlink.mjs`
  - recebe URL do produto;
  - abre navegador com perfil persistente;
  - gera link curto no SiteStripe;
  - imprime JSON no stdout.

- Comando Artisan (sugestão): `amazon:shortlink`
  - executa o script Playwright;
  - valida retorno;
  - aplica fallback para link canônico em caso de falha.

- Integração no fluxo Amazon
  - quando `short_url` existir, usar no `Compre aqui`;
  - manter `?tag=` no link de Prime.

---

## Requisitos técnicos

- Node.js instalado no servidor/host de execução.
- Dependências:
  - `playwright`;
  - navegador Chromium instalado (`npx playwright install chromium`).
- Diretório de sessão persistente (exemplo):
  - `storage/app/playwright/amazon-profile`.

---

## Fluxo operacional sugerido

1. Login manual inicial no perfil persistente do Playwright.
2. Salvar sessão autenticada no SiteStripe.
3. Execuções seguintes usam a mesma sessão.
4. Renovar login quando expirar/captcha.

---

## Fallbacks (obrigatórios)

- Se falhar Playwright/SiteStripe:
  - manter `Compre aqui` com link canônico (`/dp/ASIN?tag=...`);
  - registrar log de falha;
  - não quebrar o restante do pipeline.

- Se shortcode vier inválido:
  - ignorar e usar link canônico.

---

## Riscos e cuidados

- Automação de área logada pode ter restrições de uso; validar termos do programa Amazon Associates antes de produção.
- SiteStripe pode mudar seletor/UI e quebrar automação.
- Pode ocorrer captcha, MFA ou bloqueio temporário.
- Evitar alta concorrência de execuções simultâneas no mesmo perfil.

---

## Estratégia de implementação (futura)

### Etapa 1 - Prova de conceito local
- Script Playwright gerar `amzn.to` para uma URL fixa.
- Retorno JSON padronizado:
  - `{"ok":true,"short_url":"https://amzn.to/xxxx"}`
  - `{"ok":false,"error":"motivo"}`

### Etapa 2 - Comando Artisan
- Criar comando `amazon:shortlink {url}`.
- Consumir stdout do script e validar formato.

### Etapa 3 - Integração no formatter/pipeline
- Priorizar curto quando disponível.
- Manter fallback automático.

### Etapa 4 - Observabilidade
- Logs dedicados (`amazon-shortlink`).
- Métricas simples: taxa de sucesso, tempo médio, falhas por motivo.

---

## Comandos úteis (referência futura)

```bash
npm i -D playwright
npx playwright install chromium
node scripts/sitestripe-shortlink.mjs "https://www.amazon.com.br/dp/B0G22R3QLT"
php artisan amazon:shortlink "https://www.amazon.com.br/dp/B0G22R3QLT"
```

---

## Critérios de aceite

- Gera `amzn.to` em ambiente autenticado.
- Não quebra fluxo quando Playwright falha.
- Texto final mantém:
  - preço (quando disponível),
  - link de compra com afiliado,
  - link de Prime com afiliado.
- Publicação no Telegram segue funcionando sem regressão.

---

## Decisão pendente

Quando for retomar:
- confirmar se o uso de automação no SiteStripe está aderente à política atual do programa;
- escolher ambiente de execução (local, servidor Windows, ou worker dedicado).
