Техническое задание: модуль интеграции Drupal с внешней SQLite базой
Общая задача
Разработать Drupal-модуль factory_bridge, который будет выполнять роль программного моста между системой Drupal и внешней SQLite базой данных. Модуль должен обеспечивать корректное взаимодействие двух систем с соблюдением архитектурных принципов Drupal.
Цель проекта
Подготовить часть будущей системы, которая будет полностью перенесена на Drupal. Важно не только получить рабочий функционал, но и продемонстрировать грамотную архитектуру решения.
Технические требования
Среда разработки
- CMS: Drupal 10 или 11
- Источник данных: внешняя SQLite база данных workshop_bot
- Дизайн и верстка: не требуются, важен функционал
- Twig: используется исключительно для отображения готовых данных
Функциональные требования
- Чтение данных об изделии из SQLite базы
- Выполнение расчётов на стороне PHP (бизнес-логика)
- Сохранение агрегированных данных в базу Drupal
- Вывод таблицы операций изделия на странице или в блоке
Архитектурные требования
- Использовать Drupal Database API для подключения к SQLite
- Подключение к внешней БД должно быть централизованным (не в контроллерах)
- Вся бизнес-логика и расчёты выполняются в PHP
- Twig используется только для отображения готовых данных
Ограничения и запреты
- Запрещено использовать new PDO() или sqlite_open() в бизнес-логике
- Запрещено выполнять SQL-запросы в Twig-шаблонах
- Запрещено реализовывать бизнес-логику на уровне шаблонов
Работа с данными
Используемые таблицы SQLite
- order_items
- assigned_tasks
- work_sessions
Остальные таблицы в рамках этого задания не используются.
Бизнес-логика и расчёты
Для выбранного изделия необходимо рассчитать:
- НЧ План: значение из поля assigned_tasks.applied_norm_hours
- Ч Факт: сумма разницы (end_time - start_time) по всем work_sessions операции. Если end_time = NULL, сессия считается активной
- Дельта: План - Факт
Результат работы
- Страница или блок с таблицей операций изделия, содержащей: код операции, НЧ План, Ч Факт, Дельта
- Сохранение агрегированных данных в сущность Drupal (Node или Custom Entity)
- Чистый, структурированный код, соответствующий стандартам Drupal