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) |