3.1 KiB
3.1 KiB
Модуль: Стороны
Ответственность: моделирует адресатов, стороны договора, представителей, подписантов и блоки утверждения независимо от их размещения.
Расположение: .template/lib/domain/parties.typ
Публичный интерфейс
| Символ | Тип | Описание |
|---|---|---|
party() |
конструктор dictionary | Создаёт организацию или физическое лицо в роли стороны документа |
recipient() |
конструктор dictionary | Создаёт адресата делового письма или ТКП |
signer() |
конструктор dictionary | Создаёт подписанта с должностью, ФИО, основанием и ресурсом подписи |
approval() |
конструктор dictionary | Создаёт данные блока утверждения отчёта |
validate-parties() |
функция | Проверяет уникальность ролей и профильные обязательные поля |
Зависимости
| Модуль | Что использует |
|---|---|
.template/lib/domain/company.typ |
Может принять нормализованный CompanyProfile как сторону, не загружая его |
Инварианты
- Каждая сторона имеет уникальный
idвнутри документа и непустуюrole. - Recipient допускает отдельно организацию, должность и имя; пустые строки нормализуются в
none. - Signer хранит семантические данные и ресурс, но не layout offsets.
- Contract-party содержит реквизиты либо ссылку на
CompanyProfile, но не оба источника с конфликтующими значениями. - Approval date и document date являются разными полями и не подменяют друг друга.
- Обязательность подписи определяется профилем и режимом выпуска, а не самим
Signer.
Намеренно НЕ обрабатывает
- Координаты и размеры изображений подписи.
- Текст преамбулы договора.
- Склонение ФИО и должностей.
- Загрузку реквизитов из файлов.
Заметки для агента
Письмо, ТКП и договор должны использовать одинаковые базовые Party/Signer, но разные validators. Не добавляйте коммерческие поля в recipient и report-specific approval в party. Если понадобится склонение, создайте отдельный domain service, а не набор условий внутри renderer.