Files
Report-showcase/.template/development/modules/application-render.md
T
2026-10-09 01:45:17 +00:00

2.9 KiB

Модуль: Сборка документа

Ответственность: выполняет 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

Инварианты

  • Renderer никогда не вызывается до завершения всех validators.
  • Строковый company разрешается infrastructure-адаптером; готовый CompanyProfile повторно не загружается.
  • Порядок normalize и validate одинаков для всех профилей.
  • Application не содержит if profile.id == "report" или другой profile-specific логики.
  • body передаётся renderer без изменения пользовательского content.
  • Ошибка содержит stage: resolve-company, normalize-profile, validate-domain или render.

Намеренно НЕ обрабатывает

  • Page layout и show rules.
  • Чтение пользовательского assets/.
  • Юридическую проверку содержимого.
  • Запуск Typst compiler или запись PDF на диск.

Заметки для агента

Этот модуль должен оставаться коротким и скучным: его ценность — стабильный pipeline. Если новая возможность требует ветвления по профилю, добавьте её в profile contract или domain service. Infrastructure подключается как адаптер только для удобного строкового company id.