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.