Планы и расписание в PRO-dela: как планировать неделю и не т
Расписание не должно дублировать статус задачи. Оно должно на него ссылаться.
Частая ошибка в самодельных «недельных досках»: как только задачу перетащили в колонку «Готово» на доске планирования, где-то в коде тихо меняется и её реальный статус исполнения — потому что доска и статус слеплены в одну сущность. Это удобно на демо и болезненно на практике: как только у задачи появляется отдельный жизненный цикл (исполнитель, проверка, приёмка), доска планирования либо начинает ему противоречить, либо превращается в дублирующий источник истины.
В PRO-dela это разведено на уровне модели данных. Элемент плана — это отдельная строка со ссылкой на задачу, порядковым номером и необязательной заметкой; она не хранит статус и не подписана на него напрямую. Прогресс плана считается на лету по текущему состоянию связанных задач в момент запроса, а не хранится и не синхронизируется отдельно. Добавление задачи в план — отдельное действие от изменения её статуса; система даже в интерфейсе подбора задач держит для этого отдельное, необязательное поле «статус при добавлении», а не объединяет два решения в одно.
Похожая логика — в переносе невыполненного между периодами: перенос копирует ссылки на задачи из ближайшего предыдущего плана того же типа, а не переносит «состояние доски» целиком, и делает это только по явной команде, а не сам.
Разобрали архитектуру целиком, с кодом контроллеров и моделей: https://pro-dela.ru/articles/plans-and-schedule?utm_source=setka&utm_medium=social&utm_campaign=functional2-plans
У вас в продукте статус задачи и её позиция на доске планирования — одна сущность или две? И как решали, если изначально слепили их вместе?