Skip to content

Add task recurrence settings with validation and persistence#52

Open
aandrey58 wants to merge 1 commit into
medods:developfrom
aandrey58:develop
Open

Add task recurrence settings with validation and persistence#52
aandrey58 wants to merge 1 commit into
medods:developfrom
aandrey58:develop

Conversation

@aandrey58
Copy link
Copy Markdown

Что сделано

Реализована поддержка настроек периодичности задач в модуле task tracker.

Добавлено поле recurrence в модель задачи с поддержкой типов:

  • none — без периодичности (по умолчанию)
  • daily — каждый n-й день (every_n_days, диапазон 1..365)
  • monthly — на конкретное число месяца (day_of_month, диапазон 1..30)
  • specific_dates — на конкретные даты (dates, формат YYYY-MM-DD)
  • month_day_parity — только на четные/нечетные дни (parity: even|odd)

Изменения по слоям

  • Domain
    • Добавлены типы и структура Recurrence в Task.
  • Use case
    • Добавлена валидация и нормализация recurrence при create/update.
    • Для specific_dates реализованы trim + dedup + sort.
  • Repository (PostgreSQL)
    • Поле recurrence сохраняется/читается как jsonb.
    • Добавлен безопасный fallback для legacy-данных.
  • HTTP API
    • Обновлены DTO create/update/response.
    • recurrence протянут через handlers.
  • Документация
    • Обновлен OpenAPI (swagger) и README.
  • Миграции
    • Добавлена 0002_add_task_recurrence.up.sql.

Принятые решения и предположения

  • Периодичность хранится как часть сущности задачи, без отдельной таблицы расписаний.
  • При отсутствии recurrence используется {"type":"none"}.
  • Автоматическая генерация экземпляров задач по расписанию в рамках данного изменения не реализуется (не входило в текущий scope).

Обратная совместимость

  • Для существующих записей значение recurrence устанавливается по умолчанию через миграцию (none).
  • Текущие endpoints сохранены, изменения расширяют payload.

Тестирование

  • Добавлены unit-тесты в internal/usecase/task/service_test.go:
    • default none при пустом recurrence
    • валидация daily
    • границы monthly
    • нормализация specific_dates
    • валидация month_day_parity
  • Локально выполнено:
    • go test ./...

Риски

  • Изменение схемы БД требует применения миграции перед запуском новой версии сервиса.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant