refactor: extract message grouping logic (P3.9)

- Create src/message_grouping.rs module (255 lines)
- Add MessageGroup enum (DateSeparator, SenderHeader, Message)
- Add group_messages() function for date/sender grouping
- Write 5 unit tests (all passing)
- Add full rustdoc documentation with examples
- Update REFACTORING_ROADMAP.md (Priority 3: 3/4 tasks, 75%)
- Update CONTEXT.md with refactoring progress
- Overall refactoring progress: 11/17 tasks (65%)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
Mikhail Kilin
2026-01-31 23:30:41 +03:00
parent c5896b7f14
commit 0ca3da54e7
4 changed files with 343 additions and 33 deletions

View File

@@ -737,6 +737,48 @@ let message = MessageBuilder::new(MessageId::new(123))
- Фаза 4.1: Utils тесты (5 штук) - низкий приоритет
- Фаза 4.2: Performance бенчмарки (3 штуки) - низкий приоритет
### 31 января 2026 (поздняя ночь) — Рефакторинг Priority 3: Message Grouping ✅
1. **Создан модуль message_grouping.rs**
- **Файл**: `src/message_grouping.rs` (255 строк)
- **Реализовано**:
- Enum `MessageGroup` с тремя вариантами:
- `DateSeparator(i32)` — разделитель даты
- `SenderHeader { is_outgoing: bool, sender_name: String }` — заголовок отправителя
- `Message(MessageInfo)` — само сообщение
- Функция `group_messages()` для группировки сообщений по дате и отправителю
- Полная документация с rustdoc комментариями
- 5 unit тестов (все проходят):
- test_group_messages_by_date
- test_group_messages_by_sender
- test_group_outgoing_vs_incoming
- test_empty_messages
- test_single_message
2. **Обновлены файлы проекта**
- Модуль добавлен в `src/lib.rs`
- Обновлен `REFACTORING_ROADMAP.md`:
- P3.9 отмечено как завершённое ✅
- P3.7 отмечено как частично завершённое (4/5 компонентов)
- P3.8 отмечено как завершённое ✅
- Priority 3: 3/4 задач (75%)
- **Общий прогресс рефакторинга: 11/17 задач (65%)**
3. **Разблокированы зависимости**
- P3.9 ✅ (Message Grouping) завершено
- P3.8 ✅ (Formatting Module) уже было завершено ранее
- Теперь можно реализовать `message_bubble.rs` (был заблокирован P3.8 и P3.9)
4. **Результаты тестирования**:
-Все 464 теста прошли успешно
- ✅ Новые 5 unit тестов для message_grouping прошли
- ✅ Doctest для group_messages() прошёл
- ✅ Нет ошибок компиляции
**Следующие шаги рефакторинга**:
- P3.10: Hotkey Mapping (осталась последняя задача Priority 3)
- Интеграция message_grouping в messages.rs
- Реализация message_bubble.rs (теперь разблокировано!)
## Известные проблемы
1. При первом запуске нужно пройти авторизацию