refactor: add modal/validation utils and partial App encapsulation

Quick wins refactoring (Variant 1):
- Created src/utils/modal_handler.rs (120+ lines)
  - 4 functions for modal handling (close, confirm, yes/no)
  - ModalAction enum for type-safe processing
  - English and Russian keyboard layout support
  - 4 unit tests
- Created src/utils/validation.rs (180+ lines)
  - 7 validation functions (empty, length, IDs, etc)
  - Covers all common validation patterns
  - 7 unit tests
- Partial App encapsulation:
  - Made config field private (readonly via app.config())
  - Added 30+ getter/setter methods
  - Updated ui/messages.rs to use config()
- Updated documentation:
  - REFACTORING_OPPORTUNITIES.md: #1 Complete, #5 Partial
  - CONTEXT.md: Added quick wins section

Tests: 563 passed, 0 failed

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
Mikhail Kilin
2026-02-01 23:55:49 +03:00
parent e690acfb09
commit dff0897da4
7 changed files with 631 additions and 19 deletions

View File

@@ -332,6 +332,36 @@ reaction_other = "gray"
## Последние обновления (2026-02-01)
### Рефакторинг — Быстрые победы (Вариант 1) ✅ (2026-02-01)
**Что сделано**:
- ✅ Создан `src/utils/modal_handler.rs` (120+ строк):
- 4 функции для обработки модальных окон
- `ModalAction` enum для type-safe обработки
- Поддержка английской и русской раскладки
- 4 unit теста (все проходят)
- ✅ Создан `src/utils/validation.rs` (180+ строк):
- 7 функций валидации: `is_non_empty()`, `is_within_length()`, `is_valid_chat_id()`, и др.
- Покрывает все основные паттерны валидации
- 7 unit тестов (все проходят)
- ✅ Частичная инкапсуляция App:
- Поле `config` сделано приватным (readonly через `app.config()`)
- Добавлено 30+ методов-геттеров и сеттеров
- Остальные поля оставлены pub для совместимости
**Статус Дублирование кода (#1)**: ✅ ЗАВЕРШЕНО! (3/3)
- ✅ retry utils (было выполнено ранее)
- ✅ modal_handler
- ✅ validation
**Статус Инкапсуляция (#5)**: ✅ Частично выполнено (1/4)
- ✅ Config инкапсулирован
- ⏳ Полная инкапсуляция требует массового рефакторинга 170+ мест
**Все тесты проходят**: 563 passed; 0 failed ✅
---
### Тестирование — Фаза 4 ЗАВЕРШЕНА! ✅ (2026-02-01)
**Что сделано**: