ГидроВэб · документация
Перейти в сервис

Информация, необходимая для эксплуатации программы для ЭВМ «ГидроВэб»

Правообладатель: ООО «Фьютех» (RU). Версия: 1.1.0-alpha.

Настоящий документ содержит информацию, необходимую для эксплуатации программы для ЭВМ «ГидроВэб». Разделы 1–4 излагают последовательность действий, обеспечивающих загрузку, запуск, выполнение и завершение программы; раздел 5 — описание функций; раздел 6 — формат и варианты команд, которыми пользователь управляет выполнением программы; раздел 7 — ответы программы на эти команды. Разделы 8–14 — администрирование, обслуживание, безопасность, нештатные ситуации, поддержка, процессы жизненного цикла, персонал и адреса размещения. Программа является веб-сервисом (SaaS), поэтому загрузка программы означает открытие страницы в браузере и вход, а не запуск исполняемого файла. Команды подаются как через элементы интерфейса, так и непосредственно через программный интерфейс (REST API), описанный машиночитаемо по адресу hydroweb.online/openapi.json и в интерактивном виде — hydroweb.online/docs.


1. Загрузка программы

1.1 Адрес и способ доступа

ПараметрЗначение
Адрес экземпляра программыhttps://hydroweb.online
Способ доступаВеб-браузер, подключение к сети «Интернет»
Установка на рабочее местоНе требуется — программа не поставляется как исполняемый файл или пакет для установки

1.2 Требования к рабочему месту

ПараметрЗначение
БраузерYandex Browser, Google Chrome, Mozilla Firefox, Microsoft Edge, Safari — актуальные версии
Поддержка технологийJavaScript, HTML5 (включены по умолчанию)
Разрешение экранаНе менее 1366 × 768
Канал связиДоступ к сети «Интернет», не менее 1 Мбит/с

1.3 Вход (аутентификация)

Открытие адреса https://hydroweb.online в браузере показывает форму входа. Доступны два способа:

  1. По адресу электронной почты. При регистрации (POST /api/auth/register) на указанный адрес направляется письмо со ссылкой подтверждения. До перехода по ссылке доступ к программе не предоставляется — токен доступа не выдаётся. Вход выполняется командой POST /api/auth/login; письмо можно запросить повторно (POST /api/auth/resend-verification).
  2. Через сервисы идентификации Яндекс ID (GET /api/auth/oauth/yandex и обратный переход GET /api/auth/oauth/yandex/callback) — адрес считается подтверждённым поставщиком услуги идентификации, письмо не отправляется.

После успешного входа сессия сохраняется в защищённой (httpOnly) куке браузера; программа проверяет её командой GET /api/auth/me и восстанавливает вход без повторного ввода пароля при следующем открытии страницы. Загрузка программы считается завершённой, когда после входа отображается список проектов.


2. Запуск программы

2.1 Создание проекта

На экране списка проектов пользователь создаёт новый проект и указывает наименование объекта (POST /api/projects) либо открывает ранее сохранённый (GET /api/projects, GET /api/projects/{project_id}). Проекты хранятся на сервере и изолированы по учётным записям.

2.2 Ввод исходных данных

Ввод ведётся по вкладкам рабочей области:

  1. Geology (Геология) — инженерно-геологические условия: слои грунта (мощность, удельный вес, угол внутреннего трения, сцепление, модуль деформации), уровень грунтовых вод.
  2. Wall (Стенка) — геометрия ограждения, глубина котлована, выбор профиля шпунта или сечения стойки и марки стали, либо автоматический подбор (POST /api/auto-profile).
  3. Loads (Нагрузки) — поверхностные и приложенные к ограждению нагрузки.
  4. Anchors (Крепления) — анкеры, распорки, бермы и этапы разработки котлована.

Программа проверяет вводимые значения на допустимые границы (например, глубина котлована 0…50 м, число слоёв 1…20) непосредственно при вводе и повторно на сервере при отправке команды расчёта; недопустимые значения к расчёту не принимаются (раздел 7, код 422).

2.3 Старт расчёта

Кнопка расчёта на вкладке «Results» («Результаты») отправляет одну из команд программного интерфейса — POST /api/calculate (без этапов), POST /api/calculate-staged (с этапами разработки, метод Блюма) или POST /api/calculate/fem (метод конечных элементов) — в зависимости от выбранных пользователем метода расчёта и наличия этапов. Программа запущена в работу с момента отправки этой команды.


3. Выполнение

3.1 Что происходит

Сервер принимает исходные данные, проверяет их по описанным в модели запроса границам, выполняет расчёт выбранным ядром (метод предельного равновесия Блюма либо метод конечных элементов — балка на упругопластическом основании Винклера) и возвращает эпюры давления грунта, изгибающих моментов, поперечных сил и перемещений, максимальные усилия, требуемую глубину заделки, усилия в креплениях и коэффициенты запаса.

3.2 Ход выполнения и длительность

На кнопке расчёта отображаются индикатор хода выполнения и затраченное время. Типовой расчёт методом Блюма занимает единицы секунд; расчёт МКЭ с несколькими этапами и раскреплениями — до нескольких минут (серверный таймаут — 300 секунд). Во время выполнения интерфейс остаётся отзывчивым; повторная отправка команды до получения ответа не требуется.

3.3 Предупреждения во время выполнения

Ответ команды расчёта содержит список warnings, если результат требует внимания пользователя, не будучи ошибкой. Например: сопротивление грунта в заделке исчерпано и результат не может считаться рабочим (near-limit); коэффициент постели выведен из модуля деформации, а не задан явно; призма пионерного среза вырождена и давление на этом участке определено по запасному правилу. Такие сообщения требуют пересмотра исходных данных, а не игнорирования.


4. Завершение

4.1 Анализ результатов

По завершении расчёта на вкладке «Results» отображаются эпюры, максимальные усилия и перемещения, коэффициенты запаса (в заделке и по металлу конструкции) и таблица проверок предельных состояний со ссылками на пункты сводов правил. Невыполнение условия проверки выделяется явно; горизонтальное перемещение сопоставляется с предельно допустимым.

4.2 Формирование и выгрузка документов

На вкладке документации пользователь формирует расчётно-пояснительную записку, спецификации, чертежи и машиночитаемую выгрузку. Формирование документов (DOCX, XLSX, PDF, чертежи в форматах векторной графики) выполняется на стороне браузера; файлы сохраняются стандартными средствами браузера в каталог загрузок пользователя.

4.3 Завершение работы

Явное завершение сеанса — команда POST /api/auth/logout из меню пользователя: сессионная кука удаляется, доступ к программе прекращается до повторного входа. Программу можно также завершить закрытием вкладки браузера без выхода — поскольку проекты хранятся на сервере, а не в браузере, несохранённые данные не теряются: последнее сохранённое состояние проекта остаётся доступным при следующем входе.


5. Описание функций

Развёрнутое описание функциональных характеристик — в документе «Описание функциональных характеристик». Ниже — перечень функций, доступных пользователю через интерфейс и через команды программного интерфейса, сгруппированный по назначению:

Группа функцийСостав
Учётные записи и доступРегистрация с подтверждением адреса, вход по паролю или через Яндекс ID (вход через VK ID находится в разработке), три уровня доступа (базовый, профессиональный, администратор)
Ввод исходных данныхСлои грунта, уровень грунтовых вод, геометрия ограждения, каталоги профилей шпунта/труб/двутавров и марок стали, нагрузки, крепления, этапы разработки котлована, сейсмичность площадки, параметры коррозионной среды
РасчётДва независимых расчётных ядра (метод предельного равновесия Блюма; метод конечных элементов — балка на упругопластическом основании Винклера), расчёт по этапам с огибающей усилий, автоматический подбор профиля
Проверки по нормативамПроверка прочности и устойчивости по СП 16.13330 (сталь), коэффициенты запаса в заделке и по металлу, учёт коэффициента надёжности по ответственности сооружения (СП 116/ГОСТ 27751)
Верификация ядраМодуль контрольных задач с аналитическими решениями (семь задач, вкладка /benchmarks/blum, без авторизации), прогон обоих расчётных ядер и сравнение с эталоном
Формирование документацииРасчётно-пояснительная записка, спецификации, чертежи (план и разрез), машиночитаемая выгрузка — на стороне браузера
Справочные подсистемыКаталоги сортамента, поиск по реестру заключений экспертизы (ЕГРЗ, полнотекстовый поиск), ИИ-ассистент для вопросов по нормативам и параметрам проекта
ПроектыСоздание, сохранение, изменение, удаление; изоляция данных между учётными записями
АдминистрированиеПросмотр и управление учётными записями, изменение уровня доступа, блокировка, обновление реестра заключений экспертизы

6. Формат и варианты команд

Пользователь управляет выполнением программы командами программного интерфейса (REST API, формат JSON), которые интерфейс отправляет в ответ на действия в браузере; те же команды может подать напрямую любой клиент, поддерживающий HTTP. Полный и всегда актуальный формат тел запроса и ответа для каждой команды — машиночитаемая спецификация /openapi.json (формат OpenAPI) и её интерактивное представление /docs. Ниже — перечень команд с назначением и обязательностью параметров.

6.1 Учётные записи и доступ

КомандаНазначениеОбязательные параметрыНеобязательные параметры
POST /api/auth/registerРегистрация по адресу электронной почтыemail, password (≥8 симв.), first_name—
POST /api/auth/loginВход по адресу и паролюemail, password—
GET /api/auth/meТекущий пользователь по сессиисессионная кука или заголовок Authorization—
POST /api/auth/logoutЗавершение сессии——
GET /api/auth/verify-emailПодтверждение адреса по ссылке из письмаtoken (query)—
POST /api/auth/resend-verificationПовторная отправка письма подтверждения—email (для невошедшего пользователя)
POST /api/auth/professionУказать профессию, завершить онбордингсессияprofession
GET /api/auth/oauth/yandexНачало входа через Яндекс ID——
GET /api/auth/oauth/yandex/callbackОбратный переход от Яндекс IDпараметры провайдера (query)—

6.2 Администрирование (роль admin)

КомандаНазначениеОбязательные параметрыНеобязательные параметры
GET /api/admin/usersСписок учётных записейсессия с ролью admin—
POST /api/admin/users/{user_id}/roleИзменить уровень доступа пользователяuser_id (path), role—
POST /api/admin/users/{user_id}/activeЗаблокировать/разблокировать учётную записьuser_id (path), is_active—
POST /api/admin/egrz/reimportПереимпорт реестра заключений экспертизы из файлаxlsx_path (query, внутри каталога данных)—

6.3 Расчёт

КомандаНазначениеОбязательные параметрыНеобязательные параметры
POST /api/calculateРасчёт ядром Блюма, без этаповlayers[] (слои грунта), excavation_depthsurcharge, water_table_depth, supports[], profile_name, method (rankine/coulomb), dewatered, min_active_ratio, параметры коррозии
POST /api/calculate-stagedРасчёт ядром Блюма по этапам разработкиlayers[], stages[]supports[], profile_name, method, dewatered, min_active_ratio
POST /api/calculate/femРасчёт методом конечных элементов (балка на основании Винклера)layers[] (с poisson_ratio), геометрия/сечение стенкиstages[], anchors[], struts[], method, contact_strategy, seismic_intensity, aquiclude_depth, axial_model и др.
POST /api/coefficientsТаблица коэффициентов Ka/Kp/K0 по слоямlayers[], excavation_depthmethod
POST /api/auto-profileАвтоподбор минимального профиля по несущей способностиlayers[], excavation_depthто же, что у /api/calculate
POST /api/report/pdfСерверная генерация PDF — не используется в продукте——

6.4 Каталоги и верификация

КомандаНазначениеОбязательные параметрыНеобязательные параметры
GET /api/profilesКаталог профилей шпунта——
GET /api/rrsk/sectionsСортамент труб и двутавров для стоек——
GET /api/blum-benchmarksСписок семи контрольных задач Б-1…Б-7——
POST /api/blum-benchmarks/{bench_id}/runПрогон контрольной задачи ядром Блюмаbench_id (path)—
POST /api/blum-benchmarks/{bench_id}/run-femПрогон контрольной задачи ядром МКЭbench_id (path)—
GET /api/blum-benchmarks/{bench_id}/analyticalАналитическое решение контрольной задачиbench_id (path)—
POST /api/assistant/chatИИ-ассистент, потоковый ответ (SSE)сессия с ролью professional/admin, messages[]project_context

6.5 Проекты

КомандаНазначениеОбязательные параметрыНеобязательные параметры
GET /api/projectsСписок проектов пользователясессия—
GET /api/projects/{project_id}Полные данные проектаproject_id (path), сессия—
POST /api/projectsСоздать или сохранить проект (upsert)id, namedescription, project_mode, status, meta, data, solution_finder_result
PUT /api/projects/{project_id}Изменить поля проектаproject_id (path), сессияname, description, status, meta, data
DELETE /api/projects/{project_id}Удалить проектproject_id (path), сессия—

6.6 Реестр заключений экспертизы (ЕГРЗ)

КомандаНазначениеОбязательные параметрыНеобязательные параметры
POST /api/registry/egrz/searchПолнотекстовый поиск по рееструquery (≥2 симв.)region, yearFrom, yearTo, limit
GET /api/registry/egrz/conclusion/{conclusion_number}Заключение по точному номеруconclusion_number (path)—
GET /api/registry/egrz/statsСтатистика базы (число записей, диапазон дат, регионы)——

7. Ответы программы на команды

Ответ передаётся в формате JSON с кодом состояния HTTP, отражающим результат выполнения команды. Ниже — коды, используемые программой, их значение и структура тела ответа; примеры получены с работающего экземпляра.

КодЗначениеСтруктура тела ответаПример
200 OKКоманда выполнена успешноОбъект или массив с результатом команды — состав полей зависит от команды (раздел 6)[{"id":"ECO-13-770","name":"ECO 13-770","W":1300.0,"I":22360.0}, …] — GET /api/profiles
302 FoundПереход после подтверждения адреса электронной почтыРедирект на страницу сервиса с признаком результатаLocation: https://hydroweb.online/?email_verified=1
400 Bad RequestКоманда отклонена по содержательной причине{"detail": "<пояснение>"}{"detail":"Пользователь с таким email уже зарегистрирован"} — POST /api/auth/register
401 UnauthorizedКоманда требует входа, сессия отсутствует или недействительна, либо неверны учётные данные{"detail": "<причина>"}{"detail":"Not authenticated"} — GET /api/auth/me без сессии; {"detail":"Неверный email или пароль"} — POST /api/auth/login
403 ForbiddenДействие требует более высокого уровня доступа (например, не-администратор обращается к разделу администрирования) либо путь к файлу выходит за пределы разрешённого каталога{"detail": "<причина>"}{"detail":"Insufficient permissions"}
404 Not FoundЗапрошенный объект не найден (проект, контрольная задача, заключение реестра){"detail": "<что не найдено>"}Ответ на GET /api/registry/egrz/conclusion/doesnotexist123 — код 404
409 ConflictИдентификатор проекта уже занят другим пользователем{"detail": "<причина>"}{"detail":"Проект с таким идентификатором принадлежит другому пользователю"}
422 Unprocessable EntityТело команды не прошло проверку формата или границ значений{"detail": [{"type": "<тип>", "loc": [...], "msg": "<пояснение>", "input": …}, …]}{"detail":[{"type":"missing","loc":["body","layers"],"msg":"Field required","input":{}},{"type":"missing","loc":["body","excavation_depth"],"msg":"Field required","input":{}}]} — POST /api/calculate с пустым телом
500 Internal Server ErrorВнутренняя ошибка программы. Подробности не раскрываются в ответе и остаются только в журнале сервера (требование безопасности){"detail": "<общее сообщение>"}{"detail":"Ошибка импорта. Подробности в логах сервера."}
501 Not ImplementedКоманда объявлена, но не реализована на сервере (функция перенесена на сторону браузера){"detail": "<пояснение>"}{"detail":"PDF generation is client-side. Use the frontend export."} — POST /api/report/pdf
503 Service UnavailableВспомогательный внешний сервис не настроен (языковая модель ИИ-ассистента){"detail": "<пояснение>"}Ответ POST /api/assistant/chat, если параметры доступа к модели не заданы

Успешный ответ команды расчёта (200) дополнительно может содержать поле warnings — непустой список текстовых сообщений о результатах, требующих внимания, не прерывающих расчёт (раздел 3.3). Полный перечень полей ответа для каждой команды — в /openapi.json.


8. Администрирование

8.1 Учётные записи и права

Предусмотрены три уровня доступа:

УровеньВозможности
БазовыйРабота с собственными проектами, расчёты, формирование документов
ПрофессиональныйТо же и доступ к расширенным функциям, включая подсистему помощи
АдминистраторТо же и управление учётными записями: изменение уровня доступа, блокировка и разблокировка

Данные проектов изолированы между учётными записями: пользователь видит только собственные проекты.

8.2 Действия администратора


9. Обслуживание

9.1 Контроль работоспособности

docker compose ps            # состояние контейнера (ожидается healthy)
docker compose logs --tail 200 hydroweb   # последние записи журнала
curl -f https://<адрес-сервиса>/api/profiles   # проверка доступности интерфейса

Встроенная проверка работоспособности выполняется каждые 30 секунд; при отказе приложения контейнер перезапускается автоматически.

9.2 Журналирование

Приложение ведёт журнал стандартными средствами: события входа и неудачных попыток входа, ход выполнения расчётов, предупреждения о нефизичных результатах, ошибки. Журнал доступен командой docker compose logs. Подробности внутренних ошибок в ответах пользователю не раскрываются и остаются только в журнале сервера.

9.3 Резервное копирование

Все изменяемые данные (учётные записи, проекты, реестр заключений) размещены в томе hydroweb-data. Резервная копия:

docker run --rm -v hydroweb_hydroweb-data:/data -v $(pwd):/backup \
  alpine tar czf /backup/hydroweb-data-$(date +%Y%m%d-%H%M%S).tar.gz -C /data .

Такой же архив (hydroweb-data-<метка>.tar.gz, содержимое тома без префикса каталога) сценарий обновления deploy/deploy.sh снимает перед каждым обновлением в каталог /opt/hydroweb/backups на сервере.

Восстановление:

docker compose down
docker run --rm -v hydroweb_hydroweb-data:/data -v $(pwd):/backup \
  alpine tar xzf /backup/hydroweb-data-<метка>.tar.gz -C /data
docker compose up -d

Рекомендуемая периодичность — ежесуточно, с хранением копий не менее 14 суток.

9.4 Обновление версии

Обновление выполняется сценарием deploy/deploy.sh. Порядок:

  1. создать резервную копию тома данных;
  2. выполнить обновление;
  3. убедиться в состоянии healthy и работоспособности интерфейса.

Приведение схемы базы данных к актуальной выполняется при запуске автоматически и не требует ручных действий; операции идемпотентны и безопасны при повторном запуске.


10. Обеспечение безопасности

Реализованные меры:

Обязанности эксплуатирующей организации: хранение файла параметров среды в тайне, регулярное обновление системного ПО, использование защищённого соединения, ограничение сетевого доступа к серверу.


11. Типовые нештатные ситуации

ПризнакВероятная причинаДействия
Интерфейс не открываетсяКонтейнер остановлен или отказ веб-сервера узлаdocker compose ps, docker compose up -d, проверить журнал
Не приходит письмо подтвержденияНе заданы или неверны параметры почтового сервераПроверить параметры HYDROWEB_SMTP_*, запросить письмо повторно
Расчёт завершается предупреждением о нефизичном результатеИсчерпано сопротивление грунта в заделкеУвеличить глубину заделки, проверить уровни воды и характеристики грунтов
Расчёт выполняется долгоМногоэтапная схема, работа заделки у пределаДождаться завершения; ход выполнения отображается на кнопке расчёта
Подсистема помощи недоступна (код 503)Не заданы параметры доступа к языковой моделиЗадать параметры либо продолжать работу без подсистемы
Все пользователи потеряли доступСмена секрета подписи токеновПовторный вход пользователей; секрет менять только планово

12. Поддержка

Техническая поддержка осуществляется правообладателем — ООО «Фьютех». Обращения принимаются по контактным данным, указанным на сайте сервиса. Сопровождение включает консультации по эксплуатации, устранение выявленных ошибок и выпуск обновлений.


13. Процессы жизненного цикла программного обеспечения

ПроцессСодержаниеИсполнитель
ПроектированиеОпределение требований, выбор расчётных методов и нормативной основы, проектирование архитектуры и программных интерфейсовШтатные работники правообладателя
РазработкаНаписание исходного текста, ведение системы управления версиями, проверка измененийШтатные работники правообладателя
ТестированиеАвтоматизированные проверки расчётного ядра и программных интерфейсов; проверка расчётов на контрольных задачах с известными аналитическими решениями; проверка интерфейса перед выпускомШтатные работники правообладателя
Поставка (ввод в эксплуатацию)Сборка образа приложения, развёртывание на сервере правообладателя, проверка работоспособности после обновленияШтатные работники правообладателя
ЭксплуатацияРабота пользователей через веб-браузер; наблюдение за состоянием сервиса, резервное копированиеШтатные работники правообладателя
ДокументированиеПодготовка и актуализация эксплуатационной документации, руководств пользователя и разработчикаШтатные работники правообладателя
Обучение и квалификация персоналаВнутреннее обучение работников; консультирование пользователейШтатные работники правообладателя
Устранение сбойных ситуацийПриём обращений, диагностика, исправление, выпуск обновления, уведомление пользователейШтатные работники правообладателя
Поддержка версий и доработкаПланирование выпусков, развитие функций, сопровождение выпущенных версийШтатные работники правообладателя

Работы по всем перечисленным процессам выполняются силами штатных работников правообладателя. Договоры на разработку, сопровождение или техническую поддержку с внешними, в том числе иностранными, организациями не заключены.

14. Сведения о персонале и фактических адресах размещения

Сведения приводятся о персонале организации-правообладателя, осуществляющей совершенствование программного обеспечения, устранение сбойных ситуаций и техническую поддержку (не о персонале клиента).

ПоказательЗначение
Фактический адрес размещения инфраструктуры разработки115201, город Москва, вн.тер.г. муниципальный округ Москворечье-Сабурово, улица Котляковская, дом 3, строение 13, офис 504А
Фактический адрес размещения разработчиков115201, город Москва, вн.тер.г. муниципальный округ Москворечье-Сабурово, улица Котляковская, дом 3, строение 13, офис 504А
Фактический адрес размещения службы поддержки115201, город Москва, вн.тер.г. муниципальный округ Москворечье-Сабурово, улица Котляковская, дом 3, строение 13, офис 504А
Место размещения серверного оборудования с экземпляром программыРоссийская Федерация, центр обработки данных ООО «ТАЙМВЭБ.КЛАУД»: 117545, город Москва, улица Подольских Курсантов, дом 15Б (сервер 201.24.112.106)
Численность работников, обеспечивающих разработку и совершенствование1 (один) человек
Численность работников, обеспечивающих техническую поддержку и устранение сбоев1 (один) человек
Квалификация персоналаВысшее техническое образование; специалисты по разработке программного обеспечения и инженеры-проектировщики в области геотехники
Режим приёма обращенийРабочие дни, с 9:00 до 18:00 по московскому времени
Срок реакции на обращениеНе более 2 (двух) рабочих дней

Развёрнутая справка по этому разделу оформлена отдельным документом комплекта («Справка о персонале, местах размещения инфраструктуры и порядке сопровождения программного обеспечения»).