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