# Implementation Plan - [-] 1. Настройка проекта и Git - [x] 1.1 Создать структуру Gradle проекта - Создать build.gradle.kts с зависимостями Paper API, HikariCP, OkHttp - Создать settings.gradle.kts - Настроить Java 21 и shadowJar для сборки - _Requirements: 7.1_ - [ ] 1.2 Настроить Git и .gitignore - Создать .gitignore для Java/Gradle проекта - Инициализировать git репозиторий - Добавить remote https://git.lokili.xyz/loki/lorep.git - Сделать initial commit и push - _Requirements: N/A_ - [ ] 1.3 Создать plugin.yml и основной класс - Создать plugin.yml с командами и правами - Создать LorepPlugin.java с onEnable/onDisable - _Requirements: 6.1, 6.2, 6.3_ - [ ] 2. Реализация конфигурации - [ ] 2.1 Создать ConfigManager и config.yml - Создать default config.yml с настройками БД и webhook - Реализовать ConfigManager для чтения конфигурации - _Requirements: 7.1, 7.2, 7.3, 7.4_ - [ ] 2.2 Написать property test для парсинга конфигурации - **Property 9: Configuration Parsing** - **Validates: Requirements 7.1, 7.3, 7.4** - [ ] 3. Реализация базы данных - [ ] 3.1 Создать модель Report и интерфейс DatabaseManager - Создать Report record - Создать интерфейс DatabaseManager - _Requirements: 2.1_ - [ ] 3.2 Реализовать SQLiteDatabaseManager - Реализовать все методы интерфейса для SQLite - Создать таблицу и индексы - _Requirements: 2.1, 2.2, 2.3_ - [ ] 3.3 Реализовать PostgreSQLDatabaseManager - Реализовать все методы с HikariCP connection pool - Создать таблицу и индексы для PostgreSQL - _Requirements: 2.1, 2.2, 2.3_ - [ ] 3.4 Написать property tests для DatabaseManager - **Property 1: Report Creation Integrity** - **Property 2: Duplicate Report Prevention** - **Property 3: Report Persistence Round-Trip** - **Property 4: Report Ordering** - **Property 7: Report Count Accuracy** - **Validates: Requirements 1.1, 1.2, 2.1, 2.2, 2.3, 5.1** - [ ] 4. Checkpoint - Проверка тестов БД - Ensure all tests pass, ask the user if questions arise. - [ ] 5. Реализация Discord Webhook - [ ] 5.1 Создать DiscordWebhook сервис - Реализовать отправку embed сообщений через OkHttp - Обработать ошибки и отсутствие URL - _Requirements: 3.1, 3.2, 3.3_ - [ ] 5.2 Написать property test для webhook payload - **Property 5: Webhook Payload Completeness** - **Validates: Requirements 3.1** - [ ] 6. Реализация команд - [ ] 6.1 Создать ReportCommand (/report [ник] [причина]) - Валидация аргументов и прав - Проверка на самого себя и существование игрока - Проверка на дубликат репорта - Сохранение в БД и отправка в webhook - _Requirements: 1.1, 1.2, 1.3, 1.4, 1.5, 6.1_ - [ ] 6.2 Создать ReportStatsCommand (/report stats [ник]) - Показ количества репортов - Показ последнего онлайна - Список последних репортов - _Requirements: 5.1, 5.2, 5.3, 5.4, 6.3_ - [ ] 6.3 Написать property test для проверки прав - **Property 8: Permission Enforcement** - **Validates: Requirements 6.1, 6.2, 6.3** - [ ] 7. Реализация GUI - [ ] 7.1 Создать ReportGui с пагинацией - Создать инвентарь 54 слота - Отображение голов игроков с их скинами - Lore с информацией о репорте - Кнопки навигации по страницам - _Requirements: 4.1, 4.2, 4.3, 4.4_ - [ ] 7.2 Создать GuiClickListener - Обработка кликов по страницам - Отмена выноса предметов - _Requirements: 4.4_ - [ ] 7.3 Создать ReportGuiCommand (/report gui) - Проверка прав и открытие GUI - _Requirements: 4.1, 6.2_ - [ ] 7.4 Написать property test для пагинации - **Property 6: Pagination Correctness** - **Validates: Requirements 4.4** - [ ] 8. Утилиты и сообщения - [ ] 8.1 Создать TimeUtil для форматирования времени - Форматирование "X минут/часов/дней назад" - _Requirements: 4.3, 5.2_ - [ ] 8.2 Создать MessageUtil для цветных сообщений - Парсинг цветовых кодов - Отправка сообщений игрокам - _Requirements: 1.2, 1.3, 1.4, 5.4, 6.1, 6.2, 6.3_ - [ ] 9. Интеграция и финализация - [ ] 9.1 Интегрировать все компоненты в LorepPlugin - Инициализация всех менеджеров в onEnable - Регистрация команд и листенеров - Корректное закрытие в onDisable - _Requirements: 2.2, 7.1_ - [ ] 9.2 Финальный push в Git - Commit всех изменений - Push в репозиторий - _Requirements: N/A_ - [ ] 10. Final Checkpoint - Финальная проверка - Ensure all tests pass, ask the user if questions arise.