Lalabase
Tickets, Doku, Zeiterfassung und Kundengespräche an einem Ort, durchsuchbar per KI. Für Softwarefirmen mit Kundenprojekten. Open Source: auf deinem eigenen Server oder in unserer Cloud in Deutschland.
翻譯準備中
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證正在載入完整 README。 以下為已儲存的摘錄。
Рабочий скелет продукта из roof-lounge-app-architecture.md (лежит в проекте Roof Lounge): операционка персонала (смены, поломки, задачи), QR-сценарии гостя за столом и модуль вкусового профиля/миксов — то, что не покрывает Quick Resto.檢視完整 README ↗
Рабочий скелет продукта из roof-lounge-app-architecture.md (лежит в проекте Roof Lounge): операционка персонала (смены, поломки, задачи), QR-сценарии гостя за столом и модуль вкусового профиля/миксов — то, что не покрывает Quick Resto.
apps/miniapp — Telegram Mini App (React + Vite + TS). Все экраны работают на моковых данных в памяти (src/data/seed.ts) — приложение можно открыть и пройти все сценарии прямо сейчас, без единой настройки.apps/bot — скелет Telegram-бота (grammY): команда /start открывает мини-апп, плюс подписка на новые QR-вызовы через Supabase Realtime с уведомлением персоналу в чат.supabase/migrations/0001_init.sql — SQL-схема БД: гости, справочник вкусов, миксы, состав миксов, оценки, столы, QR-вызовы, лист ожидания, потерянные вещи, смены, поломки, задачи.В приложении две роли — Сотрудник (единый кабинет для любого сотрудника: мастер и официант — это один человек) и Руководитель. Переключатель наверху экрана переключает их вручную (демо-заглушка на одном устройстве), в реальной эксплуатации сотрудник будет видеть только свой кабинет автоматически, по Telegram-аккаунту, без выбора.
Сотрудник:
Руководитель:
Гостевой QR-экран (/table/:token, отдельный маршрут без нижней навигации): «позвать сотрудника» / «попросить счёт» / «нужна помощь» / «оставил вещь».
Личный кабинет сотрудника (зарплата, профиль, график, штрафы/премии, база знаний) пока работает только на моках — под эти сущности ещё нет таблиц в Supabase, это следующий шаг после того, как определимся с точной моделью ЗП и наполнением базы знаний.
cd apps/miniapp
npm install
npm run dev
Откроется на http://localhost:5173. Вне Telegram (обычный браузер) SDK деградирует в заглушку — вёрстка и все сценарии работают, просто без реальных Telegram-данных пользователя.
Гостевой экран: http://localhost:5173/table/table-7 (номер стола зашит в токен для демо).
apps/miniapp/src/data/repo.ts умеет работать в двух режимах:
seed.ts, ничего настраивать не нужно;initData() в main.tsx) сторы заполняются реальными данными, все действия (создать микс, оценить, вызвать официанта, открыть/закрыть смену, завести задачу и т.д.) синхронно обновляют экран и в фоне пишут то же самое в базу; изменения от других устройств прилетают через Supabase Realtime.Ограничение текущей версии: авторизации персонала через Telegram ещё нет, поэтому все действия "от сотрудника" в базе записываются на один служебный профиль (см. DEMO_STAFF_ID в repo.ts) — это техдолг, который снимется вместе с реальной авторизацией.
supabase/migrations/0001_init.sql, затем 0002_shift_photos.sql (через SQL Editor в дашборде или Supabase CLI) — второй файл создаёт Storage-бакет shift-photos и служебную таблицу shift_photo_uploads для пересылки фото открытия/закрытия смены (см. ниже);Project URL и anon public key → в apps/miniapp/.env (см. .env.example) — как только они заданы, приложение само переключится в режим реальных данных;service_role key → в apps/bot/.env (см. apps/bot/.env.example) — этот ключ не должен попасть в мини-апп/фронтенд.0001 включает Row Level Security на ключевых таблицах, но политик пока нет (см. комментарий в конце файла) — с анонимным ключом без политик Supabase будет отклонять запросы. Для пилота на одном заведении проще всего временно отключить RLS на этих таблицах (alter table ... disable row level security; в SQL Editor) и вернуться к нормальным политикам перед тем, как в приложении появится настоящая авторизация гостей/персонала./newbot, если бота ещё нет) → BOT_TOKEN в apps/bot/.env.MINI_APP_URL в apps/bot/.env, и туда же указать этот URL в настройках бота через @BotFather (/mybots → Bot Settings → Menu Button или Mini App).STAFF_CHAT_ID. Опционально: отдельный SHIFT_PHOTOS_CHAT_ID, если фото открытия/закрытия смены должны падать не в общий чат персонала, а руководителю лично или в отдельный чат — без него используется STAFF_CHAT_ID.apps/bot/src/quickresto.ts) — вместо ручной кнопки "Открыть/закрыть смену" статус берётся из того, что сотрудник вошёл по ПИН-коду на терминале в заведении. В apps/bot/.env задать QR_LOGIN/QR_PASSWORD (логин/пароль от бэк-офиса hu554.quickresto.ru, тот же, под которым заходишь в веб-панель); без них интеграция просто не запускается, всё остальное продолжает работать как раньше. Опционально: QR_HOST (по умолчанию hu554.quickresto.ru), / (часы работы, в которые вообще имеет смысл опрашивать — по умолчанию 10..8, диапазон через полночь, с запасом на продления вечера до 6-7 утра), (по умолчанию 90 секунд). Подробности механики (какие эндпоинты, как определяется "смена открыта", почему это опрос, а не вебхук) — в в проекте Roof Lounge.
Фото смены никогда не хранится: миниапп загружает снимок в Storage-бакет shift-photos, бот (apps/bot) подхватывает его через Supabase Realtime, пересылает в Telegram и сразу удаляет и файл, и служебную запись — без запущенного бота фото просто зависнет в бакете до следующего запуска (не страшно, но лучше не оставлять бота выключенным надолго).
npm run build, раздать dist/. Важно: настроить SPA-фолбэк (все пути → index.html), иначе прямые ссылки вида /table/table-7 из QR-кодов будут отдавать 404 — на Vercel это rewrites в vercel.json, на Netlify — _redirects.https://t.me/<bot_username>/<app_name>?startapp=table_<N>, где <N> — номер стола (генерация самих QR-картинок — отдельный маленький скрипт, не входит в этот скелет).apps/
miniapp/ — Telegram Mini App (гость, персонал, руководитель)
bot/ — Telegram-бот (grammY) + уведомления персоналу
supabase/
migrations/ — SQL-схема БД
QR_POLL_START_HOURQR_POLL_END_HOURQR_POLL_INTERVAL_MSclaude/quickresto-shift-integration.mdstaff автоматически (и его имя корректно отображалось как "открыл/закрыл смену"), у него в карточке сотрудника Quick Resto (Персонал → Сотрудники → карточка → поле "Telegram ID") должен быть заполнен настоящий числовой Telegram ID. Без этого поля смена всё равно откроется/закроется корректно, но без привязки к конкретному сотруднику в нашей базе.