Все пользователи системы используют один и тот же графический интерфейс, Разграничение прав доступа к информации реализовано с помощью подсистемы безопасности и внешне прозрачно для пользователя.
«Электронный классный журнал» реализует следующие возможности:
ü Для родителей и учащихся:
1. Предоставление сведений о текущей успеваемости учащегося с указанием предмета, оценки, даты и формы контроля знаний;
2. Предоставление сведений об успеваемости учащегося за любой период обучения (даже при смене учебного заведения, при условии использования электронного дневника в обоих учебных заведениях);
3. Прямая связь с классным руководителем посредством внутренней системы электронных сообщений, что позволяет осуществлять более тесный контакт между родителями, учащимися, классным руководителем и преподавателями;
4. Каждый родитель может указать номер своего сотового телефона, для уведомления об оценках и полученных новых сообщениях.
ü Для классных руководителей:
1. Предоставление сведений об успеваемости учащихся класса с указанием предмета, оценки, даты в удобной форме за необходимый период с возможностью заполнения;
2. Добавление учащихся в список класса и их удаление из списка;
3. Доступ к личной информации учащихся своего класса и их родителях (ФИО, место жительства, дата рождения, контактные телефоны и др.);
4. Добавление/корректировка личной информации об учащихся.
ü Для учителей-предметников:
1. Выставление оценок по своему предмету только в классах, в которых ведется преподавание;
2. Предоставление дополнительных возможностей для педагога – классного руководителя (выставление оценок по всем предметам в том классе, в котором у него классное руководство).
ü Для заместителей директора:
1. Предоставление сведений об успеваемости учащихся во всех классах с указанием предмета, оценки, даты в удобной форме за выбранный период времени с возможностью их корректировки;
2. Добавление учащихся в любой класс, удаление учащихся из класса, перемещение в из класса в класс;
3. Добавление/удаление новых учителей, назначение им классов и предметов;
4. Добавление/удаление новых классов, назначение изучаемых предметов и учителей, преподающих в них;
5. Доступ к личной информации учащихся всех классов и их родителей в подробной форме: ФИО, место жительства, дата рождения, контактные телефоны и др.;
6. Добавление/корректировка личной информации учащихся и учителей.
ü Для директора или главного администратора проекта:
1. Предоставление всех возможностей работы, реализованных для заместителей директора;
2. Предоставление возможности добавления/удаления новых завучей, назначения им классов и предметов;
3. Предоставление всей информации по работе системы (полная статистика по всему: учащимся, классам, учителям, завучам, полная личная информация по всем пользователям системы и др.).
Все выше сказанное можно изобразить визуально с использованием uml-диаграмм «Классов» (Рис. 4.).
Рис. 4. UML-диаграмма «классов» электронного журнала
Диаграмма классов (class diagram) служит для представления статической структуры модели системы в терминологии классов объектно-ориентированного программирования. Диаграмма классов может отражать, в частности, различные взаимосвязи между отдельными сущностями предметной области, такими как объекты и подсистемы, а также описывать их внутреннюю структуру и типы отношений. Диаграмма классов включает в себя: классы, атрибуты классов и операции.
В диаграмме классов представлено взаимодействие классов с системой.
В системе электронный классный журнал содержаться классы: Учащийся, родитель, преподаватель, успеваемость, расписание и дневник.
Каждый класс обращается к системе Электронного школьного журнала, которая связывает их между собой и позволяет обращаться друг к другу при помощи операций.
Например, класс Дневник, в нем содержится операции: выбрать класс, выбрать учащегося. Класс Дневник обращается к системе электронный журнал и от нее получает необходимые данные.
Электронный журнал – это удобный, а главное полностью бесплатный инструмент для создания единого информационно-образовательного пространства учебного заведения и взаимодействия образовательного учреждения с родителями учащихся.
В результате выполнения данного дипломного проекта был разработан следующий алгоритм работы программы, который можно увидеть на диаграмме прецедентов (Рис. 5.).
Рис. 5. Диаграмма прецедентов «Электронный журнал»
Диаграммы прецедентов применяются для моделирования поведения системы с точки зрения внешнего наблюдателя. Диаграмма прецедентов является исходной концептуальной моделью системы в процессе ее проектирования и разработки.
В систему электронный школьный журнал имеют доступ Администратор, ученик, учитель, родитель в диаграмме они представлены актерами.
Все они имеют свой доступ к определенным операциям,которые выполняет школьный электронный журнал.
Ученик имеет доступ просмотра к операциям: учет посещаемости, учет успеваемости, рейтинг предметов, рейтинг классов.
Родитель имеет доступ просмотра к операциям: учет посещаемости, учет успеваемости, рейтинг предметов, рейтинг классов.
Преподаватель имеет доступ просмотра и заполнения к операциям: учет посещаемости, учет успеваемости, рейтинг предметов, рейтинг классов.
Администратор обладает контролем над операциями: хранение контактной информации, учет посещаемости, учет успеваемости, рейтинг предметов, рейтинг классов.
Электронный журнал позволяет:
· быстро организовывать частое обновление информации за счет(клиент -серверное приложение);
· сокращать до минимума документооборот;
· многопользовательская работа;
· представить данные не в порядке чередования страниц, а в виде структуры представления данных, пользуясь которой читатель журнала получит доступ к более легкой для восприятия информации;
· учащемуся в любой момент узнать свои оценки за любой период обучения;
· вся информация сугубо конфиденциальна: каждый учащийся имеет доступ только к своим результатам обучения;
Немного технических деталей
Сайт был написан на фреймворке flask, так как он наиболее прост в освоении.
Api
Получение данных идет через RESTful оригинального дневника. Методы api я узнал из инструментом разработчика chrome.
Методы api, которые я использовалhttps://one.43edu.ru/edv/index/diary/GUID?date=DATE – получение дневника. Возвращает дни с заданного до конца недели. Также в ответе есть периоды (четверти)Оценки возможно получить только в виде excel файла, поэтому я их скачиваю, а позже читаю как csv. Получение оценок:https://one.43edu.ru/edv/index/report/period/GUID?format=xls – годовые оценкиhttps://one.43edu.ru/edv/index/report/marks/GUID?format=xls&begin=BEGIN_DATE&end=END_DATE – четвертные оценкиPOST https://passport.43edu.ru/auth/login – авторизация
Сайт дневника стал блокировать запросы с заголовком python requests, поэтому для каждой сессии создаются случайные заголовки.
Frontend
Для верстки использовался Bootstrap 5, тема меняется при помощи его цветовых режимов.
Diary class
Так как запросы выполняются достаточно долго, я создал класс Diary, реализующий кэширование данных. В нем содержатся датаклассы Week (в Week – Day, а в Day – Subject), которые сохраняются при получении с сервера. Для работы с этим классом я реализовал декоратор login_required, который передает в маршрутизатор дневник первым аргументом.
Но если класс Diary будет храниться долгий срок, данные станут не актуальны. Поэтому нужно пересоздавать класс достаточно редко, чтобы не получать одни данные много раз и достаточно часто, чтобы данные были актуальны.
Я придумал следующее решение этой проблемы: при переходе в разные вкладки дневника, страница не обновляется и если пользователь обновит ее, дневник пересоздастся.
Javascript запросы
Переход между страницами реализован при помощи javascript. При нажатии на кнопку клиент отправляет запрос серверу и обновляет содержимое контейнера на сайте.
На следующих иллюстрациях показан процесс формирования домашней страницы.
Соответствие зон сайта
Возможно это решение не лучшее, но оно позволяет обновлять части сайта без обновления остальных.
Как мы на новый электронный журнал переходили. Дневники внедряльщика
Время на прочтение
За 10 дней до начала нового учебного года наша школа (под ненавязчивым давлением вышестоящих органов) начала экстренный переход на новую систему электронных журналов. Единую для всего региона, конечно же. Продвигаторы сего программного продукта клятвенно обещали на спешно организованных вебинарах, что новый софт будет «более лучшим», «супер-пупер надёжным» и вообще позволит снять с учителей и завучей лишнюю нагрузку, поскольку вся нужная информация будет теперича автоматически попадать куда надо.
В общем, в конце августа внезапно (с) оказалось, что частью новой ИС является модуль Мониторинг образования, к которому нас подключили (абсолютно добровольно, конечно же!) в июне месяце. И за лето секретарь и директор совместными усилиями успели забить в БД минимальный набор данных всех сотрудников и учеников. Вот только тогда, в июне, про электронные журналы ничего внятного не сказали, учителя разбежались по отпускам, и инструкции были прочитаны по диагонали. В результате все ученики оказались в едином списке. И вот — конец августа, учителя отдыхают последние деньки (в законом отпуске), и «вдруг граахнул гром»: мы переходим на новый электронный журнал. Отставить отпуск!
А далее начинается самое весёлое. Уже при первом знакомстве с новым электронным журналом стали вылазить (из всех щелей, блин!) различные косяки и баги. В борьбе с ними были потеряны десятки записей из БД. Инструкция по работе с этим добром вводила в ужас даже меня, программиста и юзера с четвертью века стажа, работавшего с немерянным количеством разного софта (в бытность свою техническим журналистом я тыкал в мышкой во всё, что не успевал сожрать из папки «Загрузки» антивирус). Да и электронный журнал этот для меня далеко не первый. Четвёртый, если быть точным. Ранее были попытки играть в «Аверс» (интерфейс их «Директора» в 2012 году вызывал лютую ностальгию по Delphi 3 и первым версиям CBuilder), потом попытка внедрения «Элжура» и, наконец, 8 вполне спокойных лет на Дневник.Ру, который я успешно развернул в 2 школах и не очень успешно в одном техникуме (я уволился, и не знаю, закончили ли внедрение).
А дальше я создавал два первых тикета по всем явным косякам, замеченным в ходе развёртывания журнала. И на следующий день даже дождался ответа одного из разработчиков (ну, или кого-то из саппорта — тут, увы, точно не знаю). Во всяком случае мне обещали исправить проблемы. И то хлеб.
Вот эти первые тикеты. Здесь я ещё описываю проблемы шаблонно. Так, как стал бы описывать баги в любом другом ПО (собственно — почему «стал бы»? я этим периодически балуюсь последние лет 20 с хвостиком).
Периодические ошибки при сохранении данных сотрудника
Чуть позже разработчики ответили, что внесены какие-то исправления. Пока ошибка не повторялась. Но мы уже не так массово вносим данные.
Не сохраняются настройки таблиц (столбцы, сортировка)
Если настроить внешний вид любой (!) таблицы, выбрать нужные столбцы, настроить их ширину, скрыть/показать панель редактора, сортировку – все эти настройки действуют до первой перезагрузки таблицы (перехода к другой таблице), что крайне неудобно при работе с большим объёмами данных. Особенно учитывая, что вся логика работы этого ЭЖ строится на переходе между таблицами. Насколько реально решить эту проблему?
Следующие тикеты были созданы через несколько дней, два из которых стали для меня «рабочими выходными», в которые я забивал разные данные в новую ИС, пытаясь обеспечить её минимальное функционирование. Параллельно со мной начали работать другие сотрудники нашей школы.
Учитывая, что вся эта работа напоминала хождение по граблям с периодическим набиванием шишек в виде потери уже внесённых данных, моё настроение несколько ухудшилось, а отношение к разработчиками системы стало чуть более негативным.
Сквозной поиск учеников
Очень часто возникает необходимость сквозного поиска по списку учеников (например, мы давеча “потеряли” одного второгодника и минут 5 убили на поиск его в двух параллелях – завучи наши злые после такого). В нашем старом ЭЖ это делалось элементарно, с главной страницы панели администратора. Здесь не можем найти такую функцию. По сотрудникам можно искать с помощью фильтров, т.к. они в одной таблице. А ученики раскиданы по классам и приходится заходить в классы по по очереди и искать в списках. Очень затратно по времени получается, даже если в одной параллели искать ученика. PS. Такого рода сервисы должны облегчать жизнь учителям/завучам, но пока только усложняют, к сожалению 🙁 PPS. Алана Купера разработчикам надо бы прочитать. Метод персонажей – убойная вещь для разработки интерфейсов.
Здесь стоит отметить, что упомянутый поиск – реально очень нужная вещь при плотной работе со списками классов. И его просят в чате многие пользователи.
Однако, внедряльщики посылают всех в другой модуль – там такой поиск есть. Но там нельзя изменять данные пользователей. В общем, выполните, господа учителя, квестик ради простейшей операции. Я, к слову, приспособился бегать в наш старый электронный журнал – там поиск работает хорошо. Но весь год не будешь два журнала поддерживать в актуальном состоянии – это нереально. Впрочем, всем пофиг. Школам же некуда деваться – как-нибудь выкрутятся. Завучам можно меньше спать, например.
Ошибка “Уберите лишние пробелы”
Уважаемые разработчики, лишние пробелы должна убирать функция trim() или её аналог в том языке/фреймворке, который вы используете. Учителям и завучам есть чем заняться в рабочее время, пожалейте, пожалуйста, наше время!
И чтобы новый тикет не создавать – прикрутите, пожалуйста, проверку формата СНИЛС (а в идеале – его автоматическое форматирование с приведением к формату Госуслуг). У нас только с учителями уже 2 случая лишнего дефиса в СНИЛС – и люди не могут зайти в систему. Что будет, когда начнём учеников и родителей массово подключать – страшно представить (у нас больше 1000 учеников, плюс родители!).
Опять таки – пожалейте учителей и завучей! Мы не компьютеры, а вынуждены работать regexp’ом вместо компьютера, проверяя формат входных данных.
Дальше тон моих тикетов снова немного изменится. Прошло ещё два дня, наполненных хождением по чужим граблям и борьбой с бесконечными косяками UI. Понимая, что к 1 сентября развернуть журнал мы уже точно не успеваем, мы подключили к работе ещё одного учителя, ответственного за работу с расписанием. И как человек, далёкий от IT (но успешно много лет работавший с аналогичными функциями Дневник.Ру), она столкнулась с кучей новый граблей и багов.
Нелогичная сортировка таблиц
Во всех таблицах сервиса wp2 наблюдается ужасная сортировка данных.
Пример 1. В таблице расписания звонков сразу при открытии данные расположены в совершенно случайном порядке (я не вижу логики вообще; даже если предположить, что сортировка идёт по скрытому полю id – не катит, т.к. я сам лично добавлял уроки в эту таблицу, и шёл строго по порядку). Сортировка по столбцам, которые видны по умолчанию, порядка не добавляет. Что-то приличное получается только при показе столбца “Группа” и сортировке по нему. И то через раз (там random что-ли где-то затесался в коде сортировки?).
Пожалуйста, сделайте человеческую сортировку.
И снова – данный запрос многократно повторялся в чате поддержки. Ни одного ответа от разработчиков и внедряльщиков я не видел. Подозреваю, что сортировка используется дефолтная, от виджета таблицы. И там русские буквы не умеют. А исправить никто не может. Других логичных объяснений у меня нет.
Ученик, выбранный по-умолчанию
(здесь нужно сделать пояснение: в ИС, о которой идёт речь, перенос учеников между классами реализован через «буфер обмена»; алгоритм приведёт в тикете; я таким образом «сортировал» по классам больше 1000 учеников; с десяток при этом были потеряны или случайно перенесены не в тот класс из-за описанной проблемы)
При открытии списка класса первый ученик выбран по-умолчанию. Это создаёт проблемы при переводе из класса в класс. Мы перед началом учебного года сверяли списки классов, учитывали учеников, которые перешли в другие классы за лето. Типичный сценарий в вашей системе:
1. Открыть класс ОТКУДА переводим.
2. Выделить нужного ученика.
3. ПКМ / Вырезать.
4. Открыть класс, КУДА переводим.
5. ПКМ / Вставить.
Когда таких операций выполняется много, часто забываешь снять галочку с первого ученика. В результате ученики, которые идут первыми по алфавиту в классах, незапланированно “мигрируют” по школе. Потом приходится их искать (см. тикет про невозможность сквозного поиска).
При удалении ученика эта проблема тоже присутствует. Не снял галочку — удалил первого по списку вместе с тем, кого реально нужно было удалить.
Снова усложняете жизнь завучам/секретарю на ровном месте.
Вообще, сам алгоритм перевода – просто типовой пример ужасного интерфейса. Почему нельзя сделать кнопочку (ну ладно, контекстное меню) “Перевести в другой класс”, вывести при её нажатии окно с выбором класса назначения и по нажатию 1 (одной!) кнопки отправить ученика в нужный класс? вместо 8 (восьми!) щелчков мышкой на каждого ученика (ну ладно, группу можно), можно обойтись 3 (тремя).
Плюс само копирование через “буфер обмена” – крайне опасный способ с точки зрения сохранности данных. Мы несколько раз потеряли данные учеников при переносе из класса в класс, когда возникали ошибки в вашей системе и буфер очищался.
Для учителей/завучей эта работа – не основная, нам очень жалко времени, потраченного на борьбу с неудобным интерфейсом и повторное внесение потерянных данных.
Пользовательские данные – это “священная корова”, любые косяки интерфейса и кода, приводящие к их потере – зло в чистом виде.
Даже всякие ВКонтакте при перезагрузке страницы не теряют данные из форм, хотя там просто переписка, а не ИС.
Невозможно сохранить расписание звонков после изменения группы
И снова вынужден указать на проблемы с интерфейсом (знаю, что задолбал, но пока мне приходится в рамках нашей школы заниматься борьбой с интерфейсом вашей системы, забив на свою работу и семью, я буду все эти косяки перекладывать на тех, кто за них реально отвечает; честно говоря, страшно представить, что про вас думают сейчас в сельских школах, где даже учителя информатики нормального зачастую нет).
(где-то здесь я понял, что скоро из моих тикетов можно будет собрать целую статью; и «тут Остапа понесло» (с) работа велась поздним вечером 31 августа в тщетных попытках обеспечить хоть какое-то функционирование системы к 1 сентября; меня пробило на жёсткий стёб)
Итак, берём таблицу “Расписание звонков”. Мы в ходе работы над расписанием поняли, что в вашей системе распределение звонков по сменам может работать только в сферической школе в вакууме (или в глухих деревнях), где 1 смена и никто не слышал про нулевые уроки и “подсменку”. И стали править расписание звонков, делая сквозную нумерацию с 1 по 12 уроки. При этом группу “1 смена” переименовали в “Основное расписание звонков”, а группу “2 смена” просто удалили.
Берём первый урок, меняем группу в редакторе, жмём кнопку “Применить”. Стоп! Нет, не жмём, ведь она неактивна! Т.е. я редактирую данные в форме, но сохранить их не могу. Где-то на этот моменте Джеф Раскин перевернулся в гробу. Ладно, не первый раз корявые интерфейсы вижу (и не последний, увы!). Правлю поле “Номер урока”, меняю “1” на “2”, а потом обратно на “1” (“Психбольница в руках пациентов” (с) ). И – опаньки! Оно живое! В смысле – кнопка “Применить снова активна”.
Ещё полчаса жизни убиты на борьбу с интерфейсом. Сегодня 31 августа, время 19.30, расписания в журнале всё ещё нет.
null вместо отчества в журнале
Ну вот я и добрался до one.43edu. И тут же нашёл багу (на самом деле не одну, но об остальных позже). У нас есть несколько учеников, которые внесены в списки без отчества. И в журналах для них дописано отчество null.
// не выводим отчество
// выводим отчество
И снова добрый день!
У всех наших завучей (и приравненных к ним учителям, которым пришлось выставить роль “Завуч” в вашей системе) одинаковая проблема – мы всегда видим абсолютно все классы при открытии журналов.
Например, в Дневник.Ру по умолчанию любой учитель видит только функционал учителя, а для перехода в режим завуча/администратора есть отдельная кнопка. В течение учебного года этот нужен нечасто. А тут я даже не могу свернуть лишние ветки дерева (то есть свернуть могу – но эти настройки не сохраняются, и при следующем входе я снова вижу все классы, и должен копаться в длинном дереве, чтобы найти нужный журнал. Хорошо хоть, здесь классы отсортированы нормально (виджет дерева умеет сортировать лучше, чем виджет таблицы в wp2?).
Привязка кабинетов к урокам
И ещё раз добрый день!
Никак не можем привязать кабинет к конкретному уроку. Наша школа учится в 2,5 смены, ситуация, когда учитель ведёт все уроки в одном кабинете – почти фантастика. В Дневнике,ру кабинет назначался для каждого урока отдельно (в шаблоне расписания), здесь назначается для журнала. Фактически мы не можем на данный момент сформировать в электронном виде пригодное к работе расписание (номер урока / предмет / учитель / кабинет).
Без такой привязки у нас один выход – делать классическое бумажное расписание. Для нашей школы это будет сильным откатом в прошлое. Мы 8 лет успешно использовали электронный вариант с привязкой к кабинетам, а на бумажках писали только изменения.
Очень много лишних названий в таблице “Предметы”
Таблица предметы содержит 91 наименование. Часть из них имеет похожие названия. Например: История, История России, История Отечества. Плюс мы в “школьную” таблицу предметов добавили свои названия. У нас, например есть “История России. Всеобщая история”.
В итоге при создании нагрузки в классе сотрудник каждый раз видит такой список:
Пожалуйста, дайте возможность хотя бы скрывать предметы из стандартного списка (если уж удалять нет возможности). Реальный список предметов в школе будет содержать примерно в 3 раза меньше наименований, и количество предметов с похожими названиями будет близко к нулю.
На этом месте я приостановил создание тикетов, поскольку обратная связь со стороны разработчиков полностью прервалась 1 сентября. В официальном telegram-канале неудобные вопросы (нее только мои, но коллег со всего региона) тоже игнорируют. На регулярно повторяющиеся вопросы (а как не повторяться, если для поиска ответа нужно пролистать тысячи постов в Telergam – никакого FAQ не ведётся, инструкция ответов на насущные вопросы не даёт) ответственные лица отвечают уже достаточно резко, на грани хамства.
В общем, на сегодняшний день выводы неутешительные. Целому региону навязали неудобную, достаточно глючную систему, рассчитанную на «сферические школы в вакууме». Не проработаны элементарные сценарии использования (тот же сквозной поиск в чате просят регулярно). Борьба с глупыми багами ведётся, вроде бы, но лично я уже две недели чувствую себя не работником школы, а бесплатным бета-тестером. Страшно представить, что сейчас происходит в школах, где нет своих учителей информатики и техников-программистов (а в небольших школах очень часто учителя — совместители, приезжающие раз в неделю; сам так работал 3 года).
Обзор сайта
Я хотел сделать прежде всего удобную замену, из-за чего в приоритете стояли:
Если о первых двух пунктах достаточно написать пару предложений, то на следующем стоит остановиться.
Домашняя страница
На главной странице расположено окно с текущим днем, последними оценками и ботом вк, отправляющим изменения в расписании, когда они приходят на сайт школы.
Модальное окно урока
Если нажать на оценку или что-либо, связанное с уроком, открывается модальное окно. В нем можно просмотреть тему, домашнее задание с прошлого и данного урока.
Рядом с домашним заданием есть две кнопки:
Модальное окно урока
Live режим оценок
Представим ситуацию: в итоговых оценках появилась двойка, поставленная еще в начале четверти. Старый дневник пришлось бы долго листать и искать оценку, но я упростил это.
Live режим оценок
Фильтрация предметов
Рассмотрим еще одну ситуацию: ученик отсутствовал по болезни и в последний день болезни ему надо сделать все накопившиеся домашние задания. В старом дневнике пришлось бы листать и искать эти уроки, я предлагаю более простое решение.
При нажатии на урок, появляется модальное окно. В нем можно нажать кнопку “Показать уроки”, что откроет следующую страницу:
На данной странице показаны последние уроки заданного типа.
Расчет оценок
Ну и куда без третьей ситуации? Допустим, началась последняя неделя четверти и нам срочно надо исправлять оценки. Но сколько оценок надо исправить, сколько получить пятерок? В этом поможет дневник.
Если нажать на предмет в итоговых оценках, откроется модальное окно расчета оценок. В нем написано сколько пятерок осталось до повышения балла и как изменится балл при получении/удалении оценки.
Сессия
Последним нововведением является продление сессии. В оригинальном дневнике необходимо авторизовываться по несколько раз за месяц, в моем же дневнике сессия продлена до года.
Предыстория
Долгое время во всех школах моей области использовался устаревший АИАС АВЕРС. В 2022 году сообщили, что все школы переходят на новый электронный дневник. Я надеялся, что представят нечто вроде дневник.ру с приложением, уведомлениями, мобильной адаптацией и удобными фичами, а на деле мы получили устаревший сайт, в котором посмотреть расписание на телефоне – огромное испытание. Дневник был настолько сырой, что в начале учебного года для просмотра оценок было необходимо скачивать excel файл, благо это починили спустя половину учебного года.
Моей задачей стало разработать сайт, ускоряющей процесс обучения и помогающий в различных его сферах.
Как я написал удобную оболочку над электронным дневником
Статья о том, как я в 15 лет облегчил работу с электронным дневником, представленным правительством Кировской области в 2022 году.
Что получилось сделать и как это было реализовано.
Заключение
Это был один из первых моих flask проектов, благодаря ему я получил большой опыт. Надеюсь на предложения/критику/вопросы или просто оценку работы в комментариях.
Если кому-то интересно, с исходным кодом можно ознакомиться в GitHub проекте.
Это моя первая статья и оформление в некоторых моментах не совсем красивое, а текст не очень складный. Надеюсь, что мои навыки в данной сфере будут улучшаться с каждой статьей.
UPD: Ссылка на сайт