Synaplan
開源 AI 平台,供企業使用:自行託管的 AI 代理、符合 GDPR 的聊天機器人小工具、RAG 知識庫、WhatsApp 與 Outlook AI、MCP、多模型路由。Docker、Kubernetes 或託管於 Germ
AI 翻譯
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證正在載入完整 README。 以下為已儲存的摘錄。
Aplikasi monitoring electrical (frontend HTML/JS + API PHP). Database: SQLite lokal saat dijalankan di XAMPP, Turso saat di-deploy ke Vercel — kodenya sama, driver dipilih otomatis dari environment variable. Script di assets/js sengaja berupa classic script (bukan ES module) supaya semua handler onclick="..." di HTML tetap berfungsi. Urutan pemuatan diatur di index.html. 1. Pastikan extension=pdo_sqlite aktif di php.ini (default XAMPP sudah aktif). 2. Salin .env.example → .env (biarkan DB_DRIVER=sqlite). 3. Buat tabel:檢視完整 README ↗
Aplikasi monitoring electrical (frontend HTML/JS + API PHP). Database: SQLite lokal saat dijalankan di XAMPP, Turso saat di-deploy ke Vercel — kodenya sama, driver dipilih otomatis dari environment variable.
index.html Markup halaman (tanpa JS/CSS inline)
assets/css/ Stylesheet
assets/js/core/ Utilitas, state global, UI (overlay/toast), klien API
assets/js/data/ Master equipment & store.js (cache lokal + sinkronisasi database)
assets/js/pages/ Dashboard, Monitor, Riwayat, Hierarki, Config, Finding, User Management
assets/js/features/ Checklist, sesi, Work Order, laporan PDF/PPTX, crew portal, dll.
assets/js/tools/ Tool admin (Data Recovery, Scan Big Error)
api/index.php Satu-satunya endpoint API (?r=route)
api/_lib/ Driver SQLite/Turso, skema, auth, repository
scripts/ CLI: migrate.php, import-sheets.php, import-xlsx.php, copy-to-turso.php
database/schema.sql Skema SQL lengkap (SQLite & Turso) — generate ulang: php scripts/dump-schema.php
database/*.db File SQLite lokal (tidak ikut git)
legacy/ Backup index.html monolith lama (boleh dihapus)
Script di assets/js sengaja berupa classic script (bukan ES module) supaya semua
handler onclick="..." di HTML tetap berfungsi. Urutan pemuatan diatur di index.html.
extension=pdo_sqlite aktif di php.ini (default XAMPP sudah aktif)..env.example → .env (biarkan DB_DRIVER=sqlite).D:\Xampp\php\php.exe scripts\migrate.php
Database baru otomatis berisi akun default admin / admin123. Setelah login,
buat admin sendiri di User Management, login dengan akun itu, lalu hapus akun admin
(tidak akan dibuat ulang selama masih ada user lain).D:\Xampp\php\php.exe scripts\import-sheets.php
User lama ikut terimport dan password-nya otomatis di-hash.
Atau dari ekspor .xlsx Google Sheets (menggabung tanpa menimpa data yang ada, backup otomatis):
D:\Xampp\php\php.exe scripts\import-xlsx.php --file=dbm.xlsx --dry-run # lihat laporan dulu
D:\Xampp\php\php.exe scripts\import-xlsx.php --file=dbm.xlsx
http://localhost/dailymonitoring/File database ada di database/dailymonitoring.db — bisa dibuka langsung dengan
DB Browser for SQLite. Folder ini diblokir dari akses
browser oleh .htaccess.
turso db create dailymonitoring
turso db show dailymonitoring --url → TURSO_DATABASE_URL
turso db tokens create dailymonitoring → TURSO_AUTH_TOKEN
Buat file .env.turso (tidak ikut git):
DB_DRIVER=turso
TURSO_DATABASE_URL=libsql://dailymonitoring-xxx.turso.io
TURSO_AUTH_TOKEN=eyJ...
Pindahkan data lokal (XAMPP) ke Turso — semua tabel (user, bagan organisasi, hierarki, sesi, RCA, perbaikan, WO, pengaturan) disalin; password user tetap sama:
php scriptscopy-to-turso.php --env=.env.turso
Jika Turso sudah berisi data, script menolak kecuali ditambah --force (isi Turso ditimpa).
File .db sendiri tidak di-push ke GitHub (repo publik & berisi hash password / nomor HP).
Atau mulai dari kosong: buat tabel, admin, dan (opsional) import data — dari komputer lokal:
php scripts\migrate.php --env=.env.turso --admin=admin --password=PasswordKamu
php scripts\import-sheets.php --env=.env.turso
Data Turso bisa dilihat lewat turso db shell dailymonitoring atau dashboard Turso.
Tanpa langkah migrate pun tabel akan dibuat otomatis saat request pertama, dan admin pertama bisa dibuat otomatis dengan mengisi
ADMIN_USERNAME/ADMIN_PASSWORD.
TURSO_DATABASE_URL, TURSO_AUTH_TOKEN.
Nama dengan prefix kustom dari integrasi (mis. STORAGE_TURSO_DATABASE_URL) juga dikenali.vercel.json sudah mengatur api/index.php memakai runtime [email protected].Cek koneksi: https://<project>.vercel.app/api/index.php?r=health
| Role | Wilayah | Menerima notifikasi (default) |
|---|---|---|
| Crew | per unit (Crew Portal hanya menampilkan unitnya) | — |
| Leader | per unit | WARNING & ALERT di unitnya |
| Supervisor | semua unit | WARNING & ALERT semua unit |
| Plant Manager | per unit | ALERT di unitnya |
POST {baseUrl}/message/sendText/{instance}, header apikey).Alur di Crew Portal: cek → ada temuan → 🔧 Perbaiki → atasan diberi tahu → ↻ Cek Lagi (verifikasi) → Leader menutup via RCA.
Crew boleh melanjutkan monitoring walau hasil monitoring sebelumnya belum diperbaiki:
monitoring_wos + monitoring_wo_findings (skema v7), ikut sinkronisasi delta.Untuk saat ini temuan daily monitoring ditutup langsung di aplikasi (ke depan semua temuan PM & daily monitoring diarahkan ke WO).
Hanya Leader ke atas yang bisa membuat/menutup RCA (crew ditolak di server).
| Tabel | Isi |
|---|---|
users, auth_tokens | Akun (password di-hash), wilayah, nomor WA & token login |
user_reports | Bagan organisasi: pasangan bawahan → atasan (satu user bisa punya beberapa atasan) |
notifications, settings, wa_logs | Notifikasi in-app per user, pengaturan Evolution API & aturan penerima, log WhatsApp |
units, areas, equipments, equipment_params | Hierarki Unit → Area → Equipment → Parameter (batas normal/alert) |
sessions, session_items | Sesi monitoring & nilai tiap parameter + status OK/WARNING/ALERT |
deleted_sessions | Catatan sesi yang dihapus (dipakai sinkronisasi antar perangkat) |
pics | Daftar PIC / teknisi |
rca_reports, rca_findings | Root Cause Analysis & daftar finding yang ditutup tiap RCA |
repairs, repair_findings | Laporan perbaikan crew & finding yang diperbaiki |
monitoring_wos, monitoring_wo_findings | WO Monitoring: temuan yang di-skip crew saat "Monitoring Lagi" + statusnya |
work_orders, work_order_items, work_order_logs | Work order, item checklist temuan, riwayat catatan |
counters, app_meta | Nomor revisi, nomor urut WO, versi skema |
v_findings (view) | Semua temuan WARNING/ALERT siap dibaca, beserta No. & status RCA-nya |
Database yang dibuat dengan skema lama otomatis di-upgrade saat API pertama kali dipakai
(atau jalankan php scripts/migrate.php).
saveAll() setelah mengubah data. store.js menyimpan
cache lokal lalu mengirim hanya entitas yang berubah ke POST ?r=push (atomik).GET ?r=sync&since=<rev> — hanya data dengan revisi lebih baru yang dikirim.crew tidak bisa mengubah hierarki/PIC atau menghapus sesi (ditolak di server).| Method | Route (api/index.php?r=) | Keterangan |
|---|---|---|
| GET | health | Status & driver database |
| POST | auth/login, auth/logout · GET auth/me | Login berbasis token (header X-Auth-Token) |
| GET | sync&since=&cursorId= | Tarik perubahan (paginasi 200 sesi) |
| POST | push | Simpan hierarki / PIC / sesi / hapus sesi / work order |
| POST | workorders/next-seq | Nomor urut WO global |
| GET/POST/PUT/DELETE | users | User management (admin) |
| PUT | users/org | Simpan bagan organisasi {links:[{username, reportsTo:[...]}]} (admin) |
| POST | notifications/read | Tandai notifikasi dibaca {ids:[...]} atau {all:true} |
| GET/PUT | settings/notifications | Pengaturan WhatsApp & aturan penerima (admin) |
| POST | settings/wa-test | Kirim pesan tes WhatsApp {phone} (admin) |