LoChat/MIGRATION_PLAN.md
2026-03-16 12:43:52 +01:00

140 lines
No EOL
5 KiB
Markdown

# План миграции команд на новую архитектуру
## ✅ Что уже сделано
### 1. Создана базовая архитектура
- `BaseCommand` - базовый класс для всех команд
- `PlayerCommand` - для команд игроков
- `AdminCommand` - для административных команд
- `CommandManager` - централизованное управление
### 2. Созданы категории команд
- `chat/` - команды чата
- `messaging/` - личные сообщения
- `social/` - социальные функции
- `moderation/` - модерация
- `admin/` - административные команды
### 3. Примеры новых команд
- `GlobalChatCommand` (новая архитектура)
- `LocalChatCommand` (новая архитектура)
- `MsgCommand` (новая архитектура)
- `ReplyCommand` (новая архитектура)
- `IgnoreCommand` (новая архитектура)
## 🔄 План поэтапной миграции
### Этап 1: Команды чата (ПРИОРИТЕТ 1)
- [x] `GlobalChatCommand` - создан
- [x] `LocalChatCommand` - создан
- [ ] Тестирование и отладка
- [ ] Замена в CommandManager
### Этап 2: Личные сообщения (ПРИОРИТЕТ 1)
- [x] `MsgCommand` - создан
- [x] `ReplyCommand` - создан
- [ ] Тестирование и отладка
- [ ] Замена в CommandManager
### Этап 3: Социальные команды (ПРИОРИТЕТ 2)
- [x] `IgnoreCommand` - создан
- [ ] `UnignoreCommand`
- [ ] `IgnoreListCommand`
- [ ] `NickCommand`
### Этап 4: Команды модерации (ПРИОРИТЕТ 2)
- [ ] `MuteCommand`
- [ ] `UnmuteCommand`
- [ ] `MuteListCommand`
- [ ] `MuteHistoryCommand`
- [ ] `MuteBlameCommand`
### Этап 5: Административные команды (ПРИОРИТЕТ 3)
- [ ] `AnnounceCommand`
- [ ] `ClearChatCommand`
- [ ] `ClearChatConfigCommand`
- [ ] `ChatSpyCommand`
- [ ] `LoChatCommand`
- [ ] `ReloadConfigCommand`
- [ ] `DiscordCommand`
### Этап 6: Специальные команды (ПРИОРИТЕТ 4)
- [ ] `CustomCommandsCommand`
- [ ] Кастомные команды из `custom/`
## 🛠️ Процесс миграции одной команды
### 1. Создание новой команды
```java
public class NewCommand extends PlayerCommand {
public NewCommand(LoChat plugin) {
super(plugin);
}
@Override
protected boolean executePlayerCommand(Player player, Command command,
String label, String[] args) {
// Логика команды
return true;
}
}
```
### 2. Тестирование
- Проверка функциональности
- Проверка прав доступа
- Проверка обработки ошибок
### 3. Замена в CommandManager
```java
// Было:
registerOldCommand("command", new OldCommand(plugin));
// Стало:
registerCommand("command", new NewCommand(plugin));
```
### 4. Удаление старой команды
- Удалить файл старой команды
- Убрать импорты
## 📋 Чек-лист для каждой команды
### Обязательные проверки:
- [ ] Наследуется от правильного базового класса
- [ ] Правильная проверка прав доступа
- [ ] Обработка ошибок
- [ ] Валидация аргументов
- [ ] Сообщения из конфигурации
- [ ] TabCompleter (если нужен)
### Тестирование:
- [ ] Команда выполняется корректно
- [ ] Права доступа работают
- [ ] Ошибки обрабатываются
- [ ] Автодополнение работает
- [ ] Нет дублирования кода
## 🎯 Ожидаемые результаты
### После полной миграции:
- **Сокращение кода** на 40-50%
- **Устранение дублирования** проверок
- **Единообразная обработка** ошибок
- **Простота добавления** новых команд
- **Лучшая читаемость** кода
- **Соответствие SOLID** принципам
### Метрики качества:
- Цикломатическая сложность: ↓ 30%
- Дублирование кода: ↓ 60%
- Покрытие тестами: ↑ 80%
- Время разработки новых команд: ↓ 50%
## 🚀 Следующие шаги
1. **Протестировать созданные команды**
2. **Мигрировать команды по приоритету**
3. **Обновить документацию**
4. **Создать примеры для разработчиков**
5. **Настроить автотесты**