---
title: Как работает генерация медиа
description: Решение «инфографика или иллюстрация» на каждую секцию, детерминированный рендер графиков нулевой цены рядом с генеративной моделью и реестр картинок, делающий чистку хранилища безопасной.
locale: ru
version: 0.2.0
canonical: https://enterium-developer-docs.pages.dev/developers/ru/how-it-works/media-generation/
---

> Documentation index: https://enterium-developer-docs.pages.dev/developers/llms.txt — every page of this portal has a Markdown twin at <route>.md; the frozen API contract is at https://enterium-developer-docs.pages.dev/developers/api/openapi.json.

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

## Слой 1 — инфографика или иллюстрация, решается на секцию

Медиа-шаг не декорирует статью равномерно. Каждая контентная секция
классифицируется эвристикой из ~10 сигналов (плотность чисел, сравнения,
формы списков…): секции, тяжёлые данными, получают **инфографику** —
спецификацию графика, детерминированно отрендеренную в headless-браузере,
ценой практически ноль за картинку; нарративные секции — **генеративную
иллюстрацию** от модели картинок ценой в доли цента. Здесь виден
собственный уклон платформы: где контент числовой, детерминированное бьёт
генеративное и по правде, и по цене.

```mermaid
flowchart TB
    SEC[Article section] --> C{Classifier<br/>~10 signals}
    C -- data-heavy --> IG[Infographic<br/>chart spec → headless render<br/>deterministic]
    C -- narrative --> IL[Illustration<br/>image model]
    IG --> ST[(Object storage)]
    IL --> ST
    ST --> ART[Rendered into the article]
```

Сам медиа-сервис — маленькая вендорнутая cloud-функция: stateless, с
хранилищем позади и usage-статистикой в памяти; платформа зовёт его через
типизированный адаптер, как любую другую интеграцию.

## Слой 2 — предохранители квоты

Исчерпание генеративной квоты когда-то выглядело загадочным штормом
пятисоток. Теперь адаптер поднимает провайдерский retry-after хинт,
применяет пол кулдауна, а **квотный брейкер** срабатывает после серии
отказов — прогон падает быстро с явным квотным вердиктом вместо сжигания
минут в ретраях.

## Слой 3 — реестр картинок: чистка без страха

Каждая сохранённая картинка трекается в реестре с явным жизненным циклом:

```mermaid
stateDiagram-v2
    [*] --> generated: created
    generated --> in_use: referenced by an article
    generated --> orphan_candidate: unreferenced past grace
    orphan_candidate --> in_use: reference appears
    orphan_candidate --> trashed: cleanup pass
    trashed --> [*]: storage lifecycle deletes after retention
    in_use --> orphan_candidate: references removed
```

Несущие решения:

- **Референсы сверяются с реальным рендером.** Платформа сообщает, какие
  картинки её статьи реально используют, — включая скан финального HTML,
  добавленный после того, как экстрактор по полям измеримо промахивался
  мимо подавляющего большинства реальных ссылок. Реестр верит
  отрендеренной правде, а не метаданным.
- **Жёсткого удаления нет.** Чистка умеет только *трэшить* — физическое
  удаление позже делает retention-окно объектного хранилища. Ошибочный
  вердикт «сирота» обратим неделями; живой проход чистки однажды вернул
  большую часть бакета с нулём потерянных живых картинок.

## Компромиссы

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

## Пощупать за две минуты

План картинок и сгенерённые ассеты любой статьи видны в её телеметрии;
снапшот-эндпоинт референсов реестра показывает ровно то, что платформа
сейчас декларирует использовать.
