presentation-letter.md 3.2 KB

Модуль: Деловое письмо

Ответственность: формирует исходящее деловое письмо с адресатом, регистрационными данными, темой, основным текстом и подписанием. Расположение: .template/lib/presentation/profiles/letter.typ

Публичный интерфейс

Символ Тип Описание
letter-profile() конструктор DocumentProfile Принимает дату, исходящий номер, адресата, тему и signing options
render-letter() renderer-функция Собирает фирменную шапку, body, подпись и footer
letter-metadata() чистая функция Нормализует регистрационные поля и тему
letter-validators() массив functions Проверяет адресата, дату и подписанта

Зависимости

Модуль Что использует
.template/lib/domain/document.typ DocumentProfile и render options
.template/lib/domain/parties.typ Recipient и Signer
.template/lib/domain/attachments.typ Перечень приложений к письму
.template/lib/presentation/foundation.typ Общие tokens и media policy
.template/lib/presentation/components.typ Letter header, company footer, attachment list, signature block

Инварианты

  • Letter profile не содержит коммерческой стоимости, графика работ или offer validity.
  • Recipient может быть частично заполнен, но validator требует хотя бы организацию или ФИО.
  • Исходящий номер и дата отображаются единым регистрационным блоком.
  • Footer включается profile option и не исчезает из-за состояния приложения другого документа.
  • Подпись, печать и место для ручного подписания obey media policy.
  • Renderer не импортирует report или commercial-offer profile.

Намеренно НЕ обрабатывает

  • Коммерческие условия ТКП.
  • Титул и содержание отчёта.
  • Разделы договора.
  • Регистрацию письма во внешней системе.

Заметки для агента

Внешний проект TKP содержит полезный визуальный референс шапки и footer, но его global comp-data и in-appendix не переносятся. Состояние footer, если оно понадобится, должно принадлежать только текущему renderer и сбрасываться внутри него. Общая геометрия письма выносится в components, чтобы ТКП переиспользовал её без импорта render-letter().