simpler-parent-select
This commit is contained in:
100
CHANGELOG.md
100
CHANGELOG.md
@@ -1,5 +1,97 @@
|
||||
# Changelog
|
||||
|
||||
## [0.6.0] - 2025-07-01
|
||||
|
||||
### Исправления авторизации
|
||||
|
||||
- **КРИТИЧНО**: Исправлена ошибка "Сессия не найдена в Redis" в админ-панели:
|
||||
- **Проблема**: Несоответствие полей в JWT токенах - при создании использовалось поле `id`, а при декодировании ожидалось `user_id`
|
||||
- **Исправления**:
|
||||
- В `SessionTokenManager.create_session_token` изменено создание JWT с поля `id` на `user_id`
|
||||
- В `JWTCodec.encode` добавлена поддержка обоих полей (`user_id` и `id`) для обратной совместимости
|
||||
- Обновлена обработка словарей в `JWTCodec.encode` для корректной работы с новым форматом
|
||||
- **Результат**: Авторизация в админ-панели работает корректно, токены правильно верифицируются в Redis
|
||||
|
||||
### Исправления типизации
|
||||
|
||||
- **ИСПРАВЛЕНО**: Ошибки mypy в `resolvers/topic.py`:
|
||||
- Добавлены аннотации типов для переменных `current_parent_ids`, `source_parent_ids`, `old_parent_ids`, `parent_parent_ids`
|
||||
- Исправлена типизация при работе с `parent_ids` как `list[int]` с использованием `list()` для явного преобразования
|
||||
- Заменен метод `contains()` на `op("@>")` для корректной работы с PostgreSQL JSON массивами
|
||||
- Добавлено явное приведение типов для `invalidate_topic_followers_cache(int(source_topic.id))`
|
||||
- Добавлены `# type: ignore[assignment]` комментарии для присваивания значений SQLAlchemy Column полям
|
||||
- **Результат**: Код проходит проверку mypy без ошибок
|
||||
|
||||
### Новые интерфейсы управления иерархией топиков
|
||||
|
||||
- **НОВОЕ**: Три варианта интерфейса для управления иерархией тем в админ-панели:
|
||||
|
||||
#### Простой интерфейс назначения родителей
|
||||
- **TopicSimpleParentModal**: Простое и понятное назначение родительских тем
|
||||
- **Возможности**:
|
||||
- 🔍 **Поиск родителя**: Быстрый поиск подходящих родительских тем по названию
|
||||
- 🏠 **Опция корневой темы**: Возможность сделать тему корневой одним кликом
|
||||
- 📍 **Отображение текущего расположения**: Показ полного пути темы в иерархии
|
||||
- 📋 **Предварительный просмотр**: Показ нового расположения перед применением
|
||||
- ✅ **Валидация**: Автоматическая проверка циклических зависимостей
|
||||
- 🏘️ **Фильтрация по сообществу**: Показ только тем из того же сообщества
|
||||
- **UX особенности**:
|
||||
- Radio buttons для четкого выбора одного варианта
|
||||
- Отображение полных путей до корня для каждой темы
|
||||
- Информационные панели с детальным описанием каждой опции
|
||||
- Блокировка некорректных действий (циклы, разные сообщества)
|
||||
- Простой и интуитивный интерфейс без сложных элементов
|
||||
|
||||
#### Вариант 2: Простой селектор родителей
|
||||
- **TopicParentModal**: Быстрый выбор родительской темы для одного топика
|
||||
- **Возможности**:
|
||||
- Поиск по названию для быстрого нахождения родителя
|
||||
- Отображение текущего и нового местоположения в иерархии
|
||||
- Опция "Сделать корневой темой" (🏠)
|
||||
- Показ полного пути до корня для каждой темы
|
||||
- Фильтрация только совместимых родителей (то же сообщество, без циклов)
|
||||
- Предотвращение выбора потомков как родителей
|
||||
- **UX особенности**:
|
||||
- Radio buttons для четкого выбора
|
||||
- Отображение slug и ID для точной идентификации
|
||||
- Информационные панели с текущим состоянием
|
||||
- Валидация с блокировкой некорректных действий
|
||||
|
||||
#### Вариант 3: Массовый редактор иерархии
|
||||
- **TopicBulkParentModal**: Одновременное изменение родителя для множества тем
|
||||
- **Возможности**:
|
||||
- Два режима: "Установить родителя" и "Сделать корневыми"
|
||||
- Проверка совместимости (только темы одного сообщества)
|
||||
- Предварительный просмотр изменений "Было → Станет"
|
||||
- Поиск по названию среди доступных родителей
|
||||
- Валидация для предотвращения циклов и ошибок
|
||||
- Отображение количества затрагиваемых тем
|
||||
- **UX особенности**:
|
||||
- Список выбранных тем с их текущими путями
|
||||
- Цветовая индикация состояний (до/после изменения)
|
||||
- Предупреждения о несовместимых действиях
|
||||
- Массовое применение с подтверждением
|
||||
|
||||
### Техническая архитектура
|
||||
|
||||
- **НОВАЯ мутация `set_topic_parent`**: Простое API для назначения родительской темы
|
||||
- **Исправления GraphQL схемы**: Добавлены поля `message` и `stats` в `CommonResult`
|
||||
- **Унифицированная валидация**: Проверка циклических зависимостей и принадлежности к сообществу
|
||||
- **Простой интерфейс**: Radio buttons вместо сложного drag & drop для лучшего UX
|
||||
- **Поиск и фильтрация**: Быстрый поиск подходящих родительских тем
|
||||
- **Переиспользование компонентов**: Единый стиль с существующими модальными окнами
|
||||
- **Автоматическая инвалидация кешей**: Обновление кешей при изменении иерархии
|
||||
- **Детальное логирование**: Отслеживание всех операций с иерархией для отладки
|
||||
|
||||
### Интеграция с существующей системой
|
||||
|
||||
- **Кнопка "🏠 Назначить родителя"**: Простая кнопка для назначения родительской темы
|
||||
- **Требует выбора одной темы**: Работает только с одной выбранной темой за раз
|
||||
- **Совместимость**: Работает с существующей системой `parent_ids` в JSON формате
|
||||
- **Обновление кешей**: Автоматическая инвалидация при изменении иерархии
|
||||
- **Логирование**: Детальное отслеживание всех операций с иерархией
|
||||
- **Отладка слияния**: Исправлена ошибка GraphQL `Cannot query field 'message'` в системе слияния тем
|
||||
|
||||
## [0.5.10] - 2025-06-30
|
||||
|
||||
### auth/internal fix
|
||||
@@ -9,6 +101,14 @@
|
||||
- Исправлена функция `admin_delete_invites_batch` - завершена реализация для корректной обработки пакетного удаления приглашений
|
||||
- Исправлена ошибка в функции `get_shouts_with_links` в файле `resolvers/reader.py` - добавлено значение по умолчанию для поля `slug` у авторов публикаций в полях `authors` и `created_by`, чтобы избежать ошибки "Cannot return null for non-nullable field Author.slug"
|
||||
- Исправлена ошибка в функции `admin_get_shouts` в файле `resolvers/admin.py` - добавлена полная загрузка информации об авторах для полей `created_by`, `updated_by` и `deleted_by` с корректной обработкой поля `slug` и значениями по умолчанию, чтобы избежать ошибки "Cannot return null for non-nullable field Author.slug"
|
||||
- Исправлена ошибка базы данных "relation invite does not exist" - раскомментирована таблица `invite.Invite` в функции `create_all_tables()` в файле `services/schema.py` для создания необходимой таблицы приглашений
|
||||
- **УЛУЧШЕНО**: Верстка админ-панели приглашений:
|
||||
- **Поиск на всю ширину**: Поле поиска теперь занимает всю ширину в отдельной строке для удобства ввода длинных запросов
|
||||
- **Сортировка в заголовках**: Добавлены кликабельные иконки сортировки (↑↓) прямо в заголовки колонок таблицы
|
||||
- **Компактная панель фильтров**: Фильтр статуса и кнопки управления размещены в отдельной строке под поиском
|
||||
- **Улучшенный UX**: Hover эффекты для сортируемых колонок, визуальные индикаторы активной сортировки
|
||||
- **Адаптивный дизайн**: Корректное отображение на мобильных устройствах с переносом элементов
|
||||
- **Современный стиль**: Обновленная цветовая схема и типографика для лучшей читаемости
|
||||
|
||||
### Улучшения админ-панели для приглашений
|
||||
|
||||
|
Reference in New Issue
Block a user