Перейти к содержимому

Описание технических средств хранения исходного текста и объектного кода и средств компиляции

Версия 0.2.0 (редакция RU), проект · Скачать DOCX

Проект: документы проходят юридическую проверку. Пометки [ЗАПОЛНИТЬ] и [ПРОВЕРИТЬ] будут заполнены и сняты до подачи заявления.

Условия подачи [ЗАПОЛНИТЬ: удалить этот раздел, когда все условия выполнены]

Документ описывает размещение средств хранения и сборки, которое должно существовать на дату подачи заявления. Пока хотя бы одно из условий ниже не выполнено, сведения документа не соответствуют действительности и заявление подавать нельзя: недостоверные сведения влекут отказ во включении сведений в реестр (подпункт «а» пункта 27 Правил) и отказ в регистрации нового заявления в течение 12 месяцев (подпункт «б» пункта 17 Правил).

  1. [ПРОВЕРИТЬ ДО ПОДАЧИ] Репозиторий исходного текста со всей историей, ветками и тегами размещён в системе хранения на территории Российской Федерации (раздел 2), как требует подпункт «и» пункта 5 Правил. Копии вне Российской Федерации не используются для разработки и сборки.
  2. [ПРОВЕРИТЬ ДО ПОДАЧИ] Сборка всех образов выполняется только на сборочных серверах на территории Российской Федерации (раздел 4); иные системы сборки отключены.
  3. [ПРОВЕРИТЬ ДО ПОДАЧИ] Объектный код (образы контейнеров и чарты Helm) публикуется только в реестр образов на территории Российской Федерации (раздел 3); инсталляции получают образы только из него.
  4. [ПРОВЕРИТЬ ДО ПОДАЧИ] Все внешние источники зависимостей, перечисленные в разделе 5, заменены копиями или кэширующими прокси на территории Российской Федерации, а сборка проверена без доступа к иным источникам.
  5. [ПРОВЕРИТЬ ДО ПОДАЧИ] Развёртывание обновлений выполняется только из сборочной системы на территории Российской Федерации (раздел 4.4); управление программным обеспечением и его обновление из-за рубежа невозможны.
  6. [ПРОВЕРИТЬ ДО ПОДАЧИ] Сведения разделов 2–4 (адреса, договоры, версии) подтверждены документами, которые прилагаются к заявлению или предъявляются по запросу (раздел 6).

1. Общие сведения

1.1. Назначение документа

Документ содержит описание технических средств хранения исходного текста и объектного кода программного комплекса «Айтечество» (далее — программный комплекс) и средств его компиляции (сборки), включая место их размещения. Документ предусмотрен подпунктом «ж» пункта 11 Правил формирования и ведения единого реестра российских программ для электронных вычислительных машин и баз данных и единого реестра программ для электронных вычислительных машин и баз данных из государств — членов Евразийского экономического союза, за исключением Российской Федерации, утверждённых постановлением Правительства Российской Федерации от 16.11.2015 № 1236 (в редакции от 13.08.2026) (далее — Правила), и описывает соответствие программного комплекса требованию подпункта «и» пункта 5 Правил.

1.2. Сведения о программном обеспечении

ПараметрЗначение
НаименованиеПрограммный комплекс «Айтечество»
Версия0.2.0 (редакция RU)
ПравообладательИндивидуальный предприниматель Орлова Юлия Витальевна
Система контроля версийGit
Языки программированияGo, Python, TypeScript; SQL (схема базы данных)
Форма объектного кодаОбразы контейнеров формата OCI для платформы linux/amd64; чарты Helm

1.3. Состав исходного текста

Исходный текст хранится в одном репозитории Git. Репозиторий содержит исходный текст компонентов программного комплекса, тесты, общие контракты (схема базы данных, JSON-схемы, типы API), сценарии сборки (Dockerfile), описание конвейера сборки, манифесты развёртывания (чарты Helm, шаблон стека Docker Swarm) и документацию.

КомпонентНазначениеЯзык и форма объектного кода
gatewayШлюз: приём запросов, маскирование и восстановление данных, политики, проксирование к моделямGo; статически скомпонованный исполняемый файл в образе контейнера
apiAPI управления, фоновые задачи, миграции базы данных, биллингPython; пакет с зависимостями в образе контейнера
nlpСервис распознавания именованных сущностейPython; пакет с зависимостями и словарями в образе контейнера
extractorИзвлечение текста из вложенных документовPython; пакет в образе контейнера с офисным пакетом для старых форматов
webВеб-консоль и сайтTypeScript; собранное приложение Next.js в образе контейнера
contractsСхема базы данных, JSON-схемы, типы APISQL, JSON, YAML, TypeScript; входят в сборку компонентов
backupРезервное копирование базы данных (для установки в Docker Swarm)Сценарий оболочки; образ контейнера

Объём исходного текста продукта, представленного в документе «Текст программы», указан на его титульном листе (число файлов, строк и SHA-256 листинга, коммит Git).

1.4. Схема размещения

Все средства хранения и сборки находятся на территории Российской Федерации и контролируются правообладателем:

  • репозиторий исходного текста, система учёта задач, система непрерывной интеграции и реестр образов и пакетов — в российском сервисе GitFlic по договору правообладателя с оператором сервиса (разделы 2, 3);
  • сборочный сервер — виртуальный сервер, арендованный правообладателем у российского поставщика услуг: на нём работают сборочный агент системы непрерывной интеграции, кэширующие прокси зависимостей и нагрузочный тест (разделы 4, 5);
  • копии сторонних образов, чартов и файлов релизов, необходимых для сборки и установки, — в реестре того же сервиса (раздел 5).

Учётная запись организации в сервисе и договоры принадлежат правообладателю; административный доступ имеют только правообладатель и исполнитель по договору на доработку и сопровождение программы для ЭВМ «Айтечество» (документ «Описание процессов, обеспечивающих поддержание жизненного цикла программного обеспечения», раздел 6).

2. Средства хранения исходного текста

2.1. Система хранения

ПараметрЗначение
Система хранения репозиториевGitFlic — российский сервис хранения репозиториев Git с системой учёта задач, непрерывной интеграцией и реестром образов и пакетов (облачная версия сервиса)
Оператор сервиса[ЗАПОЛНИТЬ: наименование и ИНН оператора сервиса]
Место размещенияЦентр обработки данных оператора на территории Российской Федерации [ЗАПОЛНИТЬ: адрес центра обработки данных по сведениям оператора]
Основание размещенияДоговор правообладателя с оператором сервиса (раздел 6)
Адрес репозитория[ЗАПОЛНИТЬ: адрес репозитория в сервисе]
Защищённые веткиОсновная ветка: прямая запись запрещена, изменения вносятся только через запросы на слияние после рецензирования и прохождения автоматических проверок [ПРОВЕРИТЬ ДО ПОДАЧИ: защита основной ветки настроена в сервисе]
ДоступПерсональные учётные записи правообладателя и исполнителя; операции с репозиторием — по SSH-ключам или персональным токенам; сборочный агент — по токену с правом чтения репозитория и публикации в реестр [ЗАПОЛНИТЬ: число учётных записей]
Учёт задачСистема учёта задач сервиса: неисправности, предложения и план выпусков (документ «Описание процессов, обеспечивающих поддержание жизненного цикла программного обеспечения», разделы 2.2 и 3.2)
Резервное копированиеЕжесуточное зеркальное копирование репозитория со всей историей, ветками и тегами на сборочный сервер правообладателя (раздел 4.1); хранятся копии за 30 дней

2.2. Порядок внесения изменений

Изменения исходного текста вносятся в отдельных ветках и попадают в основную ветку через запрос на слияние. До слияния сборочная система выполняет автоматические проверки, перечисленные в документе «Описание процессов, обеспечивающих поддержание жизненного цикла программного обеспечения». Каждый выпуск отмечается тегом Git вида vX.Y.Z; коммит, из которого выгружен текст программы, указан на титульном листе документа «Текст программы».

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

3. Средства хранения объектного кода

3.1. Реестр образов

ПараметрЗначение
Реестр образов контейнеров и чартов HelmРеестр образов и реестр пакетов (Helm, generic) сервиса GitFlic, используемого для хранения исходного текста (раздел 2.1)
Оператор, место и основание размещенияКак в разделе 2.1
Адрес реестра[ЗАПОЛНИТЬ: адрес реестра образов]
ПубликацияТолько сборочным агентом правообладателя (раздел 4.1) по токену
Доступ заказчиковПерсональные учётные данные с правом только чтения, выдаваемые на срок лицензионного договора (документ «Описание технических средств активации, выдачи, распространения и управления лицензиями», раздел 3.2)
Срок хранения образовОбразы и чарты выпусков vX.Y.Z — бессрочно; промежуточные сборки (теги sha-…) — не менее 90 дней

3.2. Состав объектного кода

Объектный код каждого выпуска — набор образов контейнеров (по одному на компонент) и чарты Helm. Образ собирается один раз из коммита, проверяется сканером уязвимостей и только после успешной проверки получает теги: sha-<первые 12 символов коммита> и номер выпуска vX.Y.Z. Образ, не прошедший проверку, тегов не получает и не может быть развёрнут. Инсталляции ссылаются на образы по тегу выпуска; неизменность содержимого обеспечивается дайджестом SHA-256 образа. При сборке формируется перечень компонентов образа (SBOM).

ОбразСодержимое
gatewayИсполняемый файл шлюза; базовый образ без командной оболочки (distroless static, Debian 13), пользователь без прав администратора
apiПакет aitech_api с зависимостями (API управления, фоновые задачи, миграции); Python 3.12; менеджеры пакетов и компиляторы удалены
nlpПакет aitech_nlp с зависимостями и словарями морфологии и распознавания сущностей; модели загружаются из установленных пакетов, без обращений к сети при работе
extractorПакет aitech_extractor; офисный пакет LibreOffice (без графического интерфейса) для старых форматов документов; менеджеры пакетов удалены
webСобранное приложение Next.js (режим standalone) на Node.js 24; менеджеры пакетов удалены
backupPostgreSQL 17 (клиент pg_dump), средства шифрования и выгрузки копий в объектное хранилище

Сторонние образы, которые используются при установке (PostgreSQL, Valkey, объектное хранилище, обратный прокси, оператор PostgreSQL для Kubernetes и др.), перечислены в документе «Перечень сторонних компонентов» и закреплены по дайджесту; их копии размещаются в том же реестре (раздел 5).

4. Средства компиляции (сборки)

4.1. Сборочная система

ПараметрЗначение
Система непрерывной интеграцииСистема CI/CD сервиса GitFlic; описание конвейера хранится в репозитории; задания выполняются только сборочным агентом правообладателя
Сборочный серверОдин виртуальный сервер, арендованный правообладателем у российского поставщика услуг; на нём работают сборочный агент, кэширующие прокси зависимостей (раздел 5), зеркальная копия репозитория (раздел 2.1) и нагрузочный тест [ЗАПОЛНИТЬ: ОС, процессор, память, диск]
Место размещения[ЗАПОЛНИТЬ: центр обработки данных, адрес на территории Российской Федерации]
Основание размещенияДоговор аренды сервера (раздел 6)
Средство сборки образовDocker Engine с BuildKit (docker buildx) [ЗАПОЛНИТЬ: версия на сборочном сервере]
Целевая платформаlinux/amd64

4.2. Инструменты сборки

Версии инструментов закреплены в сценариях сборки (Dockerfile) и файлах зависимостей репозитория; базовые образы закреплены по дайджесту SHA-256.

ИнструментВерсияНазначение
Go (компилятор и компоновщик)1.27.3Сборка шлюза: CGO_ENABLED=0, флаги -trimpath -buildvcs=false -ldflags="-s -w"
Python3.12.15Среда выполнения api, nlp, extractor; Python-компоненты не компилируются в машинный код, а поставляются как пакеты в образе
uv0.12.7Установка зависимостей Python строго по файлам блокировки (uv sync --frozen)
Node.js24.22.0Сборка и выполнение веб-приложения
pnpm12.8.1Установка зависимостей веб-приложения строго по файлу блокировки (--frozen-lockfile)
TypeScript6.0.3Компиляция веб-приложения
Next.js16.4.0 [ПРОВЕРИТЬ ДО ПОДАЧИ: до выпуска обновлено до версии с исправлением известных критических уязвимостей (не ниже 16.4.2); указать версию выпуска]Сборка веб-приложения (режим standalone)
Базовый образ сборки Gogolang 1.27.3, Debian 12Стадия сборки шлюза
Базовый образ Pythonpython 3.12.15-slim, Debian 13Стадии сборки и выполнения api, nlp, extractor
Базовый образ Node.jsnode 24.22.0, Debian 13 (slim)Стадии сборки и выполнения web
Базовый образ шлюзаdistroless static, Debian 13Стадия выполнения шлюза

4.3. Порядок сборки

  1. Сборочная система получает исходный текст из репозитория (раздел 2) по коммиту основной ветки или тегу выпуска.
  2. Проверяется согласованность общих контрактов и их копий в компонентах, формат файла закрепления сторонних образов, конфигурация развёртывания.
  3. Выполняются статический анализ, проверка типов, модульные и интеграционные тесты всех компонентов, тесты качества маскирования, проверка совместимости с предыдущим выпуском и поиск известных уязвимостей в зависимостях.
  4. Для каждого компонента собирается образ контейнера (docker buildx build, платформа linux/amd64) по многостадийному Dockerfile: стадия сборки устанавливает зависимости по файлам блокировки из источников раздела 5 и выполняет самопроверку, стадия выполнения содержит только необходимые для работы файлы и запускается от пользователя без прав администратора.
  5. Образ публикуется в реестр (раздел 3) без тегов, проверяется сканером уязвимостей; при отсутствии исправимых критических уязвимостей образу присваиваются теги.
  6. Еженедельно повторно проверяются на уязвимости все закреплённые сторонние образы.

Сборка воспроизводима в том смысле, что все входные данные закреплены: базовые образы — по дайджесту, зависимости — файлами блокировки с хешами (go.sum, uv.lock, pnpm-lock.yaml). Побайтовое совпадение образов при повторной сборке не гарантируется.

4.4. Развёртывание обновлений

Обновление инсталляции правообладателя выполняется заданием сборочной системы на сборочном агенте правообладателя: задание запускается правообладателем или исполнителем только для образов, прошедших проверки раздела 4.3, формирует файл стека с тегом выпуска и разворачивает его на сервере инсталляции; образы загружаются только из реестра правообладателя (раздел 3). Инсталляции заказчиков обновляются заказчиками самостоятельно (документ «Информация, необходимая для установки и эксплуатации», раздел 10): средств удалённого управления инсталляциями заказчиков и принудительного обновления программный комплекс не содержит.

5. Источники зависимостей сборки

Сборка не обращается к хранилищам за пределами Российской Федерации: каждый внешний источник заменён копией в реестре правообладателя (раздел 3) или кэширующим прокси на сборочном сервере (раздел 4.1). Копии пополняются при изменении файлов зависимостей; целостность полученных файлов проверяется по хешам из файлов блокировки и закрепления. Перечень сторонних компонентов с версиями и лицензиями приведён в документе «Перечень сторонних компонентов».

Исходный источникЧто из него получаетсяИсточник при сборке в РФ
Публичные реестры образов контейнеровБазовые образы сборки и выполнения; образы PostgreSQL, Valkey, объектного хранилища, обратного прокси, компонентов KubernetesКопии образов в реестре правообладателя, загруженные по дайджестам из Dockerfile и файла images.lock.yaml
Прокси модулей Go и база контрольных суммМодули Go шлюза; средства статического анализаКэширующий прокси модулей Go на сборочном сервере (переменная GOPROXY); модули проверяются по файлу go.sum репозитория, обращение к внешней базе контрольных сумм отключено
Индекс пакетов Python (PyPI)Зависимости api, nlp, extractor, включая словари морфологии и модели распознавания сущностейКэширующее зеркало индекса пакетов на сборочном сервере; пакеты проверяются по хешам файлов uv.lock
Публикации релизов проектов с открытым исходным кодомПакет модели spaCy для английского языка; средства rclone и age для образа резервного копированияКопии файлов в реестре пакетов правообладателя (generic); проверка по SHA-256, закреплённым в репозитории
Реестр пакетов npmpnpm и зависимости веб-приложенияКэширующее зеркало реестра npm на сборочном сервере; пакеты проверяются по хешам файла pnpm-lock.yaml
Внешний сервис шрифтовШрифты веб-интерфейсаФайлы шрифтов включаются в репозиторий и подключаются из файлов приложения; обращения к внешнему сервису при сборке нет [ПРОВЕРИТЬ ДО ПОДАЧИ: способ подключения шрифтов изменён]
Репозитории пакетов DebianLibreOffice, шрифты, tini в образе extractorЗеркало репозиториев Debian на территории Российской Федерации [ЗАПОЛНИТЬ: адрес зеркала]
Репозитории чартов HelmЧарты контроллера входящего трафика, cert-manager, оператора PostgreSQL, мониторинга (только для установки в Kubernetes)Копии чартов в реестре Helm правообладателя
База уязвимостей сканераОбновление базы сканера образовКопия базы в реестре правообладателя, обновляемая ежесуточно на сборочном сервере; сканер использует только копию

6. Подтверждающие сведения

СведенияДокумент или ссылка
Договор с оператором сервиса GitFlic (хранение исходного текста, учёт задач, CI/CD, реестр образов и пакетов)[ЗАПОЛНИТЬ: номер и дата договора]
Договор аренды сборочного сервера[ЗАПОЛНИТЬ: поставщик услуг, номер и дата договора]
Адреса центров обработки данныхРазделы 2.1 и 4.1
Лица, имеющие административный доступ к средствам хранения и сборкиПравообладатель и исполнитель по договору на доработку и сопровождение — 2 лица (документ «Описание процессов, обеспечивающих поддержание жизненного цикла программного обеспечения», раздел 6)
Коммит и SHA-256 листинга исходного текстаУказаны на титульном листе документа «Текст программы»