ОПИСАНИЕ ПРОЦЕССОВ ЖИЗНЕННОГО ЦИКЛАПРОГРАММНОГО ОБЕСПЕЧЕНИЯ «АССИСТЕНТ ПРО»Документ: Описание процессов, обеспечивающих поддержание жизненного цикла ПО (подпункт «е» пункта 11 Правил, утверждённых постановлением Правительства Российской Федерации от 16 ноября 2015 г. № 1236)
Правообладатель: ИП Белоусов Дмитрий Владимирович (ИНН 665206580503)
Дата: 28 апреля 2026 г.
Документ описывает процессы, обеспечивающие поддержание жизненного цикла программного обеспечения «Ассистент ПРО», включая разработку, сборку, тестирование, развёртывание, сопровождение, управление инцидентами и уязвимостями, вывод из эксплуатации. Подготовлен в соответствии с ГОСТ Р ИСО/МЭК 12207-2010 «Информационная технология. Системная и программная инженерия. Процессы жизненного цикла программных средств» с учётом требований Постановления Правительства Российской Федерации от 16 ноября 2015 г. № 1236.
1. ВВЕДЕНИЕ
Жизненный цикл программного обеспечения «Ассистент ПРО» включает совокупность процессов, выполняемых правообладателем и заказчиком на протяжении всего срока существования программного продукта — от формирования требований до вывода из эксплуатации. Все процессы документированы и поддерживаются стандартизированными инструментами.
2. СТАДИИ ЖИЗНЕННОГО ЦИКЛА
Жизненный цикл ПО включает следующие стадии:
Стадия | Содержание |
1. Формирование требований | Сбор и анализ потребностей, согласование функциональных характеристик и технических требований |
2. Проектирование | Разработка архитектурных решений, выбор технологий, проектирование интерфейсов и моделей данных |
3. Разработка | Написание исходного кода, реализация функциональности, ревью изменений |
4. Тестирование | Модульное, интеграционное, нагрузочное тестирование; контроль качества |
5. Сборка и выпуск | Сборка Docker-образов, фиксация версии, формирование релизной заметки |
6. Развёртывание | Установка на серверной инфраструктуре заказчика |
7. Эксплуатация | Использование конечными пользователями и администраторами |
8. Сопровождение | Устранение неисправностей, обновления, развитие, контроль уязвимостей |
9. Модернизация | Реализация новых требований, миграция на новые версии зависимостей |
10. Вывод из эксплуатации | Прекращение использования, удаление данных, архивирование |
3. ОСНОВНЫЕ ПРОЦЕССЫ ЖИЗНЕННОГО ЦИКЛА
3.1. Процесс разработки
Разработка ПО ведётся правообладателем — ИП Белоусов Дмитрий Владимирович — с привлечением штатных и внештатных специалистов. Используется методология итеративной разработки с короткими циклами (1–2 недели).
3.1.1. Используемые инструменты разработки
Категория | Инструмент | Назначение |
Среды разработки (IDE) | Visual Studio Code, JetBrains PyCharm Professional | Написание и отладка кода |
Контроль версий | Git (≥ 2.40) | Версионирование исходных текстов |
Хостинг репозитория | GitLab Self-Hosted (https://office1.mmvs.ru:8929/) | Центральное хранилище исходного кода и Issue-tracker |
Управление зависимостями | uv (≥ 0.8) и pip (≥ 24) | Детерминированное разрешение Python-зависимостей |
Контейнеризация | Docker (≥ 24.0), Docker Compose (≥ 2.20) | Сборка и оркестрация компонентов |
Линтер / форматтер | Ruff (≥ 0.12.1) | Автоматическая проверка стиля и потенциальных ошибок |
Документация | Sphinx (RST), Markdown | Поддержание актуальной документации |
Бенчмарки | scripts/benchmark.py (собственный) | Контроль регрессии производительности |
3.1.2. Процесс внесения изменений
- Создание задачи в Issue-tracker GitLab (с идентификатором, описанием, приоритетом).
- Создание ветки разработки с префиксом feat/, fix/, chore/, refactor/ от main.
- Реализация изменений; добавление/обновление автоматических тестов.
- Локальный прогон pytest -q и ruff check; устранение замечаний.
- Создание Merge Request в GitLab; автоматический запуск pipeline (lint + tests + benchmark).
- Code Review (минимум 1 ревьюер; для критических изменений — 2).
- Слияние в main после получения approve и зелёного pipeline.
- Автоматическая публикация changelog при создании тега релиза.
3.2. Процесс сборки
Сборка ПО автоматизирована и описана в Dockerfile с многоэтапной сборкой:
- Этап build — установка системных пакетов (build-essential, cmake, ninja-build, libopenblas-dev, python3-dev), разрешение Python-зависимостей через uv, копирование исходного кода, прекомпиляция в байт-код.
- Этап runtime — формирование минимального образа (≈ 1,2 ГБ): копирование готового виртуального окружения и байт-кода из этапа build, установка только runtime-зависимостей (libopenblas0-pthread, curl, ca-certificates, MongoDB Database Tools).
Сборка запускается командой sudo docker compose build (локально) или в pipeline GitLab CI на серверах правообладателя.
3.3. Процесс тестирования
3.3.1. Виды тестирования
Уровень | Инструменты | Покрытие |
Модульное (backend) | pytest (≥ 8.4.1) | ≈ 48 файлов, > 100 тест-кейсов |
Интеграционное (backend) | pytest + httpx (ASGI-клиент) | Ключевые сценарии REST API |
Модульное (frontend) | vitest (≥ 1.6.0), @testing-library/dom | Виджет, админ-панель |
Нагрузочное | scripts/benchmark.py | p50/p95-латентность; CI-гейт p95 < 4000 мс |
Регрессионное | Полный прогон pytest и frontend-тестов на каждый релиз | Все ключевые сценарии |
Ручная приёмка | Чек-лист функций (UI, ботов, краулера, голоса) | Критические пользовательские пути |
3.3.2. Запуск тестов
# Backend
pytest -q
ruff check
# Frontend (виджет, админ-панель)
cd widget && npm test
cd admin && npm test
3.3.3. Условия выпуска релиза
- Все автоматические тесты проходят успешно.
- p95-латентность согласно бенчмарку — не выше 4000 мс.
- Ruff не выдаёт критичных замечаний (W6xx, E5xx).
- Все Merge Request закрыты, журнал изменений (CHANGELOG.md) обновлён.
- Документация (CLAUDE.md, docs/) актуальна.
3.4. Процесс развёртывания (инсталляции)
Развёртывание у заказчика выполняется в контейнерной среде Docker. Стандартный порядок:
- Подготовка сервера: установка Docker Engine ≥ 24.0, Docker Compose ≥ 2.20.
- Получение дистрибутива: клонирование git-репозитория или распаковка архива.
- Запуск автоматического скрипта scripts/bootstrap.sh, который проверяет зависимости, формирует конфигурационные файлы, генерирует случайные пароли (если не заданы), при наличии домена настраивает Caddy с автоматическим выпуском TLS-сертификатов.
- Сборка и запуск: sudo docker compose up -d --build.
- Проверка работоспособности: healthcheck сервисов, доступность администратора по адресу /admin/.
- Настройка проектов и наполнение базы знаний — см. документ «Инструкция по эксплуатации».
3.5. Процесс эксплуатации
В фазе эксплуатации система обслуживается двумя группами:
- Со стороны заказчика — администраторами и операторами, осуществляющими управление содержимым (база знаний, проекты, боты, оценки, журналы).
- Со стороны правообладателя — командой технической поддержки и развития, обрабатывающей обращения и выпускающей обновления.
В рамках эксплуатации регулярно выполняются:
- Контроль состояния всех сервисов через раздел «Обзор» админ-панели и метрики Prometheus.
- Просмотр и анализ структурированных журналов (через UI или sudo docker compose logs).
- Контроль использования аппаратных ресурсов (CPU, RAM, диск).
- Анализ раздела «Неотвеченные» с последующим пополнением базы знаний.
- Контроль успешности резервного копирования.
3.6. Процесс сопровождения
3.6.1. Типы изменений в фазе сопровождения
Тип | Срок реакции | Срок устранения (целевой SLA) |
P1 — критичная неисправность (ПО недоступно) | 1 рабочий час | 8 рабочих часов |
P2 — серьёзная неисправность (нарушение ключевой функциональности) | 4 рабочих часа | 3 рабочих дня |
P3 — некритичная неисправность (обходной путь существует) | 1 рабочий день | 10 рабочих дней |
P4 — пожелание / косметическое замечание | 5 рабочих дней | Согласованный график (квартал) |
3.6.2. Канал обращений
- Электронная почта: rtfdeamon@mail.ru — основной канал технической поддержки.
- Issue-tracker GitLab — для заказчиков с заключённым договором на сопровождение.
- Телефонная связь — по согласованию (предоставляется при заключении договора SLA).
3.6.3. Регламент обновлений
- Регулярные минорные релизы (исправления, мелкие улучшения) — не реже 1 раза в 2 недели.
- Мажорные релизы (новая функциональность, изменение архитектуры) — по согласованию с заказчиком, с предварительным уведомлением не менее чем за 5 рабочих дней.
- Экстренные исправления (security/critical) — выпускаются вне очереди, как только исправление готово и протестировано.
- Каждый релиз получает уникальный тег в git и описание в CHANGELOG.md.
3.6.4. Процедура установки обновлений у заказчика
- Создание резервной копии текущего состояния.
- Получение новой версии: git pull origin main или git checkout <тег_релиза>.
- Пересборка и перезапуск: sudo docker compose build && sudo docker compose up -d.
- Проверка работоспособности по чек-листу функций.
- При наличии замечаний — откат на предыдущую версию (см. документ «Документация по эксплуатации», раздел 6.3).
3.7. Управление инцидентами и неисправностями
3.7.1. Регистрация
Все инциденты регистрируются:
- В Issue-tracker GitLab правообладателя (для зарегистрированных заказчиков).
- По электронной почте rtfdeamon@mail.ru с автоматическим присвоением идентификатора.
Каждый инцидент содержит: уникальный идентификатор, дату/время регистрации, заявителя, описание симптомов, приоритет, ответственного, статус (Open / In Progress / Resolved / Closed), комментарии хода работ.
3.7.2. Жизненный цикл инцидента
- Регистрация (Open).
- Подтверждение приёма и предварительный анализ (Triage).
- Воспроизведение и локализация (Investigation).
- Разработка исправления / обходного решения (Fixing).
- Тестирование исправления (Testing).
- Включение в релиз и публикация (Release).
- Подтверждение со стороны заказчика и закрытие (Closed).
3.7.3. Эскалация
В случае невозможности устранения в нормативный срок инцидент эскалируется руководителю проекта. Заказчик уведомляется о изменении плана не позднее истечения SLA.
3.8. Управление уязвимостями
3.8.1. Источники сведений об уязвимостях
- Банк данных угроз и уязвимостей ФСТЭК России (БДУ ФСТЭК) — bdu.fstec.ru.
- База Common Vulnerabilities and Exposures (CVE).
- Уведомления о безопасности от поставщиков используемых компонентов (Python, Docker, MongoDB, Redis, Qdrant, FastAPI, LangChain, Ollama и др.).
- Отчёты исследователей безопасности через канал security@<домен>.
3.8.2. Процедура реагирования
- Получение и оценка информации об уязвимости — в течение 1 рабочего дня.
- Классификация по уровню критичности (Critical / High / Medium / Low) и проверка применимости к экземпляру ПО.
- Подготовка исправления или временного обходного решения.
- Тестирование исправления.
- Выпуск экстренного релиза для критичных и высоких уязвимостей в кратчайшие сроки (до 5 рабочих дней).
- Уведомление всех заказчиков и публикация Security Advisory.
3.8.3. Целевые сроки устранения
Критичность (CVSS) | Целевой срок |
Critical (≥ 9,0) | до 7 календарных дней |
High (7,0–8,9) | до 30 календарных дней |
Medium (4,0–6,9) | до 90 календарных дней |
Low (< 4,0) | включается в плановый релиз |
3.9. Управление конфигурацией
- Все артефакты ПО (исходный код, конфигурационные файлы, файлы зависимостей uv.lock, Docker-файлы, документация) хранятся в едином репозитории Git.
- Версионирование — семантическое (SemVer): MAJOR.MINOR.PATCH.
- Релизные ветки — отдельные теги release-X.Y.Z, фиксирующие состояние выпуска.
- Файл uv.lock обеспечивает детерминированное разрешение зависимостей в любых средах.
- Конфигурация конкретного экземпляра — в файле .env заказчика, который не хранится в репозитории.
- Файл versions.json содержит хеши клиентских артефактов (виджет, бот, админ-панель) для контроля целостности.
3.10. Процесс модернизации
Модернизация выполняется по согласованному плану:
- Сбор требований и пожеланий от заказчиков (через канал поддержки и встречи по сопровождению).
- Формирование roadmap на квартал.
- Прохождение полного цикла разработки и тестирования (см. п. 3.1–3.3).
- Согласование сроков внедрения с заказчиками.
- Развёртывание новой версии у каждого заказчика индивидуально по графику.
3.11. Вывод из эксплуатации
При прекращении использования ПО заказчиком выполняются:
- Создание финальной резервной копии и согласование её передачи заказчику.
- Остановка всех сервисов: sudo docker compose down.
- Удаление контейнеров и образов: sudo docker compose down -v --rmi all.
- Очистка volumes (mongo_data, qdrant_data, ollama_data) — после получения письменного согласия заказчика.
- Удаление каталога установки и кэшей.
- Передача итогового акта о выводе из эксплуатации.
4. ПЕРСОНАЛ И КОМПЕТЕНЦИИ
4.1. Команда правообладателя
Жизненный цикл поддерживается командой правообладателя в составе:
- Технический руководитель / архитектор — формирование roadmap, контроль архитектурных решений.
- Разработчики Python (backend) — реализация и сопровождение FastAPI-приложения, фоновых задач Celery, поисковой подсистемы.
- Разработчики ИИ — поддержка моделей эмбеддингов и LLM, оптимизация конвейера RAG.
- Разработчики frontend — поддержка SPA-админки и встраиваемого виджета.
- DevOps / системный администратор — поддержка CI/CD, инфраструктуры репозитория, развёртывания у заказчиков.
- Тестировщик / специалист по обеспечению качества — модульные, интеграционные, регрессионные и нагрузочные тесты.
- Технический писатель — поддержание пользовательской и эксплуатационной документации.
- Специалист технической поддержки — обработка обращений, ведение Issue-tracker, эскалация.
4.2. Контактная информация технической поддержки
Параметр | Значение |
Электронная почта | rtfdeamon@mail.ru |
Адрес правообладателя | 620078, Свердловская область, г. Екатеринбург, ул. Комсомольская, стр. 37, помещ. 406 |
Режим работы | Понедельник–пятница, 09:00–18:00 (Мск) |
Issue-tracker | GitLab Self-Hosted, https://office1.mmvs.ru:8929/ |
Канал безопасности | security@mmvs.ru (для сообщений об уязвимостях) |
5. ИНСТРУМЕНТЫ И ИНФРАСТРУКТУРА ОБЕСПЕЧЕНИЯ ЖЦ
Категория | Инструмент | Размещение |
Система управления версиями | Git | На серверах правообладателя в РФ |
Хостинг репозитория | GitLab Self-Hosted | https://office1.mmvs.ru:8929/ (ЦОД на территории РФ) |
Issue-tracker | GitLab Issues | Тот же сервер GitLab |
CI/CD | GitLab CI | Тот же сервер GitLab |
Артефакт-репозиторий | GitLab Container Registry | Тот же сервер GitLab |
Управление зависимостями | uv (артефакты — в репозитории) | — |
Внешние пакеты | PyPI (для Python), npm (для frontend) | Внешние, но кешируются локально |
Хранение моделей ИИ | Hugging Face Hub (внешний); локальный кэш data/hf | Кэш на серверах правообладателя/заказчика |
Документация | Sphinx (исходники в /docs), статический сайт | GitLab Pages / FTP |
Резервное копирование инфраструктуры | Ежедневные снапшоты GitLab | Серверы правообладателя в РФ |
Все технические средства, обеспечивающие жизненный цикл ПО, размещены на территории Российской Федерации (см. документ «Описание технических средств хранения исходного текста, объектного кода и средств компиляции»).
6. РЕЗЕРВНОЕ КОПИРОВАНИЕ И ОБЕСПЕЧЕНИЕ СОХРАННОСТИ ДАННЫХ
6.1. Резервное копирование данных заказчика
Подсистема резервного копирования выполняет ежедневные архивы MongoDB средствами mongodump (формат --archive --gzip). Архивы могут храниться:
- Локально, в каталоге заказчика /opt/sitellm_vertebro/data/backups (или volume).
- В удалённом хранилище Яндекс.Диск (опционально, по согласованию с заказчиком).
Расписание управляется через раздел «Бэкапы» админ-панели; журнал операций фиксируется в MongoDB-коллекции backup_settings.history.
6.2. Резервное копирование исходного кода
- Ежедневные автоматические снапшоты GitLab (база и хранилище репозиториев).
- Зеркальный репозиторий на резервной площадке.
- Контейнерные образы — в локальном Container Registry с регламентом ротации (последние 30 версий хранятся постоянно).
6.3. Регламент проверки восстанавливаемости
Не реже 1 раза в квартал выполняется тестовое восстановление случайной резервной копии в изолированной среде. Результаты фиксируются в журнале и доступны для аудита.
7. УПРАВЛЕНИЕ ЗАВИСИМОСТЯМИ И КОНТРОЛЬ ИНОСТРАННЫХ КОМПОНЕНТОВ
В составе ПО
используются библиотеки с открытым исходным кодом, лицензии которых совместимы с распространением. Перечень внешних зависимостей зафиксирован в pyproject.toml и uv.lock.
Контроль:
- Зависимости загружаются из PyPI и кэшируются на серверах правообладателя.
- Для критических компонентов поддерживаются собственные форки на случай прекращения публичной поддержки.
- Регулярно (не реже 1 раза в месяц) выполняется аудит уязвимостей зависимостей через Ruff Security и опциональные SCA-инструменты.
- Ни одна функциональная возможность не зависит от обращения к зарубежным сервисам в рантайме (за исключением случаев, когда заказчик явно подключает внешние LLM-API).
Документ подготовлен правообладателем и предназначен для предоставления в составе пакета документов на включение сведений о ПО в Единый реестр российских программ для ЭВМ и БД.