diff --git a/README.md b/README.md index 313a83d..065f05b 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,109 @@ # practice +Тема: Система управления заказами в интернет-магазине + +Общее описание: +Необходимо реализовать набор функций для обработки заказов интернет-магазина: загрузка данных, фильтрация, агрегация, расчёты и формирование отчетов. + + +--- + +Функции: + +1. load_orders(file_path) +Принимает: строку (путь к файлу) +Возвращает: список словарей (заказы) +Описание: загружает данные заказов из текстового файла (например, JSON или CSV) и преобразует их в список словарей. + + +2. validate_order(order) +Принимает: словарь (один заказ) +Возвращает: bool +Описание: проверяет корректность структуры заказа (наличие обязательных полей: id, customer, items, total_price). + + +3. filter_orders_by_customer(orders, customer_name) +Принимает: список заказов, строку (имя клиента) +Возвращает: список заказов +Описание: возвращает только заказы указанного клиента. + + +4. calculate_order_total(order) +Принимает: словарь (заказ) +Возвращает: число (сумма заказа) +Описание: вычисляет итоговую стоимость заказа на основе списка товаров (items). + + +5. update_order_totals(orders) +Принимает: список заказов +Возвращает: список заказов +Описание: пересчитывает и обновляет поле total_price для каждого заказа. + + +6. get_top_expensive_orders(orders, n) +Принимает: список заказов, число n +Возвращает: список заказов +Описание: возвращает n самых дорогих заказов. + + +7. group_orders_by_customer(orders) +Принимает: список заказов +Возвращает: словарь (ключ — имя клиента, значение — список заказов) +Описание: группирует заказы по клиентам. + + +8. calculate_customer_spending(orders) +Принимает: список заказов +Возвращает: словарь (клиент → сумма покупок) +Описание: считает общую сумму покупок для каждого клиента. + + +9. find_most_popular_product(orders) +Принимает: список заказов +Возвращает: строку (название товара) +Описание: определяет самый часто покупаемый товар. + + +10. generate_report(orders) +Принимает: список заказов +Возвращает: строку +Описание: формирует текстовый отчет (общее количество заказов, топ-клиенты, популярный товар и т.д.). + + + + +--- + +Требования к main(): + +В функции main() необходимо: + +1. Считать данные заказов из файла (например, data/orders.txt) с помощью load_orders. + + +2. Отфильтровать некорректные заказы с использованием validate_order. + + +3. Пересчитать суммы заказов через update_order_totals. + + +4. Выполнить анализ данных: + +сгруппировать заказы (group_orders_by_customer); + +посчитать траты клиентов (calculate_customer_spending); + +найти популярный товар (find_most_popular_product); + +определить топ дорогих заказов (get_top_expensive_orders). + + + +5. Сформировать итоговый отчет с помощью generate_report. + + +6. Вывести результат работы программы в консоль. + + + +Все функции должны быть использованы в рамках единого сценария обработки данных.