Initial commit
This commit is contained in:
commit
41d230d524
163 files changed
+11500
No files matched your search
@@ -0,0 +1,41 @@
|
||||
# Модуль: Приложения
|
||||
|
||||
**Ответственность**: задаёт идентичность, порядок, заголовки и нумерацию приложений независимо от профиля и конкретной вёрстки.
|
||||
**Расположение**: `.template/lib/domain/attachments.typ`
|
||||
|
||||
Модель используется письмами, ТКП и договорами. Отчётные приложения подключаются отдельными файлами через параметр `report.appendices`, потому что их заголовок и label должны находиться внутри авторского файла.
|
||||
|
||||
## Публичный интерфейс
|
||||
|
||||
| Символ | Тип | Описание |
|
||||
|--------|-----|----------|
|
||||
| `attachment()` | конструктор dictionary | Создаёт приложение с `id`, `title`, `subtitle`, `body`, `numbering` |
|
||||
| `attachment-set()` | конструктор dictionary | Нормализует массив приложений и общую политику нумерации |
|
||||
| `validate-attachments()` | функция | Проверяет уникальность ids, номеров и допустимость body |
|
||||
| `attachment-label()` | чистая функция | Формирует семантическое обозначение без layout |
|
||||
|
||||
## Зависимости
|
||||
|
||||
| Модуль | Что использует |
|
||||
|--------|----------------|
|
||||
| `.template/lib/shared/numbering.typ` | Стратегии арабской и кириллической нумерации как чистые функции |
|
||||
|
||||
## Инварианты
|
||||
|
||||
- `id` приложения уникален и пригоден для label.
|
||||
- Порядок массива является порядком документа, если пользователь явно не задал sort key.
|
||||
- Номер не хранится одновременно как вычисляемый и вручную заданный без явной override-policy.
|
||||
- `body` является content или функцией, которую renderer вызывает в локальном контексте.
|
||||
- Заголовок обязателен; subtitle необязателен.
|
||||
- Приложение не меняет global counter вне вызова своего renderer.
|
||||
|
||||
## Намеренно НЕ обрабатывает
|
||||
|
||||
- Размещение pagebreak и заголовка приложения.
|
||||
- Физическое объединение внешних PDF.
|
||||
- Подсчёт страниц вложения до компиляции.
|
||||
- Profile-specific текст «Приложение к договору».
|
||||
|
||||
## Заметки для агента
|
||||
|
||||
> Старые `make_appendices` и `appendix-header` решают presentation-задачи и не переносятся в domain. Domain должен одинаково поддерживать кириллические приложения отчёта, цифровые приложения ТКП и именованные приложения договора. Renderer выбирает display policy на основе profile metadata.
|
||||
Reference in new issue
Block a user