# Модуль: Ресурсы компаний **Ответственность**: читает публичные данные `.template/companies/`, нормализует JSON, создаёт устойчивые Typst paths и применяет явные overrides подписи и печати. **Расположение**: `.template/lib/infrastructure/company-assets.typ` ## Публичный интерфейс | Символ | Тип | Описание | |--------|-----|----------| | `load-company()` | функция | Загружает профиль по разрешённому id и принимает `logo`, `signature`, `stamp` overrides | | `available-companies()` | функция | Возвращает детерминированный список встроенных ids | | `merge-resources()` | чистая функция | Применяет только явно переданные resource overrides | ## Зависимости | Модуль | Что использует | |--------|----------------| | `.template/lib/domain/company.typ` | `company-profile()` и `validate-company()` | | `.template/companies/*/data.json` | Публичные реквизиты организаций | | `.template/companies/*/logo.*` | Публичные логотипы | | `.template/lib/assets/placeholders/` | Безопасные круг и крест | ## Инварианты - Адаптер не сканирует `assets/` или `.private/`. - Относительные внутренние paths создаются в infrastructure-файле. - Private paths организаций создаются адаптером сотрудников из явной настройки и передаются как готовые `path`. - Идентификатор компании выбирается из явного registry. - Публичные JSON не содержат путей к реальным подписям и печатям. - `none` сохраняется как отсутствие ресурса и обрабатывается media policy. - Указанный override не подменяется placeholder при ошибке загрузки. ## Намеренно НЕ обрабатывает - Layout логотипа, подписи или печати. - Поиск файлов по имени. - Сетевую загрузку реквизитов. ## Заметки для агента > Typst `path` сохраняет контекст файла, в котором создан. Public company paths создавайте здесь, а absolute `.private/` paths — только в private/employee adapter. Значения `auto` и `none` должны различаться: `auto` означает взять публичное значение профиля, `none` — осознанно применить media policy.