Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file removed .DS_Store
Binary file not shown.
11 changes: 10 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -178,4 +178,13 @@ yarn-error.log*
pnpm-debug.log*
.vite/
dist/
.cache/
.cache/
.idea/

credentials.json

# В корне .gitignore
tg_bot/*.db
tg_bot/*.db-*
tg_bot/__pycache__/
.DS_Store
99 changes: 99 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
# Телеграм-бот для проверки лабораторных работ

## Запуск

1. Создайте файл .env в корне проекта и заполните по примеру

ADMIN_LOGIN=ваш_логин_админа
ADMIN_PASSWORD=ваш_пароль_админа
SECRET_KEY=сгенерированный_секретный_ключ
GITHUB_TOKEN=ваш_github_токен
TELEGRAM_BOT_TOKEN=токен_вашего_бота

2. Создайте файл credentials.json в корне проекта
3. В терминале выполнить команду:

docker compose up --build

## Команды бота
- /start - Запуск бота, регистрация студента, главное меню студента (для авторизованных)

## Как получить значения переменных окружения и файла credentials.json
### Файл .env:
- ADMIN_LOGIN/ADMIN_PASSWORD

Произвольные логин и пароль администратора приложения

- SECRET_KEY

Переменная хранящая секретный ключ для безопасности приложения.

- GITHUB_TOKEN

1. Перейдите: GitHub Settings → Developer Settings → Personal Access Tokens → Generate new token

2. Выберите scopes: repo, admin:org, user

3. Скопируйте токен (отображается только один раз!)

- TELEGRAM_BOT_TOKEN

1. Создайте бота через @BotFather

2. Используйте команду /newbot

3. Скопируйте токен из сообщения BotFather

### Файл credentials.json:

Необходим для работы с Google Sheets API.

Инструкция получения:

1. Создайте проект в Google Cloud Console

2. Включите API:

- Google Sheets API

- Google Drive API

3. Создайте сервисный аккаунт:

- APIs & Services → Credentials → Create Credentials → Service Account

- Заполните имя (например app-service-account)

- Роль: Project → Editor

4. Сгенерируйте ключ:

В настройках сервисного аккаунта → Keys → Add Key → Create new key → JSON

5. Скачанный файл поместите в корень проекта как credentials.json

## Доступ к приложению
- Веб-интерфейс: http://localhost:5173

- Админ-панель: http://localhost:5173/admin

- Telegram-бот: @lab_auditor_bot

## Важные примечания
1. Не коммитьте конфиденциальные файлы:


.env
credentials.json
2. Для доступа к Google Sheets:

- Откройте нужную таблицу

- Нажмите "Share"

- Добавьте email из credentials.json (поле client_email)

3. При изменении портов обновите docker-compose.yml:

ports:
- "Новый_порт:8000"
2 changes: 1 addition & 1 deletion backend.Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ COPY requirements.txt .
RUN pip install --no-cache-dir --upgrade pip \
&& pip install --no-cache-dir -r requirements.txt

COPY . .
COPY credentials.json .

EXPOSE 8000

Expand Down
13 changes: 13 additions & 0 deletions bot.Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
FROM python:3.12-slim

WORKDIR /app

# Установка зависимостей
COPY tg_bot/bot_requirements.txt .
RUN pip install --no-cache-dir --upgrade pip && \
pip install --no-cache-dir -r bot_requirements.txt

# Копирование файлов бота
COPY tg_bot/ /app/

CMD ["python", "bot_main.py"]
123 changes: 123 additions & 0 deletions courses/ml-2025.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
course:
name: Machine learning
logo: "/assets/machine-learning.png"
alt-names:
- ML
- Машинное обучение
semester: Spring 2025
email: k43guap@ya.ru
timezone: UTC+3
github:
organization: suai-mlb-2025
teachers:
- "Mark Polyak"
- markpolyak
google:
spreadsheet: 1i-woK-2y6Q-S5QTYEd0vxZoizZgJQsji8-Op5IIA9mc # тестовая таблица
info-sheet: График
task-id-column: 0
student-name-column: 2
lab-column-offset: 1
staff:
- name: Поляк Марк Дмитриевич
title: ст. преп.
status: лектор
- name: Поляк Марк Дмитриевич
title: ст. преп.
status: лабораторные работы
labs:
"1":
github-prefix: mlb-task1
short-name: ЛР1
taskid-max: 25
penalty-max: 7
ci:
- workflows
files:
- jupyter_assignment.ipynb
- matplotlib_assignment.ipynb
- pandas_assignment.ipynb
tests:
- jupyter_tests.py
moss:
language: py
max-matches: 1000
local-path: lab1
additional:
- suai-mlb-2024
basefiles:
-
repo: k43guap/mlb-course-task1
filename: jupyter_assignment.ipynb
-
repo: k43guap/mlb-course-task1
filename: matplotlib_assignment.ipynb
-
repo: k43guap/mlb-course-task1
filename: pandas_assignment.ipynb
report:
- Цель работы
- Индивидуальное задание
- Описание входных данных
- Результат выполнения работы
- Исходный код программы с комментариями
- Выводы
"2":
github-prefix: mlb-task2
short-name: ЛР2
taskid-max: 20
taskid-shift: 4
penalty-max: 8
ci:
- workflows
files:
- regression_assignment.ipynb
tests: []
moss:
language: py
max-matches: 1000
local-path: lab2
additional:
- suai-mlb-2024
basefiles:
-
repo: k43guap/mlb-course-task2
filename: regression_assignment.ipynb
report:
- Цель работы
- Задание на лабораторную работу
- Граф запуска потоков
- Результат выполнения работы
- Исходный код программы с комментариями
- Выводы
"3":
github-prefix: mlb-task3
short-name: ЛР3
taskid-max: 20
penalty-max: 9
ci:
- workflows
files:
- classification_assignment.ipynb
tests: []
moss:
language: py
max-matches: 1000
local-path: lab3
additional:
- suai-mlb-2024
basefiles:
-
repo: k43guap/mlb-course-task3
filename: classification_assignment.ipynb
report:
- Цель работы
- Задание на лабораторную работу
- Граф запуска потоков
- Результат выполнения работы
- Исходный код программы с комментариями
- Выводы
misc:
requests-timeout: 5


Loading