Оптимизация бизнес процессов магазина одежды посредством реализации чат-бота(чат-бот еще не разработан, его так же нужно написать)
Заказать уникальную дипломную работу- 79 79 страниц
- 19 + 19 источников
- Добавлена 13.07.2024
- Содержание
- Часть работы
- Список литературы
Введение 2
Глава 1. Теоретические основы бизнес-процессов в магазине одежды. 4
1.1. Понятие бизнес-процесса. 4
1.2. Описание бизнес-процессов в магазине одежды. 12
1.3 Алгоритм оптимизации бизнес-процесса 17
Глава 2. Проектирование приложения. 21
2.1. Выбор языка программирования и среды разработки. 21
2.2. Проектирование базы данных. 29
2.2.1 Инфологическое проектирование 32
2.2.2 Даталогическая модель 36
2.3. Проектирование ТГ бота. 40
Глава 3. Разработка и внедрение чат-бота 44
3.1. Описание используемых функций 44
3.2. Разработка кнопок для удобства пользователя 55
3.3. Тестирование бота 57
3.4 Расчет экономической эффективности 70
Заключение 75
Список литературы 77
Если да, то выполняется цикл for, который проходит через каждую строку данных и добавляет цвет в переменную res, разделяя их запятыми.9. После завершения цикла, последний символ в res (запятая и пробел) удаляется с помощью среза [:-2].10. Если данных в res_info нет, то res присваивается строка "Информации в БД пока нет!".11. Возвращается значение переменной res.В режиме просмотра информации про свои заказы потребуется функция, формирующая входящие в заказ товары и их количество.def get_products(order_id): ''' Функция возвращает название товаров и количество по определенному номеру заказа ''' res = '' select_query = f"SELECT products.name, order_details.quantity FROM order_details JOIN products \ ON order_details.products_id = products.id \ WHERE order_details.orders_id = {order_id};" connection.reconnect() with connection.cursor() as cursor: cursor.execute(select_query) res_info = cursor.fetchall() if res_info: for row in res_info: res += f"{row[0]} - {row[1]} шт., " res = res[:-2] else: res = "Информации в БД пока нет!" returnresКод этой функции позволяет получить названия товаров и их количество, которые были заказаны по определенному номеру заказа. Вот как это работает:1. Функция get_products принимает один аргумент order_id.2. Создается переменная res, которая будет содержать результаты работы функции.3. Формируется SQL-запрос select_query, который выбирает названия товаров (products.name) и их количество (order_details.quantity) из таблиц order_details и products, где order_details.orders_id соответствует order_id.4. Используется объект connection для установления соединения с базой данных и метод reconnect() для повторного подключения, если оно было потеряно.5. Создается объект cursor для выполнения SQL-запросов к базе данных.6. Выполняется запрос select_query с помощью метода execute() объекта cursor.7. Результаты запроса сохраняются в переменную res_info.8. Проверяется, есть ли данные в res_info. Если да, то выполняется цикл for, который проходит через каждую строку данных и добавляет информацию о товаре и его количестве в переменную res, разделяя их запятыми.9. После завершения цикла, последний символ в res (запятая и пробел) удаляется с помощью среза [:-2].10. Если данных в res_info нет, то res присваивается строка "Информации в БД пока нет!".11. Возвращается значение переменной res.В режиме изменения мерки необходимо обеспечить доступ клиента только к своим заказам, для этого придется формировать список заказов выбранного клиента.def get_orders(customer_id): ''' Функция возвращает список заказов определенного клиента чтобы клиент не мог менять чужие заказы ''' res = [] select_query = f"SELECT orders.id FROM orders WHEREorders.customers_id = {customer_id};" connection.reconnect() with connection.cursor() as cursor: cursor.execute(select_query) res_info = cursor.fetchall() if res_info: for row in res_info: res.append(row[0]) returnresЭтот код определяет функцию get_orders, которая возвращает список заказов определенного клиента. Вот как это работает:1. Функция get_orders принимает один аргумент customer_id.2. Создается пустой список res, который будет использоваться для хранения идентификаторов заказов.3. Формируется SQL-запрос select_query, который выбирает идентификаторы заказов (orders.id) из таблицы orders, где orders.customers_id соответствует customer_id.4. Используется объект connection для установления соединения с базой данных и метод reconnect() для повторного подключения, если оно было потеряно.5. Создается объект cursor для выполнения SQL-запросов к базе данных.6. Выполняется запрос select_query с помощью метода execute() объекта cursor.7. Результаты запроса сохраняются в переменную res_info.8. Проверяется, есть ли данные в res_info. Если да, то выполняется цикл for, который проходит через каждую строку данных и добавляет идентификатор заказа в список res.9. После завершения цикла, список res содержит идентификаторы всех заказов данного клиента.10. Возвращаетсясписокres.При формировании нового заказа важно обеспечивать адекватность, чтобы клиент не ввел номер несуществующего заказа.defget_nums_products(): ''' Функция возвращает все номера заказов, чтобы клиент не смог выбрать несуществующее ''' res = [] select_query = f"SELECT id FROM products;" connection.reconnect() with connection.cursor() as cursor: cursor.execute(select_query) res_info = cursor.fetchall() if res_info: for row in res_info: res.append(row[0]) returnresЭтот код определяет функцию get_nums_products, которая возвращает список номеров всех товаров. Вот как это работает:1. Создается пустой список res, который будет использоваться для хранения номеров товаров.2. Формируется SQL-запрос select_query, который выбирает номера продуктов (id) из таблицы products.3. Используется объект connection для установления соединения с базой данных и метод reconnect() для повторного подключения, если оно было потеряно.4. Создается объект cursor для выполнения SQL-запросов к базе данных.5. Выполняется запрос select_query с помощью метода execute() объекта cursor.6. Результаты запроса сохраняются в переменную res_info.7. Проверяется, есть ли данные в res_info. Если да, то выполняется цикл for, который проходит через каждую строку данных и добавляет номер продукта в список res.8. После завершения цикла, список res содержит номера всех продуктов.9. Возвращается список res.В режиме изменения мерки бывает полезно вспомнить какая она была. Сделали специальную функцию.defget_merka(order_id): ''' Функция возвращает мерки некоего заказа ''' res = [] select_query = f"SELECTorders.measurements FROM orders WHERE orders.id = {order_id};" connection.reconnect() with connection.cursor() as cursor: cursor.execute(select_query) res_info = cursor.fetchall() if res_info: for row in res_info: res.append(row[0]) return res[0]Этот код определяет функцию get_merka, которая возвращает мерки для определенного заказа. Вот как это работает:1. Создается пустой список res, который будет использоваться для хранения мерок заказа.2. Формируется SQL-запрос select_query, который выбирает мерки (orders.measurements) из таблицы orders, где orders.id соответствует order_id.3. Используется объект connection для установления соединения с базой данных и метод reconnect() для повторного подключения, если оно было потеряно.4. Создается объект cursor для выполнения SQL-запросов к базе данных.5. Выполняется запрос select_query с помощью метода execute() объекта cursor.6. Результаты запроса сохраняются в переменную res_info.7. Проверяется, есть ли данные в res_info. Если да, то выполняется цикл for, который проходит через каждую строку данных и добавляет мерки заказа в список res.8. После завершения цикла, возвращается первый элемент списка res, который является мерками заказа.При формировании общей стоимости заказа необходимо учитывать и цену каждого товара, умноженную на количество. То есть пользователю нет нужды считать всё это самому. Для этого понадобится функция нахождения цены определенного товара по его айдишнику.def get_price(product_id): ''' Функция возвращает цену конкретного товара ''' res = [] select_query = f"SELECT price FROM products WHERE id = {product_id};" connection.reconnect() with connection.cursor() as cursor: cursor.execute(select_query) res_info = cursor.fetchall() if res_info: for row in res_info: res.append(row[0]) return res[0]Этот код определяет функцию get_price, которая возвращает цену конкретного товара. Вот как это работает:1. Создается пустой список res, который будет использоваться для хранения цены товара.2. Формируется SQL-запрос select_query, который выбирает цену (price) из таблицы products, где id соответствует product_id.3. Используется объект connection для установления соединения с базой данных и метод reconnect() для повторного подключения, если оно было потеряно.4. Создается объект cursor для выполнения SQL-запросов к базе данных.5. Выполняется запрос select_query с помощью метода execute() объекта cursor.6. Результаты запроса сохраняются в переменную res_info.7. Проверяется, есть ли данные в res_info. Если да, то выполняется цикл for, который проходит через каждую строку данных и добавляет цену товара в список res.8. После завершения цикла, возвращается первый элемент списка res, который является ценой товара.Также разработали функция для выяснения последнего номера в списке товаров, это надо для успешного добавления изображений в бот.defget_cur_num_pr(): ''' Функция возвращает номер будущего товара, это надо чтоб грамотно сохранить фотки товара ''' res= [] select_query = f"SELECTid FROM productsorderbyid;" connection.reconnect() withconnection.cursor() ascursor: cursor.execute(select_query) res_info = cursor.fetchall() ifres_info: forrowinres_info: res.append(row[0]) returnres[-1]В этом коде функция get_cur_num_pr выполняет следующие шаги:1. Создает пустой список res для хранения ID товаров.2. Формирует SQL запрос для выборки всех ID товаров в порядке возрастания их ID.3. Восстанавливает соединение с базой данных, если оно было потеряно.4. Использует контекстный менеджер для работы с курсором базы данных.5. Выполняет SQL запрос и получает все результаты.6. Если есть результаты, перебирает каждую строку и добавляет ID товара в список res.7. Возвращает последний элемент списка res, который будет являться номером следующего товара.3.2. Разработка кнопок для удобства пользователяДля удобства пользователя было принято решение делать ввод информации максимально через кнопки.ReplyKeyboardMarkup — это инструмент, который позволяет управлять клавиатурой в Telegram. Он предоставляет возможность создавать пользовательский интерфейс для взаимодействия с ботом.Основные параметры ReplyKeyboardMarkup:— Resizekeyboard — параметр, позволяющий изменить размер клавиатуры. Доступны три варианта: true, false и auto. В первом случае клавиатура будет уменьшена до минимально возможного размера, во втором — останется стандартной, в третьем — автоматически подстроится под размер экрана устройства пользователя.— Selective — параметр, который позволяет показывать клавиатуру только определённым пользователям. Например, если у вас есть база данных пользователей, вы можете показать клавиатуру только тем, кто соответствует определённым критериям.— OneTimeKeyboard — параметр, который позволяет использовать клавиатуру только один раз. После того как пользователь отправит сообщение с этой клавиатурой, она больше не будет отображаться.В начале в стартовом хэндлере обнулим все служебные переменные, также сформируем клавиатуру с основным кнопками.@bot.message_handler(commands=['start'])def start(message): global flag,products,counts, merka flag = None products = [] counts = [] merka = None bot.send_message(message.chat.id, f"Вас приветствуют бот для клиентов онлайн магазина одежды.") markup = types.ReplyKeyboardMarkup(resize_keyboard=True) item_add = types.KeyboardButton("Посмотретьтовары") item_plot = types.KeyboardButton("Посмотретьсвоизаказы") item_del = types.KeyboardButton("Изменитьмеркивзаказе") item_z = types.KeyboardButton("Сделатьзаказ") markup.add(item_add, item_plot,item_del,item_z) bot.send_message(message.chat.id, "Выберитедействие:", reply_markup=markup)Рис. 7 – Клавиатура клиентского режимаТакже еще одна клавиатура создается в режиме оформления нового заказа.@bot.message_handler(func=lambda message: message.text == "Сделатьзаказ")def go_z(message): global flag flag = 'change' bot.send_message(message.chat.id, "Вы в режиме формирования заказа.", reply_markup=ReplyKeyboardRemove()) markup = types.ReplyKeyboardMarkup(resize_keyboard=True) item_add = types.KeyboardButton("Добавитьтовары") item_plot = types.KeyboardButton("Добавитьмерки") item_del = types.KeyboardButton("Завершитьоформление") markup.add(item_add, item_plot,item_del) bot.send_message(message.chat.id, "Выберитедействие:", reply_markup=markup)Рис. 8 – Клавиатура клиентского режима в добавлении заказа3.3. Тестирование ботаДалее рассмотрим функционирование в режиме обслуживания клиентов и сначала потестируем режим просмотра товаров.@bot.message_handler(func=lambda message: message.text == "Посмотретьтовары")def show(message): global flag bot.send_message(message.chat.id, "Вы в режимепросмотраинформациипотоварам.", reply_markup=ReplyKeyboardRemove())select_query = f"SELECT * FROM products JOIN categories ON products.categories_id =categories.id;"connection.reconnect() with connection.cursor() as cursor:cursor.execute(select_query)res_info = cursor.fetchall() if res_info: msg = "№ - Название - Описание - Цена - Категория - Материал - Цвет \n"bot.send_message(message.chat.id,msg) for row in res_info: msg = "" num = row[0] msg += f"{num} - {row[1]} - {row[2]} - {row[3]} - {row[-1]} - {get_materials(num)} - {get_colors(num)}.\n"bot.send_message(message.chat.id,msg) path_images = get_images(num) for path in path_images:bot.send_photo(message.chat.id,photo=open(path, 'rb')) else:bot.send_message(message.chat.id,"Товаровпоканет!")bot.send_message(message.chat.id,"Длявозвратанажмите /start.")Когда пользователь отправляет сообщение "Посмотреть товары", бот переводит пользователя в режим просмотра информации о товарах и показывает список товаров с их характеристиками и фотографиями. Бот также предлагает пользователю вернуться в основной режим, отправив команду /start.Рис. 9 – просмотр товаровКак видно, данная функция работает исправно, вся нужная информация имеется. Клиенту тут надо запоминать номера заказов для формирования нового.Далее потестируем функционал просмотра своих заказов. Тут сложность в том, что в один заказ могут входить несколько позиций товаров.@bot.message_handler(func=lambda message: message.text == "Посмотреть свои заказы")def show_z(message): global flag bot.send_message(message.chat.id, "Вы в режиме просмотра информации по своим заказам.", reply_markup=ReplyKeyboardRemove()) select_query = f"SELECT orders.id, orders.order_date, orders.measurements FROM orders WHERE orders.customers_id = {id};" connection.reconnect() with connection.cursor() as cursor: cursor.execute(select_query) res_info = cursor.fetchall() ifres_info: msg = "№ - Дата заказа - Мерки - Товары в заказе \n" for row in res_info: num = row[0] msg += f"{num} - {row[1]} - {row[2]} - {get_products(num)}.\n" bot.send_message(message.chat.id,msg) else: bot.send_message(message.chat.id,"У вас заказов в БД пока нет!") bot.send_message(message.chat.id,"Длявозвратанажмите /start.")Данный код реагирует на сообщение пользователя с текстом "Посмотреть свои заказы". При получении такого сообщения, бот отправляет пользователю сообщение "Вы в режиме просмотра информации по своим заказам." и убирает клавиатуру, используя ReplyKeyboardRemove(). Затем бот выполняет SQL-запрос к базе данных для получения информации о заказах пользователя и выводит эту информацию в виде списка заказов с их деталями. Если заказов нет, бот сообщает об этом пользователю. В конце бот предлагает пользователю вернуться в основной режим, отправив команду /start.Как видно из скриншота, и тут информация выдается в достаточном количестве.Рис. 10 – краткий просмотр товаров своих заказовДалее рассмотрим функционал изменения информации про свои мерки, довольно рядовая ситуация.Сначала требуется ввести именно номер своего заказа, за этим бот следит внимательно.Рис. 11 – изменение мерок своего заказаТут также стоит информация от ввода некорректной информации.И от ввода номеров других заказов.Рис. 12 – защита от некорректных действий при изменении мерокТолько при вводе номера своего заказа допускается ввод дальнейшей информации. Тут также выводится напоминание о тексте старой мерки.Рис. 13 – напоминание старой меркиМожно дополнить эту информацию простым копированием.Рис. 14 – изменение меркиДалее перейдем к тестированию самого сложного режима – оформления нового заказа. Тут потребуется взаимодействие со многими таблицами.Сначала появляется клавиатура действий этого режима. Добавлять товары мы можем нажимать многократно, а вот другие кнопки только один раз.Рис. 15 – оформление нового заказаДалее в режиме добавления товаров необходимо ввести номер товара и количество через дефис. Тут опять предусмотрена защита от некорректного ввода информации.Рис. 16 – защита от некорректных действийВ итоге добавили две позиции товаров с различным количеством.Рис. 17 – добавление нескольких товаров в корзинуУже можно перейти на добавление информации про мерки.Рис. 18 – добавление мерокИ далее можно завершать оформление заказа.Рис. 19 – завершение оформления заказаКонечно, надо проверить информацию и запросить список своих заказов, чтоб убедиться в корректности работы данного функционала.Как видно, тестирование прошло успешно, функционал данного режима рабочий.Рис. 20 – просмотр нового заказаТеперь перейдем к тестированию в режиме администрирования, тут самое сложное – сделать цепочку связанных функций для добавления информации про товар, ведь у товара может быть несколько материалов, цветов, фотографий. Также тут задействованы три таблицы сразу.На старте этого режима тут опять клавиатура для удобства пользователя.Рис. 21 – клавиатура режима администрированияВыберем добавление товара, сначала придется ввести название товара.Рис. 22 – ввод названия товараДалее надо ввести описание товара.Рис. 23 – ввод описания товараВыбираем категорию товара.Рис. 24 – выборкатегории товараПосле чего можно указать материал товара, и это сделать несколько раз.Рис. 25 – ввод категории товараРис. 26 – ввод материала товараДалее переходим к указанию информации про цвет.Рис. 27 – ввод цвета товараЗавершаем этот этап кнопкой “Указать цену”.Рис. 28 – ввод цены товараПосле чего бот переходит в прием фотографий товара, их можно выслать несколько.Рис. 29 – ввод изображений товараПри завершении отправки фотографии необходимо завершить ввод информации через /add_product.Проверим корректность добавления информации через Посмотреть товары.Рис. 30 – завершение оформления товараТовар добавился успешно.Рис. 31 – просмотр товараТакже потестируем режим удаления информации, тоже всё прошло отлично.Рис. 32 – удаление товара3.4 Расчет экономической эффективностиРасчет экономической эффективности разработки чат-бота для клиентов онлайн-магазина одежды требует учета множества факторов, таких как затраты на разработку, ожидаемое увеличение продаж, экономия на операционных расходах и другие косвенные выгоды. Вот пошаговый план для оценки экономической эффективности:1. Оценка затрат на разработку и внедрение чат-ботаПрямые затраты:Разработка чат-бота: Стоимость услуг программистов и UX/UI дизайнеров.Тестирование и отладка: Время и ресурсы на проверку работоспособности чат-бота.Интеграция с существующими системами: Затраты на интеграцию с CRM, CMS и другими системами.Лицензии и ПО: Стоимость необходимых лицензий и программного обеспечения.Маркетинг и запуск: Расходы на маркетинговую кампанию для продвижения чат-бота.Расчет данных показателей:Разработка: 500,000 рублейТестирование: 100,000 рублейИнтеграция: 50,000 рублейЛицензии и ПО: 20,000 рублейМаркетинг: 30,000 рублейИтого затрат на разработку: 700,000 рублей2. Эксплуатационные расходыПрямые эксплуатационные расходы:Обслуживание и поддержка: Ежемесячные затраты на обслуживание и поддержку чат-бота.Хостинг и инфраструктура: Стоимость серверов и облачных сервисов.Обновления и улучшения: Регулярные обновления и улучшения функциональности чат-бота.Расчет данных показателей:Обслуживание и поддержка: 20,000 рублей/месХостинг: 10,000 рублей/месОбновления: 5,000 рублей/месИтого ежемесячные эксплуатационные расходы: 35,000 рублей3. Выгоды и экономия от использования чат-ботаПовышение продаж:Увеличение конверсии: Ожидаемое повышение коэффициента конверсии за счет удобства взаимодействия через чат-бота.Увеличение среднего чека: Возможность предложения дополнительных товаров и услуг через чат-бота.Экономия на операционных расходах:Снижение нагрузки на службу поддержки: Сокращение количества обращений к операторам, требующее меньше сотрудников.Автоматизация процессов: Автоматизация рутинных задач, таких как оформление заказов, предоставление информации о товарах и отслеживание доставки.Расчет данных показателей:Увеличение конверсии на 5%: Дополнительный доход 100,000 рублей/месУвеличение среднего чека на 10%: Дополнительный доход 50,000 рублей/месЭкономия на зарплатах сотрудников: 60,000 рублей/месИтого ежемесячные выгоды: 210,000 рублей4. Расчет периода окупаемости (ROI)Формула расчета ROI:Период окупаемости:Расчет:Ежемесячные выгоды: 210,000 рублейЕжемесячные эксплуатационные расходы: 35,000 рублейЧистые ежемесячные выгоды: 210,000 - 35,000 = 175,000 рублейПериод окупаемости:ROI за первый год:5. Дополнительные факторыКосвенные выгоды:Улучшение клиентского опыта: Повышение лояльности клиентов.Сбор данных: Анализ данных для улучшения маркетинговых стратегий.Брендинг: Улучшение имиджа компании за счет инновационных решений.Для расчета экономической эффективности важно учитывать как прямые, так и косвенные выгоды от использования чат-бота. Приведенный расчет демонстрирует, что чат-бот может окупиться за 4 месяца и принести значительные выгоды в долгосрочной перспективе. Для точной оценки следует адаптировать приведенные данные к специфике конкретного бизнеса и провести детальный анализ.ЗаключениеВ рамках данной дипломной работы была выполнена разработка чат-бота для клиентов онлайн магазина одежды, что является актуальной задачей в современных условиях развития электронной коммерции и стремительного роста объема онлайн-продаж. Основные результаты работы включают в себя следующие аспекты:Анализ потребностей и требований: Проведен анализ требований, выявленных в процессе исследования рынка и общения с потенциальными пользователями. Были определены ключевые функции, которые должен выполнять чат-бот, включая консультации по ассортименту, помощь в выборе размеров, оформление заказов.Выбор технологий и инструментов разработки: Произведен обзор современных технологий и инструментов для разработки чат-ботов. В результате было принято решение язык программирования Python для реализации основной логики взаимодействия с пользователем и библиотеку telebot. Это позволило обеспечить высокую степень надежности и гибкости системы.Разработка и тестирование: Разработан функциональный прототип чат-бота, включающий основные сценарии взаимодействия с пользователями. Особое внимание уделялось созданию интуитивно понятного и удобного интерфейса, что является важным фактором для улучшения пользовательского опыта. Проведено тестирование бота, что позволило выявить и устранить ключевые недостатки.Оценка эффективности: Проведена оценка эффективности работы чат-бота, было выявлено значительное сокращение времени ответа на запросы пользователей и увеличение удовлетворенности клиентов. Кроме того, чат-бот помог снизить нагрузку на службу поддержки, освободив сотрудников для решения более сложных задач.В заключение можно отметить, что разработанный чат-бот успешно справляется с задачами, поставленными в начале работы. Он предоставляет пользователям удобный и быстрый способ взаимодействия с онлайн магазином, улучшает качество обслуживания и способствует увеличению продаж. В будущем возможны дальнейшие улучшения и расширение функциональности бота, такие как внедрение методов машинного обучения для более точных рекомендаций и прогнозов, а также расширение списка поддерживаемых языков для обслуживания международных клиентов.Таким образом, дипломная работа продемонстрировала важность и полезность внедрения чат-ботов в сферу электронной коммерции и показала, что они могут стать неотъемлемой частью современного онлайн бизнеса, способствуя его развитию и успеху.Список литературыГромов, А.И. Управление бизнес-процессами: современные методы. монография / А.И. Громов, А. Фляйшман, В. Шмидт. - Люберцы: Юрайт, 2016. - 367 c.Джестон, Д. Управление бизнес-процессами. Практическое руководство по успешной реализации проектов / Д. Джестон, Й. Нелис. - М.: Символ, 2015. - 512 c.Джестон, Д. Управление бизнес-процессами. Практич. руководство по успешной реализации проектов / Д. Джестон. - М.: Символ-Плюс, 2008. - 512 c.Долганова, О.И. Моделирование бизнес-процессов: Учебник и практикум для академического бакалавриата / О.И. Долганова, Е.В. Виноградова, А.М. Лобанова. - Люберцы: Юрайт, 2016. - 289 c.Елиферов, В.Г. Бизнес-процессы: Регламентация и управление: Учебник / В.Г. Елиферов. - М.: НИЦ ИНФРА-М, 2013. - 319 c.Крышкин, О. Настольная книга по внутреннему аудиту: Риски и бизнес-процессы. / О. Крышкин. - М.: Альпина Паблишер, 2016. - 477 c.Маклаков, А.Г. Моделирование бизнес-процессов с ALLFusion Process Modeler (BPwin 4.1). / А.Г. Маклаков. - М.: Диалог-МИФИ, 2008. - 240 c.Маклаков, С.В. Моделирование бизнес-процессов с ALLFusion PM. / С.В. Маклаков. - М.: Диалог-МИФИ, 2008. - 224 c.Масленников, В.В. Процессно-стоимостное управление бизнесом / В.В. Масленников. - М.: ИНФРА-М, 2011. - 285 c.Михеев, А.Г. Системы управления бизнес-процессами и административными регламентами на примере свободной программы RunaWFE. / А.Г. Михеев. - М.: ДМК, 2016. - 336 c.Нелис, Й. Управление бизнес-процессами: Практическое руководство по успешной реализации проектов / Й. Нелис, Д. Джестон. - СПб.: Символ-плюс, 2015. - 512 c.Репин, В.В. Бизнес-процессы. Моделирование, внедрение, управление / В.В. Репин. - М.: Манн, Иванов и Фербер, 2013. - 512 c. Репин, В.В. Процессный подход к управлению. Моделирование бизнес-процессов / В.В. Репин. - М.: Манн, Иванов и Фербер, 2013. - 544 c.Ротер, М. Учитесь видеть бизнес-процессы: Построение карт потоков создания ценности / М. Ротер. - М.: Альпина Паблишер, 2015. - 136 c.Python-telegram-bot // GitHub: [сайт]. – URL: https://github.com/pythontelegram-bot/python-telegram-bot (дата обращения 10.05.2024) TelegramBots // GitHub: [сайт]. – URL: https://github.com/rubenlagus/TelegramBots (дата обращения 10.05.2024) 48Tgbot // GitHub: [сайт]. – URL: https://github.com/reo7sp/tgbot-cpp (дата обращения 10.05.2024) Welcome to pyTelegramBotAPI’s documentation! // pyTelegramBotAPI Documentation: [сайт]. – URL: https://pytba.readthedocs.io/en/latest/index.html (датаобращения 10.05.2024) Боты: информация для разработчиков // Telegram: [сайт]. – URL: https://tlgrm.ru/docs/bots (дата обращения 12.05.2024)
1. Громов, А.И. Управление бизнес-процессами: современные методы. монография / А.И. Громов, А. Фляйшман, В. Шмидт. - Люберцы: Юрайт, 2016. - 367 c.
2. Джестон, Д. Управление бизнес-процессами. Практическое руководство по успешной реализации проектов / Д. Джестон, Й. Нелис. - М.: Символ, 2015. - 512 c.
3. Джестон, Д. Управление бизнес-процессами. Практич. руководство по успешной реализации проектов / Д. Джестон. - М.: Символ-Плюс, 2008. - 512 c.
4. Долганова, О.И. Моделирование бизнес-процессов: Учебник и практикум для академического бакалавриата / О.И. Долганова, Е.В. Виноградова, А.М. Лобанова. - Люберцы: Юрайт, 2016. - 289 c.
5. Елиферов, В.Г. Бизнес-процессы: Регламентация и управление: Учебник / В.Г. Елиферов. - М.: НИЦ ИНФРА-М, 2013. - 319 c.
6. Крышкин, О. Настольная книга по внутреннему аудиту: Риски и бизнес-процессы. / О. Крышкин. - М.: Альпина Паблишер, 2016. - 477 c.
7. Маклаков, А.Г. Моделирование бизнес-процессов с ALLFusion Process Modeler (BPwin 4.1). / А.Г. Маклаков. - М.: Диалог-МИФИ, 2008. - 240 c.
8. Маклаков, С.В. Моделирование бизнес-процессов с ALLFusion PM. / С.В. Маклаков. - М.: Диалог-МИФИ, 2008. - 224 c.
9. Масленников, В.В. Процессно-стоимостное управление бизнесом / В.В. Масленников. - М.: ИНФРА-М, 2011. - 285 c.
10. Михеев, А.Г. Системы управления бизнес-процессами и административными регламентами на примере свободной программы RunaWFE. / А.Г. Михеев. - М.: ДМК, 2016. - 336 c.
11. Нелис, Й. Управление бизнес-процессами: Практическое руководство по успешной реализации проектов / Й. Нелис, Д. Джестон. - СПб.: Символ-плюс, 2015. - 512 c.
12. Репин, В.В. Бизнес-процессы. Моделирование, внедрение, управление / В.В. Репин. - М.: Манн, Иванов и Фербер, 2013. - 512 c.
13. Репин, В.В. Процессный подход к управлению. Моделирование бизнес-процессов / В.В. Репин. - М.: Манн, Иванов и Фербер, 2013. - 544 c.
14. Ротер, М. Учитесь видеть бизнес-процессы: Построение карт потоков создания ценности / М. Ротер. - М.: Альпина Паблишер, 2015. - 136 c.
15. Python-telegram-bot // GitHub: [сайт]. – URL: https://github.com/pythontelegram-bot/python-telegram-bot (дата обращения 10.05.2024)
16. TelegramBots // GitHub: [сайт]. – URL: https://github.com/rubenlagus/TelegramBots (дата обращения 10.05.2024) 48
17. Tgbot // GitHub: [сайт]. – URL: https://github.com/reo7sp/tgbot-cpp (дата обращения 10.05.2024)
18. Welcome to pyTelegramBotAPI’s documentation! // pyTelegramBotAPI Documentation: [сайт]. – URL: https://pytba.readthedocs.io/en/latest/index.html (датаобращения 10.05.2024)
19. Боты: информация для разработчиков // Telegram: [сайт]. – URL: https://tlgrm.ru/docs/bots (дата обращения 12.05.2024)