Форми

Загальний опис

Модуль для організації роботи з формами що знаходяться у репозиторії регламенту registry-regulations за шляхом /forms.

Надає наступний функціонал:
  • Отримання списку всіх форм регламенту

  • CRUD операції над формами регламенту

Отримання списку всіх форм регламенту

Повертає список всіх форм вказаної версії регламенту, їх назви, системні назви та дати створення та останнього оновлення форм.

Діаграма послідовності отримання списку доступних форм у вказаній версії
Figure 1. Діаграма послідовності отримання списку доступних форм у вказаній версії

Створення форми регламенту

Додає форму з переданим контентом у версії-кандидаті.

Діаграма послідовності створення форми у вказаній версії-кандидаті
Figure 2. Діаграма послідовності створення форми у вказаній версії-кандидаті

Читання форми регламенту

Повертає контент форми версії (майстер, чи кандидату).

Діаграма послідовності читання форми з вказаної версії
Figure 3. Діаграма послідовності читання форми з вказаної версії

Оновлення форми регламенту

Оновлює форму, або створює нову форму якщо та не існує, з переданим контентом у версії-кандидаті.

Діаграма послідовності оновлення форми у вказаній версії-кандидаті
Figure 4. Діаграма послідовності оновлення форми у вказаній версії-кандидаті

Видалення форми регламенту

Видаляє файл форми з версії-кандидата.

Діаграма послідовності видалення форми з вказаної версії-кандидата
Figure 5. Діаграма послідовності видалення форми з вказаної версії-кандидата

Робота з датами створення та останнього оновлення форм

Загальні положення:
  • Дати створення та останнього оновлення повинні показувати реальну картину роботи з формою.

  • Для форм що вже існують в майстер-версії дати повинні показуватися без міграції файлів форм.

Зчитування дат форм
  • Дати створення та останнього оновлення форми можуть знаходитися у JSON контенті форми:

    • JSON path дати створення форми - $.created

    • JSON path дати останнього оновлення форми - $.modified

  • Якщо в контенті форми не представлена дата створення або останнього оновлення то вона зчитується з git log

    • Дата створення форми - це дата першого комміту з git log по файлу цієї форми

    • Дата останнього оновлення форми - це дата останнього комміту з git log по файлу цієї форми

Формат дат створення та останнього оновлення - ISO 8601. Всі дати в зоні UTC+0, тобто формат - yyyy-MM-dd'T'HH:mm:ss.SSS'Z'. Наприклад 2022-09-20T15:26:13.136Z.

Запис дат форм
  • При створенні форми через REST-API:

    • Обидві дати у контенті форми виставляються автоматично

    • Обидві дати будуть дорівнювати поточній даті на момент створення форми

    • Будь-які явно зазначені дати у контенті форми при створенні будуть ігноруватись.

  • При оновленні форми через REST-API:

    • Дата оновлення у контенті форми виставляються автоматично

    • Дата оновлення буде дорівнювати поточній даті на момент оновлення форми

    • Дата створення при оновленні форми також проставляється автоматично та зчитується з неоновленого контенту форми або з git log файлу форми, якщо дата створення не представлена у контенті

    • Будь-які явно зазначені дати у контенті форми при оновленні будуть ігноруватись.

Приклад контенту форми з датами:
{
  "components": [
    ...
  ],
  "title": "Погодження заяви",
  "name": "add-appgood",
  "created": "2022-08-19T16:15:24.784Z",
  "modified": "2022-09-20T15:26:13.136Z"
}
Високорівнева JSON схема форм
{
  "$schema": "https://json-schema.org/draft/2019-09/schema",
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "pattern": "^[a-z0-9-]+$"
    },
    "title": {
      "type": "string",
      "minLength": 1
    },
    "created": {
      "type": "string",
      "format": "date-time"
    },
    "modified": {
      "type": "string",
      "format": "date-time"
    },
    "components": {
      "type": "array"
    }
  },
  "additionalProperties": true,
  "required": [
    "name",
    "title",
    "components"
  ]
}