|
| 1 | +# Цель приложения |
| 2 | +Это приложение реализует административную часть приложения Atom Dobro — платформы для благотворительности и волонтёрства, объединяющей организации и активных граждан для совместного решения социальных задач. |
| 3 | + |
| 4 | +# Возможности приложения |
| 5 | + |
| 6 | +## Управление пользователями |
| 7 | +- Создание и управление пользовательскими аккаунтами |
| 8 | +- Система ролей: администратор и обычный пользователь |
| 9 | +- Управление профилями пользователей (обновление данных, аватаров) |
| 10 | +- Смена паролей |
| 11 | +- Просмотр списка всех пользователей (только для администраторов) |
| 12 | + |
| 13 | +## Управление квестами |
| 14 | +Квесты — это задания с этапами, которые участники могут выполнить тремя способами: |
| 15 | +- **Финансово** — денежные взносы |
| 16 | +- **Материально** — предоставление необходимых ресурсов |
| 17 | +- **Волонтёрством** — личное участие и помощь |
| 18 | + |
| 19 | +### Функциональность: |
| 20 | +- Создание квестов пользователями с уровнем 5+ (уровень рассчитывается на основе опыта) |
| 21 | +- Управление этапами квеста — шагами для достижения поставленной цели |
| 22 | +- Настройка требований — минимальных условий для завершения квеста |
| 23 | +- Фильтрация квестов по статусу (активные, архивированные, завершённые), городу и категории |
| 24 | +- Присоединение и выход пользователей из квестов |
| 25 | +- Завершение квестов с автоматическим начислением достижений |
| 26 | +- Архивация и разархивация квестов |
| 27 | +- Просмотр квестов пользователя и доступных квестов |
| 28 | +- Real-time события квестов через Server-Sent Events (SSE) |
| 29 | +- Обновление прогресса выполнения требований в этапах |
| 30 | + |
| 31 | +## Управление организациями |
| 32 | +Организации создаются пользователями с уровнем 5+, но требуют модерации администратором перед публикацией. |
| 33 | + |
| 34 | +### Функциональность: |
| 35 | +- Создание организаций пользователями (требуется уровень 5+) |
| 36 | +- Модерация организаций администраторами (подтверждение/отклонение) |
| 37 | +- Управление владельцами организаций (добавление/удаление) |
| 38 | +- Управление видами помощи организации — типами ресурсов, которыми организация может помочь |
| 39 | +- Массовое создание организаций (bulk import) |
| 40 | +- Загрузка и управление галереей изображений организаций (до 20 файлов, до 10MB каждый) |
| 41 | +- Хранение изображений в S3-совместимом хранилище |
| 42 | +- Фильтрация организаций по статусу подтверждения |
| 43 | +- Обновление информации об организациях |
| 44 | + |
| 45 | +## Система достижений и опыта |
| 46 | +- Создание и управление достижениями |
| 47 | +- Автоматическое начисление достижений пользователям при выполнении квестов (если пользователь оставил вклад: финансово, материально или волонтёрством) |
| 48 | +- Каждое достижение имеет цену в виде опыта |
| 49 | +- Автоматическое начисление опыта после выдачи достижения |
| 50 | +- Система уровней на основе накопленного опыта |
| 51 | +- Просмотр достижений конкретного пользователя |
| 52 | +- Ручное присвоение достижений администраторами |
| 53 | + |
| 54 | +## Географические данные |
| 55 | +- Управление регионами и городами (только для администраторов) |
| 56 | +- Массовое создание городов |
| 57 | +- Получение списка городов по региону |
| 58 | +- Связь организаций и квестов с географическими локациями |
| 59 | + |
| 60 | +## Категории и типы |
| 61 | +- Управление категориями квестов |
| 62 | +- Управление типами организаций |
| 63 | +- Управление видами помощи (help-types) |
| 64 | +- Массовое создание категорий |
| 65 | + |
| 66 | +## Статистика системы |
| 67 | +- Общая статистика платформы: |
| 68 | + - Количество городов и регионов |
| 69 | + - Количество пользователей |
| 70 | + - Количество организаций |
| 71 | + - Общее количество квестов |
| 72 | + - Количество активных квестов |
| 73 | + - Количество завершённых квестов |
| 74 | + |
| 75 | +## Аутентификация и авторизация |
| 76 | +- JWT-аутентификация с поддержкой access и refresh токенов |
| 77 | +- Вход в систему (только для администраторов) |
| 78 | +- Обновление токенов |
| 79 | +- Валидация токенов |
| 80 | +- Защита эндпоинтов с помощью guards |
| 81 | +- Логирование попыток входа для мониторинга безопасности |
| 82 | + |
| 83 | +## Загрузка файлов |
| 84 | +- Загрузка изображений для организаций |
| 85 | +- Валидация файлов (тип, размер, расширение) |
| 86 | +- Интеграция с S3-совместимыми хранилищами (AWS S3, Yandex Object Storage, Beget и др.) |
| 87 | +- Проксирование изображений через API |
| 88 | + |
| 89 | +## Мониторинг и метрики |
| 90 | +- Интеграция с Prometheus для сбора метрик |
| 91 | +- Метрики HTTP-запросов (количество, длительность, ошибки) |
| 92 | +- Метрики попыток входа в систему |
| 93 | +- Экспорт метрик для мониторинга производительности |
| 94 | + |
| 95 | +## Обновления и история |
| 96 | +- Управление обновлениями квестов (quest-updates) |
| 97 | +- Управление обновлениями организаций (organization-updates) |
| 98 | +- Отслеживание изменений в системе |
| 99 | + |
| 100 | +## Технические особенности |
| 101 | +- RESTful API на базе NestJS |
| 102 | +- Версионирование API (v1, v2) |
| 103 | +- Swagger документация для всех эндпоинтов |
| 104 | +- Валидация данных с помощью Zod |
| 105 | +- Поддержка CORS для работы с фронтендом |
| 106 | +- Глобальный префикс API: `/admin/api` |
| 107 | +- Server-Sent Events для real-time обновлений |
| 108 | +- Логирование запросов к организациям |
| 109 | +- Soft delete для безопасности данных |
| 110 | + |
| 111 | +## Безопасность |
| 112 | +- Хеширование паролей с помощью bcrypt |
| 113 | +- JWT токены с настраиваемым временем жизни |
| 114 | +- Разделение прав доступа между администраторами и обычными пользователями |
| 115 | +- Валидация всех входящих данных |
| 116 | +- Защита от несанкционированного доступа к административным функциям |
0 commit comments