This commit is contained in:
85
CHANGELOG.md
85
CHANGELOG.md
@@ -1,5 +1,47 @@
|
||||
# Changelog
|
||||
|
||||
## [0.5.10] - 2025-06-30
|
||||
|
||||
### Новая функциональность CRUD приглашений
|
||||
|
||||
- **НОВОЕ**: Полноценное управление приглашениями в админ-панели:
|
||||
- **Новая вкладка "Приглашения"**: Отдельная секция в админ-панели для управления приглашениями к сотрудничеству
|
||||
- **Полная CRUD функциональность**: Создание, редактирование, удаление приглашений
|
||||
- **Подробная таблица**: Приглашающий, приглашаемый, публикация, статус с детальной информацией
|
||||
- **Клик для редактирования**: Нажатие на строку открывает модалку редактирования приглашения
|
||||
- **Удаление с подтверждением**: Тонкая кнопка "×" для удаления с модальным окном подтверждения
|
||||
- **Кнопка создания**: Возможность создания новых приглашений прямо из интерфейса
|
||||
- **Фильтрация по статусу**: Все/Ожидает ответа/Принято/Отклонено
|
||||
- **Поиск**: По email и именам приглашающего/приглашаемого, названию публикации, ID
|
||||
- **Пагинация**: Полная поддержка пагинации для больших списков приглашений
|
||||
|
||||
- **Серверная часть**:
|
||||
- **GraphQL схема**: Новые queries, mutations и input types для приглашений:
|
||||
- `adminGetInvites` - получение списка приглашений с фильтрацией и пагинацией
|
||||
- `adminCreateInvite` - создание нового приглашения
|
||||
- `adminUpdateInvite` - обновление статуса приглашения
|
||||
- `adminDeleteInvite` - удаление приглашения
|
||||
- **Резолверы**: Полный набор администраторских резолверов с проверкой прав доступа
|
||||
- **Авторизация**: Требуется роль admin для создания/редактирования/удаления приглашений
|
||||
- **Валидация данных**: Проверка существования всех связанных объектов (авторы, публикации)
|
||||
- **Предотвращение дублирования**: Проверка уникальности приглашений по составному ключу
|
||||
- **Подробное логирование**: Отслеживание всех операций с приглашениями для аудита
|
||||
|
||||
- **Архитектурные улучшения**:
|
||||
- **Модальное окно InviteEditModal**: Отдельный компонент для создания/редактирования приглашений
|
||||
- **Автоматическое определение режима**: Модальное окно само определяет режим создания/редактирования
|
||||
- **Валидация форм**: Проверка корректности ID, предотвращение самоприглашений
|
||||
- **Составной первичный ключ**: Работа с уникальным идентификатором из трех полей (inviter_id, author_id, shout_id)
|
||||
- **Статусные бейджи**: Цветовая индикация статусов (ожидает/принято/отклонено)
|
||||
- **Информационные панели**: Отображение полной информации о связанных авторах и публикациях
|
||||
|
||||
- **ТЕХНИЧЕСКАЯ АРХИТЕКТУРА**:
|
||||
- **Следование паттернам проекта**: Использование существующих компонентов Button, Modal, Pagination
|
||||
- **Переиспользование стилей**: CSS модули Table.module.css, Form.module.css, Modal.module.css
|
||||
- **Консистентный API**: Единый стиль GraphQL операций admin* с другими админскими функциями
|
||||
- **TypeScript типизация**: Полная типизация всех интерфейсов приглашений и связанных объектов
|
||||
- **Обработка ошибок**: Централизованная обработка ошибок с детальными сообщениями пользователю
|
||||
|
||||
## [0.5.9] - 2025-06-30
|
||||
|
||||
### Новая функциональность CRUD коллекций
|
||||
@@ -44,6 +86,49 @@
|
||||
- **Оптимизированная конфигурация маршрутов**: Четкое разделение между API, статикой и SPA fallback
|
||||
- **Совместимость с SolidJS Router**: Полная поддержка клиентского роутинга
|
||||
|
||||
### Исправления GraphQL схемы и расширение CRUD
|
||||
|
||||
- **ИСПРАВЛЕНО**: Поле `pic` в типе Collection:
|
||||
- **Проблема**: GraphQL ошибка "Cannot query field 'pic' on type 'Collection'"
|
||||
- **Решение**: Добавлено поле `pic: String` в тип Collection в `schema/type.graphql`
|
||||
- **Результат**: Картинки коллекций корректно отображаются в админ-панели
|
||||
|
||||
- **НОВОЕ**: Полноценный CRUD для тем и сообществ:
|
||||
- **Кнопки создания**: Добавлены кнопки "Создать тему" и "Создать сообщество" в соответствующие разделы админ-панели
|
||||
- **Мутации создания**:
|
||||
- `CREATE_TOPIC_MUTATION` для создания новых тем
|
||||
- `CREATE_COMMUNITY_MUTATION` для создания новых сообществ
|
||||
- **Модальные окна создания**: Полнофункциональные формы с валидацией для создания тем и сообществ
|
||||
- **Интеграция с существующими резолверами**: Использование GraphQL мутаций `create_topic` и `create_community`
|
||||
- **Результат**: Администраторы могут создавать новые темы и сообщества прямо из админ-панели
|
||||
|
||||
- **Архитектурные улучшения**:
|
||||
- **Переиспользование компонентов**: TopicEditModal используется как для создания, так и для редактирования тем
|
||||
- **Консистентный UX**: Единый стиль модальных окон создания/редактирования для всех сущностей
|
||||
- **Валидация форм**: Обязательные поля (slug, name) с placeholder'ами и подсказками
|
||||
- **Автоматическое обновление**: После создания/редактирования списки автоматически перезагружаются
|
||||
|
||||
### Рефакторинг модальных окон
|
||||
|
||||
- **РЕФАКТОРИНГ**: Изоляция модальных окон в отдельные компоненты:
|
||||
- **Проблема**: Модальные окна создания/редактирования находились прямо в компонентах маршрутов, нарушая принцип разделения ответственности
|
||||
- **Решение**: Создание отдельных компонентов в папке `@/modals`:
|
||||
- `CommunityEditModal.tsx` - для создания и редактирования сообществ
|
||||
- `CollectionEditModal.tsx` - для создания и редактирования коллекций
|
||||
- **Архитектурные улучшения**:
|
||||
- **Следование традициям проекта**: Все модальные окна теперь изолированы в отдельные компоненты (`EnvVariableModal`, `RolesModal`, `ShoutBodyModal`, `TopicEditModal`)
|
||||
- **Переиспользование паттернов**: Единый стиль props, валидации и обработки ошибок
|
||||
- **Лучшая типизация**: TypeScript интерфейсы для всех props компонентов
|
||||
- **Упрощение роутов**: Убрана сложная логика форм из маршрутов - теперь только логика API вызовов
|
||||
- **Валидация форм**: Централизованная валидация в модальных компонентах с real-time обратной связью
|
||||
- **Результат**: Более чистая архитектура, лучшее разделение ответственности, упрощение тестирования
|
||||
|
||||
- **ТЕХНИЧЕСКАЯ АРХИТЕКТУРА**:
|
||||
- **Унификация API**: Единый паттерн `onSave(data: Partial<Entity>)` для всех модальных окон создания/редактирования
|
||||
- **Автоматическое определение режима**: Модальные окна сами определяют режим создания/редактирования по наличию entity в props
|
||||
- **Очистка состояния**: Автоматический сброс ошибок и формы при открытии/закрытии модальных окон
|
||||
- **Консистентные стили**: Переиспользование CSS модулей `Form.module.css` и `Modal.module.css`
|
||||
|
||||
## [0.5.8] - 2025-06-30
|
||||
|
||||
### Улучшения интерфейса публикаций
|
||||
|
Reference in New Issue
Block a user