Skip to content

Репозиторий для хранения курсовой работы по дисциплине Методы и технологии интеллектуализации программных систем

License

Notifications You must be signed in to change notification settings

VerkhovtsovDenis/methods-of-software-intellectualization

Repository files navigation

Документация курсового проекта: Система бронирования молодежных пространств

Оглавление

  1. Введение
  2. Функциональность
  3. Структура проекта
  4. Основные методы
  5. Заключение
  6. Список литературы

Введение

Система бронирования молодежных пространств - курсовой проект по предмету Методы и технологии интеллектуализации программных систем, решающий задачу классификации заявок на бронирование по набору правил, задаваемых администратором молодежного пространства (Молодежного коворкинга А11).


Функциональность

  • Создание брони: Пользователь может заполнить и сохранить заявку на бронирование молодежного пространства.
  • Отображение заявки: Пользователь может посмотреть созданную и сохраненную заявку.
  • Визуализация правил: Система отображает множество заявок и список применённых к ней правил классификатора.
  • Просмотр архив броней: Система отображает множество заявок с возможностью отображения заявок на выбранный год или месяц.
  • Предсказание статуса брони: Система отображает результаты обучения на множестве всех заявок на бронирование.

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

Основные подсистемы

  1. Редактор знаний (CogEditor)
    Позволяет создавать и редактировать данные, относящиеся к бронированию.

  2. Решатель задач (CogSolver)
    Позволяет создавать и редактировать правила, относящиеся к классификации статусов согласования.

  3. ML Модель (CogNeural)
    Позволяет просматривать работу модели логистической регрессии.


Структура данных

Редактор знаний

StructuralUnit (Структурное подразделение)
Поле Тип Описание Обязательное
unit CharField Наименование структурного подразделения Да
EmployeePosition (Должность сотрудника)
Поле Тип Описание Обязательное
position CharField Наименование должности Да
Employee (Сотрудник ДВФУ)
Поле Тип Описание Обязательное
full_name CharField ФИО сотрудника Да
position ForeignKey Должность сотрудника Да
structural_unit ForeignKey Структурное подразделение Да
phone_number CharField Номер телефона Нет
email EmailField Адрес электронной почты Нет
ParticipatoryRole (Роль участников мероприятия)
Поле Тип Описание Обязательное
role CharField Роль участника мероприятия Да
description TextField Описание роли участника Нет
AgreedStatus (Статусы согласования мероприятий)
Поле Тип Описание Обязательное
status CharField Наименование статуса согласования Да
description TextField Описание статуса согласования Да
n_stage IntegerField Номер этапа согласования Да
Order (Приказ об организации мероприятия)
Поле Тип Описание Обязательное
name CharField Наименование приказа Да
date DateField Дата приказа Да
number CharField Номер приказа Да
EventFormat (Форматы мероприятия)
Поле Тип Описание Обязательное
name CharField Наименование формата Да
description TextField Описание формата Нет
Schedule (Расписание мероприятия)
Поле Тип Описание Обязательное
start DateTimeField Начало мероприятия Нет
end DateTimeField Окончание мероприятия Нет
all_day BooleanField Весь день Да
Sources (Источники получения заявок)
Поле Тип Описание Обязательное
name CharField Наименование источника Да
Application (Заявка на мероприятие)
Поле Тип Описание Обязательное
subm_date DateTimeField Время регистрации заявки Да
application_source ForeignKey Способ получения заявки Нет
e_title TextField Наименование мероприятия Да
e_description TextField Описание мероприятия Нет
e_format ForeignKey Формат мероприятия Нет
installation_deinstallation ForeignKey Время монтажа/демонтажа Нет
event_schedule ManyToManyField Время бронирования Нет
number_of_participants IntegerField Количество участников Да
roles ManyToManyField Роли участников Да
organizer ForeignKey Организатор Да
organizer_employee ForeignKey Ответственный за организацию Нет
order ForeignKey Приказ на мероприятие Нет
requires_technical_support BooleanField Требуется техподдержка Да
audio_training_date DateField Дата обучения работе со звуком Нет
technical_requirements TextField Технические требования Нет
status ForeignKey Статус согласования Да

Решатель задач

Rule (Правило)

Поле Тип Описание Обязательное Параметры/Примечания
name CharField Наименование правила Да max_length=100
description TextField Описание правила Да -
priority IntegerField Приоритет выполнения Да default=1
is_active BooleanField Активно ли правило Да default=True
condition_type CharField Тип условия Да Выбор из: "date_compare", "role_check", "text_length", "combined"
days_threshold IntegerField Порог дней для сравнения дат Нет Только для condition_type="date_compare"
role_id ManyToManyField Роли для проверки Нет Связь с ParticipatoryRole, только для condition_type="role_check"
min_text_length IntegerField Минимальная длина текста Нет Только для condition_type="text_length"
new_status ForeignKey Новый статус при выполнении Да Связь с AgreedStatus

Основные методы

  1. RuleEngine (Обработчик правил)

    • apply_rules_to_application(application):

      • Применяет все активные правила к заявке (по приоритету)
      • Обновляет статус заявки при выполнении правила
      • Логирует ошибки выполнения
    • batch_apply_rules():

      • Применяет правила ко всем заявкам
      • Возвращает список результатов с информацией об изменениях статусов
    • Особенности:

      • Правила применяются в порядке убывания приоритета
      • При ошибке обработки одного правила, обработка продолжается
      • Для combined условий проверяются все указанные параметры
  2. Rule (Правила)

    • evaluate(application) - Применяет правило к заявке:

      • Возвращает True, если условие выполнено
      • Обрабатывает разные типы условий (date_compare, role_check и др.)
      • Для combined условий проверяет все заданные параметры
    • clean() - Валидация:

      • Проверяет наличие необходимых полей для каждого типа условия
      • Вызывает ValidationError при несоответствиях

Диспетчер URL

  1. Главная: localhost/
  2. Просмотр архива броней за месяц: localhost/application/archive/<int:year>/<int:month>
  3. Просмотр архива броней за год: localhost/application/archive/<int:year>
  4. Просмотр архива броней за все время: localhost/application/archive/
  5. Просмотр архива по пользователю: localhost/organizer/<int:id>/events/
  6. Отображение заявки: localhost/application/<int:id>

Запуск

Клонируйте репозиторий methods-of-software-intellectualization на свой компьютер в рабочую папку Dev/. Разверните и активируйте виртуальное окружение в папке Dev/methods-of-software-intellectualization/, установите в него зависимости из /docs/requirements.txt. После установки проекта должна получиться такая структура файлов:

Dev
 └── methods-of-software-intellectualization/
     ├── .vscode/    Служебная папка редактора кода (опционально, скрытая)
     ├── .git/       Служебная информация Git (скрытая)
     ├── .venv/              Директория виртуального окружения
     ├── docs
     │   └── requirements.txt          Список зависимостей проекта
     ├── system              Директория проекта
     │   ├── CogEditor/
     │   ├── CogNeural/
     │   ├── CogSolver/
     │   ├── mysite/
     │   ├── static/                   Папка со статическими файлами Django
     │   ├── templates/                Папка с шаблонами Django
     │   ├── db.sqlite3                Файл базы данных (может и не быть)
     │   └── manage.py
     ├── .flake8                    Настройки тестов (скрытый) 
     ├── .gitignore                 Список файлов и папок, скрытых от отслеживания Git (скрытый)
     ├── .pre-commit-config.yaml    Конфигурация Git Хука pre-commit
     ├── db.json                <-- Загрузите фикстуры для базы данных    
     ├── LICENSE                    Лицензия   
     ├── pyproject.toml             Файл с настройками для pre-commit
     ├── pytest.ini                 Конфигурация тестов
     └── README.md              
python manage.py runserver 192.168.1.37:8050 --insecure

Запуск на localhost с возможностью допуска с ПК локальной сети:

python manage.py runserver 0.0.0.0:8050 --insecure

Локальный IP-адрес можно узнать через команду ipconfig

Дамп и загрузка данных

В папке с manage.py выполнить команду для создания дампа в файл dump.json

python manage.py dumpdata --natural-foreign --natural-primary -e contenttypes -e auth.Permission --indent 2 > dump.json

В папке с manage.py выполнить команду для загрузки дампа из файла dump.json

python manage.py loaddata dump.json

Заключение

За цели и задачи работы полностью выполнены. За время работы я приобрел необходимы навыки и компетенции по разработке программных средств, решающих задачи классификации.


Список литературы

  1. Django:

  2. Дополнительно:

About

Репозиторий для хранения курсовой работы по дисциплине Методы и технологии интеллектуализации программных систем

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published