Initial commit
This commit is contained in:
commit
c534d5ce80
163 files changed
+11500
No files matched your search
@@ -0,0 +1,40 @@
|
||||
# Модуль: Стороны
|
||||
|
||||
**Ответственность**: моделирует адресатов, стороны договора, представителей, подписантов и блоки утверждения независимо от их размещения.
|
||||
**Расположение**: `.template/lib/domain/parties.typ`
|
||||
|
||||
## Публичный интерфейс
|
||||
|
||||
| Символ | Тип | Описание |
|
||||
|--------|-----|----------|
|
||||
| `party()` | конструктор dictionary | Создаёт организацию или физическое лицо в роли стороны документа |
|
||||
| `recipient()` | конструктор dictionary | Создаёт адресата делового письма или ТКП |
|
||||
| `signer()` | конструктор dictionary | Создаёт подписанта с должностью, ФИО, основанием и ресурсом подписи |
|
||||
| `approval()` | конструктор dictionary | Создаёт данные блока утверждения отчёта |
|
||||
| `validate-parties()` | функция | Проверяет уникальность ролей и профильные обязательные поля |
|
||||
|
||||
## Зависимости
|
||||
|
||||
| Модуль | Что использует |
|
||||
|--------|----------------|
|
||||
| `.template/lib/domain/company.typ` | Может принять нормализованный `CompanyProfile` как сторону, не загружая его |
|
||||
|
||||
## Инварианты
|
||||
|
||||
- Каждая сторона имеет уникальный `id` внутри документа и непустую `role`.
|
||||
- Recipient допускает отдельно организацию, должность и имя; пустые строки нормализуются в `none`.
|
||||
- Signer хранит семантические данные и ресурс, но не layout offsets.
|
||||
- Contract-party содержит реквизиты либо ссылку на `CompanyProfile`, но не оба источника с конфликтующими значениями.
|
||||
- Approval date и document date являются разными полями и не подменяют друг друга.
|
||||
- Обязательность подписи определяется профилем и режимом выпуска, а не самим `Signer`.
|
||||
|
||||
## Намеренно НЕ обрабатывает
|
||||
|
||||
- Координаты и размеры изображений подписи.
|
||||
- Текст преамбулы договора.
|
||||
- Склонение ФИО и должностей.
|
||||
- Загрузку реквизитов из файлов.
|
||||
|
||||
## Заметки для агента
|
||||
|
||||
> Письмо, ТКП и договор должны использовать одинаковые базовые Party/Signer, но разные validators. Не добавляйте коммерческие поля в recipient и report-specific approval в party. Если понадобится склонение, создайте отдельный domain service, а не набор условий внутри renderer.
|
||||
Reference in new issue
Block a user