Initial commit
This commit is contained in:
commit
c534d5ce80
163 files changed
+11500
No files matched your search
@@ -0,0 +1,42 @@
|
||||
# Модуль: Сборка документа
|
||||
|
||||
**Ответственность**: выполняет use case «собрать документ» в фиксированном порядке от пользовательских параметров до вызова renderer.
|
||||
**Расположение**: `.template/lib/application/render-document.typ`
|
||||
|
||||
## Публичный интерфейс
|
||||
|
||||
| Символ | Тип | Описание |
|
||||
|--------|-----|----------|
|
||||
| `render-document()` | функция | Оркестрирует resolve company → normalize → validate → create context → render |
|
||||
| `resolve-profile()` | функция | Проверяет и нормализует встроенный или пользовательский `DocumentProfile` |
|
||||
| `build-context()` | функция | Создаёт итоговый `DocumentContext` из валидированных частей |
|
||||
|
||||
## Зависимости
|
||||
|
||||
| Модуль | Что использует |
|
||||
|--------|----------------|
|
||||
| `.template/lib/domain/document.typ` | Контракт профиля, context и render options |
|
||||
| `.template/lib/domain/company.typ` | Валидацию CompanyProfile |
|
||||
| `.template/lib/domain/parties.typ` | Валидацию сторон и подписантов |
|
||||
| `.template/lib/domain/attachments.typ` | Валидацию приложений |
|
||||
| `.template/lib/infrastructure/company-assets.typ` | Загрузку компании только если передан строковый id |
|
||||
|
||||
## Инварианты
|
||||
|
||||
- Renderer никогда не вызывается до завершения всех validators.
|
||||
- Строковый `company` разрешается infrastructure-адаптером; готовый `CompanyProfile` повторно не загружается.
|
||||
- Порядок normalize и validate одинаков для всех профилей.
|
||||
- Application не содержит `if profile.id == "report"` или другой profile-specific логики.
|
||||
- `body` передаётся renderer без изменения пользовательского content.
|
||||
- Ошибка содержит stage: `resolve-company`, `normalize-profile`, `validate-domain` или `render`.
|
||||
|
||||
## Намеренно НЕ обрабатывает
|
||||
|
||||
- Page layout и show rules.
|
||||
- Чтение пользовательского `assets/`.
|
||||
- Юридическую проверку содержимого.
|
||||
- Запуск Typst compiler или запись PDF на диск.
|
||||
|
||||
## Заметки для агента
|
||||
|
||||
> Этот модуль должен оставаться коротким и скучным: его ценность — стабильный pipeline. Если новая возможность требует ветвления по профилю, добавьте её в profile contract или domain service. Infrastructure подключается как адаптер только для удобного строкового company id.
|
||||
Reference in new issue
Block a user