# RSS Feed Capability ## ADDED Requirements ### Requirement: R1 — Лимит постов в RSS-ленте Главная RSS-лента (`/index.xml`) MUST содержать не более 5 последних постов (по `publishDate`), отсортированных по дате публикации по убыванию. #### Scenario: Сборка сайта даёт ровно 5 элементов item GIVEN сайт собран командой `hugo --minify` WHEN запрашивается `https://dedinit.ru/index.xml` (файл `public/index.xml`) THEN число элементов `` в `` равно 5 (или меньше, если постов < 5), и это 5 самых свежих постов по дате. ### Requirement: R2 — Полный текст поста в RSS Каждый `` главной RSS-ленты MUST содержать `` с полным HTML-контентом поста (поле `.Content` темы Hugo), обёрнутым в CDATA, включая разметку, блоки кода и абсолютные ссылки на медиафайлы поста. #### Scenario: content:encoded присутствует и содержит медиа-URL GIVEN сайт собран командой `hugo --minify` WHEN в `public/index.xml` смотреть элемент `` любого из 5 последних постов THEN присутствует непустой ``, содержащий HTML поста и ссылки вида `https://dedinit.ru/<год>//hero.svg` (или аналогичные абсолютные URL медиа). ### Requirement: R3 — Описание поста в RSS `` каждого `` MUST быть непустым: используется frontmatter `description` если задан, иначе авто-summary `.Summary`. #### Scenario: description непустое GIVEN сайт собран командой `hugo --minify` WHEN в `public/index.xml` смотреть `` каждого `` THEN оно непустое и не содержит обрезанных HTML-тегов. ### Requirement: R4 — Метаданные элемента RSS Каждый `` MUST содержать корректные ``, `<link>`, `<pubDate>`, `<guid>` (permalink), согласно текущему шаблону темы `themes/rDedInit/layouts/_default/rss.xml`. #### Scenario: Обязательные поля элемента GIVEN сайт собран командой `hugo --minify` WHEN парсить `public/index.xml` как XML THEN каждый `<item>` содержит все 4 обязательных поля, `<link>` и `<guid>` равны полному URL поста (`https://dedinit.ru/<год>/<slug>/`). ### Requirement: R5 — Медиа-обложка в RSS Каждый `<item>` MUST включать в `<content:encoded>` обложку поста (`cover.image`, hero.svg) как `<figure class="entry-cover"><img ...></figure>` перед полным текстом, со ссылкой на абсолютный URL медиафайла (`https://dedinit.ru/<год>/<slug>/hero.svg`), если `cover.image` задан. #### Scenario: Обложка в content:encoded GIVEN сайт собран командой `hugo --minify` WHEN в `public/index.xml` смотреть `<content:encoded>` поста с cover.image THEN он начинается с `<figure class="entry-cover">` и содержит `<img src="https://dedinit.ru/<год>/<slug>/hero.svg"`. #### Scenario: Нет cover — нет figure GIVEN сайт собран командой `hugo --minify` WHEN в `<content:encoded>` поста без cover.image THEN отсутствует `<figure class="entry-cover">`, контент начинается с текста поста.