Ecossistema de ferramentas internas para a rede de conveniência BB Fast Brasil — gestão de compras com matching de fornecedores, Instagram Marketing Studio e API REST de monitoramento de redes sociais.
Plataforma fullstack (FastAPI + React) para importação de tabelas de preços de fornecedores, matching automático de produtos com RapidFuzz, comparador de preços e geração de listas de compra/relatórios PDF.
Aplicação desktop PySide6 para Windows — conecta ao Instagram via Session ID (instagrapi), sincroniza perfil e posts, gera legendas/hashtags com IA, agenda publicações e exibe analytics de engajamento.
API REST Flask hospedada no Render.com — expõe dados do Instagram (perfil, feed, stats, analytics) com autenticação por API Key (SHA-256), cache em memória TTL, rate limiting e banco PostgreSQL no Neon.tech.
central_compras_bbfastProduto — código interno, nome normalizado, categoria, subcategoria, marca, unidade, qtd_embalagem, código de barras, estoque mínimo/atual.
ProdutoAlias — mapeamento de nomes alternativos por fornecedor com score de confiança e flag de confirmação humana.
Fornecedor — razão social, CNPJ, contato, pedido mínimo, prazo de entrega, frete incluso.
TabelaPreco — referência ao upload de arquivo por fornecedor com data de vigência.
ItemTabela — item extraído da tabela com nome original, normalizado, preço unitário normalizado, status de match (pendente / revisão / aprovado / rejeitado) e JSON de sugestões RapidFuzz.
ListaCompra / ItemListaCompra — lista de compras gerada com itens, quantidades e preços de referência.
/api/produtosativo, categoria. Ordenado por nome.{ nome, codigo_interno?, categoria?, marca?, unidade?, ... }nome_normalizado se nome mudar.ativo = false). Não exclui do banco./api/fornecedoresativo./api/importacaoMAX_UPLOAD_MB) e sanitiza nome do arquivo./api/matchingpendente → revisao → aprovado / rejeitado.fornecedor_id, tabela_id. Inclui JSON de sugestões com scores./api/comparadorcategoria, apenas_com_multiplos_fornecedores./api/lista-compra/api/exportacao/api/dashboard{"status":"ok","service":"Central de Compras BB Fast"}.bbfast_marketingAplicação desktop para Windows empacotada com PyInstaller. Interface PySide6 com splash screen. Conecta ao Instagram via instagrapi usando Session ID (cookie sessionid do navegador). Dados armazenados localmente em SQLite.
app/services/instagram_client.py — wrapper instagrapiapp/analytics/analyzer.py — engagement rate, best posting times, snapshots, campanhasapp/ai/content_generator.py — geração de legendas, hashtags e planos de campanhaapp/services/sync_worker.py — sincronização de perfil/posts (QThread)app/database/db.py — SQLite com tabelas: accounts, posts, profile_snapshots, sync_log, scheduled_postsmobile/server.py — servidor Flask local (bridge para mobile/web)http://localhost:PORT{"connected": bool, "username": str}{"session_id": "..."}bbfast-api (Render.com)Todas as rotas (exceto /health) requerem header X-API-Key: <chave>. Chaves armazenadas como SHA-256 no PostgreSQL. Dois escopos: read (consultas) e admin (atualizar session, agendar posts).
api_keys — key_hash (SHA-256), scope (read/admin), label
profiles — username, followers, following, posts_count, bio, profile_pic_url
profile_snapshots — histórico diário de métricas de perfil
posts — shortcode, caption, likes, comments, timestamp, media_type
session_config — session_id criptografado com Fernet
scheduled_posts — image_url, caption, scheduled_at, status
sync_log — histórico de sincronizações com timestamps e erros
/api/instagramlimit (padrão 6). Dados em cache com TTL.run_sync() quando cache expirado./api/analyticscalculate_best_posting_times()), stats de campanhas agendadas.days (padrão 30)./api/posts{"image_url": "...", "caption": "...", "scheduled_at": "2025-05-28T19:00:00"}. Imagem referenciada por URL pública (sem upload local — filesystem efêmero no Render)./api/auth{"session_id": "..."}. Renovar quando o Instagram expirar a sessão.sqlite+aiosqlite:///./bbfast.db)
MAX_UPLOAD_MBTamanho máximo de upload de tabela (padrão 20)
CORS_ORIGINSOrigens permitidas para o frontend React
?sslmode=require)
SECRET_KEYChave Fernet para criptografar Session ID (base64url 32 bytes)
API_KEY_READChave de acesso read (armazenada como SHA-256)
API_KEY_ADMINChave de acesso admin (armazenada como SHA-256)
INSTAGRAM_SESSION_IDSession ID inicial para seed (cookie sessionid do instagram.com)
Central de Compras (local / VPS)
├─ FastAPI + Uvicorn (porta 8000) — SQLite async
└─ React 19 + Vite (servido como static em produção)
Marketing Studio (Windows)
└─ PySide6 desktop app
└─ Flask local server (mobile/server.py) → instagrapi → Instagram
API Instagram (cloud)
└─ Flask + Gunicorn (1 worker) — Render.com Starter
├─ PostgreSQL Neon.tech (0.5 GB)
├─ Cache em memória (cachetools TTL)
├─ Rate limiting por rota (Flask-Limiter)
└─ UptimeRobot → GET /health (14 min) — evita hibernação
Gerado automaticamente — BlackCat Corp • Voltar ao índice