Synaplan
開源 AI 平台,供企業使用:自行託管的 AI 代理、符合 GDPR 的聊天機器人小工具、RAG 知識庫、WhatsApp 與 Outlook AI、MCP、多模型路由。Docker、Kubernetes 或託管於 Germ
AI 翻譯
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證正在載入完整 README。 以下為已儲存的摘錄。
Internal management system for Sushi ZEN restaurants (Dubai 5 branches, Manila 4 branches + Central Kitchen).
Covers shift scheduling, attendance, procurement, inventory, payroll, and P&L.
Live app: https://sushizen-shift-pwa.vercel.app
API backend: https://sushizen-shift-app-038d846023bc.herokuapp.com
Never read main.py or db.py in full. Use grep and read only the ±50 lines you need.
Prerequisites
• Node.js 20+
• Python 3.12+ (for backend only)
• Heroku CLI: brew install heroku/brew/heroku
• Git access to both repos檢視完整 README ↗Internal management system for Sushi ZEN restaurants (Dubai 5 branches, Manila 4 branches + Central Kitchen).
Covers shift scheduling, attendance, procurement, inventory, payroll, and P&L.
Live app: https://sushizen-shift-pwa.vercel.app
API backend: https://sushizen-shift-app-038d846023bc.herokuapp.com
| Module | What it does |
|---|---|
| Shift scheduling | HQ drafts weekly shifts; staff view via /week |
| Attendance (DTR) | Time-in/out with GPS or WebAuthn passkey |
| Procurement | Store → CK → supplier order flow with approval chain |
| Daily Inventory | Kitchen daily count with par-level alerts and order generation |
| Payroll | Monthly salary computation with NSD/OT/deduction breakdown |
| P&L | Management P&L dashboard linking labor cost to target |
| NTE / Conduct | Notice-to-Explain issuance with legal schema (PH Labor Code / UAE Art.39/44) |
| CCTV integration | Tapo camera feed ingest (Jetson Orin Nano — in planning) |
sushizen-shift-pwa/ ← This repo (Next.js 15 App Router)
src/app/ ← Pages (all "use client")
src/components/ ← Shared components
src/lib/ ← Utilities, auth, UI tokens
sushizen_shift_app_clean/ ← Backend (Python FastAPI on Heroku) — separate repo
app/main.py ← All API routes (~31,500 lines)
app/db.py ← All DB functions (~45,700 lines)
Never read
main.pyordb.pyin full. Use grep and read only the ±50 lines you need.
brew install heroku/brew/herokugit clone [email protected]:freestyler2026/sushizen-shift-pwa.git
cd sushizen-shift-pwa
npm install
Create .env.local in the project root:
NEXT_PUBLIC_API_BASE_URL=https://sushizen-shift-app-038d846023bc.herokuapp.com
Start dev server:
npm run dev
# Open http://localhost:3000
Login with: Yukihiro Nishimura (role: HQ)
PIN is stored separately — ask the system owner or check 1Password.
heroku git:remote -a sushizen-shift-app # add Heroku remote to existing clone
The backend DATABASE_URL and all service account keys are set as Heroku config vars.
For local development, copy them from: heroku config -a sushizen-shift-app
pip install -r requirements.txt
DATABASE_URL=<from heroku config> uvicorn app.main:app --reload
cd sushizen-shift-pwa
git add -A && git commit -m "description"
git push origin HEAD:main
# Vercel auto-deploys within ~1 minute
cd sushizen_shift_app_clean
git add -A && git commit -m "description"
git push heroku HEAD:master --force
# Heroku deploy takes ~2-3 minutes
heroku logs -a sushizen-shift-app -n 200 --tail
Vercel Dashboard → Deployments → find the last working deploy → "Promote to Production"
(Do NOT use git reset — Vercel is the source of truth for production.)
git log --oneline -10 # find the commit hash
git push heroku <hash>:master --force
heroku logs -a sushizen-shift-app -n 200 --tail
heroku dyno:restart -a sushizen-shift-app # restarts all dynos
The DB is Heroku Postgres Essential (~25 connection limit).
If you see too many connections, restart the dyno — it drops all open connections.
heroku pg:psql -a sushizen-shift-app # connect to DB directly
heroku pg:backups -a sushizen-shift-app # list backups
heroku pg:backups:capture -a sushizen-shift-app # take a manual backup
Check Vercel Dashboard → Deployments → click the failed deploy → "Build Logs".
Common causes: TypeScript error, missing env var, import cycle.
| Page | File | Risk |
|---|---|---|
/week | src/app/week/page.tsx | Staff shift viewer — breaking this affects all staff daily |
/admin/draft | src/app/admin/draft/page.tsx | 2,500-line schedule editor — extremely fragile |
Any change to these files must be tested end-to-end before push.
src/lib/ui-tokens.ts — do not write raw Tailwind class strings in pages.apiFetch() in src/lib/api.ts — never pass ${API_BASE} in the path (it prepends automatically).localStorage["sushizen_shift_auth"] — see src/lib/auth.ts.cur.fetchone()[0] — use row.get("column_name") (RealDictCursor returns dicts, not tuples).get_conn() / conn.close()) to avoid transaction abort propagation.| Role | Name |
|---|---|
| System owner / developer | Yukihiro Nishimura ([email protected]) |
For full credentials and access handover, see the 1Password note: Sushi ZEN — System Handover