# Модуль: Договор **Ответственность**: предоставляет расширяемый каркас договора с преамбулой, произвольными разделами, сторонами, реквизитами, подписанием и приложениями. **Расположение**: `.template/lib/presentation/profiles/contract.typ` ## Публичный интерфейс | Символ | Тип | Описание | |--------|-----|----------| | `contract-profile()` | конструктор `DocumentProfile` | Принимает номер, дату, место, название, стороны и section options | | `render-contract()` | renderer-функция | Собирает header, preamble slot, body sections, requisites, signing и attachments | | `contract-section()` | конструктор dictionary | Описывает нумерованный или именованный раздел с body | | `contract-validators()` | массив functions | Проверяет стороны, номера, даты и уникальность sections | ## Зависимости | Модуль | Что использует | |--------|----------------| | `.template/lib/domain/document.typ` | `DocumentProfile` и context | | `.template/lib/domain/parties.typ` | Contract parties, representatives и signers | | `.template/lib/domain/attachments.typ` | Приложения и спецификации | | `.template/lib/presentation/foundation.typ` | Base typography и signing-copy mode | | `.template/lib/presentation/components.typ` | Requisites table, multi-party signing, tables и numbering primitives | ## Инварианты - В v1 поддерживается не менее двух сторон; модель не зашита строго на роли «Заказчик/Исполнитель». - Section id и display number уникальны. - Юридический текст sections остаётся пользовательским content. - Preamble можно передать content или собрать из сторон через явный helper; автоматический текст не является юридической гарантией. - Requisites берутся из Party/CompanyProfile, а не дублируются внутри renderer. - Signing-copy может резервировать место без реальных изображений подписи и печати. - Приложения используют тот же AttachmentSet, что отчёт и ТКП. ## Намеренно НЕ обрабатывает - Юридическую достаточность и актуальность условий. - Электронную подпись и криптографию. - Согласование версий договора и tracked changes. - Автоматическую генерацию актов, счетов или УПД. ## Заметки для агента > Не превращайте contract-profile в библиотеку юридических формулировок. Профиль отвечает за типографику и композицию. Чтобы будущие лицензионные, сервисные или смешанные договоры не требовали изменения renderer, sections должны быть открытым массивом с устойчивой numbering policy.