You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 6 Next »

Сервис предназначен для хранения и версионирования пользовательских файлов

Сервисы
  • InputDataService
  • FileStorageService
Адреса сервиса
Описание сервисов

InputDataService (сервис для работы с карточками и экземплярами карточек файлов)

FileStorageService (сервис для хранения файлов)

Связанные задачи Jira

ETZ-1375 - Jira project doesn't exist or you don't have permission to view it. ETZ-1407 - Jira project doesn't exist or you don't have permission to view it.



Функциональные требования - InputDataService

  1. Возможность создать шаблоны карточек ИД с возможностью привязки атрибутов/характеристик
  2. Возможность создавать характеристики различных типов  (дата, текст, число, выпадающий список)
  3. Возможность проставить признак обязательности заполнения характеристики
  4. Возможность к шаблонам карточек ИД привязать атрибуты/характеристики
  5. Возможность привязать характеристики шаблонов карточек ИД к шаблону объекта строительства через интеграционную характеристику
  6. Возможность создать карточки ИД на основании шаблонов карточек
  7. Возможность версионирования карточек ИД
  8. Возможность согласования карточек ИД
  9. Возможность указать срок действия карточек ИД
  10. Возможность указать срок уведомления об истечении срока карточки ИД
  11. Возможность уведомить проектную команду об истечении срока действия карточки ИД
  12. Возможность привязать карточку ИД к объекту строительства
  13. Возможность заполнить характеристики в карточки ИД
  14. Возможность транслировать значения характеристик ИД в АТЗ по объекту

Функциональные требования - FileStorageService

  1. Возможность загрузки файла
  2. Возможность хранения версий файлов
  3. Возможность получения файла
  4. Возможность удаления файла

Пользовательский сценарий (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

Назначение: загрузка файла в хранилище

Входной контракт

Название

Тип

Обязательный

Комментарий

UUIDstringДа
linkstringДа
namestringДа

       

Макс. размер файла - 300 МБ. Форматы rvt, dwg, png, jpg, jpeg, txt, pdf, docx, doc, xlsx

Выходной контракт

Нет

Алгоритм
  1. Проверка срока действия токена, если срок вышел, то возвращается
    {
    "httpCode":"401",
    "httpMessage":"Unauthorized",
    "moreInformation":"Время сессии истекло"
    }
  2. Проверка на наличие permission='ETZChangingTemplates'. Если нет, то возвращается
    {
    "httpCode":"403",
    "httpMessage":"Forbidden"
    "moreInformation":"Недостаточно прав."
    }
  3. Проверка на корректность типа файла. Если нет, то возвращается
    {
    "httpCode":"400",
    "httpMessage":"invalid Type"
    "moreInformation":"Некорректный тип загружаемого файла"
    }
  4. Проверка на размер файла. 
    {
    "httpCode":"402",
    "httpMessage":"Limit File Size Reached",
    "moreInformation":"Превышен максимально допустимый размер файла"
    }
  5. INSERT INTO file_storage (UUID, link, name, createdBy, createdAt)
    VALUES ({UUID},{link},{name}, {createdBy}, {createdAt})
  6. Если возникла ошибка при выполнении п4, то вернуть
    {
    "httpCode":"501",
    "httpMessage":"Not Implemented",
    "moreInformation"Не удалось сохранить файл"
  7. При успешной записи вернуть:
    {
    "httpCode":"200",
    "httpMessage":"OK",
    "moreInformation":"Файл загружен"
    }

Метод DELETE FileStorageService/api/v1/{file_storageId}

Назначение: удалить файл

Входной контракт

Название

Тип

Обязательный

UUIDstringДа

Выходной контракт

Нет

Алгоритм

  1. Проверка срока действия токена, если срок вышел, то возвращается
    {
    "httpCode":"401",
    "httpMessage":"Unauthorized",
    "moreInformation":"Время сессии истекло"
    }
  2. Проверка на наличие permission='ETZViewProject'. Если нет, то возвращается
    {
    "httpCode":"403",
    "httpMessage":"Forbidden"
    "moreInformation":"Недостаточно прав."
    }

  3. DELETE
    FROM fileStorage
    WHERE UUID={UUID} 
  4. Если возникла ошибка при выполнении п4, то вернуть
    {
    "httpCode":"501",
    "httpMessage":"Not Implemented",
    "moreInformation"Не удалось удалить файл"
    }
  5. При успешной записи вернуть:
    {
    "httpCode":"200",
    "httpMessage":"OK",
    "moreInformation":"Файл успешно удален"
    }

Метод GET FileStorageService/api/v1/file_storage

Результат

Этот метод возвращает список файлов из файлового хранилища

Входной контракт

Название

Тип

Обязательный

IDstringДа

Выходной контракт

Название

Тип

Обязательный

file_storage[]

linkstringДа
namestringДа


  1. Проверка срока действия токена, если срок вышел, то возвращается
    {
    "httpCode":"401",
    "httpMessage":"Unauthorized",
    "moreInformation":"Время сессии истекло"
    }
  2. Проверка на наличие permission='ETZViewProject'. Если нет, то возвращается
    {
    "httpCode":"403",
    "httpMessage":"Forbidden"
    "moreInformation":"Недостаточно прав."
    }
  3. Проверка заполнения обязательных полей. Если не прошла, то возвращается
    {

    "httpCode":"400",
    "httpMessage":"Bad request"
    "moreInformation":"Некорректно запрошен список файлов"
    }
  4. SELECT *
    FROM filestorage as fs left join inputdataservice.inputdata as ii on fs.id=ii.file_storage_uuid


InputDataService

Метод POST InputDataService/api/v1/samples

Назначение: создание нового шаблона карточки 

Входной контракт

Название

Тип

Обязательный

Комментарий

namestringДа


Выходной контракт

Название

Тип

Обязательный

Комментарий

UUIDintegerДа
namestringДа
Алгоритм
  1. Проверка срока действия токена, если срок вышел, то возвращается
    {
    "httpCode":"401",
    "httpMessage":"Unauthorized",
    "moreInformation":"Время сессии истекло"
    }
  2. Проверка на наличие permission='ETZChangingInputData'. Если нет, то возвращается
    {
    "httpCode":"403",
    "httpMessage":"Forbidden"
    "moreInformation":"Недостаточно прав."
    }
  3. Проверка на корректность полей. Если нет, то возвращается
    {
    "httpCode":"400",
    "httpMessage":"Bad request"
    "moreInformation":"Не заполнены обязательные поля"
    }
  4. INSERT INTO samples (UUID, name, createdBy, createdAt)
    VALUES ({UUID},{name}, {createdBy}, {createdAt})
  5. Если возникла ошибка при выполнении п4, то вернуть
    {
    "httpCode":"501",
    "httpMessage":"Not Implemented",
    "moreInformation"Не удалось сохранить шаблон карточки"
  6. При успешной записи вернуть:
    {
    "httpCode":"200",
    "httpMessage":"OK",
    "moreInformation":"Шаблон карточки успешно создан"
    }

Метод PATCH InputDataService/api/v1/samples

Назначение: изменить шаблон

Входной контракт

Название

Тип

Обязательный

Комментарий

UUIDstringда
namestringнет
isDisabledintнет

Выходной контракт

Название

Тип

Обязательный

Комментарий

UUIDstringда
namestringда
Алгоритм
  1. Проверка срока действия токена, если срок вышел, то возвращается
    {
    "httpCode":"401",
    "httpMessage":"Unauthorized",
    "moreInformation":"Время сессии истекло"
    }
  2. Проверка на наличие permission='ETZChangingInputData'. Если нет, то возвращается
    {
    "httpCode":"403",
    "httpMessage":"Forbidden"
    "moreInformation":"Недостаточно прав."
    }
  3. Проверка заполнения обязательных полей. Если не прошла, то возвращается
    {

    "httpCode":"400",
    "httpMessage":"Bad request"
    "moreInformation":"Не заполнены обязательные поля"
    }
  4. UPDATE samples
    SET name={name}, isDisabled={isDisabled}, changedBy={changedBy}, changedAt={changedAt}
    WHERE UUID={UUID}

  5. Если возникла ошибка при выполнении п4, то вернуть
    {
    "httpCode":"501",
    "httpMessage":"Not Implemented",
    "moreInformation"Не удалось сохранить изменения в шаблоне"
    }
  6. При успешной записи вернуть:
    {
    "httpCode":"200",
    "httpMessage":"OK",
    "moreInformation":"Изменения шаблона сохранены"
    }

Метод  POST InputDataService/api/v1/items

Назначение: создать характеристику для шаблона карточки ИД

Входной контракт

Название

Тип

Обязательный

Комментарий

namestringда
descriptionstringнет
dataTypestringда
typeIdintegerнет
isRequiredboolда
sampleIdintegerнет
isDisabledboolда
isNullableboolда

Выходной контракт

Название

Тип

Обязательный

Комментарий

uuidintegerда
namestringда

Алгоритм

  1. Проверка срока действия токена, если срок вышел, то возвращается
    {
    "httpCode":"401",
    "httpMessage":"Unauthorized",
    "moreInformation":"Время сессии истекло"
    }
  2. Проверка на наличие permission='ETZChangingInputData'. Если нет, то возвращается
    {
    "httpCode":"403",
    "httpMessage":"Forbidden"
    "moreInformation":"Недостаточно прав."
    }
  3. Проверка заполнения обязательных полей. Если не прошла, то возвращается
    {

    "httpCode":"400",
    "httpMessage":"Bad request"
    "moreInformation":"Не заполнены обязательные поля"
    }
  4. 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})
  5. Если возникла ошибка при выполнении п4, то вернуть
    {
    "httpCode":"501",
    "httpMessage":"Not Implemented",
    "moreInformation"Не удалось создать характеристику"
    }
  6. При успешной записи вернуть:
    {
    "httpCode":"200",
    "httpMessage":"OK",
    "moreInformation":"Характеристика сохранена"
    }

Метод  PATCH InputDataService/api/v1/items

Назначение: изменить характеристику шаблона карточки ИД

Входной контракт

Название

Тип

Обязательный

Комментарий

namestringда
descriptionstringнет
dataTypestringда
typeIdintegerнет
isRequiredboolда
sampleIdintegerнет
isDisabledboolда
isNullableboolда

Выходной контракт

Название

Тип

Обязательный

Комментарий

uuidintegerда
namestringда

Алгоритм

  1. Проверка срока действия токена, если срок вышел, то возвращается
    {
    "httpCode":"401",
    "httpMessage":"Unauthorized",
    "moreInformation":"Время сессии истекло"
    }
  2. Проверка на наличие permission='ETZChangingInputData'. Если нет, то возвращается
    {
    "httpCode":"403",
    "httpMessage":"Forbidden"
    "moreInformation":"Недостаточно прав."
    }
  3. Проверка заполнения обязательных полей. Если не прошла, то возвращается
    {

    "httpCode":"400",
    "httpMessage":"Bad request"
    "moreInformation":"Не заполнены обязательные поля"
    }
  4. 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}
  5. Если возникла ошибка при выполнении п4, то вернуть
    {
    "httpCode":"501",
    "httpMessage":"Not Implemented",
    "moreInformation"Не удалось изменить характеристику"
    }
  6. При успешной записи вернуть:
    {
    "httpCode":"200",
    "httpMessage":"OK",
    "moreInformation":"Характеристика изменена"
    }

Метод  POST InputDataService/api/v1/items/directory

Назначение: записать справочные значения для характеристики карточки ИД

Входной контракт

Название

Тип

Обязательный

Комментарий

items[]


itemIdintegerда
valuestringда

Выходной контракт

Название

Тип

Обязательный

Комментарий

items[]


idintegerда
itemIdintegerда
valuestringда

Алгоритм

  1. Проверка срока действия токена, если срок вышел, то возвращается
    {
    "httpCode":"401",
    "httpMessage":"Unauthorized",
    "moreInformation":"Время сессии истекло"
    }
  2. Проверка на наличие permission='ETZChangingInputData'. Если нет, то возвращается
    {
    "httpCode":"403",
    "httpMessage":"Forbidden"
    "moreInformation":"Недостаточно прав."
    }
  3. Проверка заполнения обязательных полей. Если не прошла, то возвращается
    {

    "httpCode":"400",
    "httpMessage":"Bad request"
    "moreInformation":"Не заполнены обязательные поля"
    }
  4. Проверка наличия характеристики, для которой добавляются справочные значения
    SELECT *
    FROM items
    WHERE id={itemId}
    Если результат пуст, то завершить алгоритм и вернуть в ответе:
    {

    "httpCode":"412",
    "httpMessage":"Precondition Failed"
    "moreInformation":"Выбранная характеристика не найдена"
    }
  5. INSERT INTO itemDirectory (itemId, value, isDisabled, createdBy, createdAt)
    VALUES ({itemId}, {value}, false, {createdBy}, {createdAt})
  6. Если возникла ошибка при выполнении п5, то вернуть
    {
    "httpCode":"501",
    "httpMessage":"Not Implemented",
    "moreInformation"Не удалось сохранить изменения"
    }
  7. При успешной записи вернуть:
    {
    "httpCode":"200",
    "httpMessage":"OK",
    "moreInformation":"Изменения сохранены"
    }

Метод  PATCH InputDataService/api/v1/items/directory

Назначение: изменить справочное значение для характеристики карточки ИД

Входной контракт

Название

Тип

Обязательный

Комментарий

idintegerда
valuestringда
isDisabledboolда

Выходной контракт

Название

Тип

Обязательный

Комментарий

idintegerда
valuestringда

Алгоритм

  1. Проверка срока действия токена, если срок вышел, то возвращается
    {
    "httpCode":"401",
    "httpMessage":"Unauthorized",
    "moreInformation":"Время сессии истекло"
    }
  2. Проверка на наличие permission='ETZChangingInputData'. Если нет, то возвращается
    {
    "httpCode":"403",
    "httpMessage":"Forbidden"
    "moreInformation":"Недостаточно прав."
    }
  3. Проверка заполнения обязательных полей. Если не прошла, то возвращается
    {

    "httpCode":"400",
    "httpMessage":"Bad request"
    "moreInformation":"Не заполнены обязательные поля"
    }
  4. UPDATE itemDirectory
    SET value={value}, isDisabled={isDisabled}, changedBy={changedBy}, changedAt={changedAt}
    WHERE id={id}
  5. Если возникла ошибка при выполнении п4, то вернуть
    {
    "httpCode":"501",
    "httpMessage":"Not Implemented",
    "moreInformation"Не удалось сохранить изменения"
    }
  6. При успешной записи вернуть:
    {
    "httpCode":"200",
    "httpMessage":"OK",
    "moreInformation":"Изменения сохранены"
    }
  7. ","httpMessage":"OK", "moreInformation":"Изменения сохранены" }

Метод  GET InputDataService/api/v1/samples

Назначение: получить список шаблонов карточек ИД

Входной контракт

Название

Тип

Обязательный

Комментарий

namestringнетФрагмент названия для фильтрации
isDisabledboolнетЭлемент фильтрации

*Предусмотреть пагинацию

Выходной контракт

Название

Тип

Обязательный

Комментарий

samples[]
да

samples[]

Название

Тип

Обязательный

Комментарий

uuidstringда
namestringда
isDisabledbooleanда

Алгоритм

  1. Проверка срока действия токена, если срок вышел, то возвращается
    {
    "httpCode":"401",
    "httpMessage":"Unauthorized",
    "moreInformation":"Время сессии истекло"
    }
  2. Проверка на наличие permission='ETZCreateProject'. Если нет, то возвращается
    {
    "httpCode":"403",
    "httpMessage":"Forbidden"
    "moreInformation":"Недостаточно прав."
    }
  3. Проверка заполнения обязательных полей. Если не прошла, то возвращается
    {

    "httpCode":"400",
    "httpMessage":"Bad request"
    "moreInformation":"Не заполнены обязательные поля"
    }
  4. SELECT uuid, name
    FROM samples
    WHERE isDisabled={isDisabled}
    AND name LIKE '%{name}%' - строка используется. если заданы параметры фильтрации
  5. Формирование выходного контракта.

Метод  GET InputDataService/api/v1/samples/{uuid}

Назначение: получение шаблона для создания карточки ИД

Входной контракт

Название

Тип

Обязательный

Комментарий

UUIDstringда

Выходной контракт

Название

Тип

Обязательный

Комментарий

namestringДа
isDisabledbooleanДа
items[]
Да

samples.items[]

Название

Тип

Обязательный

Комментарий

namestringДа
descriptionstringДа
dataTypestringДа
typestringДа
isRequiresbooleanДа 
stagestringДа 
isNullablebooleanДа 
isDisabledbooleanДа


Алгоритм

  1. Проверка срока действия токена, если срок вышел, то возвращается
    {
    "httpCode":"401",
    "httpMessage":"Unauthorized",
    "moreInformation":"Время сессии истекло"
    }
  2. Проверка на наличие permission='ETZCreateProject'. Если нет, то возвращается
    {
    "httpCode":"403",
    "httpMessage":"Forbidden"
    "moreInformation":"Недостаточно прав"
    }
  3. Проверка заполнения обязательных полей. Если не прошла, то возвращается
    {

    "httpCode":"400",
    "httpMessage":"Bad request"
    "moreInformation":"Не заполнены обязательные поля"
    }
  4. SELECT *
    FROM samples
    WHERE uuid={uuid}
    Если шаблон не найден, то вернуть:
    {

    "httpCode":"412",
    "httpMessage":"Precondition Failed"
    "moreInformation":"Шаблон не найден"
    }
  5. Получение шаблона и его характеристик
    SELECT *
    FROM samples
    LEFT JOIN items ON samples.uuid=items.sample_id
    WHERE sampleUUID={uuid}

  6. Возврат ответа

Метод  GET InputDataService/api/v1/itemDirectory/{uuid}

Назначение: получение справочника для заполнения характеристики

Входной контракт

Название

Тип

Обязательный

Комментарий

uuidstringДа

*Предусмотреть пагинацию

Выходной контракт

Название

Тип

Обязательный

Комментарий

directory[]
Да

directory[]

Название

Тип

Обязательный

Комментарий

valuestringДа
isDisabledbooleanДа


Алгоритм

  1. Проверка срока действия токена, если срок вышел, то возвращается
    {
    "httpCode":"401",
    "httpMessage":"Unauthorized",
    "moreInformation":"Время сессии истекло"
    }
  2. Проверка на наличие permission='ETZCreateProject'. Если нет, то возвращается
    {
    "httpCode":"403",
    "httpMessage":"Forbidden"
    "moreInformation":"Недостаточно прав"
    }
  3. Проверка заполнения обязательных полей. Если не прошла, то возвращается
    {

    "httpCode":"400",
    "httpMessage":"Bad request"
    "moreInformation":"Не заполнены обязательные поля"
    }
  4. SELECT *
    FROM itemDirectory
    WHERE id={itemId}
  5. Возврат ответа

Описание базы данных сервиса InputDataService и FileStorageService 

draw.io

Diagram attachment access error: cannot display diagram


BPMN - схемы работы с сервисом Исходные данные


API сервисов file-storage-service и initial-data-service

draw.io

Diagram attachment access error: cannot display diagram



  • No labels