Ответственность: выполняет use case «собрать документ» в фиксированном порядке от пользовательских параметров до вызова renderer.
Расположение: .template/lib/application/render-document.typ
| Символ | Тип | Описание |
|---|---|---|
render-document() |
функция | Оркестрирует resolve company → normalize → validate → create context → render |
resolve-profile() |
функция | Проверяет и нормализует встроенный или пользовательский DocumentProfile |
build-context() |
функция | Создаёт итоговый DocumentContext из валидированных частей |
| Модуль | Что использует |
|---|---|
.template/lib/domain/document.typ |
Контракт профиля, context и render options |
.template/lib/domain/company.typ |
Валидацию CompanyProfile |
.template/lib/domain/parties.typ |
Валидацию сторон и подписантов |
.template/lib/domain/attachments.typ |
Валидацию приложений |
.template/lib/infrastructure/company-assets.typ |
Загрузку компании только если передан строковый id |
company разрешается infrastructure-адаптером; готовый CompanyProfile повторно не загружается.if profile.id == "report" или другой profile-specific логики.body передаётся renderer без изменения пользовательского content.resolve-company, normalize-profile, validate-domain или render.assets/.Этот модуль должен оставаться коротким и скучным: его ценность — стабильный pipeline. Если новая возможность требует ветвления по профилю, добавьте её в profile contract или domain service. Infrastructure подключается как адаптер только для удобного строкового company id.