Synaplan
開源 AI 平台,供企業使用:自行託管的 AI 代理、符合 GDPR 的聊天機器人小工具、RAG 知識庫、WhatsApp 與 Outlook AI、MCP、多模型路由。Docker、Kubernetes 或託管於 Germ
AI 翻譯
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證正在載入完整 README。 以下為已儲存的摘錄。
Sistema auxiliar de observabilidade operacional para a 7ª Zona Eleitoral do Piauí (Campo Maior, Jatobá do Piauí e Sigefredo Pacheco). Não substitui nenhum processo oficial da Justiça Eleitoral. • 174 seções · 63 locais de votação · 34.967 eleitores · 12 rotas de distribuição • Eleição: 4 de outubro de 2026 • Custo de infraestrutura: R$ 0,00/mês (Supabase Free + Vercel Hobby + Oracle Always Free)檢視完整 README ↗
Sistema auxiliar de observabilidade operacional para a 7ª Zona Eleitoral do Piauí (Campo Maior, Jatobá do Piauí e Sigefredo Pacheco). Não substitui nenhum processo oficial da Justiça Eleitoral.
modules/ 16 módulos HTML (HTML+JS puro, sem build) — um por papel/fase
+ sime_dados.js (camada de dados zona-scoped) e sime_tv_auth.js
(bootstrap de sessão das TVs)
sql/ schema Supabase, notificações WhatsApp e triggers do Hermes
api/ função serverless (Vercel) que recebe eventos do Hermes
supabase/ Edge Function sime-login (troca token → sessão JWT)
docs/ documentação de apoio
CLAUDE.md documentação completa da arquitetura
O código e a documentação do agente de WhatsApp (Hermes) que consome os endpoints de api/
vivem num repositório separado: bernardobbs/hermes —
inclui HERMES_RUNTIME.md, HERMES_FUNCOES.md e o contrato de cada skill (SIME_hermes_skill_*.md).
Arquitetura multi-zona (em migração): o SIME está evoluindo de single-tenant
(7ª Zona fixa) para um modelo SaaS onde uma única instância (1 Vercel + 1 Supabase)
atende várias zonas eleitorais, isoladas por RLS. Progresso: RLS com super_admin
cross-zona (feito), camada de dados sime_dados.js + login real no Admin/TVs
(feito), JWT de campo pro QR+PIN dos demais módulos (pendente).
python3 -m http.server 8080
# Painel de entrada:
open http://localhost:8080/modules/SIME_principal.html
Na fase atual (homologação) os dados ficam em localStorage — sem backend. Cada módulo
grava/lê chaves compartilhadas (ver "CHAVES localStorage" no CLAUDE.md).
SIME_admin.html/SIME_coordenador_preparacao.html — login real
(e-mail/senha via Supabase Auth), com saída "continuar offline" sempre disponível
(plano de contingência). Perfis com escopo (Coordenador, Monitor, Gestor de
Problemas/Distribuição, Observador, Coord. de Motoristas, Coord. de Acessibilidade,
Coletor de Mídias).SIME_tokens.html
(por rota, ou por local no caso da acessibilidade). Ainda em localStorage — a
troca de token por sessão real (Edge Function sime-login) é a próxima fase.SIME_tv_dia, SIME_tv_vespera, SIME_tv_distribuicao,
SIME_tv_preparacao, SIME_paineis — autenticam via um token de longa duração
(?tv_token=, tipo 'tv' em sime_tokens), trocado uma vez por sessão persistida
em localStorage.Executar os scripts nesta ordem no SQL Editor do Supabase:
1. sql/SIME_schema.sql -- tabelas, RPCs, RLS por zona, seed inicial
2. sql/SIME_whatsapp_schema.sql -- fila de notificações + triggers
3. sql/SIME_hermes_trigger.sql -- triggers para o Hermes
Requer as extensões uuid-ossp e pg_trgm (criadas pelo próprio schema). RLS está ativo
em todas as tabelas (isolamento por zona via sime_user_zona()/sime_zona_visivel(),
com bypass para o perfil super_admin); o acesso de campo por QR/PIN e das TVs por token
é feito pela Edge Function supabase/functions/sime-login (troca token → JWT), que
service_role também usa para provisionar o usuário na primeira troca. Sempre use
sime_now() para timestamps — nunca o relógio do dispositivo.
Depois de rodar o schema, faça o deploy da Edge Function e configure o segredo de
assinatura (o nome NÃO pode começar com SUPABASE_ — o Supabase reserva esse prefixo
para os secrets automáticos da plataforma):
supabase functions deploy sime-login
supabase secrets set SIME_JWT_SECRET=<valor de Settings → API → JWT Settings → JWT Secret>
npm install -g vercel
vercel env add SUPABASE_URL
vercel env add SUPABASE_SERVICE_ROLE_KEY
vercel env add HERMES_URL
vercel env add HERMES_SECRET_ZONA_<numero> # uma por zona provisionada
vercel --prod
Além das env vars do Vercel (usadas só pela API serverless), os 7 módulos que ganharam
integração real com o Supabase (as 5 TVs + SIME_admin.html +
SIME_coordenador_preparacao.html) têm um SIME_CONFIG embutido no próprio HTML —
supabaseUrl/supabaseAnonKey públicos, não são env vars server-side. Substitua o
placeholder SEU_PROJETO.supabase.co/SUA_ANON_KEY pelos valores reais do projeto antes
de considerar o deploy completo.
Pronto (produção, Supabase): RLS multi-zona com super_admin cross-zona; camada de
dados zona-scoped modules/sime_dados.js; Edge Function sime-login (token → JWT,
compartilhada entre TVs e, na próxima fase, campo); login real (e-mail/senha) no Admin e
Coordenador de Preparação, com saída offline explícita; as 5 TVs consumindo dado real via
token de longa duração.
Pronto (homologação, localStorage): os módulos de campo (mesário, motorista, conferente, instalador, acessibilidade) e mídias — ainda sem sessão Supabase real.
Em andamento / pendente:
SIME_CONFIG real (URL/anon key) nos 7 arquivos migrados — hoje com placeholder.sime-login (mesmo mecanismo
já usado pelas TVs).CLAUDE.md para o restante (Realtime nos TVs, Edge Function
de WhatsApp, geração dos QR Codes).Arquitetura, papéis, chaves de dados, RPCs e cronograma: veja CLAUDE.md na raiz.
Distribuído sob a licença MIT — veja o arquivo LICENSE.