Browse Source

docs: update sprint 1 docs after manual testing

- СПРИНТЫ.md: mark Sprint 1 as completed (), check all tasks,
  add 4 bugs found and fixed during testing
- ШАГ_006.md: add bugs table with symptoms, causes and fixes

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
master
Aleksey Razorvin 1 week ago
parent
commit
5551202d6f
  1. 37
      DOC/СПРИНТЫ.md
  2. 15
      DOC/ШАГИ/ШАГ_2026-03-21_006.md

37
DOC/СПРИНТЫ.md

@ -11,30 +11,37 @@
--- ---
## Спринт 1 — Инфраструктура + Создание тестов ## Спринт 1 — Инфраструктура + Создание тестов
**Результат:** Поднят весь стек, можно зайти на страницу и создать тест. **Результат:** Поднят весь стек, можно зайти на страницу и создать тест.
**Статус:** Завершён и протестирован вручную в браузере.
### Инфраструктура ### Инфраструктура
- [ ] Структура репозитория: `backend/`, `frontend/`, `nginx/`, `docker-compose.yml` - [x] Структура репозитория: `backend/`, `frontend/`, `nginx/`, `docker-compose.yml`
- [ ] `docker-compose.yml`: сервисы `db`, `backend`, `frontend`, `nginx` - [x] `docker-compose.yml`: сервисы `db`, `backend`, `frontend`, `nginx`
- [ ] PostgreSQL: контейнер, volume для данных - [x] PostgreSQL: контейнер, volume для данных
- [ ] FastAPI: контейнер, `GET /api/health``{"status": "ok"}` - [x] FastAPI: контейнер, `GET /api/health``{"status": "ok"}`
- [ ] Alembic: инициализирован, первая миграция (пустая схема) - [x] Alembic: инициализирован, первая миграция (`001_init`)
- [ ] React + Vite: контейнер, базовая страница открывается в браузере - [x] React + Vite: контейнер, базовая страница открывается в браузере
- [ ] Nginx: `/` → React SPA, `/api/` → FastAPI - [x] Nginx: `/` → React SPA, `/api/` → FastAPI
### Создание тестов (без авторизации) ### Создание тестов (без авторизации)
- [ ] Модели БД: `Test`, `Question`, `Answer` - [x] Модели БД: `Test`, `Question`, `Answer`
- [ ] API: `POST /api/tests` — создать тест с вопросами и ответами - [x] API: `POST /api/tests` — создать тест с вопросами и ответами
- [ ] API: `GET /api/tests` — список тестов - [x] API: `GET /api/tests` — список тестов
- [ ] API: `GET /api/tests/{id}` — детали теста - [x] API: `GET /api/tests/{id}` — детали теста
- [ ] Фронт: страница создания теста (название, вопросы, варианты, настройки) - [x] Фронт: страница создания теста (название, вопросы, варианты, настройки)
- [ ] Фронт: список тестов - [x] Фронт: список тестов
- [ ] Фронт: страница просмотра теста - [x] Фронт: страница просмотра теста
**Настройки теста:** порог зачёта (%), таймер (опционально), разрешить возврат к предыдущему вопросу **Настройки теста:** порог зачёта (%), таймер (опционально), разрешить возврат к предыдущему вопросу
### Баги, найденные и исправленные при тестировании
- [x] `permission denied` на `entrypoint.sh` — volume mount перекрывал `chmod +x` из Dockerfile → исправлено: `CMD ["bash", "entrypoint.sh"]`
- [x] `No module named 'app'` в Alembic — Python не видел `/app` → исправлено: `ENV PYTHONPATH=/app` в Dockerfile
- [x] `host not found in upstream "backend"` в nginx — nginx резолвил хост при старте, до поднятия backend → исправлено: Docker DNS resolver + `set $backend`
- [x] `http://localhost/api/docs` → 404 — FastAPI отдавал docs по `/docs`, а не `/api/docs` → исправлено: явные `docs_url`, `redoc_url`, `openapi_url` в FastAPI
--- ---
## Спринт 2 — Прохождение теста ## Спринт 2 — Прохождение теста

15
DOC/ШАГИ/ШАГ_2026-03-21_006.md

@ -14,6 +14,7 @@
## Ответ ## Ответ
Реализован Спринт 1 в полном объёме: инфраструктура + создание тестов без авторизации. Реализован Спринт 1 в полном объёме: инфраструктура + создание тестов без авторизации.
Спринт протестирован вручную в браузере, найдены и исправлены 4 бага.
--- ---
@ -113,6 +114,20 @@ docker compose up --build
- Перейти к созданному тесту и увидеть все вопросы и ответы - Перейти к созданному тесту и увидеть все вопросы и ответы
- `http://localhost/api/health``{"status": "ok"}` - `http://localhost/api/health``{"status": "ok"}`
- `http://localhost/api/docs` → Swagger UI FastAPI - `http://localhost/api/docs` → Swagger UI FastAPI
- `http://localhost/api/redoc` → ReDoc документация
---
## Баги, найденные и исправленные при ручном тестировании
| # | Симптом | Причина | Исправление |
|---|---------|---------|-------------|
| 1 | `permission denied` на `entrypoint.sh` | `docker-compose.yml` монтирует `./backend:/app` — volume перекрывает файлы образа, включая результат `chmod +x` из Dockerfile | `CMD ["bash", "entrypoint.sh"]` вместо `CMD ["./entrypoint.sh"]` |
| 2 | `No module named 'app'` в Alembic | Python не добавляет WORKDIR в `sys.path` автоматически | `ENV PYTHONPATH=/app` в Dockerfile |
| 3 | nginx: `host not found in upstream "backend"` | nginx резолвит upstream-хосты **при старте**, а backend ещё не поднялся | Docker DNS resolver `127.0.0.11` + `set $backend` — резолвинг откладывается до момента запроса |
| 4 | `http://localhost/api/docs` → 404 | FastAPI по умолчанию отдаёт Swagger по `/docs`, а через nginx путь становится `/api/docs``backend:8000/api/docs` (не существует) | Явно указать `docs_url="/api/docs"`, `redoc_url="/api/redoc"`, `openapi_url="/api/openapi.json"` в FastAPI |
> **Для джуниора:** все четыре бага — типичные для первого запуска Docker + FastAPI + nginx. Запомни их, встретишь снова.
--- ---

Loading…
Cancel
Save