Проект: Автоматизация обработки школьного расписания
Описание
Этот набор скриптов предназначен для обработки школьного расписания сформированного при помоща ПО АВЕРС
Он включает следующие функции:
Преобразование Excel-файлов в CSV.
Конвертация CSV-файлов в JSON.
Нормализация JSON-данных.
Поиск ошибок в данных.
Преобразование JSON-файла в формат, подходящий для использования в ГИС СО ЕЦП.
Состав проекта
Leader.py
Основной скрипт, координирующий выполнение всех остальных скриптов. Управляет порядком выполнения, обрабатывает ошибки.
delete.py
Удаление временных файлов если они существуют
exel_to_csv.py
Преобразовывает файлы в csv формат в кодировке windows-1251
csv_to_json.py
Преобразовывает csv файл расписания в json файл для работы программы
FindError.py
Выполняет проверку на ошибка файла raspisanie.json
add_key.py
Технический скрипт, проверяет ключи в файле raspisanie.json
sinh_time.py
Технический скрипт, добавляет время в уроки по подгруппам
add_groups.py
Скрипт выполняет привязку групп к урокам которые где они должны быть
all_null_lesson.py
Технический скрипт, нормализует raspisanie_groups_added.json добавляя пустые массивы
lesson_sort.py
Технический скрипт, сортирует массивы в нутри дня недели
update_cab.py
Технический скрипт, добавляет значение Нет кабинет там где они не указаны
check_group.py
Скрипт проверяет назначение групп
update_lesson_gis.py
Скрипт выполняет замену названий уроков с соответсвии с справочником zamena.csv
Final_check.py
Скрипт выполняет проверки названий уроков в соответсвии с справочником уроков lesson.csv
json_to_GIS_SO.py
Скрипт готовит расписание для загрузки в ГИС СО ЕЦП
GIS_to_exel.py
Скрипт создает exel файл с правильнм форматированием, остается только ставить в ГИС
Зависимости
Для работы скриптов требуются следующие библиотеки Python:
pandas: Для преобразования Excel-файлов в CSV.
csv: Для чтения и записи CSV-файлов.
json: Для работы с JSON-данными.
logging: Для ведения журнала событий.
subprocess: Для запуска скриптов из Leader.py.
os: Для работы с файловой системой.
collections.OrderedDict: Для сохранения порядка элементов в JSON.
Инструкции по использованию
Подготовка входных данных :
Создайте Excel-файлы с данными:
raspisanie.xlsx: Расписание уроков. (Выгружается из ПО АВЕРС в формате exel "Расписание всех классов. Расписание каждого класса отдельно")
klass.xlsx: Список классов. (Выгружается из справочников ГИС СО ЕЦП)
lesson.xlsx: Список уроков. (Выгружается из справочников ГИС СО ЕЦП)
groups.xlsx: Список групп в связке с классом и предметом
Класс Предмет Учитель Группа
zamens.xlsx^ Список уроков для замены
Ключ Значение
!ВНИМАНИЕ!
Файл raspisanie.xlsx пока еще дополнительной ручной валидации
1. Номера уроков долдны быть только цифры (без доп символов)
2. Скрипт ожидает определенной структуры файла
Расписание всех классов; Расписание каждого класса отдельно
СТРОКА
Расписание уроков для классов
СТРОКА
Класс - 5а
СТРОКА
# Время Понедельник Вторник Среда Четверг Пятница
Предмет Каб. Предмет Каб. Предмет Каб. Предмет Каб. Предмет Каб.
РАСПИСАНИЕ (без незначащих строк где есть время и номер урока но нет уроков)
СТРОКА
Класс - 5б
СТРОКА
ОЧЕНЬ ВНИМАТЕЛЬНО ОТНИСИТЕЛЬ К НОРМАЛИЗАЦИИ ДАННЫХ
Запуск скриптов :
Запустите основной скрипт Leader.py. Он автоматически выполнит все необходимые шаги:
Удалит временные файлы.
Преобразует Excel-файлы в CSV.
Создаст JSON-файл с расписанием.
Нормализует JSON-данные.
Проверит данные на ошибки.
Создаст CSV-файл для ГИС СО ЕЦП.
Проверка результатов :
Результаты будут сохранены в следующих файлах:
GIS_schedule.csv: Итоговый файл для импорта в ГИС СО ЕЦП.
log.log: Журнал событий.
error.log: Файл с ошибками (если они были обнаружены).
err_groups.log: Файл с ошибками групп (если они были обнаружены).
chech_groups.log: Файл с ошибками назначения групп.
final_error.log: Файл с ошибками финальной проверки перед загрузкой
Важные замечания:
Все файлы должны быть в кодировке cp1251 (Windows-1251), за исключением JSON-файлов, которые используют кодировку utf-8.
Перед запуском основного скрипта (Lider.py) убедитесь, что все необходимые файлы находятся в указанных директориях.
В случае обнаружения ошибок в расписании, проверьте файл log.log для получения подробной информации о проблемах.
После успешного выполнения всех скриптов, итоговый CSV-файл будет сохранен в директории рядом с скриптом.
Лицензия:
Данный проект распространяется под лицензией Apache License, Version 2.0.
Полный текст лицензии доступен по ссылке: http://www.apache.org/licenses/LICENSE-2.0.
Краткое описание лицензии:
Вы можете свободно использовать, модифицировать и распространять данный проект как в коммерческих, так и в некоммерческих целях.
Обязательным условием является указание авторства и сохранение уведомления об авторских правах.
Лицензия не предоставляет гарантий на использование проекта, и авторы не несут ответственности за возможные
убытки или проблемы, возникшие в результате использования данного проекта.
Лицензионное уведомление:
Copyright 2025 Petunin Lev Mikhailovish
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Автор: Петунин Лев Михайлович
Email: levmikhailovish@yandex.ru
GitHub: https://github.com/LeonArchie
Дата: 03.02.2025
Версия: 3.0
Если у вас возникли вопросы или предложения по улучшению проекта, пожалуйста, свяжитесь с автором.
Если у Вас возникла какая либо ошибка которую Вы не можете разобрать самостоятельно
После исполнения скрипта не изменяйте никаких файлов, заархивируте всю папку со скриптом
Отправьте архив по адресу levmikhailovish@yandex.ru и/или service@ippetunin.ru
В теле письма опишите Вашу проблему и мы постараемся помочь в ближайшее время