44 lines
3.5 KiB
Markdown
44 lines
3.5 KiB
Markdown
# Модуль: Технико-коммерческое предложение
|
||
|
||
**Ответственность**: формирует ТКП как самостоятельный профиль с предметом, ценой, сроками, коммерческими условиями и приложениями.
|
||
**Расположение**: `.template/lib/presentation/profiles/commercial-offer.typ`
|
||
|
||
## Публичный интерфейс
|
||
|
||
| Символ | Тип | Описание |
|
||
|--------|-----|----------|
|
||
| `commercial-offer-profile()` | конструктор `DocumentProfile` | Принимает адресата, предмет, стоимость, валюту, сроки и validity |
|
||
| `render-commercial-offer()` | renderer-функция | Собирает шапку, резюме предложения, body, условия, подпись и приложения |
|
||
| `commercial-terms()` | domain-normalizer | Нормализует цену, НДС, валюту, срок и порядок оплаты |
|
||
| `commercial-offer-validators()` | массив functions | Проверяет предмет и обязательные коммерческие поля |
|
||
|
||
## Зависимости
|
||
|
||
| Модуль | Что использует |
|
||
|--------|----------------|
|
||
| `.template/lib/domain/document.typ` | `DocumentProfile` и context |
|
||
| `.template/lib/domain/parties.typ` | Recipient и Signer |
|
||
| `.template/lib/domain/attachments.typ` | Календарный план, ТЗ и другие приложения |
|
||
| `.template/lib/presentation/foundation.typ` | Typography, page и media policy |
|
||
| `.template/lib/presentation/components.typ` | Letter shell, money/date blocks, company footer, signature block |
|
||
|
||
## Инварианты
|
||
|
||
- ТКП имеет собственный `profile.id` и renderer, а не boolean-режим письма.
|
||
- Стоимость хранится структурированно: amount, currency, tax note; renderer не разбирает свободную строку.
|
||
- Срок выполнения и срок действия предложения являются разными полями.
|
||
- Приложения используют общий AttachmentSet и могут иметь цифровую нумерацию.
|
||
- Коммерческие defaults принадлежат constructor, но пользователь может заменить текстовые формулировки через content slots.
|
||
- Renderer не импортирует внешний `G:/TYPST/TKP` и не читает его config.
|
||
|
||
## Намеренно НЕ обрабатывает
|
||
|
||
- Расчёт стоимости из сметы.
|
||
- Юридическую проверку налоговой формулировки.
|
||
- Автоматическое превращение ТКП в договор.
|
||
- Специфические главы научного отчёта.
|
||
|
||
## Заметки для агента
|
||
|
||
> Используйте TKP только как контекст сценариев и визуальную подсказку. Не копируйте монолитный facade. Если уникальная иконка действительно нужна, перенесите её в `.template/lib/assets/icons/` и дайте ей семантическое имя. Таблицы календарного плана должны использовать общий `corp-table`, а не локальную реализацию.
|