Repository navigation
FAQ
Реальные проблемы, с которыми уже столкнулись при разборе и обкатке этого репозитория — не гипотетические, а те, что либо уже случились и исправлены, либо обязательно всплывут, если что-то настроено не по инструкции.
Если видите что-то вроде Could not find a version that satisfies the requirement python-jose==3.3.4 — у вас старая копия репозитория. В requirements.txt раньше была зафиксирована версия, которой не существует на PyPI. Сделайте git pull origin main, чтобы подтянуть исправление, и переустановите зависимости.
Аналогично — старая копия репозитория, файла ещё не было. git pull origin main и повторите шаг из Installation Setup.
Если ошибка про модуль внутри modules/ (например, что-то про student-portal) — тоже признак устаревшей копии: раньше папки назывались через дефис (student-portal), а дефис недопустим в имени Python-пакета. Сейчас они называются через подчёркивание (student_portal, teacher_portal, admin_panel). git pull origin main.
Если вы аккуратно склонировали main и всё равно видите десятки предупреждений в файлах, которые ещё не трогали — сначала проверьте, что вы не в старой ветке/копии (см. пункты выше). В актуальном main flake8 . должен проходить чисто.
Почти всегда одна из двух причин:
- Вы не запускали
python main.py init(или запускали, но потом удалилиcollege.db) — запуститеpython main.py initзаново. - Вы добавили новую модель в
models.pyсвоего модуля, но ещё не подключили роутер модуля вcore/api.py.init_db()находит модели черезcore/api.py(импорт роутера тянет за собой импорт модели) — без этой строчки таблица не создастся. См.docs/architecture.md.
Возникает, если у вас в одной модели два внешних ключа на одну и ту же таблицу (например, student_id и graded_by, оба ссылающиеся на users.id), и вы объявили relationship(...) без уточнения. SQLAlchemy не может сам понять, через какой FK строить связь. Решение — явно указать foreign_keys:
student = relationship("User", back_populates="grades", foreign_keys=[student_id])(мы сами наступили на эту ошибку в core/models.py при первой обкатке — она там уже исправлена, но если увидите такую же в своей модели, лечится так же).
Проверьте, что вы не запустили его в фоне без & и не забыли, что терминал теперь занят сервером — это нормально, uvicorn держит терминал, пока сервер работает. Открывайте API в браузере/через curl в другом окне терминала.
Значит в папке frontend/<модуль>/ нет файла index.html — раздача через StaticFiles(html=True) автоматически отдаёт index.html только если он там есть. Создайте его.
Если вы открываете страницу через http://127.0.0.1:8000/frontend/<модуль>/ (то есть страницу отдаёт тот же backend) — CORS вообще не должен встать на пути, это тот же origin. Если ошибка всё же есть — проверьте, что сервер запущен именно через python main.py run (а не через какой-то другой способ), и что путь в fetch() начинается с /api/v1/... (относительный, без http:// и порта).
Если вы намеренно открываете index.html напрямую как файл (file://...) или через отдельный dev-сервер на другом порту — CORS в core/api.py уже включён (allow_origins=["*"]), так что запросы должны проходить, но некоторые браузеры особым образом трактуют origin null у file:// — если ловите проблему именно в этом случае, проще открыть страницу через сам сервер (/frontend/...), как описано в frontend/README.md.
Кто-то запушил в main раньше вас (или вы вообще не должны пушить в main напрямую — см. Git-GitHub-Guide). Работайте в своей ветке <модуль>-backend/... или <модуль>-frontend/..., а в main попадайте только через Pull Request.
Откройте вкладку Checks в PR, разверните упавший шаг — там будет конкретная ошибка (либо тест не прошёл, либо flake8 указывает файл и строку). Почините локально (pytest, flake8 . перед пушем — тогда таких сюрпризов в PR не будет), закоммитьте и запушьте в ту же ветку — PR обновится и CI перезапустится сам.
- Проверьте Installation Setup (раздел «Частые проблемы») и Git-GitHub-Guide.
- Создайте Issue с описанием проблемы (команда, шаги воспроизведения, текст ошибки целиком).
- Обратитесь к преподавателю.