--- name: Social Media - propagacao automatica demanda → aprovacao do post description: Quando admin aprova internamente uma demanda vinculada ao calendario, o post social tambem e marcado como aprovado type: project originSessionId: ed34bd4b-73f4-4220-8560-0d7ae92866ff --- # Social/Demanda - aprovacao automatica do post via demanda (2026-05-08) ## Comportamento Quando uma `demanda` tem `social_post_id` preenchido (vinculada ao calendario de planejamento) e move para etapa do tipo `aprovada`, o post social vinculado: - `aprovacao_status` = 'aprovado' - `aprovado_em` = NOW() - `aprovado_por` = `usuarios.id` do admin que aprovou - Insere log em `social_post_aprovacoes` com `acao='aprovado'`, `origem='sistema'`, comentario "Aprovado internamente via demanda #X (Nome do admin)" **Why:** caso CILENE (post 250) e MISLENE (post 262) - admin aprovou demanda mas post ficou como pendente. Usuario reclamou que tinha que aprovar duas vezes (demanda e post separados) sem motivo. **How to apply:** funcao `propagarAprovacaoSocial(array $demanda, int $usuarioId, ?string $observacao)` em `DemandasEtapas.php`. Chamada em 2 fluxos: 1. `moverEtapa()` quando `tipoEtapaDestino === 'aprovada'` 2. `aprovarDemanda()` (botao "Aprovar" direto) A funcao verifica `!empty($demanda['social_post_id'])` no inicio - so executa pra demandas vinculadas ao calendario de planejamento. Demandas avulsas (sem post social) nao sao afetadas. ## Identificacao na UI No calendario `/social-media`, esses posts aparecem com: - Icone azul `bx-shield-account-outline` (admin) - Label "Aprovado por [Nome] (via demanda)" - Tooltip mostra data/hora completa - No card, o nome curto aparece ao lado do icone A logica de classificacao (back e front) detecta: - comentario contem "via demanda" ou "aprovado internamente" → tipo `manual` - senao, fallback para auto/cliente conforme origem/cliente_id/ip ## Casos retroativos aplicados em 2026-05-08 | Demanda | Post | Cliente | Aprovado por | Quando | |---|---|---|---|---| | 2196 | 250 | CILENE - "Porque empresas pagam mais imposto" | Crismaria Telles (id 5) | 08/05 13:45:46 | | 2220 | 262 | MISLENE - "Citta Centrale - Localizacao" | Crismaria Telles (id 5) | 08/05 13:53:12 | SQL usado (timestamps reais da aprovacao da demanda preservados): ```sql UPDATE social_posts SET aprovacao_status='aprovado', aprovado_em='[ts]', aprovado_por=5 WHERE id=[post_id]; INSERT INTO social_post_aprovacoes (post_id, acao, origem, comentario, created_at) VALUES (...); ```