Справочники
| Идентификатор | Сущность | Атрибут | Тип данных | Контроли | Not Null | Описание |
|---|---|---|---|---|---|---|
Справочник "Порты, причалы, стоянки" | ||||||
Порт | ||||||
INSP-AT-PRT-001 | Порт | ID_Порт | UUID | Уникальное значение | NN | Идентификатор сущности в системе |
INSP-AT-PRT-002 | Порт | Наименование | string |
| NN | |
INSP-AT-PRT-003 | Порт | Статус | string enum | Одно из вариантов значений:
| NN | см. статусная модель "Порт" |
INSP-AT-PRT-013 | Порт | Страна💬 | string enum | Одно из вариантов значений: | NN | |
INSP-AT-PRT-004 | Порт | Координаты | string |
| NN | Координаты - это просто текстовое поле, не имеющее ограничение. Т.к. это может быть как адрес, так и номинальное месторасположение. |
INSP-AT-PRT-014 | Порт | Дата и время создания | datetime | dd.mm.yyyy hh:mm | NN | |
INSP-AT-PRT-015 | Порт | Создатель | единичная ссылка | NN | ||
INSP-AT-PRT-016 | Порт | Дата и время изменения | datetime | dd.mm.yyyy hh:mm | - | |
INSP-AT-PRT-017 | Порт | Автор изменений | единичная ссылка | - | ||
Причал | ||||||
INSP-AT-PRT-005 | Причал | ID_Причал | UUID | Уникальное значение | NN | Идентификатор сущности в системе |
INSP-AT-PRT-006 | Причал | Порт | ||||
INSP-AT-PRT-007 | Причал | Наименование | string |
| NN | |
INSP-AT-PRT-008 | Причал | Координаты | string |
| NN | Координаты - это просто текстовое поле, не имеющее ограничение. Т.к. это может быть как адрес, так и номинальное месторасположение. |
INSP-AT-PRT-018 | Причал | Дата и время создания | datetime | dd.mm.yyyy hh:mm | NN | |
INSP-AT-PRT-019 | Причал | Создатель | единичная ссылка | NN | ||
INSP-AT-PRT-020 | Причал | Дата и время изменения | datetime | dd.mm.yyyy hh:mm | - | |
INSP-AT-PRT-021 | Причал | Автор изменений | единичная ссылка | - | ||
Якорная стоянка | ||||||
INSP-AT-PRT-009 | Стоянка | ID_Стоянка | UUID | Уникальное значение | NN | Идентификатор сущности в системе |
INSP-AT-PRT-010 | Стоянка | Порт | ||||
INSP-AT-PRT-011 | Стоянка | Наименование | string |
| NN | |
INSP-AT-PRT-012 | Стоянка | Координаты | string |
| NN | Координаты - это просто текстовое поле, не имеющее ограничение. Т.к. это может быть как адрес, так и номинальное месторасположение. |
INSP-AT-PRT-022 | Стоянка | Дата и время создания | datetime | dd.mm.yyyy hh:mm | NN | |
INSP-AT-PRT-023 | Стоянка | Создатель | единичная ссылка | NN | ||
INSP-AT-PRT-024 | Стоянка | Дата и время изменения | datetime | dd.mm.yyyy hh:mm | - | |
INSP-AT-PRT-025 | Стоянка | Автор изменений | единичная ссылка | - | ||
Справочник "Судна" | ||||||
INSP-AT-VSS-001 | Судно | ID_Судно | UUID | Уникальное значение | NN | Идентификатор сущности в системе |
| INSP-AT-VSS-002 | Судно | Наименование (рус) | string |
| NN | Название судна на русском языке |
INSP-AT-VSS-016 | Судно | Vessel name (eng) | string |
| NN | Название судна на английском языке |
| INSP-AT-VSS-003
| Судно | ИМО | IMO💬 | string |
| NN | Уникальный номер судна, второго такого же судна с таким же номером в системе быть не должно |
| INSP-AT-VSS-004 | Судно | Описание | Description | string |
| - | |
| INSP-AT-VSS-005 | Судно | Статус | Status | string enum | Одно из вариантов значений:
| NN | см. статусная модель "Судно" |
| INSP-AT-VSS-006 | Судно | Класс судна | Type | string enum | Одно из вариантов значений:
| NN | |
| INSP-AT-VSS-007
| Судно | Длина, м | Lenght Overal (LOA), m | float |
| NN | |
| INSP-AT-VSS-008
| Судно | Ширина, м | Breadth, m | float |
| NN | |
| INSP-AT-VSS-009
| Судно | Осадка, м | Draft, m | float |
| NN | |
| INSP-AT-VSS-010
| Судно | Флаг💬 | Flag | string enum | Одно из вариантов значений: | NN | |
| INSP-AT-VSS-012
| Судно | Собственник и (или) владелец судна | The owner and (or) master of vessel | string |
| NN | |
| INSP-AT-VSS-013
| Судно | Капитан судна (Ф.И.О.) | Name of vessel Capitan | string |
| NN | |
| INSP-AT-VSS-014
| Судно | Дата и время создания | datetime | dd.mm.yyyy hh:mm | NN | Автоматически, в момент создания записи |
| INSP-AT-VSS-015
| Судно | Дата и время изменения | datetime | dd.mm.yyyy hh:mm | - | Автоматически, в момент изменения записи |
INSP-AT-VSS-017 | Судно | Создатель | единичная ссылка | NN | ||
INSP-AT-VSS-018 | Судно | Автор изменений | единичная ссылка | - | ||
Справочник "Типы ресурсов" | ||||||
Типы ресурсов | ||||||
INSP-AT-RSR-001 | Типы ресурсов | ID_Тип | UUID | Уникальное значение | NN | Идентификатор сущности в системе |
INSP-AT-RSR-002 | Типы ресурсов | Наименование | string |
| NN | в MVP три типа ресурса, со следующими атрибутивными характеристиками:
|
INSP-AT-RSR-003 | Типы ресурсов | Атрибуты типа ресурса | множественная ссылка | - | ||
Атрибуты ресурса | ||||||
INSP-AT-RSR-004 | Атрибуты | ID_Атрибут_Ресурса | UUID | Уникальное значение | NN | Идентификатор сущности в системе |
INSP-AT-RSR-006 | Атрибуты | Наименование | string |
| NN | |
INSP-AT-RSR-007 | Атрибуты | Тип данных | string enum |
| NN | |
Заявки
| Идентификатор | Сущность | Атрибут | Тип данных | Контроли | Not Null | Описание |
|---|---|---|---|---|---|---|
Заявка | ||||||
INSP-AT-APP-001 | Заявка | ID_Заявка | UUID |
| NN | Идентификатор сущности в системе |
INSP-AT-APP-002 | Заявка | Номер заявки | string |
| NN | Агент сам создает номер заявки, согласно принятым между Агентом и Исполнителям правилам |
INSP-AT-APP-003 | Заявка | Номер заявки на вход | string |
| NN | Идентификатор заявки на вход в порт, созданный в сторонней системе PortCall До реализации интеграции с системой - вносится вручную Агентом-создателем заявки |
| INSP-AT-APP-004 | Заявка | Статус | string enum | См. статусная модель "Заявка" | NN | |
INSP-AT-APP-005 | Заявка | Агент | единичная ссылка | NN | ||
INSP-AT-APP-006 | Заявка | Заказчик | Customer | единичная ссылка | NN | ||
INSP-AT-APP-052 | Заявка | Исполнитель | Contractor |
| CH* | Исполнитель обязателен в статусах заявки: Ожидается подтверждение, запланировано, выполнение работ, исполнено. В остальных статусах - может быть пустым | |
INSP-AT-APP-007 | Заявка | Город проведения осмотра | string enum |
| NN | В следующих релизах список городов будет пополняться. В рамках MVP - только г. Астрахань |
INSP-AT-APP-008 | Заявка | Основания проведения осмотра | Authority for conducting a survey | string |
| - | |
INSP-AT-APP-009 | Заявка | Судно | единичная ссылка | NN | ||
INSP-AT-APP-010 | Заявка | Предыдущий порт |
| NN | Из какого порта судно вышло | |
INSP-AT-APP-011 | Заявка | Дата и время выхода из предыдущего порта | datetime |
| NN | |
INSP-AT-APP-012 | Заявка | Следующий порт | единичная ссылка | NN | В какой порт судно направляется | |
INSP-AT-APP-013 | Заявка | Плановая дата и время захода в следующий порт | date |
| NN | |
INSP-AT-APP-014 | Заявка | Дата и время создания | datetime | hh:mm:ss dd.mm.yyyy | NN | |
INSP-AT-APP-015 | Заявка | Создатель (автор) | единичная ссылка | NN | ||
INSP-AT-APP-063 | Заявка | Дата и время изменения | datetime | dd.mm.yyyy hh:mm | - | Автоматически, в момент изменения записи |
INSP-AT-APP-064 | Заявка | Автор изменений | единичная ссылка | - | ||
Заказчики | ||||||
INSP-AT-APP-016 | Заказчик | ID_Заказчик | UUID |
| NN | Идентификатор сущности в системе |
INSP-AT-APP-017 | Заказчик | Наименование (рус) | string |
| NN | |
INSP-AT-APP-062 | Заказчик | Name (eng) | string |
| NN | |
INSP-AT-APP-018 | Заказчик | Контактное лицо | string |
| NN | |
INSP-AT-APP-053 | Заказчик | Должность контактного лица | string |
| NN | |
INSP-AT-APP-019 | Заказчик | Контактный телефон | string |
| NN | |
INSP-AT-APP-020 | Заказчик | Контактный e-mail | string |
| NN | |
План осмотра | ||||||
INSP-AT-APP-021 | План осмотра | ID_План | UUID |
| NN | Идентификатор сущности в системе |
INSP-AT-APP-022 | План осмотра | Заявка | единичная ссылка | NN | ||
INSP-AT-APP-023 | План осмотра | Плановая дата и время начала осмотра | datetime | hh:mm:ss dd.mm.yyyy | NN | |
INSP-AT-APP-024 | План осмотра | Плановая дата и время завершения осмотра | datetime | hh:mm:ss dd.mm.yyyy | NN | |
INSP-AT-APP-026 | План осмотра | Стоянка | единичная ссылка | NN | ||
INSP-AT-APP-027 | План осмотра | Ресурсы | множественная ссылка | NN | ||
INSP-AT-APP-051 | План осмотра | Технология осмотра | string |
| - | |
INSP-AT-APP-028 | План осмотра | Дата и время создания | datetime | hh:mm:ss dd.mm.yyyy | NN | |
INSP-AT-APP-029 | План осмотра | Создатель (автор) | единичная ссылка | NN | ||
INSP-AT-APP-030 | План осмотра | Дата и время изменения | datetime | hh:mm:ss dd.mm.yyyy | - | |
INSP-AT-APP-031 | План осмотра | Автор изменений | единичная ссылка | - | ||
Ресурсы в осмотре | ||||||
INSP-AT-APP-032 | Ресурсы в осмотре | ID_Ресурс_в_осмотре | UUID |
| NN | Идентификатор сущности в системе |
INSP-AT-APP-033 | Ресурсы в осмотре | План осмотра | единичная ссылка | NN | ||
INSP-AT-APP-034 | Ресурсы в осмотре | Ресурс исполнителя | единичная ссылка | NN | ||
Осмотр | ||||||
| INSP-AT-APP-035 | Осмотр | ID_Осмотр | UUID |
| NN | Идентификатор сущности в системе |
| INSP-AT-APP-036 | Осмотр | Заявка | ||||
| INSP-AT-APP-037 | Осмотр | Дата и время начала осмотра | Start date and time | datetime | hh:mm:ss dd.mm.yyyy | NN | |
| INSP-AT-APP-038 | Осмотр | Дата и время завершения осмотра | End date and time | datetime | hh:mm:ss dd.mm.yyyy | NN | |
| INSP-AT-APP-039 | Осмотр | Продолжительность | Duration | time | hh:mm:ss | NN | |
INSP-AT-APP-057 | Осмотр | Метод осмотра | Inspection method | string |
| NN | |
| INSP-AT-APP-040 | Осмотр | Место, координаты | Place of inspection | NN | |||
| INSP-AT-APP-041 | Осмотр | Глубина, м | Depth, m | float |
| NN | |
| INSP-AT-APP-042 | Осмотр | Температура воздуха, С | Water temperature | float |
| NN | |
| INSP-AT-APP-043 | Осмотр | Температура воды, С | Air temperature | float |
| NN | |
| INSP-AT-APP-044 | Осмотр | Течение, уз | Current, knots | float |
| NN | |
| INSP-AT-APP-045 | Осмотр | Высота волны мин, м | Wave Height min, m | float |
| NN | |
| INSP-AT-APP-046 | Осмотр | Высота волны макс, м | Wave Height max, m | float |
| NN | |
| INSP-AT-APP-047 | Осмотр | Скорость ветра мин, м/с | Wind Speed min, m/s | float |
| NN | |
| INSP-AT-APP-048 | Осмотр | Скорость ветра макс, м/с | Wind Speed max, m/s | float |
| NN | |
| INSP-AT-APP-049 | Осмотр | Видимость, м | Underwater Visibility | float |
| NN | |
INSP-AT-APP-061 | Осмотр | Расстояние, с которого производился осмотр ТНПА💬 | float |
| NN | |
INSP-AT-APP-058 | Осмотр | Площадь осматриваемой поверхности | float |
| NN | |
INSP-AT-APP-059 | Осмотр | Средняя скорость движения под водой | float |
| NN | |
INSP-AT-APP-060 | Осмотр | Количество произведенных галсов | int |
| NN | |
| INSP-AT-APP-050 | Осмотр | Результат | string enum | NN | ||
INSP-AT-APP-054 | Осмотр | Дополнительно | string |
| - | |
INSP-AT-APP-055 | Осмотр | Файл с маршрутом осмотра судна |
| - | ||
INSP-AT-APP-056 | Осмотр | Файл видеофиксации осмотра |
| - | ||
INSP-AT-APP-065 | Осмотр | Дата и время создания | datetime | dd.mm.yyyy hh:mm | NN | Автоматически, в момент создания записи |
INSP-AT-APP-066 | Осмотр | Дата и время изменения | datetime | dd.mm.yyyy hh:mm | - | Автоматически, в момент изменения записи |
INSP-AT-APP-067 | Осмотр | Создатель | единичная ссылка | NN | ||
INSP-AT-APP-068 | Осмотр | Автор изменений | единичная ссылка | - | ||
Пользователи
| Идентификатор | Сущность | Атрибут | Тип данных | Контроли | Not Null | Описание |
|---|---|---|---|---|---|---|
Пользователь | ||||||
INSP-AT-USR-001 | Пользователь | ID_Пользователь | UUID | Уникальное значение | NN | Идентификатор сущности в системе |
| INSP-AT-USR-002 | Пользователь | Роль пользователя | string enum |
| NN | Пользователь может иметь только одну роль. |
| INSP-AT-USR-003 | Пользователь | Дата регистрации | datetime | dd.mm.yyyy hh:mm:ss | NN | |
| INSP-AT-USR-004 | Пользователь | Статус | string enum |
| NN | см. статусная модель "Пользователь" |
| INSP-AT-USR-005 | Пользователь | Фамилия | string |
| NN | |
| INSP-AT-USR-006 | Пользователь | Имя | string |
| NN | |
| INSP-AT-USR-007 | Пользователь | Отчество | string |
| - | |
| INSP-AT-USR-008 | Пользователь | Логин (e-mail)💬 | string |
| NN | Логин в системе - почта пользователя, которая была указана при регистрации |
| INSP-AT-USR-009 | Пользователь | Пароль💬 | string |
| NN | В БД должен храниться хэш пароля (bcrypt/argon2 и т.п.), а не пароль в открытом виде. |
| INSP-AT-USR-010 | Пользователь | Номер телефона | string |
| NN | |
INSP-AT-USR-017 | Пользователь | Дата и время создания | datetime | dd.mm.yyyy hh:mm | NN | Автоматически, в момент создания записи |
INSP-AT-RSR-008 | Пользователь | Дата и время изменения | datetime | dd.mm.yyyy hh:mm | - | Автоматически, в момент изменения записи |
Верификация в системе | ||||||
| INSP-AT-USR-011 | Верификация | ID_Приглашение | UUID | Уникальное значение | NN | Идентификатор сущности в системе |
| INSP-AT-USR-012 | Верификация | Пользователь | единичная ссылка | NN | ||
| INSP-AT-USR-013 | Верификация | Ссылка | string | Уникальное значение | NN | Уникальная ссылка для верификации нового пользователя в систему, отправляется на почту. После перехода через нее пользователь подтверждает регистрацию |
| INSP-AT-USR-014 | Верификация | Дата и время создания ссылки | datetime | dd.mm.yyyy hh:mm:ss | NN | |
| INSP-AT-USR-015 | Верификация | Срок жизни ссылки | datetime | Дата и время создания + 24 часа | NN | Ссылка действует 24 часа с момента создания💬 |
INSP-AT-USR-016 | Верификация | Использована | bool |
| NN | 💬 |
Реестр Исполнителей
| Идентификатор | Сущность | Атрибут | Тип данных | Контроли | Not Null | Описание |
|---|---|---|---|---|---|---|
Исполнитель | ||||||
INSP-AT-CNTR-001 | Исполнитель | ID_Исполнитель | UUID | Уникальное значение | NN | Идентификатор сущности в системе |
| INSP-AT-CNTR-002 | Исполнитель | Пользователь | множественная ссылка | NN | В системе может быть несколько представителей одной организации Исполнителя.💬 Каждый представитель зарегистрирован под уникальным пользователем. За рамками MVP - переключение пользовательских аккаунтов между Исполнителями/Агентами | |
| INSP-AT-CNTR-003 | Исполнитель | Вид лица | string enum |
| NN | |
| INSP-AT-CNTR-004 | Исполнитель | Наименование (рус) | string |
| NN | наименование юридического лица / индивидуального предпринимателя |
INSP-AT-CNTR-014 | Исполнитель | Name (eng) | string |
| NN | наименование юридического лица / индивидуального предпринимателя на английском языке |
INSP-AT-CNTR-005 | Исполнитель | ИНН | Tax ID (INN)💬 | string |
| NN | |
INSP-AT-CNTR-006 | Исполнитель | ОГРН | State Registration Number (OGRN)💬 | string |
| NN | |
INSP-AT-CNTR-007 | Исполнитель | Телефон | string |
| NN | |
INSP-AT-CNTR-008 | Исполнитель | Эл. почта | string |
| NN | e-mail Пользователя с ролью Исполнителя и e-mail Исполнителя могут быть как одинаковыми, так и разными. Это не уникальный параметр в системе |
INSP-AT-CNTR-009 | Исполнитель | Ресурсы | множественная ссылка | |||
INSP-AT-CNTR-015 | Исполнитель | Дата и время создания | datetime | dd.mm.yyyy hh:mm | NN | Автоматически, в момент создания записи |
INSP-AT-CNTR-016 | Исполнитель | Дата и время изменения | datetime | dd.mm.yyyy hh:mm | - | Автоматически, в момент изменения записи |
INSP-AT-CNTR-017 | Исполнитель | Создатель | единичная ссылка | NN | ||
INSP-AT-CNTR-018 | Исполнитель | Автор изменений | единичная ссылка | - | ||
Ресурс Исполнителя | ||||||
INSP-AT-CNTR-010 | Ресурсы исполнителя | ID_Ресурс_Исполнителя | UUID | Уникальное значение | NN | Идентификатор сущности в системе |
INSP-AT-CNTR-019 | Ресурсы исполнителя | Исполнитель | единичная ссылка | NN | ||
INSP-AT-CNTR-011 | Ресурсы исполнителя | Тип ресурса | единичная ссылка | NN | в MVP три типа ресурса:
| |
INSP-AT-CNTR-012 | Ресурсы исполнителя | Характеристики | множественная ссылка | NN | в MVP три типа ресурса, со следующими атрибутивными характеристиками:
| |
Характеристика | ||||||
INSP-AT-CNTR-020 | Характеристика | ID_Ресурс_Исполнителя | UUID | Уникальное значение | NN | Идентификатор сущности в системе |
INSP-AT-CNTR-021 | Характеристика | Атрибут характеристики | единичная ссылка | NN |
| |
INSP-AT-CNTR-022 | Характеристика | Значение | string | Значение по типу данных атрибута INSP-AT-RSR-004 | - |
|
Реестр Агентов
| Идентификатор | Сущность | Атрибут | Тип данных | Контроли | Not Null | Описание |
|---|---|---|---|---|---|---|
Агент- Данные компании Агента, который осуществляет сбор заявок с физических и других лиц | ||||||
INSP-AT-AGNT-001 | Агент | ID_Агент | UUID | Уникальное значение | NN | Идентификатор сущности в системе |
INSP-AT-AGNT-002 | Агент | Пользователь | множественная ссылка | NN | В системе может быть несколько представителей одной организации Агента. Каждый представитель зарегистрирован под уникальным пользователем. | |
INSP-AT-AGNT-003 | Агент | Вид лица | string enum |
| NN | |
INSP-AT-AGNT-004 | Агент | Наименование (рус) | string |
| NN | наименование юридического лица / индивидуального предпринимателя |
INSP-AT-AGNT-008 | Агент | Name (eng) | string |
| NN | наименование юридического лица / индивидуального предпринимателя на английском языке |
INSP-AT-AGNT-005 | Агент | ИНН | string |
| NN | |
| INSP-AT-AGNT-006 | Агент | Телефон | string |
| - | |
INSP-AT-AGNT-007 | Агент | Эл. почта | string |
| - | e-mail Пользователя с ролью Агента и e-mail Агента могут быть как одинаковыми, так и разными. Это не уникальный параметр в системе |
INSP-AT-AGNT-009 | Агент | Дата и время создания | datetime | dd.mm.yyyy hh:mm | NN | Автоматически, в момент создания записи |
INSP-AT-AGNT-010 | Агент | Дата и время изменения | datetime | dd.mm.yyyy hh:mm | - | Автоматически, в момент изменения записи |
INSP-AT-AGNT-011 | Агент | Создатель | единичная ссылка | NN | ||
INSP-AT-AGNT-012 | Агент | Автор изменений | единичная ссылка | - | ||
Уведомления
| Идентификатор | Сущность | Атрибут | Тип данных | Контроли | Not Null | Описание |
|---|---|---|---|---|---|---|
Уведомление | ||||||
INSP-AT-NTF-001 | Уведомление | ID_Уведомление | UUID | Уникальное значение | NN | Идентификатор сущности в системе |
INSP-AT-NTF-002 | Уведомление | Заявка | единичная ссылка | NN | ||
INSP-AT-NTF-004 | Уведомление | Дата и время создания | datetime | dd.mm.yyyy hh:mm | NN | |
INSP-AT-NTF-005 | Уведомление | Текст | string |
| NN | |
Уведомление-Получатель | ||||||
INSP-AT-NTF-007 | Уведомление-получатель | ID_Уведомление-получатель | UUID | Уникальное значение | NN | Идентификатор сущности в системе |
INSP-AT-NTF-008 | Уведомление-получатель | Уведомление | единичная ссылка | NN | ||
INSP-AT-NTF-009 | Уведомление-получатель | Получатель | единичная ссылка | NN | ||
INSP-AT-NTF-006 | Уведомление-получатель | Статус | string enum |
| NN | |
INSP-AT-NTF-011 | Уведомление-получатель | Дата и время прочтения | datetime | dd.mm.yyyy hh:mm | NN | |
Файлы, комментарии
| Идентификатор | Сущность | Атрибут | Тип данных | Контроли | Not Null | Описание |
|---|---|---|---|---|---|---|
Комментарий | ||||||
INSP-AT-COM-001 | Комментарий | ID_Комментарий | UUID | Уникальное значение | NN | Идентификатор сущности в системе |
INSP-AT-COM-002 | Комментарий | Заявка | единичная ссылка | NN | ||
INSP-AT-COM-003 | Комментарий | Автор | единичная ссылка | NN | Связь с пользователем, создавшим комментарий | |
INSP-AT-COM-004 | Комментарий | Дата и время создания | datetime | dd.mm.yyyy hh:mm | NN | |
INSP-AT-COM-005 | Комментарий | Текст | string |
| NN | |
Файлы | ||||||
INSP-AT-FILE-001 | Файл | ID_Файл | UUID | Уникальное значение | NN | Идентификатор сущности в системе |
INSP-AT-FILE-002 | Файл | Название | string |
| NN | |
INSP-AT-FILE-003 | Файл | Формат💬 | string | В рамках MVP любые форматы файлов допустимы | NN | |
INSP-AT-FILE-007 | Файл | Объем | float |
| NN | Вес файла в Мб |
INSP-AT-FILE-004 | Файл | Заявка | единичная ссылка | NN | ||
INSP-AT-FILE-005 | Файл | Автор | единичная ссылка | NN | ||
INSP-AT-FILE-006 | Файл | Дата и время создания | datetime | dd.mm.yyyy hh:mm | NN | |
Комментарии (103) · по состоянию на 2026-09-18
К фрагментам текста
[Ревью] Критично: тип данных ИНН указан как int. ИНН/ОГРН могут начинаться с 0 и не участвуют в арифметике — хранение как integer приведёт к потере ведущих нулей. Нужно использовать string/varchar с контролем длины и что это только цифры.
добавила
[Ревью] Решено, спасибо — тип данных ИНН исправлен на string.
[Ревью] РЕШЕНО — можно удалить. Тип ИНН исправлен на string, потеря ведущих нулей больше не грозит.
[Ревью] Критично: та же проблема, что и с ИНН — тип int вместо строки. ОГРН должен храниться как string (13 или 15 цифр), иначе возможна потеря ведущих нулей и некорректная валидация длины.
добавила
[Ревью] Уточнение внесено, но остался вопрос: тип исправлен на string, спасибо. Однако контроль указывает только «15 символов» — у юрлиц ОГРН обычно 13 знаков, у ИП (ОГРНИП) 15 знаков. Стоит уточнить допустимую длину (13 или 15) в зависимости от вида лица.
[Ревью] Решено, спасибо — контроль ОГРН теперь корректно указывает «13 или 15 символов», что покрывает и юрлица (13 знаков), и ИП/ОГРНИП (15 знаков).
[Ревью] РЕШЕНО — можно удалить. ОГРН теперь string с контролем «13 или 15 символов», покрывает юрлица и ИП/ОГРНИП.
[Ревью] Критично: тип int при контроле «7 символов, только цифры» — та же проблема потери ведущих нулей. ИМО должен храниться как string/char(7).
добавила
[Ревью] Решено, спасибо — тип данных ИМО исправлен на string.
[Ревью] РЕШЕНО — можно удалить. Тип ИМО исправлен на string, ведущие нули сохраняются.
[Ревью] Критично: для поля Логин не указано «Уникальное значение» в контролях, в отличие от ID-полей и других уникальных атрибутов (например, Наименование судна). Без явного unique constraint возможны дублирующиеся аккаунты с одинаковым логином/email.
[Ревью] Решено, спасибо — в контролях поля «Логин (e-mail)» добавлено «Уникальное значение».
[Ревью] РЕШЕНО — можно удалить. В контроли поля «Логин (e-mail)» добавлено «Уникальное значение».
[Ревью] Критично: не указано, что в БД должен храниться хэш пароля (bcrypt/argon2 и т.п.), а не пароль в открытом виде. Контроли описывают только требования к сложности пароля при вводе, но не формат хранения — критично для безопасности.
добавила
[Ревью] Решено, спасибо — добавлено явное требование хранить в БД хэш пароля (bcrypt/argon2 и т.п.), а не пароль в открытом виде.
[Ревью] РЕШЕНО — можно удалить. Добавлено явное требование хранить хэш пароля, а не открытый текст.
[Ревью] Критично: у поля «Значение» не указан тип данных (пусто), хотя связанный атрибут ресурса может быть типа «Целое число», «Вещественное число» или «Текст». Без указания типа/стратегии хранения (единая text-колонка с приведением типов на уровне приложения, либо отдельные типизированные колонки) невозможно спроектировать таблицу.
[Ревью] Пока актуально: поле «Значение» (фактическое значение атрибута ресурса) в текущей версии словаря не найдено вовсе — в разделах «Атрибуты ресурса» и «Ресурс Исполнителя» остались только ссылка на Атрибут (наименование + тип данных на уровне справочника), но не видно, где и как хранится конкретное значение атрибута для конкретного Ресурса Исполнителя. Уточните, пожалуйста, структуру хранения значений.
[Ревью] Решено, спасибо — поле «Значение» восстановлено в сущности «Характеристика» (DEFINITIONINSP-AT-CNTR-022, тип string, с контролем «Значение по типу данных атрибута»). Теперь понятно, где хранится фактическое значение атрибута ресурса.
[Ревью] РЕШЕНО — можно удалить. Поле «Значение» восстановлено в сущности «Характеристика» с типом string и описанием связи с типом данных атрибута.
[Ревью] Критично: у поля полностью пустые Тип данных, Контроли и Not Null — невозможно спроектировать колонку в БД без этих данных. Нужно заполнить (вероятно float, аналогично другим числовым атрибутам Осмотра).
добавила
[Ревью] Решено, спасибо — Тип данных (float), Контроли и Not Null для поля «Расстояние, с которого производился осмотр ТНПА» заполнены.
[Ревью] РЕШЕНО — можно удалить. Тип данных (float), контроли и Not Null для поля заполнены.
[Ревью] Критично: связь жёстко указана только на Заявку (LinkLINKINSP-AT-APP-001), хотя функционально комментарии могут требоваться и к другим объектам (Судно, Осмотр и т.п.). Если предполагается полиморфная связь «Комментарий» к разным сущностям — текущая формулировка вводит в заблуждение и не позволяет корректно спроектировать внешний ключ/полиморфную ассоциацию.
[Ревью] Пока актуально: связь Комментария по-прежнему указана только на Заявку (LinkLINKINSP-AT-APP-001), изменений не внесено. Если полиморфная привязка к другим сущностям не планируется — можно закрыть вопрос явным уточнением в описании поля, что это осознанное ограничение MVP.
[Ревью] Решено, спасибо — согласно новой странице «Список допущений/решений принятых для реализации MVP» (модуль «Комментарии»): создание комментариев к Заявке в MVP происходит только в момент изменения заявки, самостоятельный раздел комментариев к другим сущностям не предусмотрен. Жёсткая связь Комментарий→Заявка теперь явно обоснована как осознанное ограничение MVP, вопрос закрыт.
[Ревью] РЕШЕНО — можно удалить. Жёсткая связь Комментарий→Заявка подтверждена как осознанное решение MVP.
[Ревью] Критично: значение enum для поля «Страна» — плейсхолдер «<список стран (рус)> | <список стран (eng)>», реальный перечень стран не заполнен. Без готового списка невозможно создать справочник/enum-тип в БД.
добавила
[Ревью] Решено, спасибо — добавлен полный список стран для enum «Страна».
[Ревью] РЕШЕНО — можно удалить. Полный список стран добавлен в enum «Страна».
[Ревью] Критично: аналогично полю «Страна» у Порта — значение enum для «Флаг» судна оставлено как плейсхолдер «<список стран (рус)> | <список стран (eng)>», реальный список стран/флагов не заполнен.
добавила
[Ревью] Решено, спасибо — добавлен полный список стран/флагов для enum «Флаг».
[Ревью] РЕШЕНО — можно удалить. Полный список стран/флагов добавлен в enum «Флаг».
[Ревью] Критично: условная обязательность поля «Исполнитель» («обязательно в статусах заявки…») не выразима обычным NOT NULL на уровне колонки СУБД. Нужно явно указать способ реализации ограничения — CHECK constraint, триггер или проверка на уровне бизнес-логики приложения, иначе агент либо поставит NOT NULL (что сломает создание заявки в других статусах), либо оставит поле нерегулируемым.
добавила поясненние
[Ревью] Уточнение внесено, но остался вопрос: добавлено пояснение и обозначение «CH» в колонке Not Null для поля «Исполнитель» — спасибо. Но сама легенда («Обозначение для полей таблиц» на странице 4 Требование к данным) описывает только NN (Да/Нет), а «CH» там не определён. Стоит добавить это обозначение в общую легенду, чтобы оно было понятно вне контекста конкретной строки.
[Ревью] Решено, спасибо — обозначение «CH (CHECK constraint) - Условия, при которых атрибут будет обязательным (NN)» добавлено в общую легенду на странице «4 Требование к данным».
[Ревью] РЕШЕНО — можно удалить. Обозначение CH (CHECK constraint) добавлено в общую легенду на странице «4 Требование к данным».
[Ревью] Критично: «Получатель» — множественная ссылка на нескольких пользователей, а «Статус» (Новое/Прочитано) — единичное значение на всю запись уведомления. Невозможно отследить, кто именно из получателей прочитал уведомление. Нужен отдельный объект-связка «Уведомление-Получатель» со своим статусом прочтения на каждого получателя.
[Ревью] Решено, спасибо — выделена отдельная сущность «Уведомление-Получатель» с индивидуальным статусом и датой прочтения на каждого получателя. Это полностью закрывает вопрос.
[Ревью] РЕШЕНО — можно удалить. Выделена отдельная сущность «Уведомление-Получатель» с индивидуальным статусом прочтения.
[Ревью] Желательно: связь «Исполнитель — Пользователь» описана как множественная ссылка (один Исполнитель — несколько Пользователей), но не указано явно, может ли один Пользователь относиться к нескольким организациям-Исполнителям (M:N), и нет отдельной сущности-связки для такого случая. Аналогичный вопрос для связи Агент-Пользователь. Стоит явно зафиксировать кардинальность связи.
Нет, в рамках MVP мы не допускаем такого кейса
[Ревью] Решено, спасибо — зафиксировано, что в рамках MVP один Пользователь не может относиться к нескольким организациям Исполнителя/Агента одновременно, кардинальность связи уточнена.
[Ревью] РЕШЕНО — можно удалить. Кардинальность связи Пользователь-Исполнитель/Агент зафиксирована как 1:1 в рамках MVP.
[Ревью] Желательно: указан срок жизни ссылки подтверждения (24 часа), но нет флага «использована» (is_used/used_at), предотвращающего повторное использование ещё не истёкшей ссылки верификации.
добавила
[Ревью] Решено, спасибо — добавлен флаг «Использована» для ссылки верификации.
[Ревью] РЕШЕНО — можно удалить. Добавлен флаг «Использована» для ссылки верификации.
[Ревью] Желательно: enum «Результат» осмотра содержит только 2 значения («посторонних объектов не обнаружено» / «обнаружены посторонние объекты»), нет значений для «не завершён», «отменён», «требуется повторный осмотр» и т.п. — стоит расширить перечень для отражения реальных исходов осмотра.
В данном контексте возможны только эти варианты
[Ревью] Решено, спасибо — зафиксировано, что в данном контексте предусмотрены только эти два значения результата осмотра, это осознанное решение.
[Ревью] РЕШЕНО — можно удалить. Ограниченный список из двух значений результата подтверждён как осознанное решение.
[Ревью] Критично: тип данных string enum, но допустимые значения формата файла нигде не перечислены (ячейка Контроли пустая) — невозможно сгенерировать CHECK-constraint/enum на уровне БД без списка значений.
добавила
[Ревью] Уточнение внесено, но остался вопрос: контроли теперь говорят «В рамках MVP любые форматы файлов допустимы», спасибо за уточнение. Но тип данных по-прежнему указан как «string enum» без единого допустимого значения — если ограничений по формату нет, логичнее изменить тип на обычный string (без enum), чтобы не вводить агента в заблуждение при генерации схемы/constraint.
[Ревью] Решено, спасибо — тип поля «Формат» изменён с «string enum» на обычный «string», что теперь согласуется с описанием «В рамках MVP любые форматы файлов допустимы». Противоречия больше нет.
[Ревью] Решено, спасибо — тип поля «Формат» изменён с «string enum» на обычный «string», что теперь согласуется с описанием «В рамках MVP любые форматы файлов допустимы». Противоречия больше нет.
[Ревью] РЕШЕНО — можно удалить. Тип поля «Формат» изменён с string enum на обычный string, согласуется с описанием «любые форматы допустимы».
Астрахань?)
К странице
[Ревью] Критично (сущность «Файл», поле «Заявка», DEFINITIONINSP-AT-FILE-004): связь жёстко привязана только к Заявке, при этом у «Осмотра» отдельные файловые атрибуты (Файл с маршрутом осмотра судна — CSV, Файл видеофиксации осмотра — MP4) вне общей сущности «Файл» (DEFINITIONINSP-AT-APP-055, 056). Это дублирование/противоречие модели хранения файлов — нужно решить, единая ли это сущность «Файл» с полиморфной связью к разным объектам, или разные механизмы хранения файлов для разных случаев.
Это в обоих случаях файл, прикрепляемый к заявке. Просто в случае с результатами осмотра, просим пользователя явно приложить определенный файл
[Ревью] Решено, спасибо за пояснение — понятно, что в обоих случаях (осмотр и заявка) используется единая сущность «Файл», привязанная к Заявке, а файлы результатов осмотра — частный случай с явным запросом конкретного файла у пользователя.
[Ревью] Критично (сущность «Осмотр», поле «Заявка», DEFINITIONINSP-AT-APP-036): «Осмотр» связан только с «Заявкой» напрямую, а не с конкретным «Планом осмотра» (DEFINITIONINSP-AT-APP-021) или исполнявшим «Ресурсом в осмотре» (DEFINITIONINSP-AT-APP-032). При нескольких планах/попытках осмотра по одной заявке неясно, к какому именно плану/исполнению относится конкретный Осмотр. (Желательно.)
План у заявки только один, поэтому и связь такая
[Ревью] Решено, спасибо за пояснение — так как у Заявки в рамках MVP только один План осмотра, прямая связь Осмотр-Заявка обоснована и неоднозначности не возникает.
[Ревью] Критично (сущность «Типы ресурсов» / «Ресурс Исполнителя», поле «Тип» ресурса «Оборудование», описано текстом в примечаниях к DEFINITIONINSP-AT-RSR-002 и DEFINITIONINSP-AT-CNTR-012 как «Тип: string enum»): нигде не перечислены допустимые значения enum типов оборудования — без списка невозможно сгенерировать constraint/справочник значений.
В разделе Состав справочника типов ресурсов для MVP явно указан состав данного справочника со всеми атрибутами
[Ревью] Решено, спасибо — состав типов ресурсов, включая допустимые значения для Оборудования, вынесен на отдельную страницу «Состав справочника типов ресурсов для MVP», вопрос закрыт.
[Ревью] Критично: персональные данные (ФИО, e-mail, телефон и т.п. — поля Фамилия/Имя/Отчество, Логин (e-mail), Номер телефона, Контактное лицо, Капитан судна (Ф.И.О.) и др. у сущностей Пользователь, Заказчик, Судно) нигде в словаре не помечены как ПДн, нет ссылки на требования 152-ФЗ «О персональных данных». Без явной пометки AI-агент не учтёт необходимость шифрования, маскирования и особого режима обработки ПДн при проектировании БД и API.
добавила
[Ревью] Уточнение внесено, но остался вопрос: пометки «ПДн» добавлены к соответствующим полям (ФИО, e-mail, телефон и т.д.) — спасибо, это существенно. Явной ссылки на требования 152-ФЗ (и, например, указания на необходимость шифрования/маскирования при хранении и передаче) в тексте по-прежнему нет — стоит рассмотреть добавление хотя бы краткой сноски со ссылкой на закон и общие требования к обработке ПДн.
[Ревью] Критично: аудит-поля (дата/автор создания, дата/автор изменения) присутствуют только у части сущностей — явно есть у Судна (Дата создания/изменения), частично у Заявки/Плана осмотра/Комментария/Файла (только дата и/или автор создания), но полностью отсутствуют у Порта, Причала, Стоянки, Заказчика, Исполнителя, Агента, Осмотра, Ресурса Исполнителя, Уведомления и др. Несогласованная модель аудита усложнит генерацию миграций и не позволит вести единообразный аудит изменений во всей системе.
добавила
[Ревью] Уточнение внесено, но остался вопрос: аудит-поля (дата/автор создания и изменения) добавлены для Порта, Причала, Стоянки, Судна, Заявки, Плана осмотра, Осмотра, Исполнителя и Агента — большое спасибо, модель стала гораздо согласованнее. Однако у Заказчика, Уведомления, Уведомления-Получателя, Ресурса Исполнителя, Комментария и Файла аудит-поля по-прежнему отсутствуют или неполные (например, только дата создания без автора и без даты/автора изменения). Стоит решить, нужны ли они и там для единообразия.
[Ревью] Критично: ни для одной сущности не указан признак логического удаления (soft-delete, например is_deleted/deleted_at). Без явного решения AI-агент либо реализует физическое удаление (hard delete) записей, что приведёт к потере истории осмотров, заявок и связанных данных, либо примет своё несогласованное архитектурное решение.
В рамках MVP вообще не реализуем никакое удаление никакой сущности
[Ревью] Решено, спасибо — зафиксировано, что в рамках MVP удаление сущностей вообще не реализуется, вопрос soft-delete снимается сам собой.
[Ревью] Критично: не ясно, как должна быть реализована модель ресурсов — как EAV (через сущности «Типы ресурсов» / «Атрибуты ресурса» / «Ресурс Исполнителя» со связью Атрибут-Значение), или как fixed-schema через отдельные таблицы Персонал/Судно/Оборудование с типизированными колонками (как неформально описано текстом в примечаниях к атрибуту «Наименование» сущности «Типы ресурсов», DEFINITIONINSP-AT-RSR-002). Это ключевая архитектурная развилка при проектировании БД, и её нужно явно зафиксировать.
Реализовывать ее нужно через отдельные сущности, для будущего развития - добавления новых типов со своими уникальными атрибутами
[Ревью] Уточнение внесено, но остался вопрос: спасибо за пояснение о выборе в пользу отдельных сущностей на тип ресурса (для удобства добавления новых типов в будущем). При этом в самом словаре данных структура («Типы ресурсов» / «Атрибуты ресурса» / «Ресурс Исполнителя» с множественной ссылкой на «Атрибут») по-прежнему выглядит как EAV-подход, а не как отдельные типизированные таблицы Персонал/Судно/Оборудование с фиксированными колонками. Стоит либо обновить словарь под выбранный архитектурный подход, либо явно описать, как текущая EAV-подобная схема согласуется с решением.
[Ревью] Критично: полные перечни значений статусов (Порт, Судно, Заявка, Пользователь и др.) даны гиперссылками на страницы статусных моделей в ДРУГОМ пространстве Confluence (ASUSPF: wiki.tazmar.com/spaces/ASUSPF/…), а не в текущем INS (wiki.tazmar.ru). Если у AI-агента/интегратора нет доступа к пространству ASUSPF, он не получит актуальный список значений enum статусов и не сможет корректно спроектировать constraint/справочник статусов.
Заменила, проверь еще раз, чтобы не было ссылок на ASUSPF
[Ревью] Пока актуально: в тексте всё ещё есть ссылки на пространство ASUSPF (wiki.tazmar.com/spaces/ASUSPF/…) для статусных моделей Порта, Судна, Заявки и Пользователя — например, DEFINITIONINSP-AT-PRT-003, VSS-005, APP-004, USR-004. Похоже, замена на пространство INS не сохранилась в этой версии страницы, стоит проверить ещё раз перед сохранением.
[Ревью] Желательно (сущности «Причал» и «Стоянка»): в отличие от Порта и Судна, у сущностей «Причал» и «Стоянка» нет атрибута «Статус» (Active/Inactive). Стоит уточнить, требуется ли управление активностью причалов/стоянок независимо от родительского порта.
Пока не требуется
[Ревью] Решено, спасибо — зафиксировано, что статус (Active/Inactive) для Причала/Стоянки пока не требуется.
[Ревью] Желательно (сущность «Заказчик»): у сущности «Заказчик» нет полей ИНН/ОГРН и статуса активности, хотя у Исполнителя и Агента (тоже юридические лица/ИП) эти поля есть. Стоит уточнить, требуются ли эти атрибуты и для Заказчика.
Пока не требуется
[Ревью] Решено, спасибо — зафиксировано, что ИНН/ОГРН/статус для Заказчика пока не требуются.
[Ревью] Желательно: точность числовых полей типа float (Длина, Ширина, Осадка, Глубина, температура, течение, высота волны, скорость ветра, видимость и т.д.) указана текстом («до 2 знаков после точки», «до 3 знаков перед точкой»), но нет явного маппинга на SQL-тип, например NUMERIC(5,2). Стоит явно зафиксировать SQL-тип для каждого диапазона значений, чтобы избежать несогласованного выбора точности агентом.
Тут необходимо принимать решение именно в момент проектирования БД
[Ревью] Решено, спасибо — зафиксировано, что точный SQL-тип (например NUMERIC(p,s)) для числовых полей будет определяться на этапе проектирования БД.
[Ревью] Желательно (поле «Координаты» у Порта DEFINITIONINSP-AT-PRT-004, Причала DEFINITIONINSP-AT-PRT-008, Стоянки DEFINITIONINSP-AT-PRT-012): тип string, «до 250 символов, любые символы» — без указания формата (WGS84 decimal, DMS и т.п.) и валидации диапазона значений (широта/долгота). Стоит уточнить формат и добавить контроль корректности значений координат.
В данный момент это просто текстовое поле
[Ревью] Решено, спасибо — зафиксировано, что на данный момент «Координаты» это простое текстовое поле без строгого формата/валидации, это осознанное решение для MVP.