Files
2026-10-09 04:24:38 +00:00

49 lines
3.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Модуль: Публичный фасад
**Ответственность**: предоставляет `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 в корне.