Skip to content

Latest commit

 

History

History
148 lines (113 loc) · 8.69 KB

File metadata and controls

148 lines (113 loc) · 8.69 KB

Система оценки студентов

Это приложение на базе Streamlit, предназначенное для автоматизированного сбора, анализа и формирования единого рейтинга студентов. Система принимает на вход разрозненные Excel и CSV таблицы (ведомости посещаемости, списки оценок, данные об участии в мероприятиях), автоматически распознает их структуру и рассчитывает итоговые баллы.

Основные возможности

1) Авто-распознавание типа таблиц

Система пытается автоматически определить, что вы загрузили:

  • Посещаемость (колонки-датчики/даты, маркеры + / Н / У или 1/0, да/нет)
  • Успеваемость (оценки 2–5, "зачёт/незачёт", баллы 0–100 и т.п.)
  • Активности (длинный текст, ключевые слова: конференция/публикация/CTF/хакатон/олимпиада и т.д.)

При необходимости тип и колонки можно поправить вручную в блоке “Контроль распознавания”.

2) Активности считаются “по событиям”

Если в одной ячейке указано несколько мероприятий, система разделит их на отдельные события и начислит баллы каждому отдельно:

  • разделители: переносы строк, ;, маркеры списков
  • для каждого события определяется тип, роль, доказательство (URL)

3) Два режима активностей

  • Режим формы (строгий): если нет URL-доказательства — баллы не начисляются, а в отчёте качества появляются ошибки.
  • Доверенная таблица организаторов: можно загружать списки от преподавателей/организаторов (без ссылок и без строгого формата).

В интерфейсе для каждого листа можно включить галочку:

“Доверенная таблица организаторов (можно без ссылок и строгого формата)”

4) Отчёт о качестве данных и дубли

Система строит:

  • Quality report (ошибки/предупреждения по активностям): отсутствие доказательств, неправильный формат, нераспознанный тип и т.п.
  • Duplicates report: найденные дубли активностей (начисление пропущено/удалено второй раз)

5) Экспорт в Excel

Формируются:

  • Рейтинг
  • Свод начислений
  • Детализация начислений
  • Свод по группам
  • (опционально) вкладки Quality и Duplicates

Установка и запуск

Требования

  • Python 3.10+
  • Библиотеки из requirements.txt

Запуск приложения

Поместите все файлы в одну директорию (или настройте структуру пакетов, если используете папку core/) и выполните команду:

streamlit run app.py

Приложение откроется в браузере по адресу http://localhost:8501.

Как пользоваться

  1. Загрузите файлы (можно сразу несколько): .xlsx и/или .csv
  2. В разделе “Контроль распознавания” проверьте:
    • правильность типа таблицы (посещаемость/оценки/активности)
    • выбор колонок ФИО / Группа / Номер студенческого билета
    • список колонок активности/оценок/посещаемости
  3. Для таблиц активностей:
    • включите “Доверенная таблица организаторов” для таблиц преподавателей/организаторов
    • для Google Forms-таблиц оставляйте режим по умолчанию (строгий)
  4. Нажмите “Сформировать итоговый отчёт (рейтинг + начисления)”
  5. Скачайте Excel-отчёт

Как считаются баллы (простая логика)

Успеваемость

  1. Из таблицы извлекаются оценки (2–5) или баллы (0–100 → переводятся в 2–5 порогами).
  2. Считается средняя оценка по всем найденным дисциплинам.
  3. Перевод в коэффициент 0..1: (avg_grade - 2) / 3
  4. Баллы: coef * acad_max (настраивается в UI)

Посещаемость

  1. Считается: present / (present + absent)
  2. Если ниже порога threshold — баллы 0.
  3. Иначе: rate * att_max

Активности

Суммируются баллы событий по таблице баллов в интерфейсе: activity_points[kind][role]


Форматы входных данных

Forms (активности)

Выгрузка может содержать поля:

  • ФИО
  • Учебная группа
  • Номер студенческого билета
  • Длинный текст “Укажите мероприятия…” / “Укажите научную деятельность…”

Рекомендуемый формат событий (строгий режим формы):

  • Мероприятие - Статус - Доказательство(URL)
  • Активность - Статус - Доказательство(URL)

Можно указывать несколько строк (каждое событие с новой строки).

Таблицы организаторов/преподавателей

Могут быть форматы:

  • списки участников
  • таблицы докладов/секций/тем

Для таких таблиц включайте: “Доверенная таблица организаторов”
Тогда доказательства/строгий формат не обязательны.


Сохранённые профили распознавания

Система может сохранять профиль для структуры таблицы (по сигнатуре колонок), чтобы при повторной загрузке не настраивать заново.

Если таблица внезапно распознаётся неправильно:

  • откройте лист в “Контроль распознавания”
  • исправьте тип/колонки
  • нажмите “Сохранить профиль распознавания”

Сброс профилей

Если нужно полностью сбросить распознавание, удалите profiles.json (путь определяется в core/utils.py).


Ручные начисления

В интерфейсе есть блок “Ручные достижения / доп. начисления”. Можно добавить:

  • активность (пойдёт в активность)
  • доп. баллы (сразу в итог)

Структура проекта

  • app.py — Streamlit UI и orchestration
  • core/ingest.py — чтение Excel/CSV
  • core/header_detect.py — поиск блока заголовков
  • core/infer.py — распознавание схемы таблицы (тип, колонки)
  • core/extract.py — извлечение evidence (оценки/посещения/активности)
  • core/dedupe.py — дедупликация активностей
  • core/scoring.py — расчёт итогов
  • core/export.py — экспорт Excel
  • core/manual.py — ручные начисления
  • core/utils.py — утилиты/пути/нормализация