Правообладатель: ООО «Фьютех» (RU). Версия: 1.1.0-alpha.
Настоящий документ содержит информацию, необходимую для эксплуатации программы для ЭВМ «ГидроВэб». Разделы 1–4 излагают последовательность действий, обеспечивающих загрузку, запуск, выполнение и завершение программы; раздел 5 — описание функций; раздел 6 — формат и варианты команд, которыми пользователь управляет выполнением программы; раздел 7 — ответы программы на эти команды. Разделы 8–14 — администрирование, обслуживание, безопасность, нештатные ситуации, поддержка, процессы жизненного цикла, персонал и адреса размещения. Программа является веб-сервисом (SaaS), поэтому загрузка программы означает открытие страницы в браузере и вход, а не запуск исполняемого файла. Команды подаются как через элементы интерфейса, так и непосредственно через программный интерфейс (REST API), описанный машиночитаемо по адресу hydroweb.online/openapi.json и в интерактивном виде — hydroweb.online/docs.
| Параметр | Значение |
|---|---|
| Адрес экземпляра программы | https://hydroweb.online |
| Способ доступа | Веб-браузер, подключение к сети «Интернет» |
| Установка на рабочее место | Не требуется — программа не поставляется как исполняемый файл или пакет для установки |
| Параметр | Значение |
|---|---|
| Браузер | Yandex Browser, Google Chrome, Mozilla Firefox, Microsoft Edge, Safari — актуальные версии |
| Поддержка технологий | JavaScript, HTML5 (включены по умолчанию) |
| Разрешение экрана | Не менее 1366 × 768 |
| Канал связи | Доступ к сети «Интернет», не менее 1 Мбит/с |
Открытие адреса https://hydroweb.online в браузере показывает форму входа.
Доступны два способа:
POST /api/auth/register)
на указанный адрес направляется письмо со ссылкой подтверждения. До перехода по ссылке доступ
к программе не предоставляется — токен доступа не выдаётся. Вход выполняется командой
POST /api/auth/login; письмо можно запросить повторно
(POST /api/auth/resend-verification).GET /api/auth/oauth/yandex
и обратный переход GET /api/auth/oauth/yandex/callback) — адрес считается
подтверждённым поставщиком услуги идентификации, письмо не отправляется.После успешного входа сессия сохраняется в защищённой (httpOnly) куке браузера; программа
проверяет её командой GET /api/auth/me и восстанавливает вход без повторного ввода
пароля при следующем открытии страницы. Загрузка программы считается завершённой, когда после
входа отображается список проектов.
На экране списка проектов пользователь создаёт новый проект и указывает наименование объекта
(POST /api/projects) либо открывает ранее сохранённый (GET /api/projects,
GET /api/projects/{project_id}). Проекты хранятся на сервере и изолированы по
учётным записям.
Ввод ведётся по вкладкам рабочей области:
POST /api/auto-profile).Программа проверяет вводимые значения на допустимые границы (например, глубина котлована 0…50 м, число слоёв 1…20) непосредственно при вводе и повторно на сервере при отправке команды расчёта; недопустимые значения к расчёту не принимаются (раздел 7, код 422).
Кнопка расчёта на вкладке «Results» («Результаты») отправляет одну из команд программного
интерфейса — POST /api/calculate (без этапов), POST /api/calculate-staged
(с этапами разработки, метод Блюма) или POST /api/calculate/fem (метод конечных
элементов) — в зависимости от выбранных пользователем метода расчёта и наличия этапов.
Программа запущена в работу с момента отправки этой команды.
Сервер принимает исходные данные, проверяет их по описанным в модели запроса границам, выполняет расчёт выбранным ядром (метод предельного равновесия Блюма либо метод конечных элементов — балка на упругопластическом основании Винклера) и возвращает эпюры давления грунта, изгибающих моментов, поперечных сил и перемещений, максимальные усилия, требуемую глубину заделки, усилия в креплениях и коэффициенты запаса.
На кнопке расчёта отображаются индикатор хода выполнения и затраченное время. Типовой расчёт методом Блюма занимает единицы секунд; расчёт МКЭ с несколькими этапами и раскреплениями — до нескольких минут (серверный таймаут — 300 секунд). Во время выполнения интерфейс остаётся отзывчивым; повторная отправка команды до получения ответа не требуется.
Ответ команды расчёта содержит список warnings, если результат требует внимания
пользователя, не будучи ошибкой. Например: сопротивление грунта в заделке исчерпано и результат
не может считаться рабочим (near-limit); коэффициент постели выведен из модуля деформации, а не
задан явно; призма пионерного среза вырождена и давление на этом участке определено по
запасному правилу. Такие сообщения требуют пересмотра исходных данных, а не игнорирования.
По завершении расчёта на вкладке «Results» отображаются эпюры, максимальные усилия и перемещения, коэффициенты запаса (в заделке и по металлу конструкции) и таблица проверок предельных состояний со ссылками на пункты сводов правил. Невыполнение условия проверки выделяется явно; горизонтальное перемещение сопоставляется с предельно допустимым.
На вкладке документации пользователь формирует расчётно-пояснительную записку, спецификации, чертежи и машиночитаемую выгрузку. Формирование документов (DOCX, XLSX, PDF, чертежи в форматах векторной графики) выполняется на стороне браузера; файлы сохраняются стандартными средствами браузера в каталог загрузок пользователя.
Явное завершение сеанса — команда POST /api/auth/logout из меню пользователя:
сессионная кука удаляется, доступ к программе прекращается до повторного входа. Программу можно
также завершить закрытием вкладки браузера без выхода — поскольку проекты хранятся на сервере,
а не в браузере, несохранённые данные не теряются: последнее сохранённое состояние проекта
остаётся доступным при следующем входе.
Развёрнутое описание функциональных характеристик — в документе «Описание функциональных характеристик». Ниже — перечень функций, доступных пользователю через интерфейс и через команды программного интерфейса, сгруппированный по назначению:
| Группа функций | Состав |
|---|---|
| Учётные записи и доступ | Регистрация с подтверждением адреса, вход по паролю или через Яндекс ID (вход через VK ID находится в разработке), три уровня доступа (базовый, профессиональный, администратор) |
| Ввод исходных данных | Слои грунта, уровень грунтовых вод, геометрия ограждения, каталоги профилей шпунта/труб/двутавров и марок стали, нагрузки, крепления, этапы разработки котлована, сейсмичность площадки, параметры коррозионной среды |
| Расчёт | Два независимых расчётных ядра (метод предельного равновесия Блюма; метод конечных элементов — балка на упругопластическом основании Винклера), расчёт по этапам с огибающей усилий, автоматический подбор профиля |
| Проверки по нормативам | Проверка прочности и устойчивости по СП 16.13330 (сталь), коэффициенты запаса в заделке и по металлу, учёт коэффициента надёжности по ответственности сооружения (СП 116/ГОСТ 27751) |
| Верификация ядра | Модуль контрольных задач с аналитическими решениями (семь задач, вкладка /benchmarks/blum, без авторизации), прогон обоих расчётных ядер и сравнение с эталоном |
| Формирование документации | Расчётно-пояснительная записка, спецификации, чертежи (план и разрез), машиночитаемая выгрузка — на стороне браузера |
| Справочные подсистемы | Каталоги сортамента, поиск по реестру заключений экспертизы (ЕГРЗ, полнотекстовый поиск), ИИ-ассистент для вопросов по нормативам и параметрам проекта |
| Проекты | Создание, сохранение, изменение, удаление; изоляция данных между учётными записями |
| Администрирование | Просмотр и управление учётными записями, изменение уровня доступа, блокировка, обновление реестра заключений экспертизы |
Пользователь управляет выполнением программы командами программного интерфейса (REST API, формат JSON), которые интерфейс отправляет в ответ на действия в браузере; те же команды может подать напрямую любой клиент, поддерживающий HTTP. Полный и всегда актуальный формат тел запроса и ответа для каждой команды — машиночитаемая спецификация /openapi.json (формат OpenAPI) и её интерактивное представление /docs. Ниже — перечень команд с назначением и обязательностью параметров.
| Команда | Назначение | Обязательные параметры | Необязательные параметры |
|---|---|---|---|
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) | — |
| Команда | Назначение | Обязательные параметры | Необязательные параметры |
|---|---|---|---|
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, внутри каталога данных) | — |
| Команда | Назначение | Обязательные параметры | Необязательные параметры |
|---|---|---|---|
POST /api/calculate | Расчёт ядром Блюма, без этапов | layers[] (слои грунта), excavation_depth | surcharge, 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_depth | method |
POST /api/auto-profile | Автоподбор минимального профиля по несущей способности | layers[], excavation_depth | то же, что у /api/calculate |
POST /api/report/pdf | Серверная генерация PDF — не используется в продукте | — | — |
| Команда | Назначение | Обязательные параметры | Необязательные параметры |
|---|---|---|---|
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 |
| Команда | Назначение | Обязательные параметры | Необязательные параметры |
|---|---|---|---|
GET /api/projects | Список проектов пользователя | сессия | — |
GET /api/projects/{project_id} | Полные данные проекта | project_id (path), сессия | — |
POST /api/projects | Создать или сохранить проект (upsert) | id, name | description, 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), сессия | — |
| Команда | Назначение | Обязательные параметры | Необязательные параметры |
|---|---|---|---|
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 | Статистика базы (число записей, диапазон дат, регионы) | — | — |
Ответ передаётся в формате 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.
Предусмотрены три уровня доступа:
| Уровень | Возможности |
|---|---|
| Базовый | Работа с собственными проектами, расчёты, формирование документов |
| Профессиональный | То же и доступ к расширенным функциям, включая подсистему помощи |
| Администратор | То же и управление учётными записями: изменение уровня доступа, блокировка и разблокировка |
Данные проектов изолированы между учётными записями: пользователь видит только собственные проекты.
docker compose ps # состояние контейнера (ожидается healthy)
docker compose logs --tail 200 hydroweb # последние записи журнала
curl -f https://<адрес-сервиса>/api/profiles # проверка доступности интерфейса
Встроенная проверка работоспособности выполняется каждые 30 секунд; при отказе приложения контейнер перезапускается автоматически.
Приложение ведёт журнал стандартными средствами: события входа и неудачных попыток входа, ход выполнения расчётов, предупреждения о нефизичных результатах, ошибки. Журнал доступен командой docker compose logs. Подробности внутренних ошибок в ответах пользователю не раскрываются и остаются только в журнале сервера.
Все изменяемые данные (учётные записи, проекты, реестр заключений) размещены в томе 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 суток.
Обновление выполняется сценарием deploy/deploy.sh. Порядок:
healthy и работоспособности интерфейса.Приведение схемы базы данных к актуальной выполняется при запуске автоматически и не требует ручных действий; операции идемпотентны и безопасны при повторном запуске.
Реализованные меры:
Обязанности эксплуатирующей организации: хранение файла параметров среды в тайне, регулярное обновление системного ПО, использование защищённого соединения, ограничение сетевого доступа к серверу.
| Признак | Вероятная причина | Действия |
|---|---|---|
| Интерфейс не открывается | Контейнер остановлен или отказ веб-сервера узла | docker compose ps, docker compose up -d, проверить журнал |
| Не приходит письмо подтверждения | Не заданы или неверны параметры почтового сервера | Проверить параметры HYDROWEB_SMTP_*, запросить письмо повторно |
| Расчёт завершается предупреждением о нефизичном результате | Исчерпано сопротивление грунта в заделке | Увеличить глубину заделки, проверить уровни воды и характеристики грунтов |
| Расчёт выполняется долго | Многоэтапная схема, работа заделки у предела | Дождаться завершения; ход выполнения отображается на кнопке расчёта |
| Подсистема помощи недоступна (код 503) | Не заданы параметры доступа к языковой модели | Задать параметры либо продолжать работу без подсистемы |
| Все пользователи потеряли доступ | Смена секрета подписи токенов | Повторный вход пользователей; секрет менять только планово |
Техническая поддержка осуществляется правообладателем — ООО «Фьютех». Обращения принимаются по контактным данным, указанным на сайте сервиса. Сопровождение включает консультации по эксплуатации, устранение выявленных ошибок и выпуск обновлений.
| Процесс | Содержание | Исполнитель |
|---|---|---|
| Проектирование | Определение требований, выбор расчётных методов и нормативной основы, проектирование архитектуры и программных интерфейсов | Штатные работники правообладателя |
| Разработка | Написание исходного текста, ведение системы управления версиями, проверка изменений | Штатные работники правообладателя |
| Тестирование | Автоматизированные проверки расчётного ядра и программных интерфейсов; проверка расчётов на контрольных задачах с известными аналитическими решениями; проверка интерфейса перед выпуском | Штатные работники правообладателя |
| Поставка (ввод в эксплуатацию) | Сборка образа приложения, развёртывание на сервере правообладателя, проверка работоспособности после обновления | Штатные работники правообладателя |
| Эксплуатация | Работа пользователей через веб-браузер; наблюдение за состоянием сервиса, резервное копирование | Штатные работники правообладателя |
| Документирование | Подготовка и актуализация эксплуатационной документации, руководств пользователя и разработчика | Штатные работники правообладателя |
| Обучение и квалификация персонала | Внутреннее обучение работников; консультирование пользователей | Штатные работники правообладателя |
| Устранение сбойных ситуаций | Приём обращений, диагностика, исправление, выпуск обновления, уведомление пользователей | Штатные работники правообладателя |
| Поддержка версий и доработка | Планирование выпусков, развитие функций, сопровождение выпущенных версий | Штатные работники правообладателя |
Работы по всем перечисленным процессам выполняются силами штатных работников правообладателя. Договоры на разработку, сопровождение или техническую поддержку с внешними, в том числе иностранными, организациями не заключены.
Сведения приводятся о персонале организации-правообладателя, осуществляющей совершенствование программного обеспечения, устранение сбойных ситуаций и техническую поддержку (не о персонале клиента).
| Показатель | Значение |
|---|---|
| Фактический адрес размещения инфраструктуры разработки | 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 (двух) рабочих дней |
Развёрнутая справка по этому разделу оформлена отдельным документом комплекта («Справка о персонале, местах размещения инфраструктуры и порядке сопровождения программного обеспечения»).