Commit Graph
5 Commits
Author SHA1 Message Date
AndreyandClaude Fable 5.1 a891947016 🧹 chore!: продукт без привязок к вендору — домены, почта, продукты, скоупы, события виджета
- нет зашитых доменов: help-домен по умолчанию localhost (задаёт установщик через
  CHATBALLS_HELP_BASE_DOMAIN), фронт определяет портал помощи пробой /api/v1/help/,
  ALLOWED_HOSTS без вендорских хостов, CI environment url — из CHATBALLS_APP_DOMAIN
- DEFAULT_FROM_EMAIL по умолчанию no-reply@localhost; JWT-аудитория support-токена
  chatballs.support; загрузчик виджета: window.ChatballsChat, события chatballs-chat-*
- «Контакты»: продукты берутся из данных организации ({code, name}), цвет —
  детерминированно по коду; зашитый список продуктов вендора убран
- npm-скоупы @chatballs/*, тема chatballsTheme/buildTheme
- тестовый bootstrap: организация demo, сотрудник staff.member@example.org,
  продукты site/app; фикстуры на example.com
- убрана мёртвая привязка Shell к e-mail сотрудника вендора

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-06 00:33:22 +03:00
AndreyandClaude Fable 5.1 99203aa561 💄 feat(ui): по макету — обои из lucide-иконок, 6 пунктов навигации, фото сотрудников, карточка контакта
- обои «Chatbolls — Lucide Pattern» (макет владельца): филлотаксис по золотому углу
  с тремя вихрями, те же 25 иконок, размеры, прозрачности и цвета двух тем
  (серо-зелёная #dedfd9/#5d635d, графитовая #25292e/#f1f2f3); на экранах входа и
  за лентой чата; лента принимает фон обоев (--surface-feed)
- верхней панели нет ни у одной роли; заголовок «Настройки» — в самой странице;
  «Знания» и «Аудит» — ссылки из «Настроек», навигация менеджера — ровно 6 пунктов
- фото сотрудников: Avatar с img, загрузка/удаление в «Настройки → Профиль»,
  в сайдбаре, подписях сообщений, поле «Ответственный», поповере охвата
- карточка контакта (решение 5): описание, компания, город; карандаш у имени —
  inline-правка имени/описания/телефона/компании/города
- цвет группы из настроек (свотчи в модалке группы) — точки в дереве, поповере,
  строках списка и меню переноса
- композер: кнопка «Эмодзи» (antd Dropdown с сеткой), как в макете
- история контакта (кадр F): тема — первая реплика клиента, «вела Анна Ким» / «AI»
- список: превью без системных событий; сообщения с одинаковым временем — по id
- демо: длительности голосовых, история Марии в архиве (в списке ровно 7 строк),
  Дмитрий ждёт 6 мин; БД: SET NULL на FK аудита/outbox к пользователю и права на
  каскад удаления — снятие демо runtime-ролью

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-05 20:51:14 +03:00
Andrey 2b246e193b ✨ feat(support): add reusable multi-portal help centers 2026-07-28 21:39:25 +03:00
Andrey cb799bcaf9 feat(ai): UI импорта YAML + шаблон формата (frontend + docs)
Владелец грузит YAML на вкладке Знания/Инструкции → документы создаются/
обновляются и сразу публикуются. Парсинг на фронте (js-yaml) → JSON-пост через
существующий api() (без multipart).

- js-yaml + @types/js-yaml (новая зависимость).
- docApi.ts: importDocs + тип ImportResult.
- parseDocYaml.ts: парсер YAML со структурной валидацией (читаемые ошибки).
- DocImportForm.tsx: UI file→preview→импорт→отчёт (created/updated/unchanged/
  failed). По паттерну DocCreateForm (inline-форма).
- Knowledge/InstructionsTab: кнопка «Импорт YAML».
- styles.css: блоки import-preview/report.
- parseDocYaml.test.ts: валидный YAML, global, невалидный синтаксис, пустые поля,
  невалидный inclusionMode.
- SPEC-HUB-0012: формат-контракт + 2 примера (знания/инструкции) + промпт-
  набросок для ИИ-генерации.
2026-07-10 02:15:53 +03:00
Andrey aacdd422b3 Initialize Edevs Hub repository 2026-06-17 18:14:16 +03:00