3.2 KiB
3.2 KiB
Модуль: Деловое письмо
Ответственность: формирует исходящее деловое письмо с адресатом, регистрационными данными, темой, основным текстом и подписанием.
Расположение: .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().