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-контракт.


✅ Первые шаги

Шаг 1: Выберите модуль для разработки

  1. Откройте Issues в репозитории
  2. Найдите задачу с названием модуля и вашей роли (например, «Module: Gradebook — Backend» или «Module: Gradebook — Frontend»)
  3. Назначьте себя на задачу (Assign yourself)
  4. Напишите в комментариях название вашей команды

ИЛИ:

  1. Создайте новый Issue с названием: Команда [Название] — Модуль [Название] — Backend (или Frontend)
  2. В описании укажите:
    • Название команды
    • Список участников
    • Выбранный модуль
    • Роль (backend или frontend)

Шаг 2: Заполните данные команды

Так как на модуль две команды, у каждой — свой файл: 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: [Дата]
- Финальная защита: [Дата]

## 📝 Заметки

[Дополнительная информация]

Шаг 3: Создайте Техническое Задание (ТЗ)

У 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. Приложения

[Скриншоты, схемы, диаграммы]

Шаг 4: Настройте локальное окружение

Следуйте инструкции на странице 📥 Установка и настройка.


🧪 Как подключить свой модуль к API — пример

Прежде чем писать код с нуля, посмотрите готовый рабочий пример — он целиком рабочий, 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

📚 Полезные ссылки

⚠️ **GitHub.com Fallback** ⚠️