openspec: архив changes series-taxonomy-and-header, archive-by-year-month, deploy-sftp-incremental (2026-09-25)
deploy-dedinit / Build & SFTP Deploy (push) Successful in 7m13s

This commit is contained in:
2026-09-25 08:31:28 +00:00
parent 92b7094fc7
commit 800f93a22f
16 changed files with 97 additions and 4 deletions
@@ -0,0 +1,47 @@
## Purpose
Страница «Архив» (/posts/) блога dedinit.ru отображает все посты,
сгруппированные по годам и месяцам (как штатный архив Hugo), вместо
плоского списка с пагинацией.
## ADDED 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/ (как и раньше)