v1.7.0: refactor max_bot to flat structure, add VCF+UserModel+NLP history context, portal pages and proxy fixes
- Refactored max_bot from nested packages to flat module structure - Q2: Extended BotUser model (patronymic, email, org, address, vcf_raw, contact_hash, phone_verified, email_verified, last_interaction, total_conversations, total_tickets) - Q2: VCF parser (FN, N, TEL, EMAIL, ORG, ADR), upsert on re-contact, NLP history context (_get_user_history_context -> YandexGPT) - Q1: Broadcast preview modal with 10s confirmation timer - Q3: CSS var(--white)->var(--bg-card), var(--text)->var(--text-primary) - Q4: bot_settings showNotification(), editable max_bot_id - Q5: Webhook secret passthrough via X-Max-Bot-Api-Secret - Masking sensitive keys, dialog_cleared handler, migrate via _add_column_if_not_exists() - Rate limit (asyncio.sleep 0.5 per 10), dead code removed, conv.intent context in contact.py - Portal pages: bot_consent, bot_kb (edit), bot_settings, bot_test, bot_tickets, portal_settings - Tests: 21/21 passing, added test_yandex_gpt.py, test_email_sender.py - Deploy: deploy_full.sh, schema.sql, seed_knowledge_base.sql
This commit is contained in:
@@ -1,6 +1,63 @@
|
||||
# Changelog — AegisOne Service Portal
|
||||
|
||||
## 1.7.0 (29.05.2026)
|
||||
### Новые функции
|
||||
- **Прокси-роуты для бота:** /api/bot/webhook с пробросом X-Max-Bot-Api-Secret
|
||||
- **Страницы бота:** bot_consent.html (превью + таймер 10 сек), bot_kb.html (✏️ редактирование), bot_settings.html (showNotification, max_bot_id)
|
||||
- **Тосты:** глобальная showNotification() в base.html, CSS-классы .toast-* в service.css
|
||||
- **CSS-переменные:** var(--white)→var(--bg-card), var(--text)→var(--text-primary) во всех шаблонах
|
||||
### Исправления
|
||||
- Проброс secret через webhook-прокси
|
||||
|
||||
## 1.5.5 (23.05.2026)
|
||||
### Новые функции
|
||||
- Этап 4 завершён: все 8 feature-обработчиков (risk_score, sla_status, photo_report, appointment, quality_rate, commercial, my_objects, sla_ticket)
|
||||
- max_notifications.py: notify_operator, notify_level2, notify_client, notify_handoff_escalation, notify_ticket_created
|
||||
- emotion_detector.py + categorizer.py: GPT с fallback на keywords
|
||||
- Handoff-диалоги (/service/bot-settings/handoffs) с polling и кнопкой "Взять в работу"
|
||||
- Уведомления бота (/service/bot-settings/notifications) + mark-read
|
||||
- API: handoffs, notifications, risk-questions (CRUD), tickets (list/get/create/message/status), engineers
|
||||
- Страница "Вопросы риск-инжиниринга" (bot_risk_questions.html) — управление через портал
|
||||
- Страница "Заявки" (bot_tickets.html) — просмотр, создание, детали, сообщения, смена статуса
|
||||
- risk_score.py переписан: чтение вопросов из БД (BotRiskQuestion) вместо хардкода
|
||||
- SQL миграция v1.5.5: CREATE TABLE для bot_notifications, bot_notification_subscriptions, bot_risk_questions, bot_tickets, bot_ticket_messages, bot_ticket_statuses + seed-данные
|
||||
- MaxAPIClient.test_mode — заглушка для тестового прогона без отправки в MAX
|
||||
- /api/bot/test-run — вызывает handle_update с test_mode, симулируя настоящий диалог
|
||||
- portal_settings.html: кнопка тестового прогона с живой симуляцией
|
||||
- role_settings.html: новые permission (bot_tickets, bot_notifications, bot_risk_questions)
|
||||
- Сайдбар: добавлены "Заявки" и "Вопросы риск-инжиниринга" в раздел Чат-бот Max
|
||||
- Пользователи (users.html): колонка MAX ID + поле в форме создания/редактирования
|
||||
### Исправления и улучшения
|
||||
- bot_engine.py: callback `rate_*` → прямой вызов quality_rate handler
|
||||
- bot_engine.py: добавлен вызов notify_handoff_escalation при негативных эмоциях
|
||||
- Users stub: login, full_name, role, is_active, max_user_id
|
||||
- Proxy-роуты py_service: добавлены все API для risk-questions, tickets, engineers
|
||||
- Тесты max_bot: проверка всех роутов
|
||||
- **Добавлена фича "Напоминания"** — reminders.py handler, состояние FEATURE_REMINDERS в FSM, кнопка в меню
|
||||
- **broadcasts.py зарегистрирован** — добавлен в _handle_feature (main_menu.py) и в build_main_menu_buttons (inline.py)
|
||||
- **FSM.transition("done")** — все feature-хендлеры теперь возвращают в MAIN_MENU вместо IDLE, показывают меню
|
||||
- **FSM изоляция** — risk_score, appointment, commercial переписаны с set_temp/get_temp вместо прямого доступа к _states
|
||||
- **settings_cache.py** — исправлены get_phones() (парсит phone_1/phone_2) и get_email() (читает support_email)
|
||||
- **Delete forms** — bot_categories.html, bot_kb.html, bot_settings.html: заменены form POST на fetch() с JSON
|
||||
- **SQL миграция v1.5.5 исправлена** — bot_notifications + recipient_max_user_id/related_*, подписки с boolean-колонками
|
||||
- **Версия обновлена до 1.5.5
|
||||
|
||||
## 1.5.4 (22.05.2026)
|
||||
### Новые функции
|
||||
- Страница Handoff-диалогов (bot_handoffs.html) с polling
|
||||
- Страница Уведомлений бота (bot_notifications.html) с mark-read
|
||||
- API: handoffs, notifications, risk-questions, tickets, engineers (max_bot/main.py)
|
||||
- max_notifications.py: уведомления операторам, level2, клиентам, эскалация
|
||||
- emotion_detector.py + categorizer.py: модули GPT + keyword fallback
|
||||
- risk_score.py: анкета 7 вопросов с in-memory хранением через FSM
|
||||
- Уведомления FSM (notifications.py + broadcasts.py): подписка / отписка
|
||||
- Users stub (login, full_name, role, max_user_id)
|
||||
- Пользователи: колонка MAX ID + поле в форме (users.html)
|
||||
- SQL миграция v1.5.5 (черновик)
|
||||
### Исправления и улучшения
|
||||
- risk_score.py: переключение с хардкода на БД (BotRiskQuestion)
|
||||
- bot_engine.py: маршрутизация feature-состояний через _feature_handlers
|
||||
- bot_engine.py: callback rate_* → прямой вызов handle_quality_rate
|
||||
|
||||
## 1.5.3 (22.05.2026)
|
||||
### Новые функции
|
||||
|
||||
Reference in New Issue
Block a user