Synaplan
開源 AI 平台,供企業使用:自行託管的 AI 代理、符合 GDPR 的聊天機器人小工具、RAG 知識庫、WhatsApp 與 Outlook AI、MCP、多模型路由。Docker、Kubernetes 或託管於 Germ
AI 翻譯
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗Web app per compilare i turni mensili dei dipendenti del comitato. Si apre da un link nel browser del computer, senza installare niente.
Con il back end attivo (Supabase, vedi docs/SETUP-SUPABASE.md) si entra con un account e i turni di ogni unità sono salvati online; senza, l'app funziona senza login con i dati nel browser.
Accesso utenti (con il back end attivo):
Accesso dei dipendenti (con il back end attivo):
Ambulanze e turni (scheda Impostazioni): ogni ambulanza ha un codice di 5 cifre e i suoi turni,
ciascuno con nome (es. GIORNO), sigla (es. G), ora di inizio e di fine e giorni della settimana
in cui è in servizio. Turnazione 24 ore imposta subito G 07–19 e N 19–07 tutti i giorni;
con + Turno si aggiungono fasce con orari diversi. Un turno che passa la mezzanotte conta come notte.
Senza modifiche c'è una sola ambulanza con G 07–19 e N 19–07 (come nelle versioni precedenti).
Visualizzazione con più ambulanze (scheda Impostazioni, sotto le ambulanze):
Tabellone mensile: una riga per dipendente e una colonna per giorno. Ogni casella può contenere:
G, N, G2);
con Maiusc+clic si aggiunge un turno a quelli già presenti nel giornoF: ferieM: malattiaP (mostrato come 104): permesso Legge 104 da 7,6 h, solo per i dipendenti con la 104 attivaR: richiesta di riposo, cioè il dipendente ha chiesto di non lavorare quel giorno (0 h);
la proposta automatica non mette mai turni in quel giornoC: formazione, con le ore indicate nel campo accanto al pulsantePeriodi: con Inserisci un periodo, sopra il tabellone, metti in un colpo solo una richiesta di riposo, ferie o malattia dal giorno X al giorno Y per un dipendente.
Inserimento veloce: scegli cosa inserire e clicca (o trascina) sulle caselle. Da tastiera ti muovi con le frecce e scrivi con la sigla di un turno di una lettera (es. G N) o con F M P R C (Canc cancella, Ctrl+Z annulla).
Vincoli controllati in tempo reale, con le caselle in errore evidenziate in rosso:
N seguita da una G il giorno dopo, né G e N nello stesso giorno.G G N N occupa 5 giorni: dal primo G al mattino dopo l'ultima N). Vale anche a cavallo tra due mesi
e il numero si cambia in Impostazioni. Ferie, riposi e formazione interrompono la serie.C) il giorno X,
un turno di notte del giorno prima (che finisce il giorno X) non è ammesso;104 · 2/3).Regole da evitare (superabili solo se non c'è alternativa, caselle in arancione):
G G N o G N N;Equilibrio: le colonne Notti e Weekend mostrano quanti ne ha fatti ciascuno. Il valore è evidenziato quando si discosta troppo dalla media, calcolata in proporzione al contratto.
Monte ore mensile per ogni dipendente:
Accanto al monte ore trovi le ore fatte e il saldo (+/−). Si può impostare anche un orario settimanale diverso, a scelta.
Copertura: sotto il tabellone, una riga per ogni turno di ogni ambulanza con quante persone ci sono
(2 richieste per turno, modificabile in Impostazioni); in rosso se mancano persone o l'autista,
– nei giorni in cui il turno non è previsto.
Volontari generici: cliccando un numero della copertura si mettono nel turno uno o più volontari senza nome,
autista soccorritore o soccorritore (sotto il numero compare per esempio 2V). Contano per la copertura e per
l'autista richiesto, la proposta automatica non mette dipendenti dove bastano, non hanno ore. In Excel compaiono come
VOL. AUTISTA / VOLONTARIO, nei turni pubblicati in una riga Volontari. Reset completo li toglie.
Proposta automatica: riempie i turni scoperti di tutte le ambulanze, nei giorni previsti,
senza toccare quelli già inseriti.
Rispetta sempre i vincoli e dà la precedenza a chi è più indietro con il monte ore.
In ogni turno mette prima un autista soccorritore e poi, se possibile, un soccorritore,
così gli autisti restano disponibili per gli altri turni.
Pianifica prima i weekend, poi i giorni feriali.
Cerca di formare blocchi G G N / G N N, di far lavorare la stessa persona sabato e domenica
e di distribuire notti, weekend e ore in modo equo. Poi prova a migliorare il mese con degli scambi
tra dipendenti. Supera le regole da evitare solo quando non c'è alternativa e lo segnala.
Turni bloccati 🔒: con lo strumento blocca (tasto L) blocchi le caselle che hai sistemato a mano. Il lucchetto accanto al nome blocca tutto il mese di un dipendente, Blocca mese blocca tutto. Una casella bloccata, anche vuota, non viene mai cambiata dalla proposta automatica né dal Reset completo, e non si modifica per sbaglio: va prima sbloccata.
Turni a mano e turni automatici: l'app ricorda quali turni ha inserito la proposta automatica (mostrati in corsivo) e quali hai scritto tu (normali). Se modifichi a mano un turno automatico, diventa tuo.
Stampa (A4 orizzontale).
Turni nel calendario (Google Calendar, iPhone, Outlook): file .ics con i turni del mese
(con orari e ambulanza; le notti finiscono il giorno dopo; la formazione come evento di tutto il giorno).
Esporta Excel: scarica il Tabellone turni in formato .xlsx, con lo stesso aspetto
di quello del comitato: logo e titolo, un gruppo di colonne per ogni turno di ogni ambulanza
(GIORNO | 12345, NOTTE | 12345, …; UR se il codice non è impostato), Note, EXTRA,
FORMAZIONE, MANIFESTAZIONI, ASSENZE, weekend in verde, pronto da stampare su A4 orizzontale.
Con una sola ambulanza 24 ore il foglio è identico al modello.
BETTEGA GI., BETTEGA CH.).Backup: i dati stanno nel browser. Con Scarica backup / Carica backup li salvi o li sposti su un altro computer.
L'app è online su https://turni-ambulanza.vercel.app.
In alternativa basta aprire index.html con un doppio clic.
Il sito è pubblicato da Vercel: a ogni modifica sul ramo di produzione viene aggiornato da solo, e per ogni pull request Vercel crea un'anteprima da provare prima di unirla. Non serve nessuna build: Vercel pubblica i file così come sono.
Con l'accesso utenti attivo (Supabase) i turni sono salvati online, separati per unità; senza, restano solo nel browser di chi usa l'app. Non caricare nel repository i file di backup (
turni-backup-….json), perché contengono i dati veri.
Si apre lo stesso link dal browser del telefono; la pagina si adatta allo schermo:
F M P R C, cancella e blocca;Non ci sono dipendenze né build: è HTML, CSS e JavaScript semplici.
npm test # test delle regole (Node 18+), eseguiti anche da GitHub Actions a ogni push
npm start # server locale su http://localhost:8080
js/rules.js: calcolo ore, vincoli e proposta automatica (senza DOM, testato)js/app.js: interfaccia del tabellonejs/requests.js: richieste dei dipendenti nel tabellone e copia pubblicata del mese (senza DOM, testato)js/staff.js: schermata del dipendente (turni pubblicati e richieste)js/ics.js: file di calendario .ics dei turni (senza DOM, testato)js/auth.js, js/config.js: accesso, registrazione, amministrazione e salvataggio online (Supabase);
js/vendor/supabase.min.js è supabase-js 2.45.4 (licenza MIT)api/admin-invite.js: funzione Vercel per l'inserimento manuale degli utenti (usa la chiave service_role)api/notify.js: funzione Vercel per le mail ai dipendenti (pubblicazione, richieste non accolte, riposi annullati da un 104), con
nodemailer (licenza MIT-0)supabase/schema.sql: tabelle e regole di sicurezza del database; supabase/test/ le prove su un Postgres locale:
psql -f supabase/test/mock_auth.sql -f supabase/schema.sql -f supabase/test/schema_test.sqljs/export-xlsx.js: tabellone in Excel; js/vendor/exceljs.min.js è ExcelJS 4.4.0 (licenza MIT)tests/rules.test.js: test delle regole; tests/requests.test.js: richieste e pubblicazione; tests/ics.test.js: calendarioR / 104 sottolineate (anche al posto di
turni messi dalla proposta automatica), e la proposta automatica le rispetta. Le richieste per un solo turno
compaiono come un piccolo segno ⌂G / ⌂N nella casella: si tolgono i turni automatici di quella parte e la
proposta automatica non ne mette altri. Se in quel giorno c'è già un turno
scritto a mano, la richiesta resta in sospeso e compare nei Controlli con Rifiuta la richiesta; se il
referente cambia a mano una casella che veniva da una richiesta, l'app chiede se rifiutarla. Nella finestra di
rifiuto si sceglie "Devo informare il dipendente?": se sì, si scrive la motivazione e il dipendente riceve una
mail con i giorni non accolti e il motivo.