Getting Started - moiaa/College_Management_System GitHub Wiki
Добро пожаловать в проект College Management System! Эта страница поможет вам начать разработку.
На данный момент в репозитории подготовлена базовая структура:
-
Ядро системы (
core/) — конфигурация, подключение к БД, модели данных, аутентификация, общее FastAPI-приложение (core/api.py) -
Backend-структура модулей (
modules/) — 7 модулей для разработки на Python/FastAPI -
Frontend-структура модулей (
frontend/) — те же 7 модулей, обычный HTML/CSS/JS без сборки; раздаётся тем же приложением -
Пример модуля (
docs/examples/example_module/+frontend/_example/) — рабочий образец того, как backend- и frontend-часть модуля подключаются друг к другу (модель + схемы + роутер + тесты на бэкенде,fetch()-страница на фронте); подробности в README рядом с каждым -
Скрипты (
scripts/) — инициализация БД и тестовые данные -
Документация (
docs/) — архитектура и шаблоны -
Настройки —
.gitignore,requirements.txt,pytest.ini,.flake8 -
CI — на каждый push/PR в
mainавтоматически прогоняютсяpytestиflake8
На каждый модуль — две команды: backend (Python/FastAPI) и frontend (HTML/CSS/JS). Итого 7 модулей × 2 = 14 команд.
| Модуль | Backend-папка | Frontend-папка | Описание | Статус |
|---|---|---|---|---|
| 📒 Электронный журнал | modules/gradebook/ |
frontend/gradebook/ |
Оценки и посещаемость | 🟡 В разработке |
| 📚 Рабочие программы | modules/curriculum/ |
frontend/curriculum/ |
Управление программами | 🟡 В разработке |
| 📅 Расписание | modules/schedule/ |
frontend/schedule/ |
Расписание пар | 🟡 В разработке |
| 📊 Отчёты | modules/reports/ |
frontend/reports/ |
Табели и статистика | 🟡 В разработке |
| 👨🎓 Кабинет студента | modules/student_portal/ |
frontend/student_portal/ |
Личный кабинет студента | 🟡 В разработке |
| 👨🏫 Кабинет преподавателя | modules/teacher_portal/ |
frontend/teacher_portal/ |
Личный кабинет преподавателя | 🟡 В разработке |
| ⚙️ Админ-панель | modules/admin_panel/ |
frontend/admin_panel/ |
Управление системой | 🟡 В разработке |
Backend- и frontend-команда одного модуля работают независимо, но вместе договариваются об API-контракте (какие эндпоинты нужны, что они принимают/возвращают) — см. Шаг 3 и подробный разбор на странице 🔌 API-контракт.
- Откройте Issues в репозитории
- Найдите задачу с названием модуля и вашей роли (например, «Module: Gradebook — Backend» или «Module: Gradebook — Frontend»)
- Назначьте себя на задачу (Assign yourself)
- Напишите в комментариях название вашей команды
ИЛИ:
- Создайте новый Issue с названием:
Команда [Название] — Модуль [Название] — Backend(илиFrontend) - В описании укажите:
- Название команды
- Список участников
- Выбранный модуль
- Роль (backend или frontend)
Так как на модуль две команды, у каждой — свой файл: backend-команда
создаёт docs/modules/[module-name]/team-backend.md, frontend-команда —
docs/modules/[module-name]/team-frontend.md. Заполните по образцу:
# Команда: [Название команды]
## 👥 Участники
| ФИО | Роль | GitHub | Email |
|-----|------|--------|-------|
| Иванов Иван | Team Lead | [@username](https://github.com/username) | [email protected] or tg_username |
| Петров Пётр | Developer | [@username](https://github.com/username) | [email protected] or tg_username |
| Сидорова Анна | Developer | [@username](https://github.com/username) | [email protected] or tg_username |
## 🎯 Модуль
**Название:** [Например, Gradebook — Электронный журнал]
**Часть:** [Backend или Frontend]
**Описание:** [Краткое описание функционала модуля]
## 📅 Дедлайны
- Контрольная точка 1: [Дата]
- Контрольная точка 2: [Дата]
- Финальная защита: [Дата]
## 📝 Заметки
[Дополнительная информация]У backend- и frontend-команды одного модуля — свои, отдельные файлы
ТЗ: docs/modules/[module-name]/specification-backend.md и
docs/modules/[module-name]/specification-frontend.md. Это сделано
специально: раз файлы разные, обе команды не могут просто
скопировать друг у друга раздел про API — им приходится реально
сверить, что каждая сторона написала про эндпоинты, и убедиться, что
это совпадает. Это называется API-контракт, и на странице
🔌 API-контракт подробно, с нуля объясняется,
что это такое, что именно должен расписать backend в разделе «4.1 API
Endpoints», что нужно frontend'у и на каком этапе, и разобран готовый
пример эндпоинта — прочитайте её перед тем, как заполнять раздел 4
своего ТЗ.
Оба файла ТЗ (backend и frontend) заполняются по одному и тому же шаблону — просто каждая команда описывает свою часть (backend не обязан заполнять разделы про интерфейс, frontend — про структуру БД, но раздел 4.1 «API Endpoints» заполняют обе стороны: backend — что реально отдаёт, frontend — что ожидает получить, и эти два описания должны совпасть):
# Техническое задание: [Название модуля] — [Backend / Frontend]
## 1. Назначение модуля
[Описание того, что делает модуль и зачем он нужен]
## 2. Функциональные требования
### 2.1. Основные функции
- [Функция 1]
- [Функция 2]
- [Функция 3]
### 2.2. Пользовательские сценарии
**Сценарий 1:** [Описание сценария использования]
1. Пользователь открывает...
2. Система показывает...
3. Пользователь вводит...
4. Система сохраняет...
## 3. Нефункциональные требования
- Производительность: [Требования]
- Безопасность: [Требования]
- Совместимость: [Требования]
## 4. Интерфейсы
### 4.1. API Endpoints
| Метод | Endpoint | Описание |
|-------|----------|----------|
| GET | `/api/v1/[module]/...` | [Описание] |
| POST | `/api/v1/[module]/...` | [Описание] |
### 4.2. Взаимодействие с другими модулями
- [Модуль 1]: [Описание взаимодействия]
- [Модуль 2]: [Описание взаимодействия]
## 5. Структура базы данных
### 5.1. Таблицы
**Таблица:** `[table_name]`
| Поле | Тип | Описание |
|------|-----|----------|
| id | Integer | Первичный ключ |
| field_name | Type | Описание поля |
## 6. Критерии приёмки
- [ ] Все функции реализованы
- [ ] Тесты написаны и проходят
- [ ] Документация заполнена
- [ ] Код соответствует PEP 8
- [ ] Pull Request создан и принят
## 7. Приложения
[Скриншоты, схемы, диаграммы]Следуйте инструкции на странице 📥 Установка и настройка.
Прежде чем писать код с нуля, посмотрите готовый рабочий пример — он целиком рабочий, backend и frontend вместе:
-
Backend:
docs/examples/example_module/— модель + Pydantic-схемы- роутер + тесты на
TestClient. Копируется вmodules/<ваш_модуль>/и адаптируется под свою сущность (оценки, расписание и т.д.).
- роутер + тесты на
-
Frontend:
frontend/_example/— страница на чистом JS, которая реально ходит в тот же демонстрационный эндпоинт черезfetch()(GET списка, POST создания, обработка ошибок). Копируется вfrontend/<ваш_модуль>/.
Запустите python main.py init и python main.py run, откройте
http://127.0.0.1:8000/frontend/_example/ — увидите пример в работе
целиком, от страницы до базы данных. Оба этих примера — не один из 7
реальных модулей, а именно шаблон паттерна. Подробности — в README.md
рядом с каждым примером, общая механика — в docs/architecture.md.
- Преподаватель: Моисеева Александра — [email protected] - tg @molixany