Исходник PlantUML
@startuml
package Управление_пользователями {
class Пользователь < Пользователи > {
- ID_Пользователь: UUID NN
- Роль: ID_Роль NN
- Дата регистрации: datime NN
- Статуc: string enum NN
- Фамилия: string NN
- Имя: string NN
- Отчество: string
- Логин: string NN
- Пароль: string NN
- Номер телефона: string NN
}
class Верификация < Пользователи > {
- ID_Верификация: UUID NN
- Пользователь: ID_Пользователь NN
- Ссылка: string NN
- Дата и время создания ссылки: datetime NN
- Срок жизни ссылки: datetime NN
}
class Роль < Пользователи > {
- ID_Пользователь: UUD NN
- Наименование: string NN
-- Права роли --
}
class Заявка_на_проверку_СБ < Пользователи > {
- ID_Заявка: UUID NN
- Пользователь: ID_Пользователь NN
- Статус: string enum NN
--Характеристики--
}
}
package Реестр_Исполнителей {
class Исполнитель < > {
- ID_Исполнитель: UUID NN
- Пользователь: ID_Пользователь NN
- Вид лица: string enum NN
- Наименование: string NN
- ИНН: int
- ОГРН: int
- Телефон: string
- Эл. почта: string
--Характеристики--
}
class Ресурс_Исполнителя < > {
- ID_Ресурс_Исполнителя: UUID NN
- Исполнитель: ID_Исполнитель
- Тип ресурса: ID_Тип_ресурса NN
- Характеристики: ID_Атрибуты_ресурса NN
}
class Характеристика < > {
- ID_Характеристика: UUID NN
- Атрибут характеристики: ID_Атрибуты_ресурсов NN
- Значение: string NN
}
}
package Реестр_Агентов {
class Агент < Пользователи > {
- ID_Агент: UUID NN
- Пользователь: ID_Пользователь NN
- Вид лица: string enum NN
- Наименование: string NN
- ИНН: int
- Паспортные данные физ.лица: string
- Прописка физ.лица: string
- Телефон: string
- Эл. почта: string
--Характеристики--
}
}
package Справочники {
class Судно < Справочник > {
- ID_Судно: UUID NN
- Наименование: string NN
- Описание: string
- Статус: string enum NN
--Характеристики судна--
- Класс судна: string enum NN
- ФИО Капитана: string NN
- ИМО: string NN
- Флаг: string enum NN
- Длина, м: float NN
- Ширина, м: float NN
- Осадка, м: float NN
- Площадь обследования, м2: float NN
- Собственник судна: string NN
}
class Порт < Справочник > {
- ID_Порт: UUID NN
- Наименование: string NN
- Статус: string
- Страна: string enum
- Координаты: string
}
class Причал < Справочник > {
- ID_Причал: UUID NN
- Порт: ID_Порт
- Наименование: string NN
- Координаты: string
}
class Стоянка < Справочник > {
- ID_Стоянка: UUID NN
- Порт: ID_Порт
- Наименование: string NN
- Координаты: string
}
class Типы_ресурсов < Справочник > {
- ID_Типресурса: UUID NN
- Наименование: string NN
- Атрибуты: ID_Атрибуты_ресурса NN
}
class Атрибуты_ресурса < Справочник > {
- ID_Атрибуты_ресурса: UUID NN
- Название атрибута: string NN
- Тип данных: string enum
}
}
package Управление_заявками {
class Заявка < Заявки > {
- ID_Заявка: UUID NN
- Статус: string enum NN
- Агент: ID_Агент
- Заказчик: ID_Заказчик NN
- Дата и время создания: datime NN
- Автор заявки: ID_Пользователь NN
- Судно: ID_Судно
--Характеристики заявки--
- Город проведения: string enum
- Основание проведения обследования: string
- Предыдущий порт: ID_Порт NN
- Дата и время выхода из порта: date
- Следующий порт: ID_Порт NN
- Плановая дата и время захода в порт: date
}
class История_изменений_заявки < Заявки > {
- ID_История: UUID NN
- Заявка: ID_Заявка NN
- Дата и время изменений: datetime NN
- Автор изменений: ID_пользователь NN
- Статус до: string
- Статус после: string
- Слепок ДО изменений
}
class Заказчик < > {
- ID_Заказчик: UUID NN
- Наимеенование: string NN
- Контактное лицо: string NN
- Контактный телефон: string NN
- Контактный e-mail: string NN
}
class План_осмотра < > {
- ID_План: UUID NN
- Заявка: ID_Заявка NN
- Плановая дата и время начала осмотра: datetime
- Плановая дата и время завершения осмотра: datetime
- Зона проведения: ID_Стоянка
- Ресурсы: ID_Ресурса_в_осмотре NN
}
class Осмотр < > {
- ID_Осмотр: UUID NN
- Заявка: ID_Заявка NN
- Дата и время начала: datetime NN
- Дата и время завершения: datetime NN
- Продолжительность чч-мм: time NN
- Место проведения: ID_локация
- Глубина, м: float NN
- Температура воздуха, С: int NN
- Температура воды, С: int NN
- Течение, уз: float NN
- Высота волны мин, м: float NN
- Высота волны макс, м: float NN
- Скорость ветра мин, м/с: float NN
- Скорость ветра макс, м/с: float NN
- Видимосто, м: float NN
- Результат: string enum
}
class Ресурсы_в_осмотре < > {
- ID_Ресурса_в_осмотре: UUID NN
- План: ID_План
- Ресурс: ID_Ресурс_Исполнителя
}
class Комментарий < > {
- ID_Комментарий: UUID NN
- Заявка: ID_Заявка NN
- Автор: ID_Пользователь NN
- Текст: string NN
- Дата и время создания: datetime NN
}
class Файл < > {
- ID_Файл: UUID NN
- Название: string NN
- Формат: string NN
- Заявка: ID_Заявка NN
- Автор: ID_Пользователь NN
- Дата и время создания: datetime NN
}
class Статистика #palegreen {
- Кол-во заявок выполненных
- Кол-во заявок отмененных
- Кол-во заявок невыполненных
- На конец месяца: date
- На конец недели: date
- На конец дня: date
}
}
package Уведомления {
class Уведомление < > {
- ID_Уведомление: UUID NN
- Заявка: ID_Заявка NN
- Текст: string NN
- Дата и время создания: datetime NN
- Получатель: ID_Пользователь NN
- Статус: string enum
}
}
Порт --{ Причал
Порт --{ Стоянка
Пользователь -- Верификация
Пользователь }-- Роль
Пользователь --{ Комментарий
Пользователь }-- Агент
Пользователь }-- Исполнитель
Пользователь }--{ Уведомление
Пользователь -- Заявка_на_проверку_СБ
Пользователь --{ История_изменений_заявки
Исполнитель --{ Ресурс_Исполнителя
Ресурс_Исполнителя --{ Характеристика
Ресурс_Исполнителя }-- Типы_ресурсов
Типы_ресурсов --{ Атрибуты_ресурса
Характеристика }-- Атрибуты_ресурса
Заявка "1..n" }-up- "1" Агент
Заявка "1..n" }-up- "1" Исполнитель
Заявка "1..n" }-- "1" Заказчик
Заявка }-- Порт
Заявка }-- Судно
Заявка --{ Файл
Заявка --{ Комментарий
Заявка --{ Уведомление
Заявка -- План_осмотра
План_осмотра --{ Ресурсы_в_осмотре
План_осмотра -- Стоянка
Ресурс_Исполнителя --{ Ресурсы_в_осмотре
Заявка -- Осмотр
Заявка --{ История_изменений_заявки
@enduml
Комментарии (2) · по состоянию на 2026-09-15
К странице
[Ревью] Критично: ERD доступна только как PNG/SVG-вложение, нет текстового представления сущностей и связей — сверить диаграмму со словарём данных программным способом невозможно, AI-агент не сможет надёжно распарсить связи из картинки. Нужна текстовая/DSL-версия схемы (например, DBML, Mermaid ER, или таблица связей) для автоматической валидации.
[Ревью] Пока актуально: страница по-прежнему содержит только PNG/SVG-вложение без текстового представления сущностей и связей. Рекомендация остаётся в силе: добавить текстовую/DSL-версию схемы (DBML, Mermaid ER или таблицу связей) для автоматической сверки со словарём данных.