Synaplan
开源 AI 软件平台,面向企业:自托管 AI 代理,符合 GDPR 的聊天机器人小部件,RAG 知识库,WhatsApp 与 Outlook AI,MCP,多模型路由。支持 Docker、Kubernetes 或在 Germ 托管。
AI 翻译
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证正在加载完整 README。 以下为已保存的摘录。
Internal HR system for Koolman — multi-branch car-window-film business.
Stack: Next.js 16 + React 19 + TypeScript · Tailwind 4 · Prisma 6 · Supabase (Postgres + Auth + Storage + Realtime) · Inngest · LINE LIFF + Messaging API · Vercel.
Full layout in docs/v2/architecture.md.
• docs/v2/README.md — active engineering plan
• docs/v2/architecture.md — locked decisions, schema, auth model
• docs/v2/build-plan.md — week-by-week with tests + DoD
• docs/v2/oidc-verification.md — LINE × Supabase OIDC verification (Stage 1 + 2 PASS)
• docs/v1/ — historical reference (pre-pivot)查看完整 README ↗Internal HR system for Koolman — multi-branch car-window-film business.
Stack: Next.js 16 + React 19 + TypeScript · Tailwind 4 · Prisma 6 · Supabase (Postgres + Auth + Storage + Realtime) · Inngest · LINE LIFF + Messaging API · Vercel.
# 1. install deps (pnpm 10 required)
pnpm install
# 2. copy env template
cp .env.example .env.local
# fill in values from docs/v2/credentials.local.md (gitignored)
# 3. (later — when Prisma schema lands in W1c) apply migrations
pnpm db:deploy
# 4. dev server
pnpm dev
# → http://localhost:3000
.
├── docs/ # all planning + design docs (v1 + v2)
│ └── v2/ ← current plan
├── prisma/ # Prisma schema, migrations, seed (W1c)
├── public/ # static assets, Thai fonts
├── src/
│ ├── app/ # Next.js App Router
│ │ ├── (auth)/ ← W1b
│ │ ├── (admin)/ ← W2
│ │ ├── (owner)/ ← W5
│ │ ├── (liff)/ ← W3
│ │ └── api/ ← webhooks, cron
│ ├── components/ # shared UI (shadcn primitives go here in W2)
│ ├── lib/ # supabase helpers, audit, i18n, line, etc.
│ └── server/ # server actions, services, repositories
├── tests/
│ ├── unit/ # Vitest
│ └── e2e/ # Playwright
└── tools/
└── oidc-smoke/ # one-off Stage 2 OIDC verification — ✅ PASS
Full layout in docs/v2/architecture.md.
docs/v2/README.md — active engineering plandocs/v2/architecture.md — locked decisions, schema, auth modeldocs/v2/build-plan.md — week-by-week with tests + DoDdocs/v2/oidc-verification.md — LINE × Supabase OIDC verification (Stage 1 + 2 PASS)docs/v1/ — historical reference (pre-pivot)| Command | What it does |
|---|---|
pnpm dev | Next.js dev server |
pnpm build | Production build |
pnpm start | Production server (after build) |
pnpm lint / pnpm lint:fix | Biome lint (read / write) |
pnpm format | Biome format |
pnpm typecheck | tsc --noEmit |
pnpm test | Vitest unit run |
pnpm test:watch | Vitest watch mode |
pnpm test:coverage | Vitest unit run + coverage (src/lib) |
pnpm test:integration | Vitest integration run (needs koolman_test DB — see TESTING.md) |
pnpm test:e2e | Playwright e2e |
pnpm db:generate | Prisma client codegen |
pnpm db:migrate | Prisma migrate dev |
pnpm db:deploy | Prisma migrate deploy (CI / prod) |
pnpm db:studio | Prisma Studio GUI |
pnpm db:seed | Seed dev database |
pnpm db:reset | Reset + re-migrate (no seed) |
| Tool | What | When it runs |
|---|---|---|
| Biome 2 | Lint + format (JS/TS/JSON) | pnpm lint, pnpm lint:fix; auto on commit via lint-staged |
| TypeScript strict | Type-check (noUncheckedIndexedAccess, etc.) | pnpm typecheck; on every build |
| Vitest | Unit + integration tests | pnpm test, pnpm test:integration |
| Playwright | E2E (full-stack) | pnpm test:e2e (auto-starts dev server) |
| Next build | Full build smoke | pnpm build |
Pre-commit hook auto-runs Biome on staged files only (sub-second). Bypass with SKIP_SIMPLE_GIT_HOOKS=1 git commit ... if you really need to commit through a lint failure (e.g. WIP after a debug session).
CI runs lint + typecheck + unit + integration in parallel, then build, on every push and PR (.github/workflows/ci.yml).
See TESTING.md for the full three-tier model (unit / integration /
e2e), what belongs in each, the koolman_test DB setup, and coverage.
/liff/pair): LINE OIDC → Supabase → atomic User-bind/admin/attendance/disputed): review + Approve/Reject with required note/admin/attendance/live): Supabase Realtime + 30s polling fallback/admin/settings/leave-types)/liff/leave + new + detail with cancel)/admin/leave) + approve expands to Attendance(OnLeave) rows in one tx/liff/advance + /admin/advance — receipt photo upload deferred to W4-late)