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

3.7 KiB
Raw Blame History

Модуль: Публичный фасад

Ответственность: предоставляет main.typ и публичным примерам стабильный API, скрывая внутренние DDD-слои и файловую структуру. Расположение: .template/lib/index.typ

Публичный интерфейс

Символ Тип Описание
document() show-функция Собирает документ из явно переданных company, profile, options и body
profiles module namespace Конструкторы report, letter, commercial_offer, contract
components module namespace Поддерживаемые визуальные компоненты для пользовательского content
references module namespace vref, vrefs, eqref и bibliography helpers
load-company() функция Загружает публичный профиль и применяет явные resource overrides
report-executor() функция Разрешает сотрудника, роль, private PNG и offset
private-company-media() функция Разрешает private подпись и печать организации
document-profile() конструктор dictionary Extension contract для нового вида документа

Зависимости

Модуль Что использует
.template/lib/application/render-document.typ Единственный application use case
.template/lib/presentation/profiles/*.typ Публичные profile constructors
.template/lib/presentation/components.typ Разрешённый пользовательский набор компонентов
.template/lib/presentation/references.typ Публичные helpers ссылок
.template/lib/infrastructure/company-assets.typ Загрузка профилей компаний
.template/lib/infrastructure/employees.typ Справочник сотрудников и private settings adapter

Инварианты

  • main.typ и public examples используют один import фасада и не знают внутренних путей.
  • В фасаде нет чтения пользовательских глав, page layout и profile-specific ветвлений.
  • Добавление нового профиля не меняет сигнатуру document().
  • Resource override принимает явные none, path или content и не сканирует .private/.
  • В namespaces экспортируются только документированные символы.
  • В diagnostics используется бренд Scientia.

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

  • Включение пользовательских файлов из chapters/.
  • Создание пользовательских paths к assets/.
  • Выбор типа документа и режима выпуска.
  • Юридическую или смысловую проверку текста.

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

Фасад является границей между пользовательским main.typ и библиотекой. Если public example импортирует domain, infrastructure или конкретный renderer напрямую, фасад недостаточен. Обратная совместимость со старым корневым template.typ не требуется; не создавайте alias в корне.