Synaplan
开源 AI 软件平台,面向企业:自托管 AI 代理,符合 GDPR 的聊天机器人小部件,RAG 知识库,WhatsApp 与 Outlook AI,MCP,多模型路由。支持 Docker、Kubernetes 或在 Germ 托管。
AI 翻译
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证正在加载完整 README。 以下为已保存的摘录。
Sistema para o ponto de retirada: motorista chega, é anotado na Fila (nome + número da saca), sai pra escanear em outro app, volta e alguém confirma em Liberar se ele levou ou recusou a saca. Pacote faltante é reportado depois, já na aba Liberadas, quando o motorista termina de conferir. Sistema separado do restante do GBS/MNS — login e banco próprios. Stack: HTML/CSS/JS puro (sem build) + Supabase (banco + login) + deploy estático na Vercel.查看完整 README ↗
Sistema para o ponto de retirada: motorista chega, é anotado na Fila (nome + número da saca), sai pra escanear em outro app, volta e alguém confirma em Liberar se ele levou ou recusou a saca. Pacote faltante é reportado depois, já na aba Liberadas, quando o motorista termina de conferir. Sistema separado do restante do GBS/MNS — login e banco próprios.
Stack: HTML/CSS/JS puro (sem build) + Supabase (banco + login) + deploy estático na Vercel.
index.html — a página única do app (login + as 6 abas).app.js — toda a lógica, incluindo as chamadas ao Supabase.config.js — o único arquivo que você precisa editar para ligar o app ao seu projeto Supabase.sql/schema.sql — cria as tabelas, os índices e as regras de acesso (RLS) no Supabase.Crie uma conta/projeto em supabase.com (plano free serve).
No painel do projeto, abra SQL Editor > New query, cole o conteúdo de
sql/schema.sql e rode. Isso cria as tabelas usuarios_sacas, motoristas,
roster, fila e registros, já com a segurança (RLS) configurada.
Em Project Settings > API, copie a Project URL e a anon public key.
Abra config.js e cole os dois valores:
window.GESTAO_SACAS_CONFIG = {
supabaseUrl: "https://xxxxxxxx.supabase.co",
supabaseAnonKey: "eyJhbGciOi..."
};
A anon key é pública por natureza (todo app Supabase client-side expõe ela) — quem protege os dados é a regra de RLS do schema, que só libera quem tem login. Não tem problema esse arquivo ir pro GitHub.
O Supabase Auth exige e-mail, mas a tela de login do app só pede um usuário —
o app.js completa sozinho com o domínio fixo @gestaosacas.local antes de mandar
pro Supabase (isso é só uma formalidade técnica, não é um e-mail real). A tabela
usuarios_sacas diz quem é gestor. Repita para cada pessoa:
Authentication > Users > Add user — em e-mail, coloque
[email protected] trocando usuario pelo nome de login que a pessoa
vai digitar (ex.: [email protected] pro usuário ponto1). Defina uma
senha. Marque "Auto Confirm User" — sem isso o Supabase espera uma
confirmação por e-mail que nunca vai chegar, porque o endereço não existe de
verdade.
Copie o User UID que aparece na lista.
No SQL Editor, rode um insert pra esse UID:
insert into usuarios_sacas (id, nome, perfil) values
('cole-o-uuid-aqui', 'Nome da pessoa', 'operador'); -- ou 'gestor'
Quem é 'gestor' também enxerga a aba Relatórios; 'operador' só vê o
dia a dia (Fila, Liberar, Liberadas, Recusadas, Lista). No login do app, a pessoa
digita só ponto1 (sem o @gestaosacas.local) — isso é adicionado por trás dos
panos.
Se um dia quiser trocar o domínio fixo, é só editar a constante AUTH_DOMAIN no
topo do app.js — mas troque antes de criar os usuários, senão os e-mails já
cadastrados não batem mais.
Não precisa de servidor especial — qualquer servidor estático funciona, por exemplo:
npx serve .
Ou abra index.html direto no navegador (funciona também, já que não há build).
cd gestao-sacas
git init
git add .
git commit -m "Gestão de Sacas — versão inicial"
git branch -M main
git remote add origin https://github.com/SEU-USUARIO/gestao-sacas.git
git push -u origin main
Nos módulos antigos do GBS/MNS o padrão é desligar o RLS e controlar o acesso só pela
tela de login do app. Aqui o login é de verdade (Supabase Auth), então o schema.sql
deixa o RLS ligado, com uma política simples por tabela: "usuário autenticado pode
tudo". Isso fecha a porta pra quem não tem login (a anon key sozinha não abre nada),
sem criar regra por linha que possa travar alguém em silêncio.
operador — não é uma
barreira de segurança separada (as mesmas linhas de registros que aparecem em
Liberadas/Recusadas alimentam o relatório). Se isso precisar virar proteção de
verdade um dia, dá pra mover a agregação pra uma function no Supabase.fetchAll) em vez de confiar no limite implícito
do Supabase — o mesmo problema de corte silencioso em 1000 linhas que já pegou outros
módulos do GBS/Exata foi evitado de propósito aqui.