# Модуль: Отчёт **Ответственность**: реализует профиль научно-технического отчёта как стартовую заготовку, не влияя на деловые документы. **Расположение**: `.template/lib/presentation/profiles/report.typ` ## Публичный интерфейс | Символ | Тип | Описание | |--------|-----|----------| | `report-profile()` | конструктор `DocumentProfile` | Принимает метаданные отчёта и безопасные defaults | | `render-report()` | renderer-функция | Собирает титул, служебные страницы, body, библиографии и приложения | | `report-metadata()` | чистая функция | Нормализует название, тему, договор, этап, том, год и режим исследования | | `report-validators()` | массив functions | Проверяет обязательные поля и совместимость опций | ## Зависимости | Модуль | Что использует | |--------|----------------| | `.template/lib/domain/document.typ` | `DocumentProfile`, `DocumentContext` | | `.template/lib/domain/parties.typ` | Approval и список исполнителей | | `.template/lib/appendices.typ` | Локальный контекст заголовков, страниц и нумерации файлов приложений | | `.template/lib/presentation/foundation.typ` | Общую страницу, typography и render mode | | `.template/lib/presentation/components.typ` | Title primitives, signature rows, tables, formula | | `.template/lib/presentation/references.typ` | Cross-references и bibliography sections | | `.template/lib/shared/numbering.typ` | Нумерацию глав, фигур, формул и приложений | ## Инварианты - Все report-specific `set/show/state` локальны `render-report()`. - Титульный лист, список исполнителей и содержание независимо включаются параметрами `show_title_page`, `show_executors` и `show_outline`. - `draft/clean-copy` не загружает изображения подписей и печатей при соответствующей media policy. - Отключённая служебная страница не оставляет пустого листа или лишнего разрыва; первая отображаемая страница получает номер 1. - Counters фигур, таблиц и формул сбрасываются только в границах отчётной главы. - `appendices` содержит только уникальные `path`; название и label принадлежат первому заголовку подключённого файла. - Приложения используют собственную стратегию numbering без изменения других profiles; `attachment()` остаётся моделью писем и договоров. - Bibliographies представлены массивом секций; renderer не ограничивает их количество одним `refs.bib`. - Пользовательский body не изменяется и размещается после служебных страниц. ## Намеренно НЕ обрабатывает - Адресата исходящего письма. - Стоимость и срок действия ТКП. - Стороны и реквизиты договора. - Загрузку компании и пользовательских файлов. ## Заметки для агента > Legacy renderer в `.template/lib/report.typ` является функциональной спецификацией, но его API можно менять. Переносите секции по одной и после каждой сравнивайте snapshots. Сохраните проверенные решения вокруг heading gaps, paragraph indent, continuation tables и executor signatures, пока тест не докажет, что упрощение безопасно.