Javis OS
Javis OS는 기업가를 돕는 에이전시 AI로, 업무를 지원하고 함께 성장합니다
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Astor Butler — Telegram-дворецкий для HoReCa: гость ↔ персонал ↔ менеджер, сценарии в FSM. Каналы: Telegram, WEB, MAX (за флагом), очки Astor Glass. Пилот в AERIS. Сайт: https://astor-ai.ru
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Telegram-дворецкий для HoReCa: гость ↔ персонал ↔ менеджер. Сценарии живут в конечном автомате (FSM) — он единственный источник истины, а Telegram, веб-виджет, MAX и очки Astor Glass — только транспорт и UI. Модели (Yandex, Sber, локальные) понимают речь и помогают с текстом, но не подтверждают брони, счета и поручения — это делают FSM, доменные сервисы и человек.
Первое заведение — гастробар AERIS (Екатеринбург). На той же инфраструктуре живут боты c3flex и Smart Solution (отдельные профили compose, свои сценарии).
| Канал | Состояние | Где описано |
|---|---|---|
| Telegram (long polling) | основной рабочий транспорт: гость, staff / admin / system / analytics-чаты, карточки хостес с «Да / Нет» | FSM_SCENARIOS.md, FSM viewer |
| WEB (виджет сайта) | POST /api/astor/messages — тот же FSM, quick replies, лимиты и retention (#118) | WEB_CHANNEL_ADAPTER.md |
| MAX (VK) | фаза 1 за флагом ASTOR_MAX_ENABLED, по умолчанию выключен; живой бот не подключался (#116) | MAX_ADAPTER_PLAN.md |
| Astor Glass (очки + iPhone) | информационные вопросы (POST /api/glasses/assist) и первое действие — поручение голосом «Задача: …» → astor_staff_tasks (#121) | GLASSES_ASSIST_PILOT.md, GLASSES_VOICE_TASKS.md, ADR |
| Astor Concierge | отдельный репозиторий Astor_Concierge: гостевой ИИ-консьерж. В Butler гость приходит по deep-link ?start=lunch_aeris… или через веб-канал, бронь — по API Butler | CONCIERGE_BUTLER_HANDOFF_DRAFT.md, BUSINESS_LUNCH_FIRST_TEST.md §1.1 |
Сценарии гостя: согласие и контакт, бронь стола с подтверждением хостес, бизнес-ланч (блюда, пожелания, пометка кухне), счёт и оценка, чаевые, предпочтения, запросы консьержа. Интеграция с кассой Saby Presto (СБИС) — за флагами, см. ниже.
main = ed7c037 (merge #191). Всё ниже взято из документов репозитория и влитых PR; что именно выложено на ВМ,
сверяется по тегу образа и логам (HANDOVER_2026-10-10.md §1).
Одна ВМ, общая с порталом Vedal; наружу смотрит только общий edge-Caddy. Адреса и секреты — в runbook и в
.env.production на ВМ, не здесь.
astor-api-gateway (nginx) с allow-list публичных путей; остальной /api/* — только с внутренним токеном
(PUBLIC_API_GUARD.md).astor-site, домен astor-ai.ru (infra/astor-site/, #112, #124, #139).Выложено 10.10 (HANDOVER §2): STT очков через Yandex SpeechKit (#119), поручения голосом (#121), телефон гостя для Saby (#117),
защита API (#123), веб-канал (#118), MAX фаза 1 (#116), фундамент мультиязычности (#114), сайт (#112, #124).
Волна 12.10 по интервью команды AERIS (#155–#191) влита в main и выложена на ВМ вечером 12.10 (образ бота, шлюз,
очки v10); все новые функции выехали выключенными и включаются флагами в .env.production.
План — BUSINESS_LUNCH_FIRST_TEST.md: два статиста оформляют ланч через бота.
Первый прогон — полуавтомат: заявка → карточка хостес «Да / Нет» → подтверждение гостю; нужен только id staff-чата.
Второй — автомат с Saby после ключей и read-only smoke. Критерий: гость сел, заявка дошла до хостес, подтверждение
вернулось, бронь видна в Saby (HANDOVER §5). Откат — флагами на ВМ и /stop менеджера смены.
Подготовка: SABY_STAFF_MEMO_DASHA.md (памятка менеджеру зала: что должно быть
в Presto, люди для справочника), SHIFT_BRIEFING.md (сводки смены, /status_butler),
MENU_COMPOSITION_FOR_BOT.md, интервью AERIS № 1–№ 6 (см. «Документы»).
Имена — как в application.yaml; в docker-compose*.yml им соответствуют алиасы AERIS_*. Полная таблица с дефолтами
и пробросом в контейнер — BUSINESS_LUNCH_FIRST_TEST.md §1.6.
| Флаг | Что включает | PR |
|---|---|---|
ASTOR_MAX_ENABLED | канал MAX: текст, кнопки, согласие и контакт (фаза 1, long polling) | #116 |
ASTOR_I18N_ENABLED, ASTOR_I18N_MT_ENABLED | определение языка гостя, каталог ru/en, машинный перевод | #114 |
ASTOR_TELEGRAM_VOICE_REPLIES (off) | голосовые ответы бота + короткая текстовая сводка, /voice on|off | #105 |
ASTOR_STAFF_TASKS_ENABLED | поручения из очков в astor_staff_tasks без стаф-портала | #121 |
ASTOR_GLASSES_TRANSCRIPT_RELAY_ENABLED | релей вопросов и ответов очков в системный чат | #70 |
ASTOR_SHIFT_BRIEFING_ENABLED | утренний план и вечерняя сводка смены в аналитическом чате | #67 |
ASTOR_LUNCH_SCOREBOARD_ENABLED | табло ланча: оценки 5★, хит-парад блюд, /табло | #189 |
ASTOR_KILL_SWITCH_ENABLED | стоп-кнопка менеджера смены: /stop с саммари, /start_butler, /status_butler | #172 |
ASTOR_BOOKING_AUTO_CONFIRM_ENABLED | таймер карточки хостес: автоподтверждение, /manual on, передача менеджеру | #159 |
ASTOR_BOOKING_MORNING_CHECK_ENABLED | утреннее переподтверждение гостю: «в силе / перенести / отменить» | #158 |
ASTOR_BOOKING_HOLD_EXPIRY_ENABLED | истечение удержания стола по TTL, стол освобождается | #169 |
ASTOR_BOOKING_STAFF_EDIT_ENABLED | кнопка «Изменить» на карточке хостес: стол, время, гости | #171 |
ASTOR_BOOKING_SEATED_ENABLED | кнопка «Гость сел», статус SEATED, маппинг состояний Saby | #182, #183 |
ASTOR_WAITER_GUEST_CARD_ENABLED | карточка гостя официанту после «гость сел» | #190 |
ASTOR_REVIEW_MOMENT (after-close) |
Включено по умолчанию: сценарий бизнес-ланча (ASTOR_BUSINESS_LUNCH_ENABLED), Kafka и outbox (KAFKA_ENABLED,
KAFKA_OUTBOX_ENABLED). Стаф-портал за JWT (astor.staff.enabled) выключен — нет OIDC-издателя
(STAFF_PORTAL_RUNBOOK.md, репетиция миграций —
STAFF_PORTAL_REHEARSAL_2026-10-11.md).
confirmedByVenue: false, #91).Спецификация — 2026-10-14-astor-negotiation-design.md, включение и откат — NEGOTIATION_ROLLOUT.md.
/api/negotiation/v1/turn и инструменты Capability API v1 (/api/capabilities/v1/*); ответ ресторана приходит в чат Консьержа с подписью AERIS · Батлер:.ASTOR_WEBHOOK_SECRET).visit_turns — все реплики гостя, агентов, персонала и Saby под одним id визита; телефоны маскируются, текст Консьержа — только с согласия гостя. По закрытому визиту — саммари и уроки агентам.ASTOR_BOARD_TOKEN.false): ASTOR_LEDGER_ENABLED, ASTOR_BOARD_ENABLED, ASTOR_VISIT_SUMMARY_ENABLED, ASTOR_CAPABILITIES_ENABLED, ASTOR_CONCIERGE_WEBHOOK_ENABLED, ASTOR_AGENT_ENABLED + ASTOR_AGENT_ALLOWLIST; у Консьержа LEDGER_ENABLED, AGENT_ENABLED + AGENT_ALLOWLIST. Агенты — GigaChat-2-Pro (GigaChat-3-Pro недоступна на скоупе PERS, проверено 14.10), саммари — GigaChat-2-Max. С 15.10 агентов можно отдельно от остального перевести на OpenAI-совместимый API программы Sber500 × Disrupt: ASTOR_AGENT_PROVIDER=openai-compatible (у Консьержа AGENT_LLM_PROVIDER), модель из GET /models; проверка API, нагрузка и стоимость — SBER500_LLM_ACCEPTANCE.md, выкладка и откат — SBER500_LLM_ROLLOUT.md.Telegram · WEB-виджет · MAX · Astor Glass (iPhone → runtime очков) · REST
│ transport adapters (TelegramRouter, WebChatController, MAX long polling, /api/glasses/*)
▼
Message Gateway ──► Scenario Router ──► FSM Runtime (единственный источник истины)
│
Domain services: booking · business lunch · billing · tips · staff tasks · preference · concierge
│
PostgreSQL + pgvector (факты, outbox, семантическая память) · Redis (горячее состояние FSM, черновики)
Kafka / Redpanda (события, аналитика) · MinIO / S3 (медиа, фото-подтверждения) · MongoDB (документы)
│
Проекции: staff / admin / system / analytics чаты Telegram · Saby Presto (адаптер) · модели через Model Gateway
Инвариант: бизнес-решения = FSM + доменные сервисы; модель (Yandex AI Studio, Sber GigaChat / Cloud.ru FM, OpenAI-совместимые, Spring AI / Ollama) — только понимание, извлечение слотов и черновики текста. Подробно: ARCHITECTURE.md, DATABASE_MODEL.md; ADR: очки → поручение, колонки Салют; планы: MAX, мультиязычность, веб-канал.
Стек: Java 25, Spring Boot 4.1, Spring AI 2.0, Maven 3.9, Liquibase, Docker Compose (pom.xml, Dockerfile).
scripts/start_local_infra.sh # api-gateway, postgres, redis, mongo, kafka, redpanda-console, minio, prometheus, grafana
scripts/run_local_app.sh [.env] # Spring Boot из Maven с переменными из .env
mvn -B test # тот же прогон, что в CI (.github/workflows/ci.yml)
Без локального JDK 25: docker run --rm -v "$PWD":/workspace -v "$HOME/.m2":/root/.m2 -w /workspace maven:3.9-eclipse-temurin-25 mvn -B test.
Профили docker-compose.yml: telegram (бот AERIS), app (бот c3flex), smart-solution, frontend (C3AG), nlu (Natasha),
ai (llm-gateway, Ollama). Оверлеи: docker-compose.prod.yml; docker-compose.cloudru.yml (дополнительно graph-timeline,
kafka-tools, observability); docker-compose.saby-stub.yml (стаб Saby для локального прогона автомата).
Локально: Swagger http://localhost:8080/swagger-ui/index.html, health http://localhost:8080/actuator/health,
Redpanda Console http://localhost:8081, MinIO Console http://localhost:9001.
Переменные окружения — только имена; значения в локальном .env, который не коммитится:
| Группа | Переменные | Назначение |
|---|---|---|
| Хранилища | POSTGRES_URL, POSTGRES_USER, POSTGRES_PASSWORD, REDIS_HOST, REDIS_PORT, REDIS_PASSWORD, MONGODB_URI, KAFKA_BOOTSTRAP_SERVERS, S3_ENDPOINT, S3_ACCESS_KEY, S3_SECRET_KEY, S3_BUCKET_MEDIA, S3_BUCKET_DOCUMENTS | базы, брокер, объектное хранилище |
| Telegram | TELEGRAM_BOT_ENABLED, TELEGRAM_BOT_TOKEN, TELEGRAM_BOT_USERNAME, TELEGRAM_HOSTESS_CHAT_ID, TELEGRAM_ADMIN_CHAT_ID, TELEGRAM_SYSTEM_CHAT_ID, TELEGRAM_ANALYTICS_CHAT_ID, TELEGRAM_BOOKING_MANAGER_CHAT_ID, TELEGRAM_PROXY_HOST, TELEGRAM_PROXY_PORT, TELEGRAM_PROXY_TYPE | бот и служебные чаты; в compose для AERIS — AERIS_ASTOR_BUTLER_*_CHAT_ID |
| Модели и речь | ASTOR_MODEL_PROVIDER (spring-ai · yandex · gigachat · cloudru · openai-compatible), YANDEX_*, GIGACHAT_*, CLOUDRU_*, ASTOR_STT_PROVIDER (cloudru · yandex · local), ASTOR_TTS_PROVIDER, YANDEX_SPEECHKIT_*, ASTOR_SEMANTIC_EMBEDDINGS_PROVIDER | выбор провайдера — конфигурация, не логика сценариев (SBER_AI_ACTIVATION.md) |
| Безопасность | ASTOR_INTERNAL_API_TOKEN, ASTOR_GLASSES_RELAY_TOKEN | внутренний токен непубличного API; токен релея очков |
| Интеграции | SABY_APP_CLIENT_ID, SABY_APP_SECRET, SABY_SECRET_KEY, SABY_POINT_ID, SABY_HALL_ID, SABY_PRICE_LIST_ID, MAX_BOT_TOKEN, MAX_API_BASE_URL |
Runbook — CLOUDRU_DEPLOY_RUNBOOK.md; состояние стенда и ручной путь — HANDOVER_2026-10-10.md; охрана API — PUBLIC_API_GUARD.md.
main (GitHub Actions deploy-cloudru-vm.yml → GHCR astor-butler:sha-<sha>), на ВМ ничего не
собирается. Деплой произвольного sha запрещён: откат на старый коммит — revert в main..env.production на ВМ (в git не попадает). Новая функция выезжает выключенной и включается флагом.deploy-yandex-vm.yml, AERIS_SCOPED_DEPLOY.md) устарел,
триггеры отключены.Правила: ветка → PR в main → ревью до мержа → зелёный CI (ci.yml: тесты, проверка guard-скриптов, поиск секретов
в репозитории). Общий edge-Caddy меняет только Михаил. Production-операции требуют отдельной авторизации (CLAUDE.md).
Карта docs/ — docs/README.md. Приоритет источников: FSM viewer →
ARCHITECTURE.md → FSM_SCENARIOS.md → docs/obsidian/.
| Пакет | Что внутри |
|---|---|
| docs/operations/ | runbooks (Cloud.ru, API guard, стаф-портал, Telegram-прокси), передача руля 10.10, план первого теста, сводки смены, очки (GLASSES_*.md) |
| Интервью AERIS | № 1 менеджер смены (ответы) · № 2 хостес (ответы) · № 3 менеджер зала, второй круг · № 4 официант (ответы) · № 5 шеф-повар (ответы) · () |
Как в HANDOVER_2026-10-10.md; контакты — не здесь.
| Кто | Роль |
|---|---|
| Михаил | владелец продукта и стенда: ВМ, общий Caddy, ключи и DNS, решения по продукту, ревью |
| Дима | принял руль 10.10: бэкенд и эксплуатация (#122, #126, #128–#135, #137), сторона Saby, Консьерж |
| Егор | бэкенд и фронтенд C3AG, мультиязычность (#115) |
| Рома | Astor Glass (iOS и runtime), кабинет персонала (#93), контракт Concierge → Butler → Saby |
| Codex, Claude | агенты-исполнители: ветки и PR, обязательное ревью человека |
| AERIS | Дарья Анатольевна — менеджер зала, подтверждает заявки на тесте; Дарья Вячеславовна — хостес; Тариэль — доступы (группа, ключи Saby); официанты и бармен — в справочнике astor_staff_members |
Лицензия — Apache 2.0 (docs/LICENSE). Репозиторий публичный; статус — MVP в пилоте с одним заведением (AERIS), не публичный релиз и не магазинное приложение. Связанные репозитории команды: Astor_Concierge, MuseonUrania (Vedal), smart-solution-website, Astor_Butler_Legacy; секреты и базы гостей между ними не делятся.
Не коммитить: .env, .env.*, target/, build/, .idea/*, .codex*, локальные медиа-оригиналы. Перед push проверять
diff на секреты и build-артефакты (CLAUDE.md, AGENTS.md).
on-bill: оценка до оплаты, кнопка «Счёт» у хостес |
| #157 |
ASTOR_GUEST_BILL_REQUEST_ENABLED | гость просит счёт в боте: карточка команде и отзыв | #178 |
ASTOR_TIPS_PERSONAL_ENABLED | чаевые лично официанту стола: /официант, /чаевые | #179 |
ASTOR_LUNCH_WISHES_ENABLED | пожелания к блюдам и напиткам, состав блюд из меню | #180 |
ASTOR_LUNCH_PREORDER_MARK_ENABLED | пометка кухне «ПРЕДЗАКАЗ: готовить ко времени» | #191 |
ASTOR_STAFF_HANDOFF_ENABLED | персональная ссылка / QR сотрудника, лог входа гостя, /ссылка | #181 |
ASTOR_GUIDING_QUESTION_ENABLED | направляющий вопрос в конце ответа бота | #177 |
ASTOR_STAFF_EVIDENCE_ENABLED | фото-подтверждение этапа поручения в приватном S3 | #141 |
ASTOR_SABY_ENABLED, SABY_WRITE_ENABLED, SABY_PAYMENT_ENABLED, ASTOR_BILLING_ENABLED | Saby Presto: чтение занятости, запись заказа, ссылка оплаты, счета гостя | SABY_PRESTO_BOOKING_API.md, #117, #140 |
| Saby Presto и MAX |
| Очки | ASTOR_GLASSES_TENANT, ASTOR_GLASSES_STAFF_ROLE, ASTOR_GLASSES_TRANSCRIPT_RELAY_URL | tenant справочника сотрудников, роль автора поручений, адрес релея |
docs/product/ | планы фич по интервью: гостевой путь, официант, кухня, носитель очков, карточка гостя, направляющий вопрос |
| docs/architecture/ | архитектура, модель данных, локальные БД, ADR, планы MAX / i18n / веб-канала |
| docs/fsm/ | текстовые companion-документы FSM, бронь стола, план реализации |
| docs/contracts/ | API, Kafka / outbox, Telegram Stars, Concierge → Butler → Saby |
docs/integrations/ | Saby Presto: карта API, счета, сценарий показа; карточка гостя и склейка каналов |
docs/content/, docs/commercial/, docs/frontend/, docs/research/ | медиа и RAG-источники; бренд-бук, КП, договор AERIS; фронтенд-handoff; исследования |
docs/obsidian/, docs/analytics/, docs/archive/ | проектная память агентов; отчёты прогонов; история |
infra/ | Cloud.ru: Terraform, cloud-init, бэкап, Telegram-egress; сайт Astor |
clients/ | пилотные клиенты очков: ios-glasses, android-glasses |