Слишком переусложненная структура - но оставим для будущего
This commit is contained in:
108
README.md
108
README.md
@@ -7,10 +7,108 @@
|
||||
## 📁 Структура проекта
|
||||
|
||||
```
|
||||
├── main.py # Основная логика с генерацией графика
|
||||
├── shift_schedule.csv # Результат (заполненный график)
|
||||
├── README.md # Документация
|
||||
└── .continue/ # Система контроля версий
|
||||
OperatorSchedule/
|
||||
├── src/ # Основной исходный код
|
||||
│ ├── __init__.py # Корневой пакет
|
||||
│ ├── app.py # Точка входа (FastAPI, если веб-интерфейс)
|
||||
│ ├── config.py # Конфигурация системы
|
||||
│ ├── exceptions.py # Исключения и ошибки
|
||||
│ ├── logging_config.py # Настройка логирования
|
||||
│ │
|
||||
│ ├── core/ # Ядро системы
|
||||
│ │ ├── __init__.py
|
||||
│ │ ├── engine.py # Основной класс планировщика (SchedulerEngine)
|
||||
│ │ ├── solver.py # Орто-модель CP-SAT
|
||||
│ │ ├── validator.py # Валидатор результатов
|
||||
│ │ └── events.py # События системы (логи, уведомления)
|
||||
│ │
|
||||
│ ├── domains/ # Доменные сущности
|
||||
│ │ ├── __init__.py
|
||||
│ │ ├── models/ # Модели данных
|
||||
│ │ │ ├── __init__.py
|
||||
│ │ │ ├── operator.py # Класс Operator (оператор)
|
||||
│ │ │ ├── shift.py # класс Shift (смена)
|
||||
│ │ │ ├── schedule.py # класс Schedule (график)
|
||||
│ │ │ └── preference.py # класс Preference (предпочтение)
|
||||
│ │ ├── repositories/ # Интерфейсы доступа к данным
|
||||
│ │ │ ├── __init__.py
|
||||
│ │ │ ├── operator_repo.py
|
||||
│ │ │ ├── shift_repo.py
|
||||
│ │ │ └── schedule_repo.py
|
||||
│ │ └── services/ # Бизнес-логика
|
||||
│ │ ├── __init__.py
|
||||
│ │ ├── generator.py # Генератор графиков
|
||||
│ │ ├── optimizer.py # Оптимизатор
|
||||
│ │ └── conflict_resolver.py # Ресольвер конфликтов
|
||||
│ │
|
||||
│ ├── constraints/ # Управление ограничениями
|
||||
│ │ ├── __init__.py
|
||||
│ │ ├── base_constraint.py # Базовый класс ограничения
|
||||
│ │ ├── hard_constraints.py # Жёсткие ограничения
|
||||
│ │ ├── soft_constraints.py # Мягкие ограничения (предпочтения)
|
||||
│ │ └── global_constraints.py # Глобальные ограничения
|
||||
│ │
|
||||
│ ├── exporters/ # Экспорт данных
|
||||
│ │ ├── __init__.py
|
||||
│ │ ├── base_exporter.py # Базовый класс экспортера
|
||||
│ │ ├── csv_exporter.py
|
||||
│ │ ├── excel_exporter.py
|
||||
│ │ ├── html_exporter.py
|
||||
│ │ └── json_exporter.py
|
||||
│ │
|
||||
│ ├── ui/ # Веб-интерфейс (опционально)
|
||||
│ │ ├── __init__.py
|
||||
│ │ ├── routes/ # Маршруты API
|
||||
│ │ │ ├── __init__.py
|
||||
│ │ │ ├── index.py # Главная страница
|
||||
│ │ │ ├── config.py # Конфигурация API
|
||||
│ │ │ └── export.py # Экспорт графики
|
||||
│ │ ├── templates/ # Jinja2 шаблоны
|
||||
│ │ └── static/ # CSS, JS
|
||||
│ │
|
||||
│ └── utils/ # Вспомогательные модули
|
||||
│ ├── __init__.py
|
||||
│ ├── calendar.py # Работа с календарями
|
||||
│ ├── validators.py # Валидаторы данных
|
||||
│ └── formatters.py # Форматтеры вывода
|
||||
│
|
||||
├── tests/ # Тесты
|
||||
│ ├── __init__.py
|
||||
│ ├── conftest.py # Фикстуры pytest
|
||||
│ ├── unit/ # Unit-тесты
|
||||
│ │ ├── __init__.py
|
||||
│ │ ├── test_domains.py
|
||||
│ │ ├── test_constraints.py
|
||||
│ │ └── test_exporters.py
|
||||
│ ├── integration/ # Интеграционные тесты
|
||||
│ │ ├── __init__.py
|
||||
│ │ └── test_scheduler.py
|
||||
│ └── fixtures/ # Фикстуры данных
|
||||
│ ├── __init__.py
|
||||
│ ├── operators.json # JSON с операторами
|
||||
│ └── shifts.json # JSON со сменами
|
||||
│
|
||||
├── docs/ # Документация
|
||||
│ ├── README.md
|
||||
│ ├── CHANGELOG.md # История изменений
|
||||
│ ├── API.md # Документация API
|
||||
│ └── architecture.md # Архитектурный обзор
|
||||
│
|
||||
├── config/ # Конфигурационные файлы
|
||||
│ ├── __init__.py
|
||||
│ ├── default.yaml # Стандартная конфигурация
|
||||
│ └── development.yaml # Разработка
|
||||
│
|
||||
├── examples/ # Примеры использования
|
||||
│ ├── basic.py # Базовый пример
|
||||
│ ├── custom_constraints.py# Пример с кастомными ограничениями
|
||||
│ └── multi_department.py # Многоотраслевой пример
|
||||
│
|
||||
├── requirements.txt # Зависимости Python
|
||||
├── requirements-dev.txt # Зависимости для разработки
|
||||
├── setup.py # Установка пакета
|
||||
├── pytest.ini # Настройки pytest
|
||||
└── .gitignore
|
||||
```
|
||||
|
||||
---
|
||||
@@ -248,4 +346,4 @@
|
||||
Перед отправкой мне решения - проверь что все условия отрабатывают.
|
||||
Если у тебя есть какой-то вопрос или что-то непонятно - задай, я отвечу
|
||||
Ответ выдай в csv, в котором столбцы - день;1 смена;2 смена;3 смена;4 смена
|
||||
Если возможности подобрать такой график работ нет - то так и ответь
|
||||
Если возможности подобрать такой график работ нет - то так и ответь
|
||||
|
||||
Reference in New Issue
Block a user