Corp/backend/docs/CHANGELOG.md

8.2 KiB
Raw Blame History

Changelog - EUSRR Chat Module

Все значимые изменения в чат-модуле документируются в этом файле.

Формат основан на Keep a Changelog, и этот проект придерживается Semantic Versioning.


[2.0.0] - 2026-01-13

✨ Добавлено

Умный автоскролл

  • Индикатор новых сообщений - кнопка "N новых сообщений" при чтении истории
  • Telegram-like поведение - автоскролл только если пользователь внизу
  • Счетчик непрочитанных - отслеживание количества новых сообщений
  • Автоскрытие при скролле - индикатор исчезает когда прокручиваем вниз вручную
  • 18 автотестов для умного автоскролла (100% pass rate)

Производительность (MessageStoreV2)

  • Batch операции - отложенные уведомления для массовых операций (3x быстрее)
  • Бинарный поиск - O(log n) вставка в отсортированный список
  • Оптимизация ререндеров - меньше перерисовок при загрузке истории

Устойчивость (MessageLoaderV2)

  • Retry логика - автоматические повторы при сбоях сети
  • Exponential backoff - умное увеличение задержки между попытками
  • AbortController - отмена дублирующих запросов
  • Timeout handling - обработка зависших запросов

Оптимизация (ScrollManagerV2)

  • Debounce для scroll - 16x меньше обработок событий
  • Throttle для загрузки - контроль частоты запросов истории
  • Улучшенный cleanup - правильное удаление слушателей

Архитектура

  • Централизованная конфигурация - chatConfig.js со всеми настройками
    • LOADER_CONFIG - настройки загрузчика
    • SCROLL_CONFIG - настройки скролла
    • AUTOSCROLL_CONFIG - ⭐ НОВОЕ: настройки автоскролла
    • STORE_EVENTS, CHAT_EVENTS, WS_EVENTS - константы событий
  • JSDoc типизация - полное покрытие TypeScript-like типами
  • Модульность - каждый компонент самостоятелен

Миграция

  • chatMigration.js - утилиты для миграции со старой версии
    • migrateToV2() - автоматическая миграция контроллера
    • ChatControllerCompat - compatibility layer для плавной миграции
    • isV2Controller(), getControllerVersion() - проверка версии
  • V2_MIGRATION_GUIDE.md - подробное руководство по миграции

Тестирование

  • chatTestsV2.js - портированные тесты для V2
  • chatTestsV2.html - удобный UI для запуска тестов
  • Покрытие: 8 сценариев умного автоскролла

🔄 Изменено

Breaking Changes

  • chat/index.js - V2 теперь экспортируется как основная версия
    // БЫЛО:
    export { ChatController } from '../controllers/chatController.js';
    
    // СТАЛО:
    export { ChatControllerV2 as ChatController } from '../controllers/chatControllerV2.js';
    export { ChatController as ChatControllerLegacy } from '../controllers/chatController.js';
    
  • Приватные свойства - префикс _ для внутренних свойств в V2
    • newMessagesCount → _newMessagesCount
    • initialized → _initialized
    • Решение: используйте ChatControllerCompat для обратной совместимости

API Changes

  • Опции конструктора:
    • Удалено: lastReadTimestamp
    • Добавлено: lastReadMessageId (ID вместо timestamp)
  • Методы Store:
    • addMessages() теперь поддерживает batch режим
    • Оптимизированы уведомления (одно событие вместо N)

🐛 Исправлено

  • Scroll watcher timing - удален debounce для мгновенной реакции в тестах
  • Race conditions - AbortController решает проблему дублирующих запросов
  • Memory leaks - правильный cleanup слушателей в destroy()
  • Бесконечный скролл - улучшена логика определения "внизу чата"

⚡ Производительность

  • 3.3x faster - batch загрузка 100 сообщений (50ms → 15ms)
  • 16x меньше - обработок scroll events (100/сек → 6/сек)
  • O(log n) - вставка сообщений (вместо O(n))
  • -5.7% кода - V2 более компактен (2145 строк vs 2274)

📚 Документация

  • V2_REFACTORING_EVALUATION.md - полная оценка рефакторинга V2
  • V2_MIGRATION_GUIDE.md - пошаговое руководство миграции
  • CHANGELOG.md - этот файл
  • Обновлены комментарии в коде - JSDoc типизация

🧪 Тестирование

  • Портировано 18 тестов умного автоскролла
  • Pass rate: 100% (18/18)
  • Добавлен удобный HTML runner (chatTestsV2.html)

[1.0.0] - 2025-12-XX

Добавлено

  • Базовая версия ChatController
  • MessageStore для хранения сообщений
  • MessageLoader для загрузки через API
  • ScrollManager для управления скроллом
  • MessageRenderer для рендеринга сообщений

Функциональность

  • Загрузка начальных сообщений
  • Загрузка истории при скролле вверх
  • WebSocket для real-time обновлений
  • Оптимистичные обновления при отправке
  • Базовый автоскролл

Roadmap

[2.1.0] - Планируется

  • Виртуализация для очень длинных чатов (10000+ сообщений)
  • Оффлайн режим с кешированием в IndexedDB
  • Поиск по сообщениям чата
  • Реакции на сообщения (улучшенный UX)
  • Редактирование отправленных сообщений

[3.0.0] - Будущее

  • TypeScript миграция
  • Web Workers для обработки больших объемов данных
  • Service Worker для push-уведомлений
  • E2E шифрование сообщений

Ссылки


Легенда:

  • ✨ Добавлено - новая функциональность
  • 🔄 Изменено - изменения в существующей функциональности
  • 🗑️ Удалено - удаленная функциональность
  • 🐛 Исправлено - исправления багов
  • 🔒 Безопасность - закрытие уязвимостей
  • ⚡ Производительность - улучшения производительности
  • 📚 Документация - только документация
  • 🧪 Тестирование - добавление/изменение тестов