fe99f8dc72
Made-with: Cursor
33 lines
2.2 KiB
Markdown
33 lines
2.2 KiB
Markdown
# Спринт: сервер, 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 (обязательная упаковка)
|
||
|
||
```bash
|
||
cp .env.docker.example .env
|
||
# Заполните JWT_SECRET, SEED_TUTOR_PASSWORD, SEED_STUDENT_PASSWORD; при желании DEEPSEEK_API_KEY
|
||
docker compose up --build
|
||
```
|
||
|
||
Приложение: http://localhost:3107 (логины по умолчанию `alexey` / `konstantin`, см. `SEED_*_USERNAME`).
|
||
|
||
Файл-пример переменных: [.env.docker.example](.env.docker.example).
|
||
|
||
## Локальная разработка
|
||
|
||
- Поднять Postgres (или `docker compose up db -d`).
|
||
- `DATABASE_URL=postgresql://...` в `backend/.env`.
|
||
- `npm run dev` из корня (как раньше: backend :3001, frontend :5173 с прокси).
|