Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Task Service

Сервис для управления задачами с HTTP API на Go.

Требования

  • Go 1.23+
  • Docker и Docker Compose

Быстрый запуск через Docker Compose

docker compose up --build

После запуска сервис будет доступен по адресу http://localhost:8080.

Если postgres уже запускался ранее со старой схемой, пересоздай volume:

docker compose down -v
docker compose up --build

Причина в том, что SQL-файлы из migrations/ монтируются в docker-entrypoint-initdb.d и применяются только при инициализации пустого data volume.

Swagger

Swagger UI:

http://localhost:8080/swagger/

OpenAPI JSON:

http://localhost:8080/swagger/openapi.json

API

Базовый префикс API:

/api/v1

Задачи

Метод Путь Описание
POST /api/v1/tasks Создать задачу
GET /api/v1/tasks Получить список задач
GET /api/v1/tasks/{id} Получить задачу по ID
PUT /api/v1/tasks/{id} Обновить задачу
DELETE /api/v1/tasks/{id} Удалить задачу

Расписание задач

Метод Путь Описание
PUT /api/v1/tasks/{id}/schedule Создать или обновить расписание
GET /api/v1/tasks/{id}/schedule Получить расписание
DELETE /api/v1/tasks/{id}/schedule Удалить расписание
POST /api/v1/tasks/{id}/schedule/generate Сгенерировать задачи по расписанию

Расписание

Задача может иметь расписание, по которому автоматически генерируются новые задачи на указанный диапазон дат.

Типы расписания

Ежедневное — каждые N дней:

{
  "type": "daily",
  "every_n_day": 2
}

Ежемесячное — в определённое число каждого месяца (от 1 до 30):

{
  "type": "monthly",
  "month_day": 15
}

Конкретные даты — только в указанные даты:

{
  "type": "specific_dates",
  "dates": ["2026-04-10", "2026-04-20", "2026-04-30"]
}

Чётные/нечётные дни — только по чётным или нечётным числам месяца:

{
  "type": "even_odd",
  "even_odd": "even"
}

Генерация задач

После того как расписание задано, можно сгенерировать задачи на нужный период:

curl -X POST http://localhost:8080/api/v1/tasks/1/schedule/generate \
  -H "Content-Type: application/json" \
  -d '{"from": "2026-04-01", "to": "2026-04-30"}'

Каждая сгенерированная задача наследует title и description из задачи-шаблона, к названию добавляется дата в формате YYYY-MM-DD. Максимальный диапазон генерации — 1 год.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages