5.4 KiB
5.4 KiB
📋 ПЛАН РАБОТ: Модульность конфигурации
Цель
Перенести все константы (настройки) в отдельный файл config.py для удобства редактирования человеком, не знакомым с Python.
Этап 1: Создание файла конфигурации
Файл: config.py
Что перенести:
-
Настройки дня
- Год (
year = 2026) - Месяц (
month = 4)
- Год (
-
Смены (
SHIFTS)- С 06:00 до 14:30 (смена 0)
- С 08:00 до 16:30 (смена 1)
- С 11:30 до 20:00 (смена 2)
- С 12:30 до 21:00 (смена 3)
-
Операторы (
OPERATORS)- Иванов
- Алексеев
- Сидоров
- Козобородов
- Трудяшкина
- Петрова
-
Предпочтения операторов (
OPERATOR_PREFERENCES)- Иванов: 10, 13 апреля
- Алексеев: понедельники
- Сидоров: 25, 26 апреля
- Козобородов: смена 2 (11:30–20:00)
- Трудяшкина: 4 апреля
- Петрова: 8, 29 апреля
Как редактировать:
- Откройте
config.pyв текстовом редакторе - Изменяйте значения в квадратных скобках или кавычках
- Для добавления/удаления дней используйте списки
[25, 26] - Сохраните файл
Этап 2: Обновление models.py
Что делать:
- Удалить все константы из
models.py - Добавить импорт:
from config import * - Удалить определения
SHIFTS,OPERATORS,OPERATOR_PREFERENCES
Этап 3: Обновление main.py
Что делать:
- Удалить встроенную генерацию дат
- Использовать импорт из
config.py - Добавить вывод в CSV
Этап 4: Создание класса предпочтений операторов
Файл: models.py (или отдельный файл preferences.py)
Что сделать:
- Создать класс
OperatorPreferencesдля конструирования и управления предпочтениями операторов. - Реализовать цепочку методов (builder pattern) for удобного создания предпочтений.
- Поддержать следующие типы предпочтений:
- Желаемый рабочий день (конкретные даты месяца)
- Желаемая смена (индекс смены 0-3)
- Желаемый день недели для работы (понедельник, вторник, ...)
- Желаемый выходной (конкретные даты месяца)
- Реализовать метод
__str__для отладки. - Обеспечить экспорт предпочтений в формат, пригодный для
config.py.
Требования к реализации:
- Класс должен позволять конструировать предпочтения через цепочку методов.
- Поддерживать три типа предпочтений (как указано выше).
- Экспортировать предпочтения в формат, пригодный для
config.py. - Поддерживать метод
__str__для отладки.
Этап 5: Создание документации
Файл: USER_GUIDE.md
Что включить:
- Как изменить даты
- Как добавить/удалить операторов
- Как изменить смены
- Как добавить новые предпочтения
Этап 6: Тестирование
Проверить:
- Запуск
python main.py - Корректное считывание дат из
config.py - Генерация расписания
- Вывод в CSV
- Корректная работа класса
OperatorPreferences - Экспорт предпочтений в
config.py
Этап 7: Написание тестов
Файл: tests/test_all.py
Что сделать:
- Создать тесты для всех модулей проекта
- Использовать pytest для запуска тестов
- Проверить корректность работы всех компонентов
- Добавить тесты для edge-кейсов
Структура тестов:
test_config.py- тесты для конфигурацииtest_models.py- тесты для моделей и предпочтенийtest_main.py- тесты для основного скриптаtest_integration.py- интеграционные тесты
Результат
- Конфигурация в одном файле
config.py - Простое редактирование без знания Python
- Четкая документация в
USER_GUIDE.md - Гибкая система предпочтений через класс
OperatorPreferences - Полноценный набор тестов для всех компонентов