|
Регулярные задачи: дата следующего раза, метка в списке, фильтр (0.91)
Дата следующего экземпляра считалась и выбрасывалась: закрыв ежедневную задачу, владелец видел её же снова «к выполнению», без даты и неотличимо от задачи на сегодня. Теперь дата ложится в существующее `deadline_date` (новых полей и миграций нет) — при нестрогом периоде не ставится, ТЗ 3.4 запрещает оба поля разом. - recurrence: `_copy` получает посчитанную дату, `spawn_next` её не теряет; - reminders: у регулярной повод один — ритм, дедлайновые правила её не касаются (иначе в день срока два уведомления об одном деле), сводка тоже; - reminders: ключ дедупа ритма включает id задачи — без него уникальность push_deliveries съедала второе «Пора», и за день приходило одно напоминание на пользователя, сколько бы регулярных ни совпало; - API: параметр `task_type` у GET /api/tasks; - список: переключатель «Регулярные» рядом с «Приоритетными»; - карточка: акцентная полоса по левой кромке и кружок с иконкой повтора перед названием, подсказка словами о правиле; дата читается как «след. 12.10.2026»; - ачивка «Дедлайн-босс» регулярные не считает. ТЗ 0.91: §3.5, §3.6, §3.21, §5, §7. |
|---|
|
|
| backend/app/api/tasks.py |
|---|
| backend/app/models.py |
|---|
| backend/app/services/recurrence.py |
|---|
| backend/app/services/reminders.py |
|---|
| backend/tests/test_push_scheduler.py |
|---|
| backend/tests/test_recurrence.py |
|---|
| backend/tests/test_reminders.py |
|---|
| backend/tests/test_tasks_api.py |
|---|
| docs/TZ.md |
|---|
| frontend/src/components/AchievementsPanel.vue |
|---|
| frontend/src/components/TaskCard.vue |
|---|
| frontend/src/locales/en.ts |
|---|
| frontend/src/locales/ru.ts |
|---|
| frontend/src/locales/uk.ts |
|---|
| frontend/src/taskui.ts |
|---|
| frontend/src/views/ListView.vue |
|---|