Сервис предназначен для хранения и версионирования пользовательских файлов
Сервисы |
|
---|---|
Адреса сервиса | |
Описание сервисов | InputDataService (сервис для работы с карточками и экземплярами карточек файлов) FileStorageService (сервис для хранения файлов) |
Связанные задачи Jira |
Функциональные требования - InputDataService
- Возможность создать шаблоны карточек ИД с возможностью привязки атрибутов/характеристик
- Возможность создавать характеристики различных типов (дата, текст, число, выпадающий список)
- Возможность проставить признак обязательности заполнения характеристики
- Возможность к шаблонам карточек ИД привязать атрибуты/характеристики
- Возможность привязать характеристики шаблонов карточек ИД к шаблону объекта строительства через интеграционную характеристику
- Возможность создать карточки ИД на основании шаблонов карточек
- Возможность версионирования карточек ИД
- Возможность согласования карточек ИД
- Возможность указать срок действия карточек ИД
- Возможность указать срок уведомления об истечении срока карточки ИД
- Возможность уведомить проектную команду об истечении срока действия карточки ИД
- Возможность привязать карточку ИД к объекту строительства
- Возможность заполнить характеристики в карточки ИД
- Возможность транслировать значения характеристик ИД в АТЗ по объекту
Функциональные требования - FileStorageService
- Возможность загрузки файла
- Возможность хранения версий файлов
- Возможность получения файла
- Возможность удаления файла
Пользовательский сценарий (UserCases)
Роли
- Администратор ЭТЗ
- Пользователь ЭТЗ
UC1 (Администратор ЭТЗ). Создание шаблона карточки ИД в сервисе Исходные данные
1.1 Открывает админ-панель сервиса Исходные данные
1.2 Создает шаблон карточки ИД в админ-панели и присваивает ей название
1.3 Создает характеристики для привязки к шаблону карточки ИД
1.4 Привязывает к шаблону карточки ИД характеристики и указывает обязательность их заполнения
1.5 Сохраняет созданный шаблон карточки ИД в админ-панели сервиса Шаблоны и характеристики
UC2 (Пользователь ЭТЗ). Создание и согласование карточки ИД в сервисе Объекты/Проекты
2.1 Выбирает шаблон карточки ИД из списка шаблонов карточек ИД созданных на шаге 1.5
!Система создает экземпляр данной карточки со всеми характеристиками и атрибутами карточки ИД
2.2 Создает карточку ИД и прикрепляет ее к объекту строительства
2.3 Заполняет характеристики карточки ИД, проставляет атрибуты
2.4 Загружает файл в карточку ИД
!Система загружает файл в file-storage
2.5 Согласовывает карточку ИД
!Система присваивает версию карточке ИД
UC3 (Пользователь ЭТЗ). Обновление версии карточки ИД
3.1 Выбирает карточку ИД
3.2 Загружает новый файл в карточку ИД
3.3 Обновляет атрибуты/характеристики карточки ИД
3.4 Согласовывает новую версию карточки ИД
!Система присваивает новую версию карточке ИД
FileStorageService
Метод POST FileStorageService/api/v1/file_storage
Назначение: загрузка файла в хранилище
Входной контракт
Название | Тип | Обязательный | Комментарий |
---|---|---|---|
UUID | string | Да | |
link | string | Да | |
name | string | Да |
Макс. размер файла - 300 МБ. Форматы rvt, dwg, png, jpg, jpeg, txt, pdf, docx, doc, xlsx
Выходной контракт
Нет
Алгоритм
- Проверка срока действия токена, если срок вышел, то возвращается
{
"httpCode":"401",
"httpMessage":"Unauthorized",
"moreInformation":"Время сессии истекло"
} - Проверка на наличие permission='ETZChangingTemplates'. Если нет, то возвращается
{
"httpCode":"403",
"httpMessage":"Forbidden"
"moreInformation":"Недостаточно прав."
} - Проверка на корректность типа файла. Если нет, то возвращается
{
"httpCode":"400",
"httpMessage":"invalid Type"
"moreInformation":"Некорректный тип загружаемого файла"
} - Проверка на размер файла.
{
"httpCode":"402",
"httpMessage":"Limit File Size Reached",
"moreInformation":"Превышен максимально допустимый размер файла"
} - INSERT INTO file_storage (UUID, link, name, createdBy, createdAt)
VALUES ({UUID},{link},{name}, {createdBy}, {createdAt}) - Если возникла ошибка при выполнении п4, то вернуть
{
"httpCode":"501",
"httpMessage":"Not Implemented",
"moreInformation"Не удалось сохранить файл" - При успешной записи вернуть:
{
"httpCode":"200",
"httpMessage":"OK",
"moreInformation":"Файл загружен"
}
Метод DELETE FileStorageService/api/v1/{file_storageId}
Назначение: удалить файл
Входной контракт
Название | Тип | Обязательный |
---|---|---|
UUID | string | Да |
Выходной контракт
Нет
Алгоритм
- Проверка срока действия токена, если срок вышел, то возвращается
{
"httpCode":"401",
"httpMessage":"Unauthorized",
"moreInformation":"Время сессии истекло"
} - Проверка на наличие permission='ETZViewProject'. Если нет, то возвращается
{
"httpCode":"403",
"httpMessage":"Forbidden"
"moreInformation":"Недостаточно прав."
} - DELETE
FROM fileStorage
WHERE UUID={UUID} - Если возникла ошибка при выполнении п4, то вернуть
{
"httpCode":"501",
"httpMessage":"Not Implemented",
"moreInformation"Не удалось удалить файл"
} - При успешной записи вернуть:
{
"httpCode":"200",
"httpMessage":"OK",
"moreInformation":"Файл успешно удален"
}
Метод GET FileStorageService/api/v1/file_storage
Результат
Этот метод возвращает список файлов из файлового хранилища
Входной контракт
Название | Тип | Обязательный |
---|---|---|
ID | string | Да |
Выходной контракт
Название | Тип | Обязательный |
---|---|---|
file_storage[] | ||
link | string | Да |
name | string | Да |
- Проверка срока действия токена, если срок вышел, то возвращается
{
"httpCode":"401",
"httpMessage":"Unauthorized",
"moreInformation":"Время сессии истекло"
} - Проверка на наличие permission='ETZViewProject'. Если нет, то возвращается
{
"httpCode":"403",
"httpMessage":"Forbidden"
"moreInformation":"Недостаточно прав."
} - Проверка заполнения обязательных полей. Если не прошла, то возвращается
{
"httpCode":"400",
"httpMessage":"Bad request"
"moreInformation":"Некорректно запрошен список файлов"
} - SELECT *
FROM filestorage as fs left join inputdataservice.inputdata as ii on fs.id=ii.file_storage_uuid
InputDataService
Метод POST InputDataService/api/v1/samples
Назначение: создание нового шаблона карточки
Входной контракт
Название | Тип | Обязательный | Комментарий |
---|---|---|---|
name | string | Да |
Выходной контракт
Название | Тип | Обязательный | Комментарий |
---|---|---|---|
UUID | integer | Да | |
name | string | Да |
Алгоритм
- Проверка срока действия токена, если срок вышел, то возвращается
{
"httpCode":"401",
"httpMessage":"Unauthorized",
"moreInformation":"Время сессии истекло"
} - Проверка на наличие permission='ETZChangingInputData'. Если нет, то возвращается
{
"httpCode":"403",
"httpMessage":"Forbidden"
"moreInformation":"Недостаточно прав."
} - Проверка на корректность полей. Если нет, то возвращается
{
"httpCode":"400",
"httpMessage":"Bad request"
"moreInformation":"Не заполнены обязательные поля"
} - INSERT INTO samples (UUID, name, createdBy, createdAt)
VALUES ({UUID},{name}, {createdBy}, {createdAt}) - Если возникла ошибка при выполнении п4, то вернуть
{
"httpCode":"501",
"httpMessage":"Not Implemented",
"moreInformation"Не удалось сохранить шаблон карточки" - При успешной записи вернуть:
{
"httpCode":"200",
"httpMessage":"OK",
"moreInformation":"Шаблон карточки успешно создан"
}
Метод PATCH InputDataService/api/v1/samples
Назначение: изменить шаблон
Входной контракт
Название | Тип | Обязательный | Комментарий |
---|---|---|---|
UUID | string | да | |
name | string | нет | |
isDisabled | int | нет |
Выходной контракт
Название | Тип | Обязательный | Комментарий |
---|---|---|---|
UUID | string | да | |
name | string | да |
Алгоритм
- Проверка срока действия токена, если срок вышел, то возвращается
{
"httpCode":"401",
"httpMessage":"Unauthorized",
"moreInformation":"Время сессии истекло"
} - Проверка на наличие permission='ETZChangingInputData'. Если нет, то возвращается
{
"httpCode":"403",
"httpMessage":"Forbidden"
"moreInformation":"Недостаточно прав."
} - Проверка заполнения обязательных полей. Если не прошла, то возвращается
{
"httpCode":"400",
"httpMessage":"Bad request"
"moreInformation":"Не заполнены обязательные поля"
} - UPDATE samples
SET name={name}, isDisabled={isDisabled}, changedBy={changedBy}, changedAt={changedAt}
WHERE UUID={UUID} - Если возникла ошибка при выполнении п4, то вернуть
{
"httpCode":"501",
"httpMessage":"Not Implemented",
"moreInformation"Не удалось сохранить изменения в шаблоне"
} - При успешной записи вернуть:
{
"httpCode":"200",
"httpMessage":"OK",
"moreInformation":"Изменения шаблона сохранены"
}
Метод POST InputDataService/api/v1/items
Назначение: создать характеристику для шаблона карточки ИД
Входной контракт
Название | Тип | Обязательный | Комментарий |
---|---|---|---|
name | string | да | |
description | string | нет | |
dataType | string | да | |
typeId | integer | нет | |
isRequired | bool | да | |
sampleId | integer | нет | |
isDisabled | bool | да | |
isNullable | bool | да |
Выходной контракт
Название | Тип | Обязательный | Комментарий |
---|---|---|---|
uuid | integer | да | |
name | string | да |
Алгоритм
- Проверка срока действия токена, если срок вышел, то возвращается
{
"httpCode":"401",
"httpMessage":"Unauthorized",
"moreInformation":"Время сессии истекло"
} - Проверка на наличие permission='ETZChangingInputData'. Если нет, то возвращается
{
"httpCode":"403",
"httpMessage":"Forbidden"
"moreInformation":"Недостаточно прав."
} - Проверка заполнения обязательных полей. Если не прошла, то возвращается
{
"httpCode":"400",
"httpMessage":"Bad request"
"moreInformation":"Не заполнены обязательные поля"
} - INSERT INTO items (name, description, dataType, typeId, isRequired, isDisabled, sampleId, isNullable, isDisabled, createdBy, createdAt)
VALUES ({name}, {description}, {dataType}, {typeId}, {isRequired}, {isDisabled}, {sampleId}, {isNullable}, false, {createdBy}, {createdAt}) - Если возникла ошибка при выполнении п4, то вернуть
{
"httpCode":"501",
"httpMessage":"Not Implemented",
"moreInformation"Не удалось создать характеристику"
} - При успешной записи вернуть:
{
"httpCode":"200",
"httpMessage":"OK",
"moreInformation":"Характеристика сохранена"
}
Метод PATCH InputDataService/api/v1/items
Назначение: изменить характеристику шаблона карточки ИД
Входной контракт
Название | Тип | Обязательный | Комментарий |
---|---|---|---|
name | string | да | |
description | string | нет | |
dataType | string | да | |
typeId | integer | нет | |
isRequired | bool | да | |
sampleId | integer | нет | |
isDisabled | bool | да | |
isNullable | bool | да |
Выходной контракт
Название | Тип | Обязательный | Комментарий |
---|---|---|---|
uuid | integer | да | |
name | string | да |
Алгоритм
- Проверка срока действия токена, если срок вышел, то возвращается
{
"httpCode":"401",
"httpMessage":"Unauthorized",
"moreInformation":"Время сессии истекло"
} - Проверка на наличие permission='ETZChangingInputData'. Если нет, то возвращается
{
"httpCode":"403",
"httpMessage":"Forbidden"
"moreInformation":"Недостаточно прав."
} - Проверка заполнения обязательных полей. Если не прошла, то возвращается
{
"httpCode":"400",
"httpMessage":"Bad request"
"moreInformation":"Не заполнены обязательные поля"
} - UPDATE items SET name={name}, description={description}, dataType={dataType}, typeId={typeId}, isRequired={isRequired}, sampleId={sampleId}, isNullable={isNullable}, isDisabled={isDisabled}, changedBy={changedBy}, changedAt={changedAt} WHERE uuid={uuid}
- Если возникла ошибка при выполнении п4, то вернуть
{
"httpCode":"501",
"httpMessage":"Not Implemented",
"moreInformation"Не удалось изменить характеристику"
} - При успешной записи вернуть:
{
"httpCode":"200",
"httpMessage":"OK",
"moreInformation":"Характеристика изменена"
}
Метод POST InputDataService/api/v1/items/directory
Назначение: записать справочные значения для характеристики карточки ИД
Входной контракт
Название | Тип | Обязательный | Комментарий |
---|---|---|---|
items[] | |||
itemId | integer | да | |
value | string | да |
Выходной контракт
Название | Тип | Обязательный | Комментарий |
---|---|---|---|
items[] | |||
id | integer | да | |
itemId | integer | да | |
value | string | да |
Алгоритм
- Проверка срока действия токена, если срок вышел, то возвращается
{
"httpCode":"401",
"httpMessage":"Unauthorized",
"moreInformation":"Время сессии истекло"
} - Проверка на наличие permission='ETZChangingInputData'. Если нет, то возвращается
{
"httpCode":"403",
"httpMessage":"Forbidden"
"moreInformation":"Недостаточно прав."
} - Проверка заполнения обязательных полей. Если не прошла, то возвращается
{
"httpCode":"400",
"httpMessage":"Bad request"
"moreInformation":"Не заполнены обязательные поля"
} - Проверка наличия характеристики, для которой добавляются справочные значения
SELECT *
FROM items
WHERE id={itemId}
Если результат пуст, то завершить алгоритм и вернуть в ответе:
{
"httpCode":"412",
"httpMessage":"Precondition Failed"
"moreInformation":"Выбранная характеристика не найдена"
} - INSERT INTO itemDirectory (itemId, value, isDisabled, createdBy, createdAt)
VALUES ({itemId}, {value}, false, {createdBy}, {createdAt}) - Если возникла ошибка при выполнении п5, то вернуть
{
"httpCode":"501",
"httpMessage":"Not Implemented",
"moreInformation"Не удалось сохранить изменения"
} - При успешной записи вернуть:
{
"httpCode":"200",
"httpMessage":"OK",
"moreInformation":"Изменения сохранены"
}
Метод PATCH InputDataService/api/v1/items/directory
Назначение: изменить справочное значение для характеристики карточки ИД
Входной контракт
Название | Тип | Обязательный | Комментарий |
---|---|---|---|
id | integer | да | |
value | string | да | |
isDisabled | bool | да |
Выходной контракт
Название | Тип | Обязательный | Комментарий |
---|---|---|---|
id | integer | да | |
value | string | да |
Алгоритм
- Проверка срока действия токена, если срок вышел, то возвращается
{
"httpCode":"401",
"httpMessage":"Unauthorized",
"moreInformation":"Время сессии истекло"
} - Проверка на наличие permission='ETZChangingInputData'. Если нет, то возвращается
{
"httpCode":"403",
"httpMessage":"Forbidden"
"moreInformation":"Недостаточно прав."
} - Проверка заполнения обязательных полей. Если не прошла, то возвращается
{
"httpCode":"400",
"httpMessage":"Bad request"
"moreInformation":"Не заполнены обязательные поля"
} - UPDATE itemDirectory
SET value={value}, isDisabled={isDisabled}, changedBy={changedBy}, changedAt={changedAt}
WHERE id={id} - Если возникла ошибка при выполнении п4, то вернуть
{
"httpCode":"501",
"httpMessage":"Not Implemented",
"moreInformation"Не удалось сохранить изменения"
} - При успешной записи вернуть:
{
"httpCode":"200",
"httpMessage":"OK",
"moreInformation":"Изменения сохранены"
} - ","httpMessage":"OK", "moreInformation":"Изменения сохранены" }
Метод GET InputDataService/api/v1/samples
Назначение: получить список шаблонов карточек ИД
Входной контракт
Название | Тип | Обязательный | Комментарий |
---|---|---|---|
name | string | нет | Фрагмент названия для фильтрации |
isDisabled | bool | нет | Элемент фильтрации |
*Предусмотреть пагинацию
Выходной контракт
Название | Тип | Обязательный | Комментарий |
---|---|---|---|
samples[] | да |
samples[]
Название | Тип | Обязательный | Комментарий |
---|---|---|---|
uuid | string | да | |
name | string | да | |
isDisabled | boolean | да |
Алгоритм
- Проверка срока действия токена, если срок вышел, то возвращается
{
"httpCode":"401",
"httpMessage":"Unauthorized",
"moreInformation":"Время сессии истекло"
} - Проверка на наличие permission='ETZCreateProject'. Если нет, то возвращается
{
"httpCode":"403",
"httpMessage":"Forbidden"
"moreInformation":"Недостаточно прав."
} - Проверка заполнения обязательных полей. Если не прошла, то возвращается
{
"httpCode":"400",
"httpMessage":"Bad request"
"moreInformation":"Не заполнены обязательные поля"
} - SELECT uuid, name
FROM samples
WHERE isDisabled={isDisabled}
AND name LIKE '%{name}%' - строка используется. если заданы параметры фильтрации - Формирование выходного контракта.
Метод GET InputDataService/api/v1/samples/{uuid}
Назначение: получение шаблона для создания карточки ИД
Входной контракт
Название | Тип | Обязательный | Комментарий |
---|---|---|---|
UUID | string | да |
Выходной контракт
Название | Тип | Обязательный | Комментарий |
---|---|---|---|
name | string | Да | |
isDisabled | boolean | Да | |
items[] | Да |
samples.items[]
Название | Тип | Обязательный | Комментарий |
---|---|---|---|
name | string | Да | |
description | string | Да | |
dataType | string | Да | |
type | string | Да | |
isRequires | boolean | Да | |
stage | string | Да | |
isNullable | boolean | Да | |
isDisabled | boolean | Да |
Алгоритм
- Проверка срока действия токена, если срок вышел, то возвращается
{
"httpCode":"401",
"httpMessage":"Unauthorized",
"moreInformation":"Время сессии истекло"
} - Проверка на наличие permission='ETZCreateProject'. Если нет, то возвращается
{
"httpCode":"403",
"httpMessage":"Forbidden"
"moreInformation":"Недостаточно прав"
} - Проверка заполнения обязательных полей. Если не прошла, то возвращается
{
"httpCode":"400",
"httpMessage":"Bad request"
"moreInformation":"Не заполнены обязательные поля"
} - SELECT *
FROM samples
WHERE uuid={uuid}
Если шаблон не найден, то вернуть:
{
"httpCode":"412",
"httpMessage":"Precondition Failed"
"moreInformation":"Шаблон не найден"
} - Получение шаблона и его характеристик
SELECT *
FROM samples
LEFT JOIN items ON samples.uuid=items.sample_id
WHERE sampleUUID={uuid} - Возврат ответа
Метод GET InputDataService/api/v1/itemDirectory/{uuid}
Назначение: получение справочника для заполнения характеристики
Входной контракт
Название | Тип | Обязательный | Комментарий |
---|---|---|---|
uuid | string | Да |
*Предусмотреть пагинацию
Выходной контракт
Название | Тип | Обязательный | Комментарий |
---|---|---|---|
directory[] | Да |
directory[]
Название | Тип | Обязательный | Комментарий |
---|---|---|---|
value | string | Да | |
isDisabled | boolean | Да |
Алгоритм
- Проверка срока действия токена, если срок вышел, то возвращается
{
"httpCode":"401",
"httpMessage":"Unauthorized",
"moreInformation":"Время сессии истекло"
} - Проверка на наличие permission='ETZCreateProject'. Если нет, то возвращается
{
"httpCode":"403",
"httpMessage":"Forbidden"
"moreInformation":"Недостаточно прав"
} - Проверка заполнения обязательных полей. Если не прошла, то возвращается
{
"httpCode":"400",
"httpMessage":"Bad request"
"moreInformation":"Не заполнены обязательные поля"
} - SELECT *
FROM itemDirectory
WHERE id={itemId} - Возврат ответа
Описание базы данных сервиса InputDataService и FileStorageService
BPMN - схемы работы с сервисом Исходные данные
API сервисов file-storage-service и initial-data-service