NeuroPsychologist — это веб-приложение для поддержки ментального здоровья, использующее искусственный интеллект для анализа эмоционального состояния пользователей и предоставления персонализированных рекомендаций.
Приложение помогает:
- ✨ Осознанно проживать каждый день через структурированную рефлексию
- 🧘 Разбираться в собственных эмоциях и когнитивных паттернах
- 🩺 Получать рекомендации по восстановлению и улучшению психологического состояния
- 🛠️ Находить решения в сложных или конфликтных ситуациях
- 📊 Отслеживать динамику настроения, стресса и энергии
Ключевой результат: пользователь за ≤ 5 минут в день получает полезный инсайт и конкретные советы по улучшению ментального здоровья.
Проект разработан командой студентов Новосибирского государственного университета в рамках курса по разработке программного обеспечения.
Роли в команде:
- Product Owner / Scrum Master
- Backend разработчики (Java/Spring Boot)
- Frontend разработчики (React/TypeScript)
- DevOps инженеры (CI/CD, облачная инфраструктура)
- QA инженеры (тестирование, обеспечение качества)
Пользователь проходит короткую сессию (≤ 5 минут), отвечая на вопросы о своем дне, после чего получает:
- Общую оценку дня (числовая метрика)
- Краткое резюме эмоционального состояния
- 3 конкретных совета по восстановлению
User Stories:
- Как пользователь, я хочу пройти короткую сессию, чтобы получить ясную оценку моего дня и конкретные советы
- Как пользователь, я хочу видеть прогресс прохождения сессии и иметь возможность пропустить вопрос
Acceptance Criteria:
- Пользователь может начать новую сессию с явной кнопкой «Начать сессию»
- Сессия содержит последовательность вопросов с возможностью текстового ответа
- После отправки всех ответов система показывает загрузчик и затем результат от AI
- Результат включает: оценку дня, краткое резюме, 3 конкретных совета
- В случае таймаута AI (> 10 сек) показывается дружелюбная ошибка с возможностью повторить запрос
Спокойная, минималистичная веб-версия с адаптивной версткой:
- One-question-per-screen интерфейс с прогресс-баром
- Экраны: Welcome, Authorization, Registration, Chat, Analytics, Profile
- Спокойные цвета и мягкая типографика
- Индикатор конфиденциальности данных
Надёжный адаптер между бэкендом и Yandex GPT API:
- Сервис-адаптер с retries, таймаутами и логированием
- System prompt с ролью нейропсихолога
- Обработка ошибок AI и корректная трансляция в UI
Визуализация динамики основных метрик:
- Метрики: настроение (mood), стресс (stress), энергия (energy) по шкале 1-5
- Графики изменения метрик во времени
- Расчёт скользящей средней, недельные/месячные агрегаты
Acceptance Criteria:
- Графики корректно строятся на основе исторических данных
- Фильтрация работает быстро (< 3 сек)
- Данные обновляются после каждой новой сессии
- Просмотр всех предыдущих сессий
- Поиск по датам и содержимому
- Возможность удаления старых записей
- Редактирование личной информации
- Настройки приватности
- Управление аккаунтом
- Версионирование промптов в Git
- A/B тестирование различных версий промптов
- Human review и сбор обратной связи
- Создание dataset для улучшения качества рекомендаций
- Автоматическая сборка и тестирование
- Автоматический деплой на staging и production
- Мониторинг и алертинг
| Метрика | Цель | Зачем измеряем |
|---|---|---|
| Session completion rate | ≥ 80% | Понять, легко ли проходить сессию |
| Average session time | ≤ 5 мин | Убедиться, что продукт быстрый и удобный |
| Retention 7/30 | ≥ 40% на 7 день | Измерение привычки и ценности |
| NPS / Rating | ≥ 4/5 | Субъективная полезность продукта |
| AI accuracy rate | ≥ 80% | Качество рекомендаций AI |
| Метрика | Цель |
|---|---|
| API latency (95-й перцентиль) | ≤ 500 ms |
| AI latency (95-й перцентиль) | ≤ 10 s |
| Uptime | ≥ 99% |
| Error rate | ≤ 1% |
| AI error rate | ≤ 5% |
| Test coverage (unit tests) | ≥ 70% |
| Lighthouse performance | ≥ 80 |
Требования:
- Пройти сессию можно за ≤ 5 минут
- Все основные действия доступны за ≤ 4 клика
- Спокойные цвета (soft mode), минимализм
- Поддержка адаптивного дизайна для мобильных устройств
Acceptance Criteria:
- ≥ 85% пользователей понимают интерфейс без инструкций
- Поддержка accessibility (screen readers)
- ✅ Регистрация новых пользователей
- ✅ Вход в систему с JWT токенами
- ✅ Защищенные маршруты
- ✅ Автоматическое обновление токенов
- ✅ Интерактивный чат-интерфейс
- ✅ Интеграция с Yandex GPT API
- ✅ Сохранение истории сессий
- ✅ Markdown форматирование ответов AI
- ✅ Визуализация метрик (настроение, стресс, энергия)
- ✅ Графики изменения состояния во времени
- ✅ Статистика по сессиям
- ✅ Просмотр всех предыдущих сессий
- ✅ Детальный просмотр каждой сессии
- ✅ Фильтрация по датам
- ✅ Просмотр и редактирование профиля
- ✅ Управление личными данными
- ✅ Выход из системы
| Технология | Версия | Назначение |
|---|---|---|
| Java | 17 | Основной язык программирования |
| Spring Boot | 3.5.5 | Фреймворк для создания REST API |
| Spring Security | 3.5.5 | Аутентификация и авторизация |
| Spring Data JPA | 3.5.5 | ORM для работы с базой данных |
| PostgreSQL | Latest | Реляционная база данных |
| JWT (jjwt) | 0.12.3 | JSON Web Tokens для аутентификации |
| Maven | 3.6+ | Система сборки и управления зависимостями |
| JUnit 5 | 5.x | Фреймворк для unit-тестирования |
| JaCoCo | 0.8.11 | Инструмент для измерения покрытия кода тестами |
| Docker | Latest | Контейнеризация приложения |
| Технология | Версия | Назначение |
|---|---|---|
| React | 19.1.1 | UI библиотека |
| TypeScript | 5.8.3 | Типизированный JavaScript |
| Vite | 7.1.2 | Сборщик и dev-сервер |
| React Router | 7.9.5 | Маршрутизация |
| Zustand | 5.0.8 | Управление состоянием |
| CSS3 | - | Стилизация компонентов |
| ESLint | 9.33.0 | Линтер для проверки кода |
| Технология | Назначение |
|---|---|
| Yandex GPT | Генерация психологических рекомендаций |
| Yandex Foundation Models API | API для работы с языковыми моделями |
| Технология | Назначение |
|---|---|
| Git | Система контроля версий |
| GitHub | Хостинг репозитория и CI/CD |
| Jira | Управление проектом и задачами |
| Jenkins | CI/CD сервер для автоматизации сборки и деплоя |
| Docker | Контейнеризация приложений |
| Yandex Cloud | Облачная платформа для хостинга |
| Yandex Object Storage | S3-совместимое хранилище для frontend |
| Yandex Compute Cloud | Виртуальные машины для backend и Jenkins |
- Git - распределенная система контроля версий
- GitHub - платформа для хостинга кода и совместной разработки
- Pull Requests для code review
- GitHub Actions для автоматизации (опционально)
- Issues для отслеживания багов
- Jira - система управления проектами и задачами
- Kanban доска для визуализации процесса разработки
- Спринты для планирования работы
- Отслеживание времени и прогресса
- Jenkins - сервер непрерывной интеграции и доставки
- Автоматическая сборка при каждом коммите
- Запуск тестов и проверка качества кода
- Автоматический деплой на staging и production
- Pipeline для backend и frontend
- Compute Cloud - виртуальные машины для backend и Jenkins
- VM с Ubuntu 22.04
- IP: 158.160.203.252
- Установлен Docker и Jenkins
- Object Storage - S3-совместимое хранилище для статических файлов frontend
- Bucket: neuropsychologist-front
- CDN для быстрой доставки контента
- Managed Service for PostgreSQL - управляемая база данных
- Yandex GPT API - API для работы с языковыми моделями
- Java 17 или выше
- Node.js 20 или выше
- PostgreSQL 14 или выше
- Maven 3.6 или выше
- Docker (опционально, для контейнеризации)
- Клонируйте репозиторий:
git clone https://github.com/UPPRPO22214/NeuroPsychologist.git
cd NeuroPsychologist/neuro_psychologist_backend- Настройте переменные окружения:
# Скопируйте шаблон конфигурации
cp src/main/resources/application.properties.template src/main/resources/application.properties
# Отредактируйте application.properties и установите:
# - AI_API_KEY - ключ API Yandex GPT
# - AI_FOLDER_ID - ID папки в Yandex Cloud
# - AI_KEY_ID - ID ключа сервисного аккаунта
# - DATABASE_URL - URL подключения к PostgreSQL
# - DATABASE_USERNAME - имя пользователя БД
# - DATABASE_PASSWORD - пароль БД
# - JWT_SECRET - секретный ключ для JWT- Соберите и запустите приложение:
# Сборка
./mvnw clean package
# Запуск
./mvnw spring-boot:run
# Или запуск JAR файла
java -jar target/neuro_psychologist_backend-0.0.1-SNAPSHOT.jar- Проверьте работоспособность:
curl http://localhost:8080/actuator/health- Перейдите в директорию frontend:
cd neuro_psychologist_frontend- Установите зависимости:
npm install- Запустите dev-сервер:
npm run dev- Откройте в браузере:
http://localhost:5173
- Сборка для production:
npm run buildcd neuro_psychologist_backend
# Сборка образа
docker build -t neuroapp:latest .
# Запуск контейнера
docker run -d \
--name neuroapp \
-p 8080:8080 \
-e AI_API_KEY=your_api_key \
-e AI_FOLDER_ID=your_folder_id \
-e AI_KEY_ID=your_key_id \
-e DATABASE_URL=jdbc:postgresql://host:5432/dbname \
-e DATABASE_USERNAME=user \
-e DATABASE_PASSWORD=password \
-e JWT_SECRET=your_jwt_secret \
neuroapp:latestАвтоматический pipeline включает следующие этапы:
- Checkout - получение кода из Git
- Build Info - проверка версий Java, Maven, Docker
- Clean & Compile - очистка и компиляция проекта
- Test - запуск unit-тестов с JUnit
- Package - создание JAR файла
- Verify - проверка артефактов
- Build Docker Image - создание Docker образа
- Deploy - деплой на production сервер
- Health Check - проверка работоспособности приложения
- Cleanup - очистка старых Docker образов
Jenkinsfile: neuro_psychologist_backend/Jenkinsfile
- Checkout - получение кода из Git
- Install Dependencies - установка npm пакетов
- Build - сборка production версии с Vite
- Install AWS CLI - установка AWS CLI для работы с S3
- Deploy to S3 - загрузка статических файлов в Yandex Object Storage
Jenkinsfile: neuro_psychologist_frontend/Jenkinsfile
Подробная инструкция по настройке Jenkins доступна в документах:
POST /api/auth/register- регистрация нового пользователяPOST /api/auth/login- вход в системуGET /api/auth/profile- получение профиля пользователяPUT /api/auth/profile- обновление профиля
POST /api/analysis/analyze- отправка текста для анализа AIPOST /api/analysis/checkin- создание новой сессии дняGET /api/analysis/history- получение истории сессийGET /api/analysis/metrics- получение метрик пользователя
GET /actuator/health- проверка работоспособностиGET /actuator/info- информация о приложении
cd neuro_psychologist_backend
# Запуск всех тестов
./mvnw test
# Запуск тестов с покрытием кода
./mvnw verify
# Просмотр отчета о покрытии
open target/site/jacoco/index.htmlТекущее покрытие кода: ≥ 48% (цель: ≥ 70%)
Типы тестов:
- Unit тесты для сервисов, контроллеров, DTO
- Integration тесты для API endpoints
- Security тесты для аутентификации
cd neuro_psychologist_frontend
# Линтинг кода
npm run lintNeuroPsychologist/
├── neuro_psychologist_backend/ # Backend приложение (Spring Boot)
│ ├── src/
│ │ ├── main/
│ │ │ ├── java/ru/nsu/neuropsychologist/
│ │ │ │ ├── config/ # Конфигурация приложения
│ │ │ │ ├── controller/ # REST контроллеры
│ │ │ │ ├── dto/ # Data Transfer Objects
│ │ │ │ ├── entity/ # JPA сущности
│ │ │ │ ├── repository/ # Репозитории для работы с БД
│ │ │ │ ├── security/ # JWT и Spring Security
│ │ │ │ └── service/ # Бизнес-логика
│ │ │ └── resources/
│ │ │ └── application.properties
│ │ └── test/ # Unit и integration тесты
│ ├── Dockerfile # Docker образ для backend
│ ├── Jenkinsfile # CI/CD pipeline для backend
│ ├── pom.xml # Maven конфигурация
│ └── README.md
│
├── neuro_psychologist_frontend/ # Frontend приложение (React)
│ ├── src/
│ │ ├── components/ # React компоненты
│ │ ├── pages/ # Страницы приложения
│ │ ├── services/ # API сервисы
│ │ ├── store/ # Zustand store
│ │ ├── styles/ # CSS стили
│ │ ├── types/ # TypeScript типы
│ │ └── utils/ # Утилиты
│ ├── Jenkinsfile # CI/CD pipeline для frontend
│ ├── package.json # npm зависимости
│ ├── vite.config.ts # Vite конфигурация
│ └── README.md
│
└── README.md # Этот файл
- ✅ JWT токены для аутентификации
- ✅ Хеширование паролей с BCrypt
- ✅ CORS настройки для защиты от XSS
- ✅ Валидация входных данных
- ✅ Защищенные endpoints с Spring Security
- ✅ Секреты хранятся в переменных окружения
- ✅ HTTPS для production (через Yandex Cloud)
- Регулярно обновляйте зависимости
- Используйте сильные пароли для БД и JWT секретов
- Настройте rate limiting для API
- Регулярно проводите security audit
- Делайте резервные копии базы данных
- Backend URL:
http://158.160.203.252:8081 - Frontend URL:
https://storage.yandexcloud.net/neuropsychologist-front/dist - Jenkins:
http://158.160.203.252:8080
Staging окружение настраивается аналогично production с отдельной базой данных и конфигурацией.
- Spring Boot Actuator endpoints для health checks
- Docker logs для просмотра логов контейнеров
- Jenkins для отслеживания статуса деплоев
# Backend логи
docker logs -f neuroapp
# Jenkins логи
docker logs -f jenkins
# Системные логи
sudo journalctl -u docker -f- Создайте feature branch от
main - Внесите изменения и напишите тесты
- Убедитесь, что все тесты проходят
- Создайте Pull Request
- Дождитесь code review
- После одобрения merge в
main
- Backend: следуйте Java Code Conventions
- Frontend: используйте ESLint конфигурацию проекта
- Commits: используйте conventional commits (feat:, fix:, docs:, etc.)
- Branches: используйте формат
feature/KAN-XXX-description
Проект разработан в образовательных целях в рамках курса по разработке ПО в НГУ.
Версия: 0.0.1-SNAPSHOT
Последнее обновление: Декабрь 2025