Files
test/.template/development/modules/presentation-commercial-offer.md
T
2026-10-09 04:24:38 +00:00

44 lines
3.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Модуль: Технико-коммерческое предложение
**Ответственность**: формирует ТКП как самостоятельный профиль с предметом, ценой, сроками, коммерческими условиями и приложениями.
**Расположение**: `.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`, а не локальную реализацию.