# Модуль: Публичный фасад **Ответственность**: предоставляет `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 в корне.