Synaplan
开源 AI 软件平台,面向企业:自托管 AI 代理,符合 GDPR 的聊天机器人小部件,RAG 知识库,WhatsApp 与 Outlook AI,MCP,多模型路由。支持 Docker、Kubernetes 或在 Germ 托管。
AI 翻译
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证Hospital operations control tower · Hastane operasyonları için kapasite, sevk ve vardiya yönetimi | Live demo: klinorbis.ekremalan.chatgpt.site
翻译准备中
取自仓库 README
正在加载完整 README。
查看完整 README ↗KLINORBIS is a hospital-operations control tower running on vinext, Cloudflare Workers, D1 and Drizzle. It combines unit-scoped work queues with continuous capacity, system-to-system transfer, shift/handoff and scheduled reporting workflows.
The current deployment is an explicitly labelled, identity-free pilot. It can automatically issue an operational capacity pre-acceptance, a reasoned capacity rejection or an alternative-campus routing decision. It does not make clinical suitability, diagnosis or treatment decisions and does not claim that an HBYS, PBX or external n8n server is connected when it is not.
>=22.13.0flock, curl, and GNU timeoutThe Sites lifecycle CLI runs the locked dependency install before returning this checkout. Edit the source under app/, then checkpoint when a coherent milestone is ready to inspect or share. The remote Sites builder runs npm run build against the pushed commit. Do not repeat install or build as a normal pre-checkpoint step.
This starter does not use wrangler.jsonc.
install:ci is intentionally a single, non-retrying npm ci. It refuses a concurrent install for the same project, consumes a matching image-seeded npm cache with --prefer-offline while retaining registry fallback for a missing cache object, otherwise downloads and verifies the complete vinext tarball recorded in package-lock.json, limits npm to one socket, and terminates a stalled install. build applies a short timeout and then validates the Sites artifact. These helpers target Linux and use GNU timeout; they are not native macOS scripts.
Scripts that need writable project-scoped home, npm, XDG, and temporary paths use scripts/sites-env.sh. The dev and start scripts honor the caller's runtime environment and keep Wrangler logs inside the checkout. The generated .sites-runtime/ directory is disposable and ignored by Git.
lib/control-tower.tsdb/schema.tslib/operations.tsapp/app/api/reports/export/app/chatgpt-auth.ts provides optional dispatch-owned ChatGPT sign-in helpers.openai/hosting.json declares optional Sites D1 and R2 bindingsvite.config.ts simulates declared bindings for local developmentdb/index.ts reads the D1 binding from the Cloudflare Worker environmentdrizzle.config.ts supports local migration generation when neededOpenAI workspace sites can read the current user's email from
oai-authenticated-user-email.
SIWC-authenticated workspace sites may also receive
oai-authenticated-user-full-name when the user's SIWC profile has a non-empty
name claim. The full-name value is percent-encoded UTF-8 and is accompanied by
oai-authenticated-user-full-name-encoding: percent-encoded-utf-8.
Treat the full name as optional and fall back to email when it is absent:
import { headers } from "next/headers";
export default async function Home() {
const requestHeaders = await headers();
const email = requestHeaders.get("oai-authenticated-user-email");
const encodedFullName = requestHeaders.get("oai-authenticated-user-full-name");
const fullName =
encodedFullName &&
requestHeaders.get("oai-authenticated-user-full-name-encoding") ===
"percent-encoded-utf-8"
? decodeURIComponent(encodedFullName)
: null;
const displayName = fullName ?? email;
// ...
}
Import the ready-to-use helpers from app/chatgpt-auth.ts when the site needs
optional or required ChatGPT sign-in:
getChatGPTUser() for optional signed-in UI.requireChatGPTUser(returnTo) for server-rendered pages that should send
anonymous visitors through Sign in with ChatGPT.chatGPTSignInPath(returnTo) and chatGPTSignOutPath(returnTo) for
browser links or actions.returnTo path for the destination after sign-in
or sign-out. The helper validates and safely encodes it.export const dynamic = "force-dynamic" because
they depend on per-request identity headers.Dispatch owns /signin-with-chatgpt, /signout-with-chatgpt, /callback, the
OAuth cookies, and identity header injection. Do not implement app routes for
those reserved paths. Routes that do not import and call the helper remain
anonymous-compatible.
SIWC establishes identity only; it does not prove workspace membership. Use the Sites hosting platform's access policy controls for workspace-wide restrictions, or enforce explicit server-side membership or allowlist checks.
Use SIWC for account pages, user-specific dashboards, saved records, and write actions tied to the current ChatGPT user. Leave public content anonymous.
npm run install:ci: perform the one bounded lockfile installnpm run dev: start the Vite/Vinext development servernpm run build: build and validate the deployable Sites artifactnpm run start: start the built Vinext applicationnpm test: build, validate, and verify the rendered development-preview metadatanpm run validate:artifact: recheck an existing artifact's manifest and ESM default.fetch exportnpm run db:generate: generate Drizzle migrations after schema changesUse build and validation commands for targeted diagnosis after a remote failure, not as part of the normal checkpoint path.
The timeout defaults can be overridden for a controlled canary with SITES_INSTALL_TIMEOUT, SITES_INSTALL_KILL_AFTER, SITES_BUILD_TIMEOUT, and SITES_BUILD_KILL_AFTER. A timeout fails the command; the helpers never retry an unchanged install or build.