practice/README.md
2026-04-04 01:25:13 +03:00

108 lines
4.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Тема: Система управления заказами в интернет-магазине
*Общее описание:
Необходимо реализовать набор функций для обработки заказов интернет-магазина: загрузка данных, фильтрация, агрегация, расчёты и формирование отчетов.*
---
## Функции:
### 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. Вывести результат работы программы в консоль.
*Все функции должны быть использованы в рамках единого сценария обработки данных.*