AndreyandClaude Fable 5.1 77a67a7413 ✨ feat(ai): «Демо-провайдер» — живой AI без ключей для знакомства с системой
Новый LLM-провайдер IntegrationProvider.DEMO (без секрета, проверка всегда
OK): отвечает детерминированно по знаниям агента из системных сообщений
runtime — выбирает предложения с наибольшим пересечением слов с вопросом,
режет служебные заголовки фрагментов и markdown-таблицы; когда знаний нет или
клиент просит человека, завершает ответ токеном передачи оператору по протоколу
runtime. Эмбеддинги детерминированные, расшифровка голосовых — явное сообщение
о необходимости BYOK-провайдера. В UI помечен как демо с ограничением качества.

Демо-набор «Ателье Норд» использует его как провайдера агентов: после
установки AI отвечает сразу, без ключей OpenRouter.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-05 17:10:48 +03:00
2026-08-01 00:37:24 +03:00
2026-06-17 18:14:16 +03:00
2026-06-26 15:10:36 +03:00

Chatbolls

Canonical implementation workspace for hub.edevs.tech.

Быстрый старт (одна минута)

Нужен только Docker (Docker Desktop на Windows/macOS или Docker Engine с Compose на Linux). Никаких параметров заранее задавать не нужно — всё спросит браузер.

Windows (PowerShell):

git clone <URL репозитория> chatbolls
cd chatbolls/code/custocrm
.\scripts\start.ps1

Linux / macOS:

git clone <URL репозитория> chatbolls
cd chatbolls/code/custocrm
./scripts/start.sh

Скрипт копирует .env.example в .env (если его нет), собирает образы и поднимает стек. Когда в логах появится готовность, откройте http://localhost — вместо входа система покажет мастер первого запуска: название организации, ваше имя, e-mail и пароль владельца, переключатель «Установить демо-данные». После кнопки «Начать» вы сразу в приложении под владельцем. Мастер доступен только пока в системе нет ни одной организации; после создания владельца он закрывается навсегда.

Демо-данные

Демо — вымышленное ателье «Норд» (дизайн-базлайн v2): сотрудники и группы, агенты с подключениями Telegram/MAX/почта/веб-виджет, база знаний с вложениями, диалоги во всех состояниях (AI ведёт, ждёт оператора, ведёт сотрудник, закрыт, спам, архив), метки, приоритеты, заметки, шаблоны ответов, голосовые, портал поддержки со статьями, звонки, уведомления и история использования AI за 30 дней. Набор покрывает каждую модель системы — это проверяет тест identity.test_seed_demo.

Демо ставится в вашу организацию и удаляется целиком одной кнопкой: Настройки → Демо-данные. Там же — учётные записи демо-сотрудников из разных групп, чтобы посмотреть систему их глазами (пароль общий и намеренно публичный — Chatbolls-Demo-2026). Ваши данные при удалении не затрагиваются: сид ведёт реестр созданных записей и удаляет ровно их.

Для разработки то же доступно из командной строки:

docker compose run --rm backend-app python manage.py seed_demo --organization <slug> --apply
docker compose run --rm backend-app python manage.py seed_demo --organization <slug> --remove

Редактируемые данные — apps/backend/hub_platform/identity/demo_seed/data/ (JSON-манифест на домен, media/ — вложения, аватары, голосовые). Голосовые сообщения читаются из media/voice/ (см. README там); если файла нет, сообщение пропускается.

Режим поставки

По умолчанию локально запускается облачный режим. Коробочный режим — тем же контуром с явным признаком поставки:

.\scripts\start.ps1 -Mode Cloud
.\scripts\start.ps1 -Mode SelfHosted

Приложение не определяет режим по домену, числу организаций или данным. Единственный источник — CUS_DELIVERY_MODE со значением CLOUD или SELF_HOSTED. В production переменная обязательна; шаблон коробочного экземпляра env.example уже содержит SELF_HOSTED.

Что поднимается

  • изолированные Django-рантаймы app, platform и loopback-only admin;
  • фоновый worker (outbox, поллинг мессенджеров, установка демо);
  • PostgreSQL и Redis;
  • Internal Hub UI и Web Chat UI;
  • локальный Nginx reverse proxy.

Секретов production в репозитории нет.

Локальные адреса:

  • Приложение: http://localhost (то же — http://app.localhost/)
  • Health платформы: http://platform.localhost/api/v1/health/live/
  • Django admin (только loopback): http://127.0.0.1:18001/admin/
  • Internal Hub UI напрямую (Vite): http://localhost:5173
  • Web Chat: http://localhost:5175
  • App API напрямую: http://localhost:8010/api/v1

Tests

All suites run in Docker, so no manual environment is required — the test runners auto-detect themselves and relax production hardening (secret-key fail-fast, SSL redirect, throttling) for the duration of the run.

Run everything (backend tests, frontend unit tests, typechecks):

.\scripts\check.ps1

Individual suites:

# Backend (pytest + pytest-django)
docker compose run --rm backend-app pytest

# Frontend unit tests (vitest)
docker compose run --rm frontend npm run test

# End-to-end (Playwright, internal-ui) — auto-starts the dev server
npx playwright install chromium   # one-time
npx playwright test --project=internal-ui

Backend pytest configuration lives in apps/backend/pytest.ini (it must sit next to manage.py so it is also visible inside the backend container).

Languages
Python 54.4%
TypeScript 35.6%
CSS 8.2%
Shell 0.8%
JavaScript 0.6%
Other 0.3%