teqo/docs
Francisco Solla 3ce5a69555 feat(S11): feed do Instagram configurado não aparece na home — painel de status da sincronização no admin
O fail-closed silencioso da S3 deixava a assessoria cega: token errado não deixava
rastro além do picker vazio. Fim da caixa-preta:

- `instagramSyncStatus` (jsonb hidden) na global `social-feed-settings`, escrito pelo
  render, pelo afterChange (sync awaited quando a credencial IG muda) e pela rota
  `POST /api/social-feed/sync` (botão, auth admin + same-origin).
- `InstagramApiError` + `describeInstagramError`: o fetch parseia o body de erro da
  Graph API e o mapeia para copy pt-BR com a correção (OAuthException/expired →
  "token inválido/expirado ou emitido via Facebook Login — gere pelo Instagram Login";
  "Invalid user id" → confira o ID; 5xx → indisponível; TypeError → rede; AbortError →
  demorou demais). O ID só casa com "user" E "id" juntos (token rejections real falam
  "the user must be logged in" — não podem virar a branch de ID).
- `InstagramSyncStatusPanel` (campo ui irmão do picker): 5 estados fiéis ao rascunho;
  gate respeita o master `enabled`; `outcome` transiente limpo ao editar credencial;
  aria-live nos boxes interativos. Home inalterada (fail-closed intacto).
- Bug real: `afterChange` roda dentro da transação do save (row lock até os hooks
  retornarem); persistir o status via pool numa 2ª conexão deadlockava no lock da
  própria linha (~80-230s/save). Fix: persists do sync-hook na MESMA transação via
  `getPostgresTransactionDatabase` (C6); render/rota sem transação seguem no pool.
  Diagrama: UPDATE transactionid Lock vs idle in transaction; fix verificado 45ms vs 232s.
- Stub IG ganha estado `invalid-token`; runbook docs/ops/instagram-feed-token-runbook.md;
  migration add_instagram_sync_status (jsonb nullable).
- Débitos registrados: #124 (janela de lock) e #125 (polish P3).
- Gates: unit 2463 + int 791; lint/format/tsc/cycles; build; e2e admin 5/5 + frontend serial 19/19.
2026-08-20 00:54:58 -03:00
..
campanha style(site): formata artefatos da campanha 2026-08-16 00:50:07 -03:00
changelog feat(S11): feed do Instagram configurado não aparece na home — painel de status da sincronização no admin 2026-08-20 00:54:58 -03:00
design-refs Version UX Pilot design refs and map them to roadmap plans 2026-07-18 16:36:09 -03:00
ops feat(S11): feed do Instagram configurado não aparece na home — painel de status da sincronização no admin 2026-08-20 00:54:58 -03:00
plans feat(S11): feed do Instagram configurado não aparece na home — painel de status da sincronização no admin 2026-08-20 00:54:58 -03:00
research chore: migrate .cursor/ references to .agents/ folder 2026-08-05 00:09:09 -03:00
AGENT-OPS.md style(OPS72): alinha tabela CI/AUTOMERGE do AGENT-OPS.md (prettier) 2026-08-20 02:12:39 +00:00
ARCHITECTURE.md chore: migrate .cursor/ references to .agents/ folder 2026-08-05 00:09:09 -03:00
CHANGELOG-AGENTS.md feat(S11): feed do Instagram configurado não aparece na home — painel de status da sincronização no admin 2026-08-20 00:54:58 -03:00
CUSTOMER.md style: prettier-format public-release docs 2026-07-31 13:16:22 -03:00
CUTOVER-MAIN-ONLY.md ops(OPS61): flip de issues pós-merge com PAT + gate do rollup checks + branch protection real no Forgejo 2026-08-18 17:45:54 -03:00
GUARDRAILS.md chore(ci): remove o migration-lock — deadlock de CI com PRs de schema paralelos (checks passa a ser o único required) 2026-08-12 13:42:05 -03:00
IMPROVE-APP-PLAN.md chore: public release tip — All Rights Reserved, sanitize field material 2026-07-31 12:53:12 -03:00
IMPROVE-CODE-QUALITY-PLAN.md chore: migrate .cursor/ references to .agents/ folder 2026-08-05 00:09:09 -03:00
PAYLOAD-REFERENCE.md chore: migrate .cursor/ references to .agents/ folder 2026-08-05 00:09:09 -03:00
roadmap.md docs(OPS68): reescreve docs canônicos da era GitHub/Vercel para Forgejo/homeserver 2026-08-19 13:33:05 +00:00
TECH-DEBT.md chore(OPS30): hardening e2e em dev — prewarm completo, login resiliente a compile-frio, fechamento do P4-L 2026-08-12 13:34:42 -03:00
TESTING.md refactor(OPS72): fixes do /simplify — gates e2e do ci-pr apertados para selected; docs alinhadas 2026-08-20 02:12:39 +00:00