# Страница скачивания Chat Agent

Опубликовано: https://chat-agent.gis-master.ru/downloads/

Файлы:
- https://chat-agent.gis-master.ru/downloads/chat-agent-chrome-2.5.2.zip
- https://chat-agent.gis-master.ru/downloads/chat-agent-flow-diagrams.md

MR !65 и !66 merged; main 81583cfa3ea44c96d1db6171e12527aba0644c45.
Изолированный checkout: локальный источник
Пользовательская основная копия и исходные локальные файлы не менялись.

## Реализация и проверка

Статическая страница в src_front/public/downloads, без новых API и зависимостей.
Nginx возвращает Content-Disposition: attachment для ZIP/Markdown и 404 для отсутствующих файлов.
Оба файла сохранены побайтово. Существующая OAuth-защита сохраняется.

Локально: TypeScript/Vite build; nginx -t и полный nginx-routes.test.sh в отдельном контейнере;
проверены прежние маршруты, раздача двух файлов, байты, заголовки и отсутствующие пути.
Внешний вид проверен в Chrome; local-page.png и production-page.png.

Все пять обязательных checks прошли в pipeline main 5785. В адресном pipeline 5786
тот же SHA используется для принудительной сборки только frontend; незатронутые тестовые группы
штатно пропущены, их skip не считается повторным прогоном тестов.
Build 30482, preflight 30485, refresh 30511 — success.

## Выявленные препятствия

Первый build 30375 завершился ошибкой: общий .dockerignore исключал ZIP.
HTTP-проверка архива остановила сборку до поставки. MR !66 добавил исключение только для нужного файла;
локальный Docker build context с COPY архива проверен.

Обычный build 30432 был success без публикации: native selector не считает одиночное изменение
.dockerignore изменением компонента. Refresh 30461 остановлен защитой unexpected image revision
до deploy/drain. Использован существующий CI_FORCE_BUILD=1 с CI_COMPONENT=frontend;
root CI и инфраструктура не менялись.

## Фактический результат

Front: 1.0.1194, source 81583cfa, 1/1 running. Digest 49cdc0f3e64c863c4406f05faf8fdce9091c526a560392c6a3fb651acfae1dd6
совпал в штатном image verification и свежем Insight после reload. Прежний digest — before.json.
Адресная job проверяет завершение rollout, фактическую идентичность образа и восстановление допуска.

Страница открыта через HTTPS в существующей авторизованной Chrome-сессии.
ZIP скачан кликом; файл 7 559 066 байт, CRC/manifest 2.5.2 и SHA-256 проверены.
Markdown скачан через поддерживаемый downloadMedia, 39 054 байта; SHA-256 проверен.
Оба совпадают с исходными файлами; точные хеши — download-verification.json.
Ожидание download event инструмента один раз завершилось timeout, хотя ZIP фактически скачался;
это не было принято за ошибку сайта или повод менять код. Последующий ZIP downloadMedia также
получил timeout; итог подтверждён фактическим файлом, его временем скачивания и SHA-256.

Локальный preview server остановлен. Ни микрофон, ни установленное расширение не переключались.
