Слишком переусложненная структура - но оставим для будущего

This commit is contained in:
ki.sagidullin
2026-04-05 10:05:03 +05:00
parent 018e2a860e
commit f916d764c0
48 changed files with 2222 additions and 5 deletions

108
README.md
View File

@@ -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 смена
Если возможности подобрать такой график работ нет - то так и ответь
Если возможности подобрать такой график работ нет - то так и ответь