Персональный образовательный ресурс для Константина на Deepseek API
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

2.2 KiB

Спринт: сервер, Docker, Postgres, роли

Обязательные требования

  • Docker: образ приложения + docker-compose с PostgreSQL; один контейнер отдаёт API и статику фронтенда.
  • PostgreSQL вместо SQLite; Prisma-миграции при старте контейнера (migrate deploy).
  • Два аккаунта (логины/пароли из переменных окружения при первом запуске): наставник Алексей, ученик Константин; связь «наставник ведёт ученика» в БД.
  • Алексей видит и создаёт контент для Константина (чат, вопросы, учебники, тесты, отчёты).
  • Константин удаляет только свои вопросы (DELETE только для роли STUDENT и только при совпадении studentId); наставник удалять вопросы не может.
  • Настройки (ключ API, промпты): только наставник (GET /raw, PUT).

Статус реализации

См. коммит(ы) в репозитории после этой спецификации: Dockerfile, docker-compose.yml, SPRINT.md, обновлённые schema.prisma, auth, защита роутов, UI логина и удаления вопросов.

Запуск в Docker (обязательная упаковка)

cp .env.docker.example .env
# Заполните JWT_SECRET, SEED_TUTOR_PASSWORD, SEED_STUDENT_PASSWORD; при желании DEEPSEEK_API_KEY
docker compose up --build

Приложение: http://localhost:3000 (логины по умолчанию alexey / konstantin, см. SEED_*_USERNAME).

Файл-пример переменных: .env.docker.example.

Локальная разработка

  • Поднять Postgres (или docker compose up db -d).
  • DATABASE_URL=postgresql://... в backend/.env.
  • npm run dev из корня (как раньше: backend :3001, frontend :5173 с прокси).