1887 Commits

Author SHA1 Message Date
33fbd4051f shout-following-upgrade
All checks were successful
Deploy on push / deploy (push) Successful in 5m59s
2025-10-05 22:53:30 +03:00
86dec15673 0.9.32] - 2025-10-05
All checks were successful
Deploy on push / deploy (push) Successful in 5m54s
###  Features
- **Редактирование мигрированных шаутов**: Добавлена мутация `create_draft_from_shout` для создания черновика из существующего опубликованного шаута
  - Создаёт черновик со всеми данными из шаута (title, body, lead, topics, authors, media, etc.)
  - Проверяет авторство перед созданием черновика
  - Переиспользует существующий черновик если он уже создан для этого шаута
  - Копирует все связи: авторов и темы (включая main topic)

### 🔧 Fixed
- **NotificationEntity enum**: Исправлена ошибка `NotificationEntity.FOLLOWER` → `NotificationEntity.AUTHOR`
  - В enum не было значения `FOLLOWER`, используется `AUTHOR` для уведомлений о подписчиках

### Technical Details
- `core/schema/mutation.graphql`: добавлена мутация `create_draft_from_shout(shout_id: Int!): CommonResult!`
- `core/resolvers/draft.py`: добавлен resolver `create_draft_from_shout` с валидацией авторства
- `core/resolvers/notifier.py`: исправлено использование `NotificationEntity.AUTHOR` вместо несуществующего `FOLLOWER`
2025-10-05 17:12:28 +03:00
13343bb40e fix: handle follower and shout notifications in notifications_seen_thread
All checks were successful
Deploy on push / deploy (push) Successful in 3m13s
- Add support for marking follower notifications as seen (thread='followers')
- Add support for marking new shout notifications as seen
- Use enum constants (NotificationAction, NotificationEntity) instead of strings
- Improve thread ID parsing to support different formats
- Remove obsolete TODO about notification_id offset
- Better error handling with logger.warning() instead of exceptions

Resolves TODOs on lines 253 and 286 in resolvers/notifier.py
2025-10-04 08:59:47 +03:00
163c0732d4 notifications-fixes
All checks were successful
Deploy on push / deploy (push) Successful in 5m16s
2025-10-04 08:36:24 +03:00
6faf75c229 maintainance
All checks were successful
Deploy on push / deploy (push) Successful in 6m5s
2025-10-03 13:58:52 +03:00
91a3189167 feat: version 0.9.30 - cache invalidation fixes
🔧 Fixed cache invalidation for featured materials:
- Enhanced invalidate_shout_related_cache with featured keys
- Fixed set_featured/set_unfeatured functions with async cache invalidation
- Materials now correctly appear/disappear from main page on feature/unfeature

 Code Quality: Python Standards Compliance
- Ruff linting & formatting checks passed
- MyPy type checking passed
- All functions have proper type hints and docstrings
- Tests passing successfully

Version bump: 0.9.30
2025-10-02 22:31:13 +03:00
3f263f35ef Merge branch 'dev' of https://dev.discours.io/discours.io/core into dev
All checks were successful
Deploy on push / deploy (push) Successful in 3m3s
2025-10-02 02:42:06 +03:00
4038c5dbf5 docs-restruct 2025-10-02 02:38:57 +03:00
3e7431b601 docs-restruct
All checks were successful
Deploy on push / deploy (push) Successful in 3m11s
2025-10-02 01:16:14 +03:00
31cf6b6961 invalidation-fix4
All checks were successful
Deploy on push / deploy (push) Successful in 3m9s
2025-10-01 23:59:09 +03:00
116deb16d7 invalidation-follow-fix3
All checks were successful
Deploy on push / deploy (push) Successful in 3m12s
2025-10-01 23:53:09 +03:00
2dacb837f3 follow-cache-invalidation-fix
All checks were successful
Deploy on push / deploy (push) Successful in 3m18s
2025-10-01 23:41:28 +03:00
50539a71ba following-cache-invalidation-fix
All checks were successful
Deploy on push / deploy (push) Successful in 3m20s
2025-10-01 17:53:28 +03:00
4800f227bc follow-cache-invalidate-before-fix
All checks were successful
Deploy on push / deploy (push) Successful in 5m18s
2025-10-01 15:04:36 +03:00
3ae675c52c auth-fix
All checks were successful
Deploy on push / deploy (push) Successful in 5m44s
2025-09-30 19:20:41 +03:00
a0ab20f276 cleaner-log3
All checks were successful
Deploy on push / deploy (push) Successful in 3m2s
2025-09-29 01:00:18 +03:00
af0f3e3dea lesslogs
All checks were successful
Deploy on push / deploy (push) Successful in 2m55s
2025-09-28 17:26:23 +03:00
752e2dcbdc [0.9.28] - 2025-09-28
All checks were successful
Deploy on push / deploy (push) Successful in 2m46s
### 🍪 CRITICAL Cross-Origin Auth
- **🔧 SESSION_COOKIE_DOMAIN**: Добавлена поддержка поддоменов `.discours.io` для cross-origin cookies
- **🌐 Cross-Origin SSE**: Исправлена работа Server-Sent Events с httpOnly cookies между поддоменами
- **🔐 Unified Auth**: Унифицированы настройки cookies для OAuth, login, refresh, logout операций
- **📝 MyPy Compliance**: Исправлена типизация `SESSION_COOKIE_SAMESITE` с использованием `cast()`

### 🛠️ Technical Changes
- **settings.py**: Добавлен `SESSION_COOKIE_DOMAIN` с типобезопасной настройкой SameSite
- **auth/oauth.py**: Обновлены все `set_cookie` вызовы с `domain` параметром
- **auth/middleware.py**: Добавлена поддержка `SESSION_COOKIE_DOMAIN` в logout операциях
- **resolvers/auth.py**: Унифицированы cookie настройки в login/refresh/logout resolvers
- **auth/__init__.py**: Обновлены cookie операции с domain поддержкой

### 📚 Documentation
- **docs/auth/sse-httponly-integration.md**: Новая документация по SSE + httpOnly cookies интеграции
- **docs/auth/architecture.md**: Обновлены диаграммы для unified httpOnly cookie архитектуры

### 🎯 Impact
-  **GraphQL API** (`v3.discours.io`) теперь работает с httpOnly cookies cross-origin
-  **SSE сервер** (`connect.discours.io`) работает с теми же cookies
-  **Безопасность**: httpOnly cookies защищают от XSS атак
-  **UX**: Автоматическая аутентификация без управления токенами в JavaScript
2025-09-28 13:06:03 +03:00
fb98a1c6c8 [0.9.28] - OAuth/Auth with httpOnly cookie
All checks were successful
Deploy on push / deploy (push) Successful in 4m32s
2025-09-28 12:22:37 +03:00
634cec657c notifications-stats-todo
All checks were successful
Deploy on push / deploy (push) Successful in 8m16s
2025-09-16 12:52:14 +03:00
75c78dacad dockerfix 2025-09-10 11:00:46 +03:00
698e8be638 0.9.20-fix-authors
Some checks failed
Deploy on push / deploy (push) Failing after 2m34s
2025-09-10 10:03:27 +03:00
06d4b64b1f bypass-cache-topic
Some checks failed
Deploy on push / deploy (push) Failing after 4m57s
2025-09-03 13:15:57 +03:00
f99f14759c author-topic-filter-fix
Some checks failed
Deploy on push / deploy (push) Failing after 2m2s
2025-09-03 12:44:24 +03:00
35af07f067 topic-filtered-authors
Some checks failed
Deploy on push / deploy (push) Failing after 2m1s
2025-09-01 10:53:38 +03:00
7c066b460a minor-fixes
Some checks failed
Deploy on push / deploy (push) Failing after 8s
2025-09-01 09:40:52 +03:00
30644f6513 author-debug
Some checks failed
Deploy on push / deploy (push) Failing after 2m38s
2025-09-01 09:07:37 +03:00
b044b26587 author-stats-fix
Some checks failed
Deploy on push / deploy (push) Failing after 2m41s
2025-09-01 06:16:44 +03:00
62529959a9 testing-fix
Some checks failed
Deploy on push / deploy (push) Failing after 4m52s
2025-09-01 00:13:46 +03:00
3086f22c2e admin-panel-fix
Some checks failed
Deploy on push / deploy (push) Has been cancelled
2025-08-31 23:51:12 +03:00
7258ddf059 authors-stats-fix2
Some checks failed
Deploy on push / deploy (push) Failing after 3m33s
2025-08-31 22:54:40 +03:00
d68030faca author-stats-fix
Some checks failed
Deploy on push / deploy (push) Failing after 4m45s
2025-08-31 22:42:21 +03:00
aebca9c522 author-stats-fix
Some checks failed
Deploy on push / deploy (push) Failing after 6m48s
2025-08-31 22:29:40 +03:00
832f6529e7 author-stats-upgrade
Some checks failed
Deploy on push / deploy (push) Failing after 3m47s
2025-08-31 22:12:18 +03:00
2660ad5cb3 fmt-fix
All checks were successful
Deploy on push / deploy (push) Successful in 10m37s
2025-08-31 20:03:44 +03:00
d65f8f9fa7 [0.9.17] - 2025-08-31
Some checks failed
Deploy on push / deploy (push) Failing after 8s
### 👥 Author Statistics Enhancement
- **📊 Полная статистика авторов**: Добавлены все недостающие счётчики в AuthorStat
  - `topics`: Количество уникальных тем, в которых участвовал автор
  - `coauthors`: Количество соавторов
  - `replies_count`: Количество вызванных комментариев
  - `rating_shouts`: Рейтинг публикаций автора (сумма реакций LIKE/AGREE/ACCEPT/PROOF/CREDIT минус DISLIKE/DISAGREE/REJECT/DISPROOF)
  - `rating_comments`: Рейтинг комментариев автора (реакции на его комментарии)
  - `replies_count`: Количество вызванных комментариев
  - `comments`: Количество созданных комментариев и цитат
  - `viewed_shouts`: Общее количество просмотров всех публикаций автора
- **🔄 Улучшенная сортировка**: Поддержка сортировки по всем новым полям статистики
- ** Оптимизированные запросы**: Batch-запросы для получения всей статистики одним вызовом
- **🧪 Подробное логирование**: Эмодзи-маркеры для каждого типа статистики

### 🔧 Technical Implementation
- **Resolvers**: Обновлён `load_authors_by` для включения всех счётчиков
- **Database**: Оптимизированные SQL-запросы с JOIN для статистики
- **Caching**: Интеграция с ViewedStorage для подсчёта просмотров
- **GraphQL Schema**: Обновлён тип AuthorStat с новыми полями
2025-08-31 20:01:40 +03:00
c9733ece24 following
All checks were successful
Deploy on push / deploy (push) Successful in 6m9s
2025-08-30 21:38:27 +03:00
7d9a3a59e3 search-debug
All checks were successful
Deploy on push / deploy (push) Successful in 5m40s
2025-08-30 20:06:12 +03:00
5729e65e55 search-index-fixed2
All checks were successful
Deploy on push / deploy (push) Successful in 5m43s
2025-08-30 19:42:00 +03:00
2dad23f86c search-index-fixed
All checks were successful
Deploy on push / deploy (push) Successful in 5m49s
2025-08-30 18:53:38 +03:00
05b5c3defd follower-notification
Some checks failed
Deploy on push / deploy (push) Failing after 11s
2025-08-30 18:47:27 +03:00
9752a470e0 invalidate-new-follower
All checks were successful
Deploy on push / deploy (push) Successful in 5m45s
2025-08-30 18:35:25 +03:00
f891b73608 following-debug
All checks were successful
Deploy on push / deploy (push) Successful in 5m46s
2025-08-30 18:23:15 +03:00
f6253f2007 fmt2
All checks were successful
Deploy on push / deploy (push) Successful in 5m34s
2025-08-30 17:07:37 +03:00
1ad4b9118e fmt
Some checks failed
Deploy on push / deploy (push) Failing after 6s
2025-08-30 17:05:58 +03:00
ecae526d1b follow-resolver-fix2
Some checks failed
Deploy on push / deploy (push) Failing after 6s
2025-08-30 15:38:39 +03:00
dfeadf6a54 follow-resolver-fix
Some checks failed
Deploy on push / deploy (push) Failing after 38s
2025-08-30 15:19:43 +03:00
f3fc6c34ae e2e-improved
Some checks failed
Deploy on push / deploy (push) Failing after 7s
2025-08-27 18:31:51 +03:00
32f1fab867 views-count-fix
Some checks failed
Deploy on push / deploy (push) Failing after 7s
2025-08-27 15:22:18 +03:00
4d42e01bd0 [0.9.13] - 2025-08-27
Some checks failed
Deploy on push / deploy (push) Failing after 3m6s
### 🚨 Исправлено
- **Удалено поле username из модели Author**: Поле `username` больше не является частью модели `Author`
  - Убрано свойство `@property def username` из `orm/author.py`
  - Обновлены все сервисы для использования `email` или `slug` вместо `username`
  - Исправлены резолверы для исключения `username` при обработке данных автора
  - Поле `username` теперь используется только в JWT токенах для совместимости

### 🧪 Исправлено
- **E2E тесты админ-панели**: Полностью переработаны E2E тесты для работы с реальным API
  - Тесты теперь делают реальные HTTP запросы к GraphQL API
  - Бэкенд для тестов использует выделенную тестовую БД (`test_e2e.db`)
  - Создан фикстура `backend_server` для запуска тестового сервера
  - Добавлен фикстура `create_test_users_in_backend_db` для регистрации пользователей через API
  - Убраны несуществующие GraphQL запросы (`get_community_stats`)
  - Тесты корректно работают с системой ролей и правами администратора

### �� Техническое
- **Рефакторинг аутентификации**: Упрощена логика работы с пользователями
  - Убраны зависимости от несуществующих полей в ORM моделях
  - Обновлены сервисы аутентификации для корректной работы без `username`
  - Исправлены все места использования `username` в коде
- **Улучшена тестовая инфраструктура**:
  - Тесты теперь используют реальный HTTP API вместо прямых DB проверок
  - Правильная изоляция тестовых данных через отдельную БД
  - Корректная работа с системой ролей и правами
2025-08-27 12:15:01 +03:00