Files
test/.template/development/modules/domain-parties.md
T
2026-10-09 04:24:38 +00:00

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.