Commit Graph
17 Commits
Author SHA1 Message Date
AndreyandClaude Fable 5.1 1a61780dec 🚚 chore!: переименование инфраструктуры CustoCRM/hub → Chatballs с миграцией
- каталог code/custocrm → code/chatballs; CLI custocrm → chatballs; пакеты
  hub_platform → chatballs, hub_backend → chatballs_backend (app labels прежние)
- переменные CUS_* и CUSTOCRM_* → CHATBALLS_*; образы chatballs-*; compose-проект
  и база chatballs (были edevs_hub); роли Postgres chatballs_* (были custocrm_*);
  схема RLS chatballs и GUC chatballs.organization_id; cookie chatballs_*
- CI: APP_DIR code/chatballs, DEPLOY_ROOT /opt/chatballs
- deploy/migrate/rename-to-chatballs.sh — миграция существующей установки без
  потери данных: остановка старого проекта, .env (с резервной копией),
  переименование суперпользователя initdb через временную роль, остальных ролей,
  базы, схемы и функции RLS; проверено на локальном стеке
- dev-стек хранит Postgres в bind-mount data/postgres, как prod (именованный том
  compose.dev был устаревшим снимком и вводил в заблуждение)
- снятие демо удаляет объекты, созданные поверх демо-данных тестировавшим
  (звонки по демо-диалогу), вместо падения на PROTECT
- реальные домены *.custocrm.ru и идентификаторы документов не тронуты

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-05 22:21:12 +03:00
AndreyandClaude Fable 5.1 dbd7ae3150 🚚 chore: переименование Chatbolls → Chatballs во всём проекте
Бренд, API-схема, TOTP issuer, письма, тексты бота уведомлений, загрузчик виджета
(window.ChatballsChat, типы postMessage), ключи localStorage, id/параметры
виджета помощи, health-service, README, скрипты, демо (пароль
Chatballs-Demo-2026). Макеты в design/baseline не тронуты — это файлы владельца.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-05 21:43:33 +03:00
AndreyandClaude Fable 5.1 29d061096d 📝 docs(readme): демо повторяет кадры дизайн-базлайна, голосовые из Common Voice (CC0)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-05 20:56:29 +03:00
AndreyandClaude Fable 5.1 0ca9eb865f ✨ 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>
2026-09-05 16:55:31 +03:00
AndreyandClaude Fable 5 446a438776 🔥 feat(platform)!: контакт-центр Chatbolls — снос домена продаж и ребрендинг
Пивот по ADR-HUB-0041/0042: продукт становится open-source контакт-центром,
домен продаж удаляется целиком, прод-данные по решению владельца не сохраняются.

Backend:
- удалены приложения sales и orders (модели, API, ingest, команды, миграции);
- из products удалены Offer/Price/MarketplacePublication и ingest_token_hash
  (products/0011); таблицы, ingress-вьюхи и служебные записи Django снимаются
  миграцией tenancy/0017_drop_commerce;
- вычищены метрики выручки и заказов из conversations (stats/clients/command),
  типы уведомлений PAYMENT_* (notifications/0007), capabilities sales.*
  (identity/0019), коммерческие блокеры каналов, ingress-роуты продаж;
- демо-сид очищен от commerce; исторические миграции tenancy/0002-0004
  вычищены от таблиц orders_*/sales_* для чистой установки, tenancy/0003
  получила явные зависимости sessions/auth/contenttypes.

Frontend (internal-ui):
- удалены разделы «Продукты», «Обзор продаж», «Заказы», реестр и карточка
  продажи, вкладка «Продажи» и статус лид/клиент в контактах, коммерция
  в командном центре; роуты, навигация и доступы приведены в соответствие.

Ребрендинг CustoCRM → Chatbolls (видимый слой): UI, письма, TOTP issuer,
тексты ботов, заголовок API, README; виджет — window.ChatbollsChat
с legacy-алиасом CustoCRMChat. Технические идентификаторы (схема БД,
роли, cookie, CUS_-переменные, домены) — отдельным шагом (ADR-HUB-0042 §5).

Тесты: internal-ui 100/100, web-chat 5/5, backend RLS-сьют 10/10.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-09-03 21:36:22 +03:00
Andrey 4c622c7542 ✨ feat(seed): replace standalone importer with Django seed_demo command and Russian IIoT dataset
Старый сид dev/local-seed/ (standalone-скрипт под CUS_ENV) заменён полноценной
Django-командой seed_demo с редактируемыми JSON-манифестами в demo_seed/data/.
Полный выдуманный датасет организации «Северная Верфь» (IIoT, РФ-наполнение):
продукты Вектор/Репер, каналы, AI-агенты, база знаний со вложениями, диалоги,
заказы, продажи, поддержка, портал Help-центра, звонки, уведомления.
Идемпотентен (get_or_create/update_or_create), dry-run по умолчанию (--apply),
--force для облака. Удалён dev/local-seed/, скрипты seed-local/seed-support-portal,
compose-профиль переключен на demo-seed. Тесты: создание, идемпотентность, dry-run.
2026-07-30 19:59:46 +03:00
Andrey f8fb9162a6 ✨ feat(administration): add delivery-aware administration 2026-07-30 00:11:37 +03:00
Andrey 3f07d76173 ✨ feat(portals): complete custom domains and unified navigation 2026-07-29 16:49:50 +03:00
Andrey 7e9667ee88 ✨ feat(ui): align channel management with design baseline 2026-07-23 11:08:16 +03:00
Andrey dd849fa2d4 ✨ feat(platform): isolate runtime surfaces 2026-07-14 22:23:15 +03:00
AndreyandClaude Fable 5 192497ead0 💄 rebrand(ui): CustoCRM logo and product name instead of Edevs Hub
- New logo: favicon.svg and LogoIcon (replaces PulseIcon) in sidebar and auth screens
- Source logo asset saved to resources/icon.svg
- Replace "Edevs Hub" with "CustoCRM" across internal-ui, web-chat, backend strings (email sender/subject, TOTP issuer, notification bot texts, OpenAPI title), env examples and README
- Add .claude/launch.json for internal-ui dev server (bind 127.0.0.1)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-12 19:49:02 +03:00
AndreyandClaude Opus 4.8 f0111e40d5 fix(identity): disable TOTP for users; fix local credentials
Stop forcing OWNER totp_required on bootstrap (TOTP off for users), and set
the canonical local operator password. Document the fixed local OWNER/OPERATOR
credentials in the README. These local credentials are fixed and must not be
changed without explicit consent.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-28 00:32:07 +03:00
AndreyandClaude Opus 4.8 e6d8923ae9 chore: remove Hub checkout app
Public checkout belongs to product backends, not Hub (ADR-HUB-0014,
ADR-HUB-0018). Delete apps/checkout and its wiring: compose service, nginx
pay.localhost route, npm workspace and dev script, playwright project,
HubApplication type, check.ps1 typecheck and README mentions.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-26 15:10:36 +03:00
AndreyandClaude Opus 4.8 9679cb8cfc ✅ test(infra): make pytest discover the suite and unify the test command (#3)
- add apps/backend/pytest.ini (next to manage.py so it works inside the
  backend container); include tests.py in python_files so pytest collects the
  existing Django TestCase suites (was silently collecting nothing)
- drop the duplicate pytest config from the root pyproject.toml
- scripts/check.ps1 runs pytest + frontend unit tests + typechecks
- document the canonical test commands (backend/frontend/e2e) in README

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 23:02:51 +03:00
Andrey 7d4c4ba6ef Implement internal Hub baseline and auth flow 2026-06-17 20:47:58 +03:00
Andrey cce08385ff Expose platform foundation in Django admin 2026-06-17 18:33:06 +03:00
Andrey aacdd422b3 Initialize Edevs Hub repository 2026-06-17 18:14:16 +03:00