# Модуль: Приложения **Ответственность**: задаёт идентичность, порядок, заголовки и нумерацию приложений независимо от профиля и конкретной вёрстки. **Расположение**: `.template/lib/domain/attachments.typ` Модель используется письмами, ТКП и договорами. Отчётные приложения подключаются отдельными файлами через параметр `report.appendices`, потому что их заголовок и label должны находиться внутри авторского файла. ## Публичный интерфейс | Символ | Тип | Описание | |--------|-----|----------| | `attachment()` | конструктор dictionary | Создаёт приложение с `id`, `title`, `subtitle`, `body`, `numbering` | | `attachment-set()` | конструктор dictionary | Нормализует массив приложений и общую политику нумерации | | `validate-attachments()` | функция | Проверяет уникальность ids, номеров и допустимость body | | `attachment-label()` | чистая функция | Формирует семантическое обозначение без layout | ## Зависимости | Модуль | Что использует | |--------|----------------| | `.template/lib/shared/numbering.typ` | Стратегии арабской и кириллической нумерации как чистые функции | ## Инварианты - `id` приложения уникален и пригоден для label. - Порядок массива является порядком документа, если пользователь явно не задал sort key. - Номер не хранится одновременно как вычисляемый и вручную заданный без явной override-policy. - `body` является content или функцией, которую renderer вызывает в локальном контексте. - Заголовок обязателен; subtitle необязателен. - Приложение не меняет global counter вне вызова своего renderer. ## Намеренно НЕ обрабатывает - Размещение pagebreak и заголовка приложения. - Физическое объединение внешних PDF. - Подсчёт страниц вложения до компиляции. - Profile-specific текст «Приложение к договору». ## Заметки для агента > Старые `make_appendices` и `appendix-header` решают presentation-задачи и не переносятся в domain. Domain должен одинаково поддерживать кириллические приложения отчёта, цифровые приложения ТКП и именованные приложения договора. Renderer выбирает display policy на основе profile metadata.