3.5 KiB
3.5 KiB
Модуль: Технико-коммерческое предложение
Ответственность: формирует ТКП как самостоятельный профиль с предметом, ценой, сроками, коммерческими условиями и приложениями.
Расположение: .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, а не локальную реализацию.