Initial commit

This commit is contained in:
malysheva committed 2026-10-09 04:24:38 +00:00
commit c534d5ce80
163 files changed
+11500

No files matched your search

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