Synaplan
開源 AI 平台,供企業使用:自行託管的 AI 代理、符合 GDPR 的聊天機器人小工具、RAG 知識庫、WhatsApp 與 Outlook AI、MCP、多模型路由。Docker、Kubernetes 或託管於 Germ
AI 翻譯
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證正在載入完整 README。 以下為已儲存的摘錄。
A static peer review form. GitHub Pages serves this folder directly from main — there is no build step.
Opening index.html as a file shows the layout, but most browsers block the JavaScript modules, so the questions stay blank. Serve the folder instead:
Then open http://localhost:8000. The published GitHub Pages site loads the form the same way.檢視完整 README ↗A static peer review form. GitHub Pages serves this folder directly from main — there is no build step.
Opening index.html as a file shows the layout, but most browsers block the JavaScript modules, so the questions stay blank. Serve the folder instead:
python3 -m http.server
Then open http://localhost:8000. The published GitHub Pages site loads the form the same way.
The page is split in two. The left side is the questionnaire. The right side shows a reference PDF: drop a .pdf file on the panel, or use Choose PDF. The file stays in this browser and is not uploaded. Replace and Remove sit above the document. A reload clears the PDF. On a phone the two panels stack, with the questionnaire on top. Each panel scrolls on its own.
Answers are saved in the browser (localStorage) as you type and restored on reload. Submit shows a summary you can copy and, once Google Drive is set up, saves a copy there. Clear erases the answers in this browser. It does not delete Drive files.
index.html — page shell: questionnaire on the left, reference PDF panel on the rightadmin.html — password-protected list of Drive submissionssrc/questions.js — the four fixed sections, plus the incident templatesrc/app.js — draws the form, saves answers in the browser, and submits to Drivesrc/admin.js — the admin page (reviews and submissions)src/prep.js — the screen where a review is preparedsrc/config.js — the Apps Script web app URL and the public review-link prefixsrc/drive.js — sends requests to the web appsrc/pdfjs.js — loads PDF.js from jsDelivr (version 6.4.299)src/style.css — layout and stylingapps-script/Code.gs — the script to deploy from your Google account. GitHub Pages does not run itpackage.json and src/index.js — leftover Node starter files. The website does not use themOpen src/questions.js. The four sections that are always shown are the segments list. Each segment has a title and a questions list.
Incident questions live once, in incidentTemplate. A review chooses how many copies to show (0 to 10). On the plain page, with no review link, use Add incident and Remove incident. Each copy is titled Peer Review - Incident 1, 2, and so on. Ids look like incident1.patientName, so the copies stay separate.
Each question needs:
id — a unique name. Answers are saved under this id, so do not reuse one. Incident copies add the number for you (incident1.patientName)label — the text shown on the formtype — one of text, textarea, date, select, rating, yesNoNa, or radioFor a dropdown, set type to "select" and add options, for example ["Open", "In Progress", "Completed"].
A rating question is 1 to 5. Set min and max on that question for a different scale.
A yesNoNa question shows Yes, No, and N/A as radio buttons on one row. A radio question is the same row with your own options, for example ["Difficult", "Average"]. Set number to show that number in front of the label.
A textarea starts at 4 rows. Set rows to make it taller.
Set width to "half" to place a short field beside the next half-width field when the section is wide. Leave it off for a full-width field. A narrow section stacks every field in one column.
You can add a placeholder string for hint text inside a text field, and a note string on a segment for a short line under its title.
Save the file and refresh the page. Answers already saved in the browser stay put unless you click Clear or change a question's id.
Submissions are saved by a Google Apps Script web app in your Google account. The website itself stays a static page.
apps-script/Code.gs.ADMIN_PASSWORD. Set the value to the admin password. The current 4-digit password keeps working. Before real reviews, change it to a longer password. Do not put that password in this repo. Turn on 2-step verification for the Google account that owns the script./exec) into src/config.js as APPS_SCRIPT_URL.The script keeps a peerapp index.json file in peerapp submissions so the admin page can list reviews and submissions without opening every file. The index file id is stored in script properties, and the index and each review stay in Apps Script cache for six hours. The latest 150 submissions are stored in that index, answers included, so opening one does not read Drive again. Each review PDF is stored as separate chunk files in its own folder under peerapp reviews. Drive files stay private to your account.
Code.gs changed again for faster admin saves and for the six-hour cache. Paste the new file over the script, then redeploy with Deploy > Manage deployments > edit (pencil) > New version. That keeps the same /exec URL already in src/config.js. Leave ADMIN_PASSWORD as it is. Reviews saved before the chunked-PDF change need to be created again; opening one shows "This review needs to be re-saved". Older reviews with no access-code field stay open and usable with the link alone.
Until APPS_SCRIPT_URL is filled in, Submit still shows the on-page summary and says Drive is not set up, and the admin page says it is not configured.
K7QM-W2XR-9DPA. Leave it empty only if you accept the warning that the link alone opens the PDF. Close review stops subject access until you Reopen review.https://g1e-e.github.io/peerapp/?review= followed by a long id. If the review has an access code, copy that too and send it separately from the link. The subject enters the code before the review name or PDF loads. The code is not put in the link.Someone who opens the site without ?review= can still drop a PDF locally. Subjects should use the link they were sent. Their answers are stored in the browser separately for each review. A subject access code stays in that tab only (sessionStorage). The admin password is exchanged for a session token that also stays in that tab and expires after two hours away.
Protected:
localStorage, IndexedDB, or the Cache API.index.html and admin.html send no referrer and ask crawlers not to index the pages.Keep private yourself: