Initial commit

This commit is contained in:
malysheva committed 2026-10-09 04:24:38 +00:00
commit c534d5ce80
163 files changed
+11500

No files matched your search

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