Files

49 lines
3.3 KiB
Markdown

# archive-by-year-month Specification
## Purpose
Страница «Архив» (/posts/) блога dedinit.ru отображает все посты,
сгруппированные по годам и месяцам (как штатный архив Hugo), вместо
плоского списка с пагинацией.
## Requirements
### Requirement: Группировка постов по годам и месяцам
Система SHALL отображать на странице /posts/ список всех постов,
сгруппированный по годам публикации, и внутри каждого года — по месяцам
публикации. Заголовки содержат год/месяц и количество постов в группе.
#### Scenario: Страница /posts/ показывает годы
- **WHEN** пользователь открывает страницу /posts/
- **THEN** страница содержит заголовки годов (например «2026», «2023»), под каждым — посты этого года
- **AND** возле каждого года отображается количество постов
#### Scenario: Внутри года посты сгруппированы по месяцам
- **WHEN** пользователь открывает страницу /posts/
- **THEN** внутри каждого года посты сгруппированы по месяцам публикации (например «January», «September»)
- **AND** возле каждого месяца отображается количество постов
#### Scenario: Каждый пост — ссылка на свою страницу
- **WHEN** пользователь видит запись в архиве
- **THEN** заголовок поста является ссылкой на его страницу (permalink)
- **AND** под заголовком отображаются метаданные поста (дата и пр.)
### Requirement: Заголовок и описание страницы
Система SHALL отображать на странице /posts/ заголовок «Архив» и описание
страницы (из frontmatter секции).
#### Scenario: Заголовок страницы
- **WHEN** пользователь открывает страницу /posts/
- **THEN** заголовок страницы — «Архив»
### Requirement: Сохранение остальной функциональности секции
Система SHALL сохранять работоспособность RSS-ленты секции /posts/ и URL
постов (permalinks не меняются) при переключении layout на архив.
#### Scenario: RSS секции не сломан
- **WHEN** пользователь запрашивает RSS-ленту секции /posts/ (index.xml)
- **THEN** лента валидна и содержит посты секции
#### Scenario: Permalinks постов не меняются
- **WHEN** пользователь открывает пост из архива
- **THEN** URL поста соответствует permalink /:year/:slug/ (как и раньше)