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.