Synaplan
开源 AI 软件平台,面向企业:自托管 AI 代理,符合 GDPR 的聊天机器人小部件,RAG 知识库,WhatsApp 与 Outlook AI,MCP,多模型路由。支持 Docker、Kubernetes 或在 Germ 托管。
AI 翻译
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证正在加载完整 README。 以下为已保存的摘录。
App web (PWA) para precificar serviços de estética automotiva. Sem backend, sem banco de dados: todos os dados ficam salvos no localStorage do próprio navegador/celular. O Service Worker exige um servidor (não funciona abrindo o arquivo direto): Depois abra http://localhost:8080 no computador ou no celular (mesma rede Wi-Fi).查看完整 README ↗
App web (PWA) para precificar serviços de estética automotiva.
Sem backend, sem banco de dados: todos os dados ficam salvos no localStorage do próprio navegador/celular.
O Service Worker exige um servidor (não funciona abrindo o arquivo direto):
cd Precifica-Est-tica
python3 -m http.server 8080
Depois abra http://localhost:8080 no computador ou no celular (mesma rede Wi-Fi).
Depois de instalado, o app abre em tela cheia, com ícone próprio, e funciona offline.
O próprio app tem essas instruções em Ajustes → Como instalar no celular, detectando sistema e navegador (obterInstrucoes() em app.js).
O Service Worker busca a rede primeiro e usa o cache só como reserva — assim o app instalado não fica preso numa versão antiga, mas continua abrindo sem internet.
Para detectar uma versão nova, o app usa dois sinais:
app.js publicado (ETag ou Last-Modified, lida com HEAD + no-store) — pega qualquer deploy, mesmo os que não mexem no sw.js;A verificação roda ao abrir o app, ao voltar para o primeiro plano e a cada hora aberto. Quando acha algo novo, aparece a barra "Nova versão disponível / Atualizar"; um toque recarrega com os arquivos novos (os dados salvos não se perdem).
Ajustes → Versão do app mostra a data da versão em uso e, ao tocar, procura atualização na hora.
Ao mexer no app, suba a versão do cache em
sw.js(const CACHE = 'precifica-estetica-vN') para que os caches antigos sejam descartados.
É só HTML/CSS/JS estático. Este projeto é publicado na Vercel a partir da branch main — todo push no main gera um deploy, e cada pull request ganha uma URL de preview. Também funcionaria em Netlify ou GitHub Pages.
Publicar não muda o "sem banco de dados": os dados continuam salvos só no aparelho de quem acessa. Para trocar de aparelho, use Ajustes → Backup dos dados (exportar/importar arquivo).
index.html — estrutura das telasstyles.css — visual mobile-first; tema claro por padrão e escuro automático conforme o sistemaapp.js — cálculo, persistência (localStorage), telas e atualização do PWAmanifest.json + sw.js — instalação e funcionamento offlineicons/ — ícones do app:
icon-192.png, icon-512.png — ícone normal (purpose: any)icon-maskable-512.png — versão que o Android recorta em círculo/losango, com a arte dentro da área seguraapple-touch-icon.png — 180×180, usado pelo iPhoneicone-fonte.svg — desenho fonte; edite este arquivo para gerar os PNGs de novo| Tela | O que faz |
|---|---|
| Contas fixas | despesas mensais + dias/mês e horas/dia → custo fixo por hora |
| Produtos e insumos | o que você compra (quantidade e valor pago) → custo por ml/g/unidade |
| Taxas e margem | taxa da maquininha, comissão, imposto e margem desejada |
| Serviços precificados | resultado: custo, preço mínimo, preço sugerido e lucro real |
| Ajustes | backup, tutorial, instalação, versão do app |
Na primeira vez o app roda essas telas como um passo a passo guiado (ORDEM_PASSOS em app.js).
custo fixo do serviço = tempo × custo fixo por hora.deduções = taxa + (1 − taxa) × comissão + imposto.custo total ÷ (1 − deduções) — o preço em que o recebido empata com o custo. Cobrar só o custo dá prejuízo, porque as taxas saem antes.custo total ÷ (1 − margem desejada − deduções) — assim a margem pedida sobra depois das taxas, e não é comida por elas.lucro ÷ valor cobrado).lucro total ÷ faturamento total — ponderada, não a média simples dos percentuais (que daria o mesmo peso a um serviço de R$ 80 e a um de R$ 450).O app não guarda distância no cadastro do serviço: km é característica do cliente e do atendimento, não do serviço — o mesmo "Lavagem Detalhada" pode ser feito na sua oficina ou a 20 km dali.
Quando houver deslocamento, lance o valor da viagem (combustível + desgaste) em "Outros produtos/custos" do serviço naquele orçamento.