912 Commits

Author SHA1 Message Date
lizerk
ea61aef99a Merge branch 'develop' 2026-03-18 09:49:32 +03:00
lizerk
26941f29ee Merge branch 'feature/requests-employee-action-automation' into develop
Добавлена автоматизация создания кадровых событий из заявок:
- Сигналы в employees/signals.py для авто-создания EmployeeAction
- Celery tasks для отложенных событий (vacation, sick_leave)
- Management команда migrate_requests_to_actions
- 13 тестов покрытия функционала
- Документация в docs/completed/REQUESTS_CELERY_AUTOMATION.md
2026-03-18 09:42:48 +03:00
lizerk
46daefcdec test: добавлены тесты для сигналов и migration команда
- Добавлена management команда migrate_requests_to_actions для миграции существующих заявок
- Добавлен conftest.py с фикстурой user_factory для тестов requests_app
- Добавлены 13 тестов для проверки автоматизации создания EmployeeAction
- Покрытие: немедленные/отложенные события, дубликаты, условия срабатывания, маппинги
2026-03-18 09:42:13 +03:00
lizerk
c5a8455421 feat: автоматическое создание EmployeeAction из заявок
- Добавлены сигналы в employees/signals.py для автоматизации создания кадровых событий
- Реализованы стратегии: немедленные (transfer, dismissal) и отложенные (vacation, sick_leave)
- Добавлены Celery tasks для отложенного создания событий и авто-возврата
- Настроен periodic task для очистки пропущенных возвратов
- Архитектура: employees (ядро) обрабатывает события из requests_app (модуль)
2026-03-17 20:34:14 +03:00
lizerk
3dc8541508 добавлена иконка чатов в список сотрудников 2026-03-16 18:29:26 +03:00
lizerk
f28eda6929 feat: Улучшения страницы сотрудника и миграция на ChatMembership
Backend:
- Полная миграция на ChatMembership для всех типов чатов
- Удалены проверки participants M2M поля
- Добавлена обработка participants при создании чатов
- API методы для создания/редактирования/удаления кадровых событий

Frontend:
- Редизайн страницы пользователя с lucide-react иконами
- Добавлено редактирование профиля (ФИО, контакты, аватар)
- Функциональные кадровые события (создание/редактирование/удаление)
- История кадровых событий с цветовой кодировкой
- Исправлено создание дубликатов чатов (поиск по member_ids)
- Удалены визуальные статусные индикаторы (is_active ≠ online)
- Добавлен статус сотрудника из последнего action

Fixes:
- type 'private' вместо 'direct' для личных чатов
- ChatMembership проверки в user_can_access_chat()
- member_ids в ChatListSerializer для поиска чатов
2026-03-16 18:21:24 +03:00
lizerk
8588e52447 Merge branch 'develop' 2026-03-13 12:52:51 +03:00
lizerk
e414358e76 фикс веб пуш 2026-03-13 12:52:40 +03:00
lizerk
4df7c14c45 Merge branch 'develop' 2026-03-13 12:18:37 +03:00
lizerk
6e566b1dee фикс уведомлений через почту 2026-03-13 12:17:40 +03:00
lizerk
4078aca3f8 Merge branch 'develop' 2026-03-13 12:09:50 +03:00
lizerk
3910079223 фикс селоери 2026-03-13 12:09:20 +03:00
lizerk
037d7dcad5 Merge branch 'develop' 2026-03-12 17:12:08 +03:00
lizerk
a98c403116 Мигрировать участников из participants в ChatMembership 2026-03-12 17:11:49 +03:00
lizerk
83031d8118 Merge branch 'develop' 2026-03-12 17:08:28 +03:00
lizerk
2d818b6064 проверка видимости 2026-03-12 17:08:22 +03:00
lizerk
2bc4d73cab Merge branch 'develop' 2026-03-12 17:03:06 +03:00
lizerk
c59f8a77af Добавлю максимум диагностической информации для выявления проблемы: 2026-03-12 17:02:34 +03:00
lizerk
cd87e2ffe0 Merge branch 'develop' 2026-03-12 16:53:49 +03:00
lizerk
15b9b216ed Добавил диагностические опции в команду чек чат 2026-03-12 16:53:19 +03:00
lizerk
a1684fefce Merge branch 'develop' 2026-03-12 16:37:59 +03:00
lizerk
bfcafd219f фиус чек чат 2026-03-12 16:37:44 +03:00
lizerk
ff1acfa60b Merge branch 'develop' 2026-03-12 16:28:43 +03:00
lizerk
387d5bb672 проверка типов чатов 2026-03-12 16:28:30 +03:00
lizerk
b94c6499d4 chore: очистка устаревшей документации
- Удалена устаревшая документация из backend/docs/
- Актуальные гайды сохранены в backend/docs/guides/ и других подпапках
- Удален migrate_participants_to_memberships.py (уже был создан в communications/management/commands/)
2026-03-12 16:12:17 +03:00
lizerk
91342d199d feat: миграция на ChatMembership.is_active, удаление дублирования participants
АРХИТЕКТУРНЫЙ РЕФАКТОРИНГ:
✅ Убрано дублирование логики Chat.participants vs ChatMembership.is_active
✅ Теперь единственный источник истины - ChatMembership.is_active
✅ Исправлен баг с изменением ролей (роли не отображались после изменения)

ИЗМЕНЕНИЯ:

Backend (viewsets.py):
- get_queryset: мигрировано на memberships__is_active=True
- create: убрано participants.add, только memberships
- leave/remove_member: только is_active=False + left_at
- add_member: восстанавливает is_active=True если был False
- change_role: явно устанавливает is_active=True + left_at=None

Backend (serializers.py):
- Убрано поле participants из ChatDetailSerializer
- get_participant_details: через memberships.filter(is_active=True)
- get_participant_names: через memberships

Backend (models.py):
- get_participants(): только через ChatMembership.is_active=True
- __str__(): получаем участников через memberships
- participants помечен как устаревший (в комментариях)

Backend (rules.py):
- is_member_of_chat: только ChatMembership.is_active=True
- has_send_messages_permission: убран fallback на participants

Миграции:
- Создана 0038: убирает 'owner' из choices, очищает help_text
- Исправлены зависимости в requests_app/documents/feed 0010/0014/0006
  (заменили __latest__ на конкретную версию 0037)
- Создан management command migrate_participants_to_memberships
  (перенос данных participants → memberships)

Frontend:
- Добавлено оптимистичное обновление UI при изменении ролей
- Детальное логирование для диагностики

Тесты:
- test_change_role_improved.py: проверка изменения ролей с задержкой
- Обновлен test_chat_roles.py

Удаление устаревшей документации:
- Удалены старые отчеты из docs/ (73 файла)
- Сохранены актуальные руководства

ИСПРАВЛЕННЫЙ БАГ:
До: При изменении роли is_active оставался False → membership не попадал в filter(is_active=True) → исчезал с фронтенда
После: Явно устанавливаем is_active=True при любом действии с членством
2026-03-12 15:58:49 +03:00
lizerk
80cdc36d92 fix: исправлена система прав доступа к чатам и сообщениям
Backend:
- Исправлен user_can_access_chat() для поддержки context-based чатов
- Обновлен is_chat_member() для использования get_participants()
- Добавлена проверка has_send_messages_permission (блокирует гостей)
- Исправлен MessageViewSet.get_queryset() для комментариев
- Добавлена поддержка Feed Post resolver в resolve_chat_participants()
- Чаты типа 'comments' исключены из общего списка
- Добавлены permissions для mark_read, messages, messages_around
- Добавлена команда manage_chat_permissions для управления ролями

Frontend:
- Скрыто поле ввода сообщений для гостей (role='guest')
- Добавлена проверка can_send_messages из membership
- Показывается информативная заглушка для пользователей без прав

Tests & Docs:
- Добавлены тесты для guest роли (send_message + reactions)
- Документация по ролям и правам в чатах
- Troubleshooting guide для отладки permissions

Fixes:
- 403 при доступе к чатам-комментариям
- 404 при удалении/редактировании комментариев
- Комментарии в общем списке чатов
- Гости могли отправлять сообщения
2026-03-12 14:30:25 +03:00
lizerk
558c697f16 Merge branch 'develop' 2026-03-12 01:09:57 +03:00
lizerk
d87e8ed796 фикс 2026-03-12 01:09:51 +03:00
lizerk
c5859ae796 Merge branch 'develop' 2026-03-12 01:08:17 +03:00
lizerk
f58b87c9a8 фикс 2026-03-12 01:08:11 +03:00
lizerk
c65a425bcd Merge branch 'develop' 2026-03-12 01:02:08 +03:00
lizerk
0e133a4633 фикс 2026-03-12 01:01:53 +03:00
lizerk
26283e1a0d Merge branch 'develop' 2026-03-12 00:59:48 +03:00
lizerk
77551b5240 фикс 2026-03-12 00:59:39 +03:00
lizerk
f758c2e288 Merge branch 'develop' 2026-03-12 00:57:54 +03:00
lizerk
66c243879f фикс миграций 2026-03-12 00:57:41 +03:00
lizerk
7a2cc4eebe Merge branch 'develop' 2026-03-12 00:55:38 +03:00
lizerk
6eaadeef43 фикс миграций 2026-03-12 00:54:58 +03:00
lizerk
844e6b46eb Merge branch 'develop' 2026-03-12 00:47:18 +03:00
lizerk
8649307772 фикс 2026-03-12 00:47:07 +03:00
lizerk
1a6be84a27 Merge branch 'develop' 2026-03-12 00:42:30 +03:00
lizerk
9462f08825 оптимизация веб сокет 2026-03-12 00:42:10 +03:00
lizerk
0217bc1a38 refactor: migrate comments to unified communications system
- Delete legacy Comment models (feed.Comment, documents.DocumentComment, requests_app.RequestComment)
- Create migration scripts to move data to communications.Message
- Add comments_helpers.py for unified comment operations
- Update API endpoints: /api/v1/posts/{id}/comments/, /api/v1/requests/{id}/comments/
- Fix notifications.0010_drop_old_tables migration with SeparateDatabaseAndState
- Implement real-time comments_count via GenericForeignKey annotations
- Update frontend API client to use new endpoints
- Update JavaScript files for new comment API routes
- Remove deprecated API endpoints and serializers
- Clean up signal handlers and admin registrations

Deployment tested: all migrations apply successfully on fresh database
2026-03-11 23:56:41 +03:00
lizerk
8e2d4ad231 мини баф 2026-03-11 21:56:51 +03:00
lizerk
c1a9f69ff0 Merge branch 'develop' 2026-03-11 18:51:07 +03:00
lizerk
3aaadd64ce фильтры в чаты 2026-03-11 18:50:49 +03:00
lizerk
1fe718aefd Merge feature/communications-universal-refactoring: Универсальный переиспользуемый модуль communications 2026-03-11 17:59:59 +03:00
lizerk
359c5f7f9d fix: Обновить тесты и диагностические скрипты после удаления type='department'
- Обновлена фикстура department_chat: использует GenericFK и type='channel'
- Обновлен тест test_create_department_chat для новой модели
- Обновлен скрипт check_chat_access.py: удалена логика department
- Добавлена поддержка типов group/channel в диагностике
- Удалены все ссылки на удаленное поле department
2026-03-11 17:57:17 +03:00
lizerk
9744009d6b fix(employees): Заменить устаревший type='department' на 'channel' в сигналах
- Тип 'department' был полностью удален из communications
- Чаты отделов теперь используют type='channel'
- Исправлено 2 вхождения в create_main_department_chat()
2026-03-11 17:51:51 +03:00