@besales/mcp 0.25.0 → 0.31.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +26 -3
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +22 -0
- package/dist/cli.js.map +1 -1
- package/dist/instructions/server-instructions.d.ts +1 -1
- package/dist/instructions/server-instructions.js +6 -0
- package/dist/instructions/server-instructions.js.map +1 -1
- package/dist/resources/docs/agent-behavior.md +3 -1
- package/dist/resources/docs/pipeline-builder.md +6 -2
- package/dist/resources/registry.js +1 -0
- package/dist/resources/registry.js.map +1 -1
- package/dist/resources/workflows/audit-dialogues.md +89 -0
- package/dist/resources/workflows/compare-models.md +1 -1
- package/dist/schemas/mcp-tools.json +4260 -873
- package/dist/skills/besales-dialogue-audit/SKILL.md +27 -0
- package/dist/skills/install-skill.d.ts +7 -0
- package/dist/skills/install-skill.js +33 -0
- package/dist/skills/install-skill.js.map +1 -0
- package/dist/tools/definitions/broadcast-analytics.d.ts +26 -0
- package/dist/tools/definitions/broadcast-analytics.js +89 -0
- package/dist/tools/definitions/broadcast-analytics.js.map +1 -0
- package/dist/tools/definitions/crm-platform.d.ts +1 -0
- package/dist/tools/definitions/crm-platform.js +5 -0
- package/dist/tools/definitions/crm-platform.js.map +1 -1
- package/dist/tools/definitions/dialogue-export.d.ts +3 -0
- package/dist/tools/definitions/dialogue-export.js +27 -2
- package/dist/tools/definitions/dialogue-export.js.map +1 -1
- package/dist/tools/definitions/model-comparison.js +1 -1
- package/dist/tools/definitions/platform-setup.d.ts +36 -1
- package/dist/tools/definitions/platform-setup.js +130 -0
- package/dist/tools/definitions/platform-setup.js.map +1 -1
- package/dist/tools/definitions/shared.d.ts +10 -4
- package/dist/tools/definitions/shared.js +22 -5
- package/dist/tools/definitions/shared.js.map +1 -1
- package/dist/tools/definitions.d.ts +65 -1
- package/dist/tools/definitions.js +2 -0
- package/dist/tools/definitions.js.map +1 -1
- package/docs/host-setup.md +4 -4
- package/package.json +2 -2
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
# Аудит production-диалогов
|
|
2
|
+
|
|
3
|
+
## Цель
|
|
4
|
+
|
|
5
|
+
Read-only разбор реальных переписок через `besales_dialogues_query` и
|
|
6
|
+
`besales_dialogue_transcript`: найти ошибки агента, доказуемо сопоставить их с
|
|
7
|
+
выполненными trigger-actions и подготовить изменения правил и regression-кейсы.
|
|
8
|
+
Ничего в агенте, CRM или платформе этот workflow не меняет.
|
|
9
|
+
|
|
10
|
+
## Выборка
|
|
11
|
+
|
|
12
|
+
1. Если пользователь не задал период, возьми последние 7 суток и явно укажи это в отчёте.
|
|
13
|
+
2. Для общего аудита фильтруй по периоду, платформам и `has_messages=true`.
|
|
14
|
+
3. Для аудита созданных заявок добавь:
|
|
15
|
+
- `action_type=["GETCOURSE_CREATE_DEAL"]`;
|
|
16
|
+
- `action_success=true`;
|
|
17
|
+
- `action_execution_mode="production"`.
|
|
18
|
+
`GETCOURSE_SEND_PAYMENT_LINK` проверяй отдельной выборкой как коммерческий side effect:
|
|
19
|
+
он может работать с существующим заказом и не доказывает создание новой заявки.
|
|
20
|
+
4. Обойди все страницы `besales_dialogues_query` по `cursor`. Не выдавай первую страницу
|
|
21
|
+
за полную выборку.
|
|
22
|
+
5. Для каждого `conversationId` дочитай все страницы `besales_dialogue_transcript`.
|
|
23
|
+
Объединяй `turns` и `triggerExecutions`; `turn.messageId` связывает реплику с действием.
|
|
24
|
+
|
|
25
|
+
Action-фильтр применяется к действию на сообщении внутри заданного окна дат. Это позволяет
|
|
26
|
+
отличить заявку периода от старого действия в длинном диалоге.
|
|
27
|
+
|
|
28
|
+
## Что считать созданной заявкой
|
|
29
|
+
|
|
30
|
+
- `GETCOURSE_CREATE_DEAL`, `success=true`, `resultSummary.skipped=false` и есть
|
|
31
|
+
`dealNumber` или `dealId` — подтверждённое создание.
|
|
32
|
+
- `executionMode=test` — симуляция, в production-статистику не включать.
|
|
33
|
+
- `resultSummary.skipped=true` — идемпотентный пропуск, новую заявку не считать.
|
|
34
|
+
- Успешное действие без безопасного идентификатора — факт выполнения подтверждён, но создание
|
|
35
|
+
пометь `REVIEW`, не додумывай результат.
|
|
36
|
+
- Сырой result намеренно не доступен. Не пытайся получить его прямым SQL.
|
|
37
|
+
|
|
38
|
+
## Классификация
|
|
39
|
+
|
|
40
|
+
Каждому подтверждённому действию присвой один итог:
|
|
41
|
+
|
|
42
|
+
| Итог | Когда |
|
|
43
|
+
|---|---|
|
|
44
|
+
| `JUSTIFIED` | Новый потенциальный клиент выражает релевантный интерес, готовность обсуждать продукт/условия или просит следующий коммерческий шаг. |
|
|
45
|
+
| `FALSE_POSITIVE` | Действующий/оплативший ученик решает доступ, обучение, материалы, домашнее задание, расписание, возврат или иную поддержку без новой покупки. |
|
|
46
|
+
| `REVIEW` | Контекста недостаточно, намерение смешанное либо действие не подтверждено идентификатором. |
|
|
47
|
+
|
|
48
|
+
Дополнительно поставь тип обращения: `NEW_SALES`, `EXISTING_CUSTOMER_SUPPORT`,
|
|
49
|
+
`ACCESS_PROBLEM`, `TECH_SUPPORT`, `BILLING_SUPPORT`, `OTHER`.
|
|
50
|
+
|
|
51
|
+
## Доказательства
|
|
52
|
+
|
|
53
|
+
- Приведи 1-3 коротких фрагмента клиента с `sentAt` и `messageId`.
|
|
54
|
+
- Укажи trigger name, action type, action time и deal number/id, если они есть.
|
|
55
|
+
- Отделяй наблюдаемый факт от вывода модели.
|
|
56
|
+
- Не выводи телефоны, email, токены и внешние идентификаторы без необходимости.
|
|
57
|
+
- Не утверждай, что оператор написал сообщение: `isAi=false` означает оператор ИЛИ
|
|
58
|
+
историческое сообщение бота.
|
|
59
|
+
|
|
60
|
+
## Масштаб
|
|
61
|
+
|
|
62
|
+
- До 200 диалогов анализируй все.
|
|
63
|
+
- Более 200: если пользователь явно просит весь массив — анализируй весь массив батчами;
|
|
64
|
+
иначе возьми стратифицированную выборку по платформе и trigger name, назови размер выборки
|
|
65
|
+
и не экстраполируй абсолютные числа на всю совокупность.
|
|
66
|
+
|
|
67
|
+
## Формат отчёта
|
|
68
|
+
|
|
69
|
+
1. **Охват:** период, платформы, фильтры, найдено/прочитано/не удалось прочитать.
|
|
70
|
+
2. **Итог:** confirmed actions, justified, false positives, review, false-positive rate.
|
|
71
|
+
3. **Ошибочные заявки:** таблица `conversationId | action | deal | тип | решение | доказательство`.
|
|
72
|
+
4. **Пограничные случаи:** отдельная таблица `REVIEW`.
|
|
73
|
+
5. **Повторяющиеся причины:** паттерны, частота только по фактически разобранной выборке.
|
|
74
|
+
6. **Изменения:** конкретные правила промпта/триггера, но без автоматического применения.
|
|
75
|
+
7. **Regression-кейсы:** входной контекст, ожидаемая реакция агента и запрещённое действие.
|
|
76
|
+
|
|
77
|
+
Нулевой результат тоже фиксируй: какие фильтры применялись и что именно не найдено.
|
|
78
|
+
|
|
79
|
+
## Не использовать для статистики рассылок
|
|
80
|
+
|
|
81
|
+
Этот workflow анализирует содержание диалогов и trigger-actions, но не воспроизводит метрики
|
|
82
|
+
страницы `/broadcast-analytics`. Для «сколько отправлено/доставлено/ответило по дням» используй
|
|
83
|
+
`besales_broadcast_analytics_get`, для результатов отдельных запусков —
|
|
84
|
+
`besales_broadcast_cohorts_list`. `besales_dialogues_query` считает диалоги, а транскрипт содержит
|
|
85
|
+
реплики; оба грейна отличаются от строк получателей волн.
|
|
86
|
+
|
|
87
|
+
Название CRM-воронки не обязано присутствовать в транскрипте. Если нужен справочник CRM pipelines,
|
|
88
|
+
вызови `besales_crm_list`, затем `besales_crm_pipeline_list`. Поле `funnel` в аналитике рассылок —
|
|
89
|
+
отдельная бизнес-воронка волны и приходит из analytics tool.
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
|
|
21
21
|
2. **`besales_model_comparison_run_start`** `{ agent_id, models?, dialogue_count? }`
|
|
22
22
|
— запуск (async). По умолчанию `dialogue_count=5`; `models` опционально (тогда
|
|
23
|
-
набор по умолчанию). До **
|
|
23
|
+
набор по умолчанию). До **21 модели** и **20 диалогов**, если оператор просит
|
|
24
24
|
больше. Возвращает `run_id`.
|
|
25
25
|
|
|
26
26
|
3. **`besales_model_comparison_get`** `{ agent_id, run_id }` — поллируй до
|