7 Commits

Author SHA1 Message Date
lizerk
fababde18c feat(notifications): add messenger PWA delivery routing 2026-08-05 15:47:12 +03:00
lizerk
6ee32111db chore: configure vscode flake8 and commit lint cleanup 2026-03-31 19:17:56 +03:00
lizerk
2815efe069 chore: finalize backend lint cleanup 2026-03-31 17:53:29 +03:00
lizerk
5a6dc011dd fix: Безопасные миграции для production и исправления
Миграции (production-safe):
- 0010_drop_old_tables.py: DROP TABLE IF EXISTS (безопасно)
- 0011_create_v2_models.py: CREATE новых таблиц v2
- Исправлены поля: dnd_start_time/dnd_end_time теперь nullable
- Удалены created_at/updated_at из UserChannelPreferences

Исправления:
- models.py: удалены created_at/updated_at из UserChannelPreferences
- models.py: db_table = 'notifications_userchannelpreferences' (слитно)
- admin.py: удалены ссылки на created_at/updated_at
- channels.py: удален мусор после рефакторинга
- urls.py: создан для обратной совместимости

Тесты:
✅ UserChannelPreferences creation
✅ QuerySet методы (unread, read, mark_all_as_read)
✅ mark_as_read/unread
⚠️ notify.send() - ошибка watson search (не критично)

Результат:
- Миграции работают на пустой и заполненной БД
- Старые данные удаляются безопасно (IF EXISTS)
- Можно git clone → migrate → запуск на production
2026-03-09 17:27:31 +03:00
lizerk
d5b4ae9f43 refactor: Полный переход на новую архитектуру уведомлений v2.0
BREAKING CHANGES:
- Удалена старая система (6 моделей → 2 модели)
- models_new.py → models.py (Notification, UserChannelPreferences)
- signals_new.py → signals.py (notify.send API)
- admin_new.py → admin.py

Новая архитектура:
- Все отправки через Celery (полностью асинхронно)
- Модульная структура tasks/ (base, email, push, websocket)
- Каждый канал - отдельный класс задачи наследующий BaseNotificationTask
- Rate limiting, retry, приоритеты из коробки

Обратная совместимость:
- Создан services.py facade для старого API
- NotificationService.create_notification() работает через notify.send()
- Старый код продолжает работать без изменений

Удалено:
- Старые models.py, signals.py, admin.py, tasks.py (→ .old)
- telegram_bot.py, telegram_models.py (Telegram отключен)
- test_views.py, views.py, urls.py (устаревшие)

Создано:
- tasks/ модуль с классовой архитектурой (как senders/)
- tasks/base.py - BaseNotificationTask
- tasks/email.py - EmailNotificationTask + DigestEmailTask
- tasks/push.py - PushNotificationTask
- tasks/websocket.py - WebSocketNotificationTask

Обновлено:
- apps.py - загружает signals, channels, tasks
- channels.py - все отправки через Celery задачи
- Все импорты models_new → models
2026-03-09 16:36:14 +03:00
35f365a1b0 feat: Add department-based document distribution with department picker in UI
- Added departments ManyToMany field to Document model
- Implemented department selection in document create/edit modals
- Added automatic notification creation for all department employees
- Fixed document filtering to include uploaded documents in 'My Documents'
- Fixed acknowledgements API to include department recipients
- Added bulk notification support with configurable threshold
- Removed acknowledge button, added visual highlighting for unread documents
- Implemented server-side acknowledgment flow with redirect to file
- Fixed mobile responsive layout for document actions
- Removed temporary test files and documentation
2025-11-21 12:46:43 +03:00
ddf22c47da fix: автоматическое обновление JWT токенов
- ApiClient теперь обрабатывает 401 и 403 ошибки для обновления токена
- Добавлен JWTRefreshMiddleware для проактивного обновления токенов за 5 минут до истечения
- Добавлена настройка JWT_REFRESH_THRESHOLD_MINUTES (по умолчанию 5)
- Исправлена проблема с периодическими 403 ошибками после истечения access token
2025-11-20 18:52:29 +03:00