Skip to content

UPPRPO22214/NeuroPsychologist

Repository files navigation

🧠 NeuroPsychologist — AI-помощник по ментальному здоровью

📋 Описание проекта

NeuroPsychologist — это веб-приложение для поддержки ментального здоровья, использующее искусственный интеллект для анализа эмоционального состояния пользователей и предоставления персонализированных рекомендаций.

Приложение помогает:

  • ✨ Осознанно проживать каждый день через структурированную рефлексию
  • 🧘 Разбираться в собственных эмоциях и когнитивных паттернах
  • 🩺 Получать рекомендации по восстановлению и улучшению психологического состояния
  • 🛠️ Находить решения в сложных или конфликтных ситуациях
  • 📊 Отслеживать динамику настроения, стресса и энергии

Ключевой результат: пользователь за ≤ 5 минут в день получает полезный инсайт и конкретные советы по улучшению ментального здоровья.


👥 Команда разработки

Проект разработан командой студентов Новосибирского государственного университета в рамках курса по разработке программного обеспечения.

Роли в команде:

  • Product Owner / Scrum Master
  • Backend разработчики (Java/Spring Boot)
  • Frontend разработчики (React/TypeScript)
  • DevOps инженеры (CI/CD, облачная инфраструктура)
  • QA инженеры (тестирование, обеспечение качества)

🎯 Функциональные требования

Этап 1: MVP (Минимально жизнеспособный продукт)

1.1. Сессия дня

Пользователь проходит короткую сессию (≤ 5 минут), отвечая на вопросы о своем дне, после чего получает:

  • Общую оценку дня (числовая метрика)
  • Краткое резюме эмоционального состояния
  • 3 конкретных совета по восстановлению

User Stories:

  • Как пользователь, я хочу пройти короткую сессию, чтобы получить ясную оценку моего дня и конкретные советы
  • Как пользователь, я хочу видеть прогресс прохождения сессии и иметь возможность пропустить вопрос

Acceptance Criteria:

  • Пользователь может начать новую сессию с явной кнопкой «Начать сессию»
  • Сессия содержит последовательность вопросов с возможностью текстового ответа
  • После отправки всех ответов система показывает загрузчик и затем результат от AI
  • Результат включает: оценку дня, краткое резюме, 3 конкретных совета
  • В случае таймаута AI (> 10 сек) показывается дружелюбная ошибка с возможностью повторить запрос

1.2. Интерфейс пользователя

Спокойная, минималистичная веб-версия с адаптивной версткой:

  • One-question-per-screen интерфейс с прогресс-баром
  • Экраны: Welcome, Authorization, Registration, Chat, Analytics, Profile
  • Спокойные цвета и мягкая типографика
  • Индикатор конфиденциальности данных

1.3. Интеграция с AI API

Надёжный адаптер между бэкендом и Yandex GPT API:

  • Сервис-адаптер с retries, таймаутами и логированием
  • System prompt с ролью нейропсихолога
  • Обработка ошибок AI и корректная трансляция в UI

Этап 2: Аналитика и персонализация

2.1. Аналитика (графики и метрики)

Визуализация динамики основных метрик:

  • Метрики: настроение (mood), стресс (stress), энергия (energy) по шкале 1-5
  • Графики изменения метрик во времени
  • Расчёт скользящей средней, недельные/месячные агрегаты

Acceptance Criteria:

  • Графики корректно строятся на основе исторических данных
  • Фильтрация работает быстро (< 3 сек)
  • Данные обновляются после каждой новой сессии

2.2. История чатов

  • Просмотр всех предыдущих сессий
  • Поиск по датам и содержимому
  • Возможность удаления старых записей

2.3. Профиль пользователя

  • Редактирование личной информации
  • Настройки приватности
  • Управление аккаунтом

Этап 3: Оптимизация и масштабирование

3.1. Тестирование и доработка промптов

  • Версионирование промптов в Git
  • A/B тестирование различных версий промптов
  • Human review и сбор обратной связи
  • Создание dataset для улучшения качества рекомендаций

3.2. CI/CD и автоматизация

  • Автоматическая сборка и тестирование
  • Автоматический деплой на staging и production
  • Мониторинг и алертинг

📊 Нефункциональные требования

Продуктовые метрики (Product KPIs)

Метрика Цель Зачем измеряем
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

Юзабилити (Usability)

Требования:

  • Пройти сессию можно за ≤ 5 минут
  • Все основные действия доступны за ≤ 4 клика
  • Спокойные цвета (soft mode), минимализм
  • Поддержка адаптивного дизайна для мобильных устройств

Acceptance Criteria:

  • ≥ 85% пользователей понимают интерфейс без инструкций
  • Поддержка accessibility (screen readers)

🎨 Функциональности

Реализованные функции

Аутентификация и авторизация

  • ✅ Регистрация новых пользователей
  • ✅ Вход в систему с JWT токенами
  • ✅ Защищенные маршруты
  • ✅ Автоматическое обновление токенов

Чат с AI-психологом

  • ✅ Интерактивный чат-интерфейс
  • ✅ Интеграция с Yandex GPT API
  • ✅ Сохранение истории сессий
  • ✅ Markdown форматирование ответов AI

Аналитика

  • ✅ Визуализация метрик (настроение, стресс, энергия)
  • ✅ Графики изменения состояния во времени
  • ✅ Статистика по сессиям

История

  • ✅ Просмотр всех предыдущих сессий
  • ✅ Детальный просмотр каждой сессии
  • ✅ Фильтрация по датам

Профиль пользователя

  • ✅ Просмотр и редактирование профиля
  • ✅ Управление личными данными
  • ✅ Выход из системы

🛠️ Используемые технологии

Backend

Технология Версия Назначение
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 Контейнеризация приложения

Frontend

Технология Версия Назначение
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 Линтер для проверки кода

AI/ML

Технология Назначение
Yandex GPT Генерация психологических рекомендаций
Yandex Foundation Models API API для работы с языковыми моделями

Инфраструктура и DevOps

Технология Назначение
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 доска для визуализации процесса разработки
    • Спринты для планирования работы
    • Отслеживание времени и прогресса

CI/CD

  • Jenkins - сервер непрерывной интеграции и доставки
    • Автоматическая сборка при каждом коммите
    • Запуск тестов и проверка качества кода
    • Автоматический деплой на staging и production
    • Pipeline для backend и frontend

Облачная инфраструктура (Yandex Cloud)

  • 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 (опционально, для контейнеризации)

Backend

  1. Клонируйте репозиторий:
git clone https://github.com/UPPRPO22214/NeuroPsychologist.git
cd NeuroPsychologist/neuro_psychologist_backend
  1. Настройте переменные окружения:
# Скопируйте шаблон конфигурации
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
  1. Соберите и запустите приложение:
# Сборка
./mvnw clean package

# Запуск
./mvnw spring-boot:run

# Или запуск JAR файла
java -jar target/neuro_psychologist_backend-0.0.1-SNAPSHOT.jar
  1. Проверьте работоспособность:
curl http://localhost:8080/actuator/health

Frontend

  1. Перейдите в директорию frontend:
cd neuro_psychologist_frontend
  1. Установите зависимости:
npm install
  1. Запустите dev-сервер:
npm run dev
  1. Откройте в браузере:
http://localhost:5173
  1. Сборка для production:
npm run build

Docker (опционально)

Backend

cd 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

🚀 CI/CD Pipeline

Backend Pipeline (Jenkins)

Автоматический pipeline включает следующие этапы:

  1. Checkout - получение кода из Git
  2. Build Info - проверка версий Java, Maven, Docker
  3. Clean & Compile - очистка и компиляция проекта
  4. Test - запуск unit-тестов с JUnit
  5. Package - создание JAR файла
  6. Verify - проверка артефактов
  7. Build Docker Image - создание Docker образа
  8. Deploy - деплой на production сервер
  9. Health Check - проверка работоспособности приложения
  10. Cleanup - очистка старых Docker образов

Jenkinsfile: neuro_psychologist_backend/Jenkinsfile

Frontend Pipeline (Jenkins)

  1. Checkout - получение кода из Git
  2. Install Dependencies - установка npm пакетов
  3. Build - сборка production версии с Vite
  4. Install AWS CLI - установка AWS CLI для работы с S3
  5. Deploy to S3 - загрузка статических файлов в Yandex Object Storage

Jenkinsfile: neuro_psychologist_frontend/Jenkinsfile

Настройка Jenkins

Подробная инструкция по настройке Jenkins доступна в документах:


📚 API Документация

Основные endpoints

Аутентификация

  • POST /api/auth/register - регистрация нового пользователя
  • POST /api/auth/login - вход в систему
  • GET /api/auth/profile - получение профиля пользователя
  • PUT /api/auth/profile - обновление профиля

Анализ и чат

  • POST /api/analysis/analyze - отправка текста для анализа AI
  • POST /api/analysis/checkin - создание новой сессии дня
  • GET /api/analysis/history - получение истории сессий
  • GET /api/analysis/metrics - получение метрик пользователя

Здоровье системы

  • GET /actuator/health - проверка работоспособности
  • GET /actuator/info - информация о приложении

🧪 Тестирование

Backend тесты

cd neuro_psychologist_backend

# Запуск всех тестов
./mvnw test

# Запуск тестов с покрытием кода
./mvnw verify

# Просмотр отчета о покрытии
open target/site/jacoco/index.html

Текущее покрытие кода: ≥ 48% (цель: ≥ 70%)

Типы тестов:

  • Unit тесты для сервисов, контроллеров, DTO
  • Integration тесты для API endpoints
  • Security тесты для аутентификации

Frontend тесты

cd neuro_psychologist_frontend

# Линтинг кода
npm run lint

📁 Структура проекта

NeuroPsychologist/
├── 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
  • Делайте резервные копии базы данных

🌐 Деплой

Production окружение

  • 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 окружение

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

🤝 Вклад в проект

Процесс разработки

  1. Создайте feature branch от main
  2. Внесите изменения и напишите тесты
  3. Убедитесь, что все тесты проходят
  4. Создайте Pull Request
  5. Дождитесь code review
  6. После одобрения 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

About

НейроПсихолог - проект, который с помощью нейросети может помочь пользователю проанализировать текущий день, подсказать решение конфликтных ситуаций и предложить варианты восстановления ментального здоровья.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors