Files
Report-showcase/.template/development/modules/presentation-report.md
T
2026-10-09 01:45:17 +00:00

4.3 KiB

Модуль: Отчёт

Ответственность: реализует профиль научно-технического отчёта как стартовую заготовку, не влияя на деловые документы. Расположение: .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, пока тест не докажет, что упрощение безопасно.