|
|
@@ -0,0 +1,323 @@
|
|
|
+**МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ**
|
|
|
+**Новгородский государственный университет имени Ярослава Мудрого**
|
|
|
+**Политехнический институт**
|
|
|
+**Кафедра Информационных Технологий и Систем**
|
|
|
+
|
|
|
+ОТЧЕТ ПО ЛАБОРАТОРНОЙ РАБОТЕ №14
|
|
|
+Разработка распределенной системы обмена сообщениями реального времени (аналог Discord) Minor для кафедры Программного Обеспечения и Вычислительной Техники НовГУ
|
|
|
+Версия v0.1
|
|
|
+
|
|
|
+**Выполнили:**
|
|
|
+* Студент Ильин Д.А. группы № 3093
|
|
|
+* Студент Распопов С.И. группы № 3093
|
|
|
+
|
|
|
+Великий Новгород 2026 г.
|
|
|
+
|
|
|
+---
|
|
|
+# Аннотация
|
|
|
+
|
|
|
+В данном документе представлено подробное руководство пользователя распределенной системы обмена сообщениями реального времени **«Minor»** (версия 0.1). Система разработана для оптимизации информационного обмена на кафедре Информационных Технологий и Систем (ИТИС) НовГУ. Она представляет собой суверенный аналог коммуникационных платформ Discord и Slack, функционирующий на базе микросервисной архитектуры с использованием технологий Go, Cassandra, PostgreSQL, Redis и NATS JetStream.
|
|
|
+
|
|
|
+Руководство пользователя составлено в строгом соответствии с требованиями межгосударственного стандарта **ГОСТ 19.502-90** (Единая система программной документации. Описание применения) и регламентирует структуру, системные требования, процессы установки, тестирования и повседневной эксплуатации системы как в десктопной (веб-клиент), так и в мобильной версиях.
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+# Содержание
|
|
|
+
|
|
|
+- [1. Введение](#1-введение)
|
|
|
+ - [1.1. Область применения](#11-область-применения)
|
|
|
+ - [1.2. Краткое описание возможностей](#12-краткое-описание-возможностей)
|
|
|
+ - [1.3. Уровень подготовки пользователя](#13-уровень-подготовки-пользователя)
|
|
|
+ - [1.4. Перечень эксплуатационной документации](#14-перечень-эксплуатационной-документации)
|
|
|
+- [2. Назначение и условия применения](#2-назначение-и-условия-применения)
|
|
|
+ - [2.1. Назначение программы](#21-назначение-программы)
|
|
|
+ - [2.2. Системные требования и условия применения](#22-системные-требования-и-условия-применения)
|
|
|
+- [3. Подготовка к работе](#3-подготовка-к-работе)
|
|
|
+ - [3.1. Состав и содержание дистрибутивного носителя](#31-состав-и-содержание-дистрибутивного-носителя)
|
|
|
+ - [3.2. Порядок загрузки данных и программ](#32-порядок-загрузки-данных-и-программ)
|
|
|
+ - [3.3. Порядок проверки работоспособности](#33-порядок-проверки-работоспособности)
|
|
|
+- [4. Описание операций](#4-описание-операций)
|
|
|
+ - [4.1. Регистрация и аутентификация пользователя](#41-регистрация-и-аутентификация-пользователя)
|
|
|
+ - [4.2. Главное меню программы](#42-главное-меню-программы)
|
|
|
+ - [4.3. Управление профилем и настройки](#43-управление-профилем-и-настройки)
|
|
|
+ - [4.4. Навигация по серверам и создание каналов](#44-навигация-по-серверам-и-создание-каналов)
|
|
|
+ - [4.5. Обмен сообщениями](#45-обмен-сообщениями)
|
|
|
+ - [4.6. Завершение работы с программой](#46-завершение-работы-с-программой)
|
|
|
+- [5. Аварийные ситуации](#5-аварийные-ситуации)
|
|
|
+- [6. Рекомендации по освоению](#6-рекомендации-по-освоению)
|
|
|
+- [7. Термины и сокращения](#7-термины-и-сокращения)
|
|
|
+- [Лист регистрации изменений](#лист-регистрации-изменений)
|
|
|
+
|
|
|
+---
|
|
|
+# 1. Введение
|
|
|
+
|
|
|
+## 1.1. Область применения
|
|
|
+
|
|
|
+Распределенная информационная система реального времени **Minor** предназначена для использования на кафедре Информационных Технологий и Систем НовГУ имени Ярослава Мудрого. Основными пользователями системы являются:
|
|
|
+
|
|
|
+- Студенты бакалавриата и магистратуры, координирующие выполнение групповых проектов и лабораторных работ.
|
|
|
+- Преподавательский состав кафедры, использующий систему для проведения консультаций, выдачи заданий и контроля успеваемости.
|
|
|
+- Администраторы кафедры, управляющие распределением прав и доступом к учебным ресурсам.
|
|
|
+
|
|
|
+Программа функционирует в корпоративной сети университета с возможностью внешнего доступа через защищенные каналы связи. Внедрение Minor позволяет исключить риски потери данных в облачных зарубежных сервисах и перевести внутреннее взаимодействие на суверенную инфраструктуру.
|
|
|
+
|
|
|
+## 1.2. Краткое описание возможностей
|
|
|
+
|
|
|
+Программный продукт предоставляет пользователям следующий набор функциональных возможностей:
|
|
|
+
|
|
|
+- **Аутентификация и авторизация:** безопасный вход в систему по корпоративным учетным записям, защита сессий при помощи токенов JWT (Access и Refresh).
|
|
|
+- **Управление серверами:** организация изолированных пространств для различных академических дисциплин, курсов или проектных групп.
|
|
|
+- **Каналы коммуникации:** деление серверов на текстовые каналы (для обсуждений, публикации учебных материалов и файлов) и голосовые каналы (для проведения онлайн-семинаров и аудиосвязи в реальном времени с минимальной задержкой).
|
|
|
+- **Обмен мгновенными сообщениями:** отправка текстовой информации (длиной до 2000 символов) по протоколу WebSocket с задержкой доставки менее 100 мс.
|
|
|
+- **Профили пользователей:** кастомизация личных данных (ФИО, академическая группа, аватар) и системных настроек (звуки, уведомления, выбор темы оформления).
|
|
|
+- **Уведомления и статусы:** автоматическое отслеживание статуса присутствия участников ("В сети" / "Не в сети") и индикация непрочитанных сообщений в каналах.
|
|
|
+
|
|
|
+## 1.3. Уровень подготовки пользователя
|
|
|
+
|
|
|
+Для работы с пользовательскими интерфейсами системы Minor (веб-клиент, мобильное приложение) от пользователя не требуется специальной технической подготовки. Достаточно обладать базовыми навыками работы на персональном компьютере или смартфоне под управлением Android/iOS и уметь использовать стандартные интернет-браузеры.
|
|
|
+
|
|
|
+Для администраторов системы, осуществляющих развертывание, конфигурацию и техническую поддержку серверной части, необходим следующий уровень квалификации:
|
|
|
+
|
|
|
+- Системное администрирование операционных систем семейства Linux (Ubuntu Server).
|
|
|
+- Навыки контейнеризации приложений с использованием Docker и оркестрации через Docker Compose.
|
|
|
+- Базовые знания языков запросов SQL (для PostgreSQL) и CQL (для Apache Cassandra).
|
|
|
+- Опыт конфигурирования брокеров сообщений (NATS) и шлюзов API (Traefik).
|
|
|
+
|
|
|
+## 1.4. Перечень эксплуатационной документации
|
|
|
+
|
|
|
+В состав пакета эксплуатационной документации программного продукта Minor входят следующие документы:
|
|
|
+
|
|
|
+- **Техническое задание** ([ТЗ-Minor.docx](file:///Users/odner/Desktop/morkin/ТЗ-Minor.docx)): определяет исходные цели разработки и технические рамки.
|
|
|
+- **Спецификация требований к программному обеспечению** ([LAB7-Minor.docx](file:///Users/odner/Desktop/morkin/LAB7-Minor.docx)): детально описывает логику работы микросервисов и схемы баз данных.
|
|
|
+- **Руководство пользователя** ([LR14-Minor.docx](file:///Users/odner/Desktop/morkin/LR14-Minor.docx)): текущий документ, содержащий руководство по установке и эксплуатации.
|
|
|
+
|
|
|
+---
|
|
|
+# 2. Назначение и условия применения
|
|
|
+
|
|
|
+## 2.1. Назначение программы
|
|
|
+
|
|
|
+Программа Minor предназначена для автоматизации процессов обмена сообщениями, координации совместной проектной деятельности студентов и проведения оперативных онлайн-консультаций преподавателями в рамках образовательного процесса кафедры ИТИС НовГУ.
|
|
|
+
|
|
|
+## 2.2. Системные требования и условия применения
|
|
|
+
|
|
|
+Для стабильного функционирования серверной части распределенной системы Minor в условиях средней нагрузки (до 500 активных WebSocket-соединений одновременно) должны быть обеспечены следующие минимальные параметры окружения:
|
|
|
+
|
|
|
+**Аппаратные требования к серверу:**
|
|
|
+- **Процессор:** x86_64 или ARM64 с тактовой частотой не менее 2.5 ГГц, количество ядер — не менее 4.
|
|
|
+- **Оперативная память:** не менее 8 Гб (рекомендуется 16 Гб для стабильной работы СУБД Cassandra в Java Virtual Machine).
|
|
|
+- **Дисковая подсистема:** твердотельный накопитель SSD объемом не менее 50 Гб со скоростью чтения/записи не ниже 500 Мб/с.
|
|
|
+- **Сетевой интерфейс:** гигабитный сетевой адаптер (1 Gbps Ethernet).
|
|
|
+
|
|
|
+**Программные требования к серверу:**
|
|
|
+- **Операционная система:** Ubuntu Server 22.04 LTS или аналогичный Linux-дистрибутив (ядро версии 5.15 и выше).
|
|
|
+- **Платформа контейнеризации:** Docker Engine версии 24.0.0 и выше.
|
|
|
+- **Инструмент оркестрации:** Docker Compose v2.20.0 и выше.
|
|
|
+
|
|
|
+**Требования к клиентским устройствам:**
|
|
|
+- **Персональный компьютер:** ОС Windows 10/11, macOS 12+ или Linux; установленный браузер Google Chrome 110+, Mozilla Firefox 100+, Apple Safari 15+ с поддержкой HTML5 и WebSockets.
|
|
|
+- **Мобильное устройство:** смартфон под управлением Android 10.0+ или iOS 15.0+; стабильное подключение к сети Интернет или интрасети НовГУ (Wi-Fi/4G).
|
|
|
+
|
|
|
+---
|
|
|
+# 3. Подготовка к работе
|
|
|
+
|
|
|
+## 3.1. Состав и содержание дистрибутивного носителя
|
|
|
+
|
|
|
+Программное обеспечение Minor поставляется в виде Git-репозитория. В соответствии со структурой проекта, состав дистрибутивного пакета содержит следующие компоненты:
|
|
|
+
|
|
|
+| Путь в репозитории | Описание | Тип |
|
|
|
+| :--- | :--- | :--- |
|
|
|
+| `/backend/` | Корневая директория бэкенд-компонентов системы. | Каталог |
|
|
|
+| `/backend/services/` | Каталог микросервисов системы (`api_gateway`, `auth_service`, `chat_service`, `gateway_service`, `guild_service`, `notification_service`, `presence_service`, `sfu_service`, `signal_service`, `upload_service`, `user_service`). | Каталог |
|
|
|
+| `/backend/shared/` | Общие библиотеки (`pkg`) и protobuf-определения API (`api`). | Каталог |
|
|
|
+| `/deploy/` | Скрипты и файлы для развертывания инфраструктуры. | Каталог |
|
|
|
+| `/deploy/docker-compose.yaml` | Конфигурация Docker Compose для запуска всех сервисов и баз данных. | YAML-файл |
|
|
|
+| `/docs/` | Техническая документация проекта. | Каталог |
|
|
|
+| `/frontend/` | Исходный код клиентской веб-панели (React/Vite). | Каталог |
|
|
|
+
|
|
|
+## 3.2. Порядок загрузки данных и программ
|
|
|
+
|
|
|
+Развертывание программного продукта на сервере производится в соответствии со следующим пошаговым алгоритмом:
|
|
|
+
|
|
|
+1. **Шаг 1. Получение дистрибутива:**
|
|
|
+ Склонируйте репозиторий с исходным кодом в локальную директорию на сервере:
|
|
|
+ ```bash
|
|
|
+ git clone http://172.20.7.4:3000/minor-chat/minor.git /opt/minor
|
|
|
+ ```
|
|
|
+
|
|
|
+2. **Шаг 2. Конфигурирование системы:**
|
|
|
+ Перейдите в каталог нужного сервиса бэкенда (например, `chat_service`) и создайте рабочий файл конфигурации окружения `.env` на основе шаблона:
|
|
|
+ ```bash
|
|
|
+ cd /opt/minor/backend/services/chat_service && cp .env.example .env
|
|
|
+ ```
|
|
|
+ Отредактируйте параметры подключения к БД, секретный ключ JWT для шифрования токенов и порты.
|
|
|
+
|
|
|
+3. **Шаг 3. Подготовка баз данных:**
|
|
|
+ Перейдите в каталог развертывания `deploy`, запустите контейнеры баз данных (PostgreSQL и Cassandra) и примените файлы миграций схем данных:
|
|
|
+ ```bash
|
|
|
+ cd /opt/minor/deploy && docker-compose up -d postgres cassandra
|
|
|
+ ```
|
|
|
+ Убедитесь, что порты доступны, и выполните:
|
|
|
+ ```bash
|
|
|
+ migrate -path ../backend/services/chat_service/migrations -database "postgres://postgres:secret@localhost:5432/minor?sslmode=disable" up
|
|
|
+ ```
|
|
|
+
|
|
|
+4. **Шаг 4. Запуск всех компонентов:**
|
|
|
+ Запустите сборку образов микросервисов и разверните всю распределенную систему Minor:
|
|
|
+ ```bash
|
|
|
+ cd /opt/minor/deploy && docker-compose up --build -d
|
|
|
+ ```
|
|
|
+
|
|
|
+## 3.3. Порядок проверки работоспособности
|
|
|
+
|
|
|
+Для верификации корректности развертывания распределенной системы выполните следующие действия:
|
|
|
+
|
|
|
+1. Выполните HTTP-запрос к эндпоинту проверки состояния микросервиса авторизации:
|
|
|
+ ```bash
|
|
|
+ curl -i http://localhost:8080/api/v1/auth/health
|
|
|
+ ```
|
|
|
+ Сервер должен вернуть статус `200 OK` и JSON-тело `{"status": "healthy"}`.
|
|
|
+
|
|
|
+2. Проверьте логи шлюза API Traefik на отсутствие критических ошибок маршрутизации:
|
|
|
+ ```bash
|
|
|
+ cd /opt/minor/deploy && docker-compose logs | grep -E "(ERROR|FATAL)"
|
|
|
+ ```
|
|
|
+
|
|
|
+3. Убедитесь в активности очередей в брокере сообщений NATS JetStream, выполнив команду в контейнере:
|
|
|
+ ```bash
|
|
|
+ cd /opt/minor/deploy && docker-compose exec nats nats stream info server_messages
|
|
|
+ ```
|
|
|
+
|
|
|
+4. Откройте веб-браузер на клиентском компьютере, перейдите по настроенному доменному адресу (например, `http://minor.novsu.ru`) и убедитесь в отображении стартовой страницы авторизации.
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+# 4. Описание операций
|
|
|
+
|
|
|
+## 4.1. Регистрация и аутентификация пользователя
|
|
|
+
|
|
|
+При первом обращении к системе пользователь видит экран авторизации.
|
|
|
+
|
|
|
+- Если учетная запись еще не создана, необходимо нажать на ссылку **«Регистрация»** и ввести адрес корпоративной почты, имя пользователя и надежный пароль.
|
|
|
+- Для входа в систему введите e-mail и пароль в соответствующие поля ввода формы (Рисунок 1).
|
|
|
+- После успешной аутентификации Auth Service сгенерирует токен, который запишется в защищенные cookie браузера, и клиент будет автоматически перенаправлен на главный рабочий экран.
|
|
|
+
|
|
|
+| *Рисунок 1 – Авторизация* |
|
|
|
+| :----------------------------------------------: |
|
|
|
+|  |
|
|
|
+
|
|
|
+## 4.2. Главное меню программы
|
|
|
+
|
|
|
+Главный интерфейс Minor разделен на несколько функциональных зон (Рисунок 2):
|
|
|
+
|
|
|
+- В нижней части мобильного приложения (или в левой части веб-версии) отображаются круглые иконки доступных серверов (гильдий), а также кнопка быстрого перехода к личным сообщениям.
|
|
|
+- В центральной области выводится текущий выбранный чат.
|
|
|
+- Панель поиска сверху позволяет выполнять полнотекстовый поиск по истории личных сообщений (Рисунок 3).
|
|
|
+
|
|
|
+| *Рисунок 2 – Главный экран* | *Рисунок 3 – Поиск в главном меню* |
|
|
|
+| :----------------------------------------------: | :-----------------------------------------------------: |
|
|
|
+|  |  |
|
|
|
+
|
|
|
+## 4.3. Управление профилем и настройки
|
|
|
+
|
|
|
+Нажав на иконку настроек профиля, пользователь попадает в меню конфигурации (Рисунок 4). В данном разделе доступны:
|
|
|
+
|
|
|
+- Настройка приватности и доступа.
|
|
|
+- Управление системными звуковыми уведомлениями.
|
|
|
+- Переключение цветового оформления интерфейса (Светлая тема / Темная тема).
|
|
|
+
|
|
|
+| *Рисунок 4 – Настройки* |
|
|
|
+| :----------------------------------------------: |
|
|
|
+|  |
|
|
|
+
|
|
|
+## 4.4. Навигация по серверам и создание каналов
|
|
|
+
|
|
|
+При переходе на один из серверов в левой панели отображается список доступных каналов (Рисунок 5):
|
|
|
+
|
|
|
+- **Текстовые каналы** (помечаются знаком `#`) используются для обмена сообщениями и учебными файлами.
|
|
|
+- **Голосовые каналы** (помечаются значком динамика) служат для мгновенного подключения к голосовой связи. Достаточно кликнуть на канал для начала аудиообщения.
|
|
|
+
|
|
|
+| *Рисунок 5 – Экран сервера* |
|
|
|
+| :----------------------------------------------: |
|
|
|
+|  |
|
|
|
+
|
|
|
+## 4.5. Обмен сообщениями
|
|
|
+
|
|
|
+Для отправки сообщения выберите нужный текстовый канал, введите текст в поле ввода внизу экрана и нажмите клавишу **Enter** (или кнопку **«Отправить»**).
|
|
|
+
|
|
|
+- Для отправки файлов воспользуйтесь кнопкой со скрепкой.
|
|
|
+- Для записи голосового сообщения удерживайте кнопку с изображением микрофона.
|
|
|
+- Интерфейс личной переписки с другим пользователем представлен на Рисунке 6. Окно чата в текстовом канале сервера представлено на Рисунке 7.
|
|
|
+
|
|
|
+| *Рисунок 6 – Личная переписка* | *Рисунок 7 – Переписка в канале* |
|
|
|
+| :---: | :---: |
|
|
|
+|  |  |
|
|
|
+
|
|
|
+## 4.6. Завершение работы с программой
|
|
|
+
|
|
|
+Для корректного выхода из системы и предотвращения несанкционированного доступа к аккаунту с текущего устройства откройте настройки профиля и нажмите на кнопку **«Logout»** (Рисунок 4). В результате сессия будет аннулирована, а авторизационные токены удалены из памяти устройства.
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+# 5. Аварийные ситуации
|
|
|
+
|
|
|
+В процессе эксплуатации распределенной системы Minor возможны сбои программного и аппаратного характера. Ниже представлены сценарии реагирования на нештатные ситуации:
|
|
|
+
|
|
|
+**Временная потеря сетевого соединения клиентом:**
|
|
|
+- *Поведение системы:* Пользовательский веб-клиент автоматически переходит в режим ожидания. На экране отображается сообщение *«Соединение потеряно. Попытка переподключения...»*.
|
|
|
+- *Действия пользователя:* Проверить физическое подключение к сети Интернет или интрасети НовГУ. При восстановлении связи клиентское приложение восстановит WebSocket-сессию автоматически без потери истории сообщений.
|
|
|
+
|
|
|
+**Отказ базы данных истории сообщений (Apache Cassandra):**
|
|
|
+- *Поведение системы:* При попытке отправки или получения старых сообщений интерфейс выдает ошибку *«Не удалось загрузить сообщения. Пожалуйста, попробуйте позже»* (HTTP-статус 500). Работа авторизации и голосовых каналов при этом сохраняется (отказоустойчивость).
|
|
|
+- *Действия администратора:* Подключиться к серверу по SSH, проверить логи контейнера базы данных:
|
|
|
+ ```bash
|
|
|
+ docker-compose logs cassandra
|
|
|
+ ```
|
|
|
+ В случае необходимости выполнить перезапуск службы:
|
|
|
+ ```bash
|
|
|
+ docker-compose restart cassandra
|
|
|
+ ```
|
|
|
+
|
|
|
+**Истечение времени действия сессии (JWT токена):**
|
|
|
+- *Поведение системы:* При выполнении любого действия (отправка сообщения, переход в канал) система перенаправляет пользователя на форму входа.
|
|
|
+- *Действия пользователя:* Повторно пройти процедуру авторизации, введя логин и пароль.
|
|
|
+
|
|
|
+**Сбой брокера сообщений NATS JetStream:**
|
|
|
+- *Поведение системы:* Сообщения сохраняются в БД, но перестают приходить другим участникам в реальном времени до момента ручного обновления страницы.
|
|
|
+- *Действия администратора:* Проверить статус контейнера NATS и очистить зависшие сообщения в очереди при переполнении диска.
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+# 6. Рекомендации по освоению
|
|
|
+
|
|
|
+Для быстрого и эффективного начала работы с системой Minor рекомендуется придерживаться следующих шагов:
|
|
|
+
|
|
|
+- **Изучение интерфейса:** Основное расположение элементов управления (серверы, каналы, настройки) аналогично популярным мессенджерам Discord и Slack. Освоение базового функционала занимает у среднего пользователя не более 10–15 минут.
|
|
|
+- **Групповая координация:** Рекомендуется создавать отдельные серверы для каждой учебной дисциплины, а внутри них группировать каналы по типам заданий (например, текстовые каналы `#лекции`, `#лабораторные` и голосовой канал `Консультации` для созвонов с преподавателем).
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+# 7. Термины и сокращения
|
|
|
+
|
|
|
+Таблица 2 – Термины и сокращения
|
|
|
+
|
|
|
+| Термин / Сокращение | Расшифровка | Описание |
|
|
|
+| :--- | :--- | :--- |
|
|
|
+| **БД** | База Данных | Организованная структура для хранения системной информации. |
|
|
|
+| **СУБД** | Система Управления Базами Данных | Специализированное ПО для управления реляционными и нереляционными данными. |
|
|
|
+| **JWT** | JSON Web Token | Стандарт токенов для безопасной передачи claims (утверждений) между сторонами. |
|
|
|
+| **NATS JetStream** | Брокер сообщений | Распределенная система обмена сообщениями, обеспечивающая доставку событий в реальном времени. |
|
|
|
+| **UUIDv7** | Universally Unique Identifier | Уникальный 128-битный идентификатор, генерируемый с использованием временной метки (timestamp-first). |
|
|
|
+| **API** | Application Programming Interface | Программный интерфейс взаимодействия между клиентами и бэкенд-службами. |
|
|
|
+| **gRPC** | Google Remote Procedure Call | Фреймворк для быстрого межсервисного взаимодействия с использованием Protocol Buffers. |
|
|
|
+| **WebSocket** | Протокол связи | Протокол двусторонней полнодуплексной связи поверх TCP-соединения для Real-time обмена. |
|
|
|
+| **Гильдия / Сервер** | Тематическое сообщество | Изолированное коммуникационное пространство внутри Minor, содержащее каналы и участников. |
|
|
|
+
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+# Лист регистрации изменений
|
|
|
+
|
|
|
+| Номер изменения | Тип изменения | Дата изменения | Описание внесенных изменений | Автор изменения |
|
|
|
+| :-------------: | :----------------: | :------------: | :---------------------------------------------------------------------- | :-------------------------- |
|
|
|
+| **0.1** | Создание документа | 20.05.2026 | Разработка первичной версии руководства пользователя по ГОСТ 19.502-90. | Ильин Д. А., Распопов С. И. |
|
|
|
+
|