Загрузка данных


Полная структура проекта для курсовой работы

---

Дерево проекта

```
phone-repair-calculator/
│
├── README.md
├── .gitignore
│
├── src/
│   ├── __init__.py
│   ├── main.py
│   ├── config.py
│   ├── calculator.py
│   ├── input_handler.py
│   ├── logger.py
│   └── receipt.py
│
├── tests/
│   ├── __init__.py
│   ├── test_calculator.py
│   ├── test_input_handler.py
│   ├── test_logger.py
│   └── test_receipt.py
│
├── docs/
│   ├── test_cases.md
│   ├── test_report.md
│   ├── model.md
│   └── report.md
│
├── logs/
│   └── log.txt
│
└── dist/
    └── main.exe
```

---

Диаграмма модулей (текст для Mermaid)

```mermaid
graph TD
    User[Пользователь] --> Main[main.py]

    Main --> Input[input_handler.py]
    Main --> Calc[calculator.py]
    Main --> Log[logger.py]
    Main --> Receipt[receipt.py]

    Input --> Config[config.py]
    Calc --> Config
    Calc --> Compare[compare_options]

    Log --> File[logs/log.txt]
    Receipt --> Console[Консоль]

    style Main fill:#e1f5fe
    style Input fill:#f3e5f5
    style Calc fill:#e8f5e8
    style Log fill:#fff3e0
    style Receipt fill:#fce4ec
```

---

Таблица модулей

Модуль Файл Функции Назначение
Точка входа main.py main() Запуск программы
Ввод данных input_handler.py get_model(), get_repair(), get_parts(), get_urgency(), get_services(), get_promocode(), get_all_data() Запрос данных у пользователя
Расчёты calculator.py calc_labor(), calc_total(), compare_options() Вычисление стоимости, сравнение вариантов
Конфигурация config.py PRICES, URGENCY, PROMOCODES Хранение цен и коэффициентов
Логирование logger.py write_log(), log_start(), log_input(), log_result(), log_error() Запись в файл logs/log.txt
Чек receipt.py print_receipt() Вывод чека на экран
Тесты tests/test_*.py test_*() Проверка работы модулей
Документация docs/*.md - ТЗ, тесты, отчёт, модель

---

Схема передачи данных

```
input_handler.py
       │
       │ get_all_data() → словарь data
       ▼
    main.py
       │
       │ data → calc_total()
       ▼
 calculator.py
       │
       │ результат → словарь result
       ▼
    main.py
       │
       │ data + result → print_receipt()
       ▼
   receipt.py → чек на экран
       
    main.py
       │
       │ data → compare_options()
       ▼
 calculator.py → рекомендация
```

---

Формат словаря data (входные данные)

```python
data = {
    "model": "iPhone",           # str
    "repair": "screen",          # str
    "parts": 5000,               # float
    "urgency": "normal",         # str
    "services": 500,             # float
    "promocode": "SERVICE10"     # str or None
}
```

---

Формат словаря result (результат расчёта)

```python
result = {
    "labor": 2500,          # стоимость работы
    "parts": 5000,          # стоимость запчастей
    "diagnostics": 500,     # диагностика
    "services": 500,        # доп услуги
    "subtotal": 8500,       # промежуточная сумма
    "multiplier": 1.3,      # коэффициент срочности
    "discount": 1105,       # скидка
    "total": 9945           # итого
}
```

---

Формула расчёта

```
total = (labor + parts + diagnostics + services) × urgency_multiplier - discount
```

---

Промокоды

Промокод Скидка Применение
SERVICE10 10% на общую сумму
REMONT26 15% только на стоимость работ

---

Цены (config.py)

Модель Замена экрана Замена аккумулятора Ремонт платы
iPhone 2500 1200 4500
Samsung 2200 1000 4000
Xiaomi 1800 800 3500
Google Pixel 2400 1100 4200
Другое 1500 700 3000

---

Цены запчастей (для сравнения)

Модель Оригинал Аналог
iPhone 8000 3500
Samsung 6000 3000
Xiaomi 4500 2500
Google Pixel 7000 3200
Другое 5000 2500

---

Коэффициенты срочности

Тип Коэффициент
Обычный 1.0
Срочный 1.3
Экстренный 1.5

---

Тесты (8 сценариев)

1. Стоимость работы iPhone экран
2. Полный расчёт
3. Срочность ×1.3
4. Промокод SERVICE10
5. Промокод REMONT26
6. Сравнение оригинал/аналог
7. Диагностика (0 для материнской платы)
8. Дополнительные услуги

---

Команды для работы

Действие Команда
Запуск python src/main.py
Все тесты python tests/run_all_tests.py
Один тест python tests/test_calculator.py
Создать .exe pyinstaller --onefile --console --add-data "src;src" src/main.py

---

Структура логов (logs/log.txt)

```
2026-04-08 00:00:00 - Программа запущена
2026-04-08 00:00:00 - Модель: iPhone
2026-04-08 00:00:00 - Ремонт: screen
2026-04-08 00:00:00 - Запчасти: 5000 руб
2026-04-08 00:00:00 - Итоговая сумма: 9945 руб
```

---

Это полная информация для другой нейросети. Можно копировать и отправлять.