Start: 2026-10-21T07:00:13+03:00 Base: http://127.0.0.1:8000 User: smoke_test_1792555213 --- 0. Health --- PASS: GET /healthz → 200 PASS: healthz → status:ok PASS: healthz → db:ok --- 1. Публичные роуты --- PASS: GET / → 200 PASS: GET /schedule → 200 PASS: GET /feed → 200 PASS: GET /projects → 200 PASS: GET /workshops → 200 PASS: GET /login → 200 PASS: GET /register → 200 PASS: GET /forgot_password → 200 PASS: GET /files без cookie → 302 PASS: GET /dashboard без cookie → 302 PASS: GET /onboarding без cookie → 302 --- 2. Регистрация пользователя --- PASS: POST /register → 200 PASS: user создан в БД INFO: user_id = 5 PASS: роль admin установлена --- 3. Логин --- PASS: POST /login → 302 PASS: GET /dashboard после логина → 200 PASS: dashboard содержит 'Ближайшие события' --- 4. Онбординг --- PASS: GET /onboarding → 200 PASS: POST /onboarding/mark → 200 PASS: POST /onboarding/complete → 302 --- 5. Уведомления --- PASS: GET /api/notifications → 200 PASS: notifications JSON содержит 'items' PASS: POST /api/notifications/read-all → 200 --- 6. Расписание + ассистент --- PASS: GET /schedule → 200 PASS: /schedule содержит 'cal-body' PASS: /schedule содержит 'chat-toggle' PASS: assistant 'Где сейчас?' → 200 PASS: ответ содержит 'reply' PASS: assistant 'Когда следующая пара?' → 200 PASS: ответ содержит 'reply' PASS: assistant 'Что сегодня?' → 200 PASS: ответ содержит 'reply' PASS: assistant 'Он опаздывает?' → 200 PASS: ответ содержит 'reply' PASS: assistant 'Как связаться?' → 200 PASS: ответ содержит 'reply' PASS: GET /schedule/export.ics → 200 PASS: ICS содержит 'BEGIN:VCALENDAR' --- 7. Проекты --- PASS: POST /projects/new → 302 PASS: проект создан INFO: project_id = 8 PASS: GET /projects/ → 200 PASS: GET /projects//board → 200 PASS: POST /tasks/new → 302 PASS: задача создана --- 8. Мастер-классы --- PASS: POST /workshops/new → 302 PASS: МК создан INFO: workshop_id = 3 PASS: GET /workshops/ → 200 PASS: POST /workshops//register → 302 PASS: регистрация в БД --- 9. Файлы v2.0 — пространство/папка/файл/версии/ACL/move/delete --- PASS: POST /files/space/new → 302 PASS: пространство создано INFO: space_id = 3 PASS: GET /files/space/ → 200 PASS: POST /files/folder/new → 302 PASS: папка создана INFO: folder_id = 3 PASS: GET /files/folder/ → 200 PASS: POST /files/upload → 302 PASS: файл создан INFO: file_id = 11 PASS: file.version = 1 PASS: current_version_id задан PASS: fileversion count = 1 PASS: GET /files/download/ → 200 PASS: скачано v1 PASS: GET /files//history → 200 PASS: история содержит 'v1' PASS: POST /files//new_version → 302 PASS: version = 2 PASS: fileversion count = 2 PASS: GET /files//version//download → 200 PASS: скачано содержимое v1 PASS: GET /files/download/ (v2) → 200 PASS: скачано v2 PASS: POST /files/space//acl/add → 302 PASS: GET /files/space//acl → 200 PASS: POST /files//move → NULL → 302 PASS: space_id обнулён PASS: version сброшен в 1 PASS: current_version_id = NULL PASS: fileversion удалены PASS: POST /files//move → обратно в space → 302 PASS: space_id восстановлен PASS: fileversion count = 1 (миграция) PASS: POST /files//delete → 302 PASS: файл удалён из БД PASS: POST /files/folder//delete → 302 PASS: папка удалена из БД PASS: POST /files/space//delete → 302 PASS: пространство удалено из БД --- 10. Вебхук Gitea --- PASS: POST /webhooks/gitea (плохая подпись) → 401 PASS: POST /webhooks/gitea (валидная подпись) → 200 --- 11. Логаут --- PASS: GET /logout → 302 PASS: GET /dashboard после logout → 302 === ИТОГ === PASS: 94 FAIL: 0 TOTAL: 94 DURATION: 4s End: 2026-10-21T07:00:17+03:00 INFO: Cleanup тестовых данных… INFO: Cleanup завершён