Загрузка данных
Полная структура проекта для курсовой работы
---
Дерево проекта
```
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 руб
```
---
Это полная информация для другой нейросети. Можно копировать и отправлять.