Status: Accepted
Date: 2026-04-18
Разведка enum'ов в референсе (PROTOCOL_ENUMS_ANALYSIS.md, теперь в journal/_historical/) и глоссарий показали два разных русских представления для VoteDecision:
"За", "Против", "Не проголосовал" — с заглавной."за", "против", "не голосовал" — с маленькой. В шаблонах часто ещё и оборачивается .toUpperCase() → «ЗА».Формы для NON_VOTING разные по лексике: "Не проголосовал" vs "не голосовал". Не просто case-разница.
Первая версия нашего enum имела одно поле description со значением "Не проголосовал" — это не покрывало mid-sentence use-case и расходилось с реальным текстом в референсных шаблонах.
У VoteDecision — два поля:
label() — standalone-подпись с заглавной. Для ячеек таблиц, кнопок, заголовков.value() — lowercase-форма, предназначенная для вставки в предложение. Шаблоны сами делают .toUpperCase() если нужен «ЗА» в кавычках.| Code | label() |
value() |
|---|---|---|
APPROVE |
"За" | "за" |
DECLINE |
"Против" | "против" |
NON_VOTING |
"Не проголосовал" | "не голосовал" |
Поле description() (из ADR-0006) не применяется к VoteDecision — его заменили два более специализированных поля.
Positive:
Negative:
description) — исключение из правила ADR-0006. Компенсируется ADR'ом.description с capital case ("Не проголосовал"): ломает mid-sentence рендер, уводит от реального текста шаблонов..lowercase() на enum: работает для APPROVE/DECLINE, но не для NON_VOTING — разная лексика, не case-transformation.MessageSource / resource bundle: решает, но overhead i18n-инфраструктуры ради одного enum избыточен (мы monolingual, ADR-0006).description для доменных enum'ов (от которого это исключение)