✨ feat(setup)!: мастер первого запуска и демо-набор «Ателье Норд» с точным удалением

Open source: «развернуть за минуту». Никаких параметров в .env и CLI —
при пустом инстансе браузер показывает мастер (/api/v1/setup/): название
организации, имя, e-mail, пароль владельца и флаг «Установить демо-данные».
Запись идёт на соединении platform (роль app не создаёт организации) через
tenancy/routing.use_database; после первого владельца мастер закрыт (409).
bootstrap_owner и захардкоженные Edevs/Котова из установки удалены
(bootstrap_edevs_owner остаётся тестовым helper'ом).

Демо ставится в организацию установщика; реестр DemoRecord (post_save во
время сида) даёт точное удаление в обратном порядке с разрывом PROTECT-циклов
только между демо-объектами. Установка/удаление — outbox → worker; статус и
витринные учётки (админ + сотрудники разных групп, пароль Chatbolls-Demo-2026)
— карточка «Демо-данные» в «Настройках» (/company/demo/).

Сид переписан под дизайн-базлайн v2 («Ателье Норд»): 6 сотрудников (группы,
блокировка, TOTP, приглашения), 4 агента (активные/черновик/выключенный),
подключения TG/MAX/почта/два веб-виджета (анонимный и авторизованный) с
ошибкой у одного, знания с иерархией категорий и вложениями (md/txt/pdf),
30 дней истории LLM, 13 диалогов во всех состояниях с метками, приоритетами,
заметками, ответственными, историей контакта, спамом и архивом, веб-гость
через настоящую сессию виджета, шаблоны «/», портал поддержки со статьями
(опубликованные/черновик/архив, вторая ревизия, оценки), звонки с метриками и
приглашением, уведомления всех типов, привязки уведомителя. Аватары
контактов — портреты владельца, публичный /api/v1/demo-media/. Голосовые —
слоты под клипы владельца (media/voice/README.md).

Тест покрытия: каждая модель hub_platform получает демо-запись; удаление
возвращает счётчики к исходным. compose-профиль demo-seed и seed-demo.ps1
удалены; seed_demo --organization --apply/--remove для разработки; start.sh
для Linux/macOS; README — раздел «Быстрый старт».

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
AndreyandClaude Fable 5.1 committed 2026-09-05 16:55:31 +03:00
1 parent b2e9d120a6
commit 0ca9eb865f
59 files changed
+4001 -1398

No files matched your search

-26
View File
@@ -118,32 +118,6 @@ services:
- /app/node_modules
- /app/apps/web-chat/node_modules
# Явный одноразовый импорт демонстрационных данных. Сервис существует только
# в compose.dev.yaml, профилем не включается в обычный `up`. Данные живут в
# backend image (management-команда seed_demo), отдельный bind-mount не нужен.
demo-seed:
profiles: ["demo-seed"]
build:
context: .
dockerfile: apps/backend/Dockerfile
env_file:
- .env
command: ["python", "manage.py", "seed_demo", "--apply"]
working_dir: /app/apps/backend
environment:
CUS_DB_ROLE: migration
CUS_DELIVERY_MODE: ${CUS_DELIVERY_MODE:-CLOUD}
CUS_HELP_BASE_DOMAIN: localhost
CUS_HELP_PUBLIC_SCHEME: http
CUS_HELP_PUBLIC_PORT: ""
volumes:
- ./apps/backend:/app/apps/backend
depends_on:
postgres:
condition: service_healthy
redis:
condition: service_healthy
# Dev: gateway — nginx с local.conf вместо Caddy (та же маршрутизация, HMR-friendly).
gateway:
image: nginx:1.27-alpine