Cursor Agent Cursor commited on
Commit
4aea050
·
1 Parent(s): 530209e

Set RosUpack assistant as Space default

Browse files

Co-authored-by: Cursor <cursoragent@cursor.com>

backend/main.py CHANGED
@@ -409,7 +409,7 @@ def resolve_project_path(relative_path: str) -> Optional[str]:
409
 
410
 
411
  def default_workflow_path() -> str:
412
- return os.path.join(project_dir, "workflows", "rwb1_workflow.json")
413
 
414
 
415
  def test_log_path(test_run_id: str, workflow_name: str) -> Optional[str]:
 
409
 
410
 
411
  def default_workflow_path() -> str:
412
+ return os.path.join(project_dir, "workflows", "rosupack_2026_assistant_workflow.json")
413
 
414
 
415
  def test_log_path(test_run_id: str, workflow_name: str) -> Optional[str]:
scenarios/source/rosupack_2026_schedule.json ADDED
@@ -0,0 +1,47 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "event": "RosUpack 2026",
3
+ "stand": "Готэк",
4
+ "appointments": [
5
+ {
6
+ "time": "10:30",
7
+ "visitor_name": "Анна Морозова",
8
+ "company": "ВкусМаркет",
9
+ "gotek_contact": "Ирина Соколова",
10
+ "topic": "SRP и препаки для входа в федеральную торговую сеть",
11
+ "meeting_place": "переговорная 1 у ресепшен"
12
+ },
13
+ {
14
+ "time": "11:15",
15
+ "visitor_name": "Дмитрий Орлов",
16
+ "company": "СеверМолоко",
17
+ "gotek_contact": "Алексей Петров",
18
+ "topic": "гофрокартон для снижения повреждений при транспортировке",
19
+ "meeting_place": "демо-зона 4D Lab"
20
+ },
21
+ {
22
+ "time": "12:00",
23
+ "visitor_name": "Елена Ким",
24
+ "company": "ФармЛайн",
25
+ "gotek_contact": "Мария Лебедева",
26
+ "topic": "плоский картон хром-эрзац для запуска новой линейки",
27
+ "meeting_place": "переговорная 2"
28
+ },
29
+ {
30
+ "time": "14:20",
31
+ "visitor_name": "Сергей Волков",
32
+ "company": "ГринСнэк",
33
+ "gotek_contact": "Николай Васильев",
34
+ "topic": "гибкая упаковка и барьерные свойства материалов",
35
+ "meeting_place": "стойка менеджеров Готэк"
36
+ },
37
+ {
38
+ "time": "15:45",
39
+ "visitor_name": "Ольга Романова",
40
+ "company": "РитейлПлюс",
41
+ "gotek_contact": "Татьяна Егорова",
42
+ "topic": "комплексное упаковочное решение для СТМ",
43
+ "meeting_place": "переговорная 1 у ресепшен"
44
+ }
45
+ ],
46
+ "fallback": "Если точная запись не найдена или данных недостаточно, ассистент вызывает менеджера стенда."
47
+ }
workflows/rosupack_2026_assistant_workflow.json ADDED
@@ -0,0 +1,1598 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "format": "nodes-ui-flow",
3
+ "version": 2,
4
+ "rootGraph": {
5
+ "nodes": [
6
+ {
7
+ "id": "start",
8
+ "type": "basic/start",
9
+ "position": {
10
+ "x": -920,
11
+ "y": 0
12
+ },
13
+ "data": {
14
+ "title": "Начало",
15
+ "width": 260
16
+ },
17
+ "style": {
18
+ "width": 260
19
+ },
20
+ "dragHandle": ".node-shell__header",
21
+ "measured": {
22
+ "width": 260,
23
+ "height": 186
24
+ },
25
+ "selected": false,
26
+ "dragging": false
27
+ },
28
+ {
29
+ "id": "role-sofia",
30
+ "type": "basic/update-role",
31
+ "position": {
32
+ "x": -560,
33
+ "y": -40
34
+ },
35
+ "data": {
36
+ "title": "Роль Софии",
37
+ "role": "Ты София, женщина-ассистент на стенде группы предприятий «Готэк» на RosUpack 2026. Говори спокойно, экспертно и кратко. Помогай посетителю с записью, веди разговор о компании, упаковочном инжиниринге и 4D Lab, обязательно сопровождай расспросы и рассказы демонстрацией упаковки. Если вопрос не по сценарию или нужен человек, вызывай менеджера стенда.",
38
+ "width": 430
39
+ },
40
+ "style": {
41
+ "width": 430
42
+ },
43
+ "dragHandle": ".node-shell__header",
44
+ "measured": {
45
+ "width": 430,
46
+ "height": 331
47
+ },
48
+ "selected": false,
49
+ "dragging": false
50
+ },
51
+ {
52
+ "id": "q-intent",
53
+ "type": "basic/question",
54
+ "position": {
55
+ "x": -60,
56
+ "y": -40
57
+ },
58
+ "data": {
59
+ "title": "Главное намерение",
60
+ "question": "Здравствуйте! Добро пожаловать на стенд «Готэк». Я София, цифровой ассистент стенда. Подскажите, вы пришли на встречу по записи, хотите обсудить компанию и упаковочные решения или вам сразу позвать менеджера?",
61
+ "paraphrase": false,
62
+ "allowBargeIn": false,
63
+ "noTimeout": false,
64
+ "width": 480
65
+ },
66
+ "style": {
67
+ "width": 480
68
+ },
69
+ "dragHandle": ".node-shell__header",
70
+ "measured": {
71
+ "width": 430,
72
+ "height": 382
73
+ },
74
+ "selected": false,
75
+ "dragging": false
76
+ },
77
+ {
78
+ "id": "save-initial-request",
79
+ "type": "basic/save-memory",
80
+ "position": {
81
+ "x": 500,
82
+ "y": -460
83
+ },
84
+ "data": {
85
+ "title": "Сохранить первичный запрос",
86
+ "key": "initial_request",
87
+ "instruction": "Кратко сохрани исходный запрос посетителя: запись, интерес к компании/упаковке или просьба позвать человека.",
88
+ "retryOnUnclear": false,
89
+ "retryQuestion": "Уточните, пожалуйста, чем я могу помочь.",
90
+ "retryParaphrase": false,
91
+ "width": 380
92
+ },
93
+ "style": {
94
+ "width": 380
95
+ },
96
+ "dragHandle": ".node-shell__header",
97
+ "measured": {
98
+ "width": 380,
99
+ "height": 601
100
+ },
101
+ "selected": false,
102
+ "dragging": false
103
+ },
104
+ {
105
+ "id": "branch-intent",
106
+ "type": "basic/semantic-branch",
107
+ "position": {
108
+ "x": 500,
109
+ "y": -20
110
+ },
111
+ "data": {
112
+ "title": "Понять намерение",
113
+ "choices": [
114
+ {
115
+ "id": "appointment",
116
+ "label": "посетитель пришел по записи; у него назначена встреча; ищет конкретного сотрудника; спрашивает расписание"
117
+ },
118
+ {
119
+ "id": "scenario",
120
+ "label": "посетитель хочет узнать о компании Готэк, упаковке, упаковочных решениях, 4D Lab, инжиниринге или подобрать решение"
121
+ },
122
+ {
123
+ "id": "manager",
124
+ "label": "посетитель просит позвать человека, менеджера, сотрудника; вопрос вне сценария; не хочет общаться с ассистентом"
125
+ }
126
+ ],
127
+ "retryOnUnclear": true,
128
+ "retryQuestion": "Уточните, пожалуйста: вы пришли на встречу, хотите обсудить упаковочные решения или позвать менеджера?",
129
+ "retryParaphrase": false,
130
+ "width": 480
131
+ },
132
+ "style": {
133
+ "width": 480
134
+ },
135
+ "dragHandle": ".node-shell__header",
136
+ "measured": {
137
+ "width": 480,
138
+ "height": 650
139
+ },
140
+ "selected": false,
141
+ "dragging": false
142
+ },
143
+ {
144
+ "id": "q-schedule-info",
145
+ "type": "basic/question",
146
+ "position": {
147
+ "x": 1080,
148
+ "y": -680
149
+ },
150
+ "data": {
151
+ "title": "Данные для записи",
152
+ "question": "Конечно. Назовите, пожалуйста, ваше имя, компанию и, если знаете, с кем или на какое время у вас назначена встреча.",
153
+ "paraphrase": false,
154
+ "allowBargeIn": false,
155
+ "noTimeout": false,
156
+ "width": 460
157
+ },
158
+ "style": {
159
+ "width": 460
160
+ },
161
+ "dragHandle": ".node-shell__header",
162
+ "measured": {
163
+ "width": 430,
164
+ "height": 382
165
+ },
166
+ "selected": false,
167
+ "dragging": false
168
+ },
169
+ {
170
+ "id": "save-schedule-query",
171
+ "type": "basic/save-memory",
172
+ "position": {
173
+ "x": 1580,
174
+ "y": -900
175
+ },
176
+ "data": {
177
+ "title": "Сохранить запрос по расписанию",
178
+ "key": "schedule_query",
179
+ "instruction": "Извлеки имя, компанию, время встречи и имя сотрудника, если они названы. Верни краткую строку для поиска в расписании.",
180
+ "retryOnUnclear": true,
181
+ "retryQuestion": "Повторите, пожалуйста, имя, компанию или с кем назначена встреча.",
182
+ "retryParaphrase": false,
183
+ "width": 390
184
+ },
185
+ "style": {
186
+ "width": 390
187
+ },
188
+ "dragHandle": ".node-shell__header",
189
+ "measured": {
190
+ "width": 380,
191
+ "height": 601
192
+ },
193
+ "selected": false,
194
+ "dragging": false
195
+ },
196
+ {
197
+ "id": "answer-schedule",
198
+ "type": "basic/knowledge-answer",
199
+ "position": {
200
+ "x": 1580,
201
+ "y": -560
202
+ },
203
+ "data": {
204
+ "title": "Ответ по расписанию",
205
+ "source": "uploaded",
206
+ "contextPath": "scenarios/source/rosupack_2026_schedule.json",
207
+ "originalPath": "scenarios/source/rosupack_2026_schedule.json",
208
+ "contextFilename": "rosupack_2026_schedule.json",
209
+ "contextCharacters": 3000,
210
+ "allowBargeIn": false,
211
+ "width": 400
212
+ },
213
+ "style": {
214
+ "width": 400
215
+ },
216
+ "dragHandle": ".node-shell__header",
217
+ "measured": {
218
+ "width": 400,
219
+ "height": 391
220
+ },
221
+ "selected": false,
222
+ "dragging": false
223
+ },
224
+ {
225
+ "id": "q-schedule-manager",
226
+ "type": "basic/question",
227
+ "position": {
228
+ "x": 2080,
229
+ "y": -560
230
+ },
231
+ "data": {
232
+ "title": "Помощь менеджера по записи",
233
+ "question": "Если запись не отображается или нужно проводить вас к коллеге, я могу сразу позвать менеджера стенда. Позвать?",
234
+ "paraphrase": false,
235
+ "allowBargeIn": false,
236
+ "noTimeout": false,
237
+ "width": 460
238
+ },
239
+ "style": {
240
+ "width": 460
241
+ },
242
+ "dragHandle": ".node-shell__header",
243
+ "measured": {
244
+ "width": 430,
245
+ "height": 382
246
+ },
247
+ "selected": false,
248
+ "dragging": false
249
+ },
250
+ {
251
+ "id": "branch-schedule-manager",
252
+ "type": "basic/semantic-branch",
253
+ "position": {
254
+ "x": 2580,
255
+ "y": -560
256
+ },
257
+ "data": {
258
+ "title": "Позвать по записи",
259
+ "choices": [
260
+ {
261
+ "id": "yes",
262
+ "label": "да; позовите; пусть подойдет; нужен сотрудник; помогите найти встречу"
263
+ },
264
+ {
265
+ "id": "no",
266
+ "label": "нет; не надо; спасибо; понятно"
267
+ }
268
+ ],
269
+ "retryOnUnclear": true,
270
+ "retryQuestion": "Позвать менеджера, чтобы он помог с вашей встречей?",
271
+ "retryParaphrase": false,
272
+ "width": 430
273
+ },
274
+ "style": {
275
+ "width": 430
276
+ },
277
+ "dragHandle": ".node-shell__header",
278
+ "measured": {
279
+ "width": 480,
280
+ "height": 650
281
+ },
282
+ "selected": false,
283
+ "dragging": false
284
+ },
285
+ {
286
+ "id": "ws-demo-profile",
287
+ "type": "basic/assistant-message",
288
+ "position": {
289
+ "x": 1080,
290
+ "y": 20
291
+ },
292
+ "data": {
293
+ "title": "Показать общую витрину упаковки",
294
+ "text": "На стенде показываю общую витрину решений Готэк: гофрокартон, плоский картон, гибкие материалы, SRP и препаки.",
295
+ "paraphrase": false,
296
+ "allowBargeIn": false,
297
+ "width": 400
298
+ },
299
+ "style": {
300
+ "width": 400
301
+ },
302
+ "dragHandle": ".node-shell__header",
303
+ "measured": {
304
+ "width": 400,
305
+ "height": 408
306
+ },
307
+ "selected": false,
308
+ "dragging": false
309
+ },
310
+ {
311
+ "id": "q-profile",
312
+ "type": "basic/question",
313
+ "position": {
314
+ "x": 1580,
315
+ "y": 20
316
+ },
317
+ "data": {
318
+ "title": "Профилирование",
319
+ "question": "Чтобы наш разговор был предметным, подскажите: какую отрасль или продукт вы представляете, какой у вас масштаб компании и какая у вас функциональная роль — маркетинг, производство/логистика, R&D/NPD, закупки или другое?",
320
+ "paraphrase": false,
321
+ "allowBargeIn": false,
322
+ "noTimeout": false,
323
+ "width": 540
324
+ },
325
+ "style": {
326
+ "width": 540
327
+ },
328
+ "dragHandle": ".node-shell__header",
329
+ "measured": {
330
+ "width": 430,
331
+ "height": 382
332
+ },
333
+ "selected": false,
334
+ "dragging": false
335
+ },
336
+ {
337
+ "id": "save-industry",
338
+ "type": "basic/save-memory",
339
+ "position": {
340
+ "x": 2160,
341
+ "y": -330
342
+ },
343
+ "data": {
344
+ "title": "Сохранить отрасль",
345
+ "key": "industry",
346
+ "instruction": "Извлеки отрасль или продукт, который представляет посетитель.",
347
+ "retryOnUnclear": true,
348
+ "retryQuestion": "Уточните, пожалуйста, какую отрасль или продукт вы представляете.",
349
+ "retryParaphrase": false,
350
+ "width": 380
351
+ },
352
+ "style": {
353
+ "width": 380
354
+ },
355
+ "dragHandle": ".node-shell__header",
356
+ "measured": {
357
+ "width": 380,
358
+ "height": 601
359
+ },
360
+ "selected": false,
361
+ "dragging": false
362
+ },
363
+ {
364
+ "id": "save-company-size",
365
+ "type": "basic/save-memory",
366
+ "position": {
367
+ "x": 2160,
368
+ "y": 20
369
+ },
370
+ "data": {
371
+ "title": "Сохранить масштаб",
372
+ "key": "company_size",
373
+ "instruction": "Извлеки масштаб компании: крупный федеральный игрок, средний бизнес, развивающийся проект, стартап или неизвестно.",
374
+ "retryOnUnclear": true,
375
+ "retryQuestion": "Уточните, пожалуйста, масштаб компании: крупная, средняя или развивающийся проект?",
376
+ "retryParaphrase": false,
377
+ "width": 380
378
+ },
379
+ "style": {
380
+ "width": 380
381
+ },
382
+ "dragHandle": ".node-shell__header",
383
+ "measured": {
384
+ "width": 380,
385
+ "height": 601
386
+ },
387
+ "selected": false,
388
+ "dragging": false
389
+ },
390
+ {
391
+ "id": "save-role",
392
+ "type": "basic/save-memory",
393
+ "position": {
394
+ "x": 2160,
395
+ "y": 370
396
+ },
397
+ "data": {
398
+ "title": "Сохранить роль",
399
+ "key": "role",
400
+ "instruction": "Извлеки функциональную роль посетителя: маркетинг/продажи, производство/логистика, R&D/NPD, закупки, топ-менеджмент или другое.",
401
+ "retryOnUnclear": true,
402
+ "retryQuestion": "Уточните, пожалуйста, вашу роль: маркетинг, производство/логистика, R&D/NPD, закупки или другое?",
403
+ "retryParaphrase": false,
404
+ "width": 380
405
+ },
406
+ "style": {
407
+ "width": 380
408
+ },
409
+ "dragHandle": ".node-shell__header",
410
+ "measured": {
411
+ "width": 380,
412
+ "height": 601
413
+ },
414
+ "selected": false,
415
+ "dragging": false
416
+ },
417
+ {
418
+ "id": "branch-role",
419
+ "type": "basic/semantic-branch",
420
+ "position": {
421
+ "x": 2640,
422
+ "y": 20
423
+ },
424
+ "data": {
425
+ "title": "Понять роль",
426
+ "choices": [
427
+ {
428
+ "id": "marketing",
429
+ "label": "маркетинг; продажи; бренд; коммерция; трейд-маркетинг"
430
+ },
431
+ {
432
+ "id": "operations",
433
+ "label": "производство; логистика; инженерия; операционный блок; качество"
434
+ },
435
+ {
436
+ "id": "rnd",
437
+ "label": "R&D; NPD; разработка новых продуктов; технолог"
438
+ },
439
+ {
440
+ "id": "procurement",
441
+ "label": "закупки; снабжение; категорийный менеджмент; управление поставщиками"
442
+ },
443
+ {
444
+ "id": "other",
445
+ "label": "другая роль; топ-менеджмент без конкретной функции; роль неясна"
446
+ }
447
+ ],
448
+ "retryOnUnclear": true,
449
+ "retryQuestion": "Вы ближе к маркетингу/продажам, производству/логистике, R&D/NPD, закупкам или другой роли?",
450
+ "retryParaphrase": false,
451
+ "width": 500
452
+ },
453
+ "style": {
454
+ "width": 500
455
+ },
456
+ "dragHandle": ".node-shell__header",
457
+ "measured": {
458
+ "width": 480,
459
+ "height": 650
460
+ },
461
+ "selected": false,
462
+ "dragging": false
463
+ },
464
+ {
465
+ "id": "ws-demo-role",
466
+ "type": "basic/assistant-message",
467
+ "position": {
468
+ "x": 3220,
469
+ "y": 20
470
+ },
471
+ "data": {
472
+ "title": "Показать упаковку под роль",
473
+ "text": "Показываю примеры упаковки, релевантные роли {role} и отрасли {industry}: потребительская упаковка, транспортные решения и решения для розничной полки.",
474
+ "paraphrase": false,
475
+ "allowBargeIn": false,
476
+ "width": 400
477
+ },
478
+ "style": {
479
+ "width": 400
480
+ },
481
+ "dragHandle": ".node-shell__header",
482
+ "measured": {
483
+ "width": 400,
484
+ "height": 408
485
+ },
486
+ "selected": false,
487
+ "dragging": false
488
+ },
489
+ {
490
+ "id": "q-task",
491
+ "type": "basic/question",
492
+ "position": {
493
+ "x": 3720,
494
+ "y": 20
495
+ },
496
+ "data": {
497
+ "title": "Выбор бизнес-задачи",
498
+ "question": "Теперь выберем бизнес-задачу. Что для вас сейчас важнее: запуск нового продукта, вход в торговую сеть, усиление воздействия на полке, производительность линий, снижение логистических издержек, исключение повреждений, оптимизация материалоемкости, оптимизация ассортимента, надежность поставок или другое?",
499
+ "paraphrase": false,
500
+ "allowBargeIn": false,
501
+ "noTimeout": false,
502
+ "width": 560
503
+ },
504
+ "style": {
505
+ "width": 560
506
+ },
507
+ "dragHandle": ".node-shell__header",
508
+ "measured": {
509
+ "width": 430,
510
+ "height": 382
511
+ },
512
+ "selected": false,
513
+ "dragging": false
514
+ },
515
+ {
516
+ "id": "save-business-task",
517
+ "type": "basic/save-memory",
518
+ "position": {
519
+ "x": 4340,
520
+ "y": -240
521
+ },
522
+ "data": {
523
+ "title": "Сохранить задачу",
524
+ "key": "business_task",
525
+ "instruction": "Извлеки выбранную бизнес-задачу посетителя в краткой форме.",
526
+ "retryOnUnclear": true,
527
+ "retryQuestion": "Уточните, пожалуйста, какая бизнес-задача для вас главная?",
528
+ "retryParaphrase": false,
529
+ "width": 390
530
+ },
531
+ "style": {
532
+ "width": 390
533
+ },
534
+ "dragHandle": ".node-shell__header",
535
+ "measured": {
536
+ "width": 380,
537
+ "height": 601
538
+ },
539
+ "selected": false,
540
+ "dragging": false
541
+ },
542
+ {
543
+ "id": "branch-task",
544
+ "type": "basic/semantic-branch",
545
+ "position": {
546
+ "x": 4340,
547
+ "y": 170
548
+ },
549
+ "data": {
550
+ "title": "Понять задачу",
551
+ "choices": [
552
+ {
553
+ "id": "new_product",
554
+ "label": "запуск нового продукта; вывод новинки; расширение линейки"
555
+ },
556
+ {
557
+ "id": "retail_entry",
558
+ "label": "вход в торговую сеть; требования сети; аудит сети"
559
+ },
560
+ {
561
+ "id": "shelf_impact",
562
+ "label": "усиление визуального воздействия на полке; shelf impact"
563
+ },
564
+ {
565
+ "id": "line_performance",
566
+ "label": "производительность линий; скорость автоматов; упаковочные линии"
567
+ },
568
+ {
569
+ "id": "logistics_cost",
570
+ "label": "снижение логистических издержек; паллетизация; транспортные расходы"
571
+ },
572
+ {
573
+ "id": "transport_damage",
574
+ "label": "исключение повреждений при транспортировке; бой; потери; прочность"
575
+ },
576
+ {
577
+ "id": "material_optimization",
578
+ "label": "оптимизация материалоемкости; облегчение; снизить материал без потерь"
579
+ },
580
+ {
581
+ "id": "assortment_optimization",
582
+ "label": "оптимизация ассортимента; унификация; сократить номенклатуру"
583
+ },
584
+ {
585
+ "id": "supply_reliability",
586
+ "label": "бесперебойные поставки; надежность поставок; OTIF"
587
+ },
588
+ {
589
+ "id": "other",
590
+ "label": "другая задача; нестандартный запрос"
591
+ }
592
+ ],
593
+ "retryOnUnclear": true,
594
+ "retryQuestion": "Не смогла уверенно отнести ответ к задаче. Назовите ближайший вариант или скажите «другое».",
595
+ "retryParaphrase": false,
596
+ "width": 540
597
+ },
598
+ "style": {
599
+ "width": 540
600
+ },
601
+ "dragHandle": ".node-shell__header",
602
+ "measured": {
603
+ "width": 480,
604
+ "height": 650
605
+ },
606
+ "selected": false,
607
+ "dragging": false
608
+ },
609
+ {
610
+ "id": "ws-demo-task",
611
+ "type": "basic/assistant-message",
612
+ "position": {
613
+ "x": 4960,
614
+ "y": 20
615
+ },
616
+ "data": {
617
+ "title": "Показать упаковку под задачу",
618
+ "text": "Под вашу задачу «{business_task}» показываю на стенде подходящие типы упаковки и варианты конструкций, которые можно проверить через 4D Lab.",
619
+ "paraphrase": false,
620
+ "allowBargeIn": false,
621
+ "width": 400
622
+ },
623
+ "style": {
624
+ "width": 400
625
+ },
626
+ "dragHandle": ".node-shell__header",
627
+ "measured": {
628
+ "width": 400,
629
+ "height": 408
630
+ },
631
+ "selected": false,
632
+ "dragging": false
633
+ },
634
+ {
635
+ "id": "q-package",
636
+ "type": "basic/question",
637
+ "position": {
638
+ "x": 5460,
639
+ "y": 20
640
+ },
641
+ "data": {
642
+ "title": "Категория упаковки",
643
+ "question": "Задача ясна. В какой категории упаковки будем ее решать: гофрокартон, плоский картон хром-эрзац, гибкие упаковочные материалы, SRP/препаки для розничных сетей или весь комплекс материалов?",
644
+ "paraphrase": false,
645
+ "allowBargeIn": false,
646
+ "noTimeout": false,
647
+ "width": 540
648
+ },
649
+ "style": {
650
+ "width": 540
651
+ },
652
+ "dragHandle": ".node-shell__header",
653
+ "measured": {
654
+ "width": 430,
655
+ "height": 382
656
+ },
657
+ "selected": false,
658
+ "dragging": false
659
+ },
660
+ {
661
+ "id": "save-package-type",
662
+ "type": "basic/save-memory",
663
+ "position": {
664
+ "x": 6060,
665
+ "y": -240
666
+ },
667
+ "data": {
668
+ "title": "Сохранить тип упаковки",
669
+ "key": "package_type",
670
+ "instruction": "Извлеки выбранную категорию упаковки: гофрокартон, плоский картон хром-эрзац, гибкие упаковочные материалы, SRP/препак, весь комплекс материалов или другое.",
671
+ "retryOnUnclear": true,
672
+ "retryQuestion": "Уточните категорию: гофрокартон, плоский картон, гибкие материалы, SRP/препак или комплекс?",
673
+ "retryParaphrase": false,
674
+ "width": 410
675
+ },
676
+ "style": {
677
+ "width": 410
678
+ },
679
+ "dragHandle": ".node-shell__header",
680
+ "measured": {
681
+ "width": 380,
682
+ "height": 601
683
+ },
684
+ "selected": false,
685
+ "dragging": false
686
+ },
687
+ {
688
+ "id": "save-api-category",
689
+ "type": "basic/save-memory",
690
+ "position": {
691
+ "x": 6060,
692
+ "y": 150
693
+ },
694
+ "data": {
695
+ "title": "Сохранить API-категорию",
696
+ "key": "category",
697
+ "instruction": "По ответу пользователя верни только один ключ для API: cardboard для гофрокартона, плоского картона, SRP/препаков и комплекса; flexible для гибких упаковочных материалов. Без кавычек и пояснений.",
698
+ "retryOnUnclear": true,
699
+ "retryQuestion": "Уточните, пожалуйста: картон/гофрокартон или гибкая упаковка?",
700
+ "retryParaphrase": false,
701
+ "width": 410
702
+ },
703
+ "style": {
704
+ "width": 410
705
+ },
706
+ "dragHandle": ".node-shell__header",
707
+ "measured": {
708
+ "width": 380,
709
+ "height": 601
710
+ },
711
+ "selected": false,
712
+ "dragging": false
713
+ },
714
+ {
715
+ "id": "branch-package",
716
+ "type": "basic/semantic-branch",
717
+ "position": {
718
+ "x": 6560,
719
+ "y": 20
720
+ },
721
+ "data": {
722
+ "title": "Понять упаковку",
723
+ "choices": [
724
+ {
725
+ "id": "known",
726
+ "label": "выбрана понятная категория упаковки: гофрокартон, плоский картон, гибкая упаковка, SRP/препак или комплекс"
727
+ },
728
+ {
729
+ "id": "other",
730
+ "label": "другая упаковка; не знаю; нужно подобрать; неясно"
731
+ }
732
+ ],
733
+ "retryOnUnclear": true,
734
+ "retryQuestion": "Уточните категорию упаковки или скажите, что нужен менеджер для подбора.",
735
+ "retryParaphrase": false,
736
+ "width": 450
737
+ },
738
+ "style": {
739
+ "width": 450
740
+ },
741
+ "dragHandle": ".node-shell__header",
742
+ "measured": {
743
+ "width": 480,
744
+ "height": 650
745
+ },
746
+ "selected": false,
747
+ "dragging": false
748
+ },
749
+ {
750
+ "id": "ws-demo-package",
751
+ "type": "basic/assistant-message",
752
+ "position": {
753
+ "x": 7100,
754
+ "y": 20
755
+ },
756
+ "data": {
757
+ "title": "Показать выбранную упаковку",
758
+ "text": "Показываю выбранную категорию упаковки: {package_type}. Дальше объясню, как это решение можно спроектировать, проверить и верифицировать в 4D Lab.",
759
+ "paraphrase": false,
760
+ "allowBargeIn": false,
761
+ "width": 430
762
+ },
763
+ "style": {
764
+ "width": 430
765
+ },
766
+ "dragHandle": ".node-shell__header",
767
+ "measured": {
768
+ "width": 400,
769
+ "height": 408
770
+ },
771
+ "selected": false,
772
+ "dragging": false
773
+ },
774
+ {
775
+ "id": "text-answer-system",
776
+ "type": "basic/text",
777
+ "position": {
778
+ "x": 7600,
779
+ "y": -240
780
+ },
781
+ "data": {
782
+ "title": "Промпт 4D Lab",
783
+ "text": "Ты София, ассистент стенда Готэк на RosUpack 2026. Сформируй короткий экспертный ответ по формуле: выбранное упаковочное решение -> какие лаборатории 4D Lab помогут проверить решение -> измеримый эффект. Используй тон из сценария: исследуем, проектируем, балансируем, верифицируем. Не выдумывай точные цифры кроме тех, что есть в сценарии: до 15% для производительности линий, до 10% для логистических издержек, до 50% для оптимизации ассортимента. В конце мягко предложи позвать менеджера. Контекст: отрасль {industry}; масштаб {company_size}; роль {role}; задача {business_task}; упаковка {package_type}.",
784
+ "width": 620,
785
+ "height": 250
786
+ },
787
+ "style": {
788
+ "width": 620
789
+ },
790
+ "dragHandle": ".node-shell__header",
791
+ "measured": {
792
+ "width": 560,
793
+ "height": 298
794
+ },
795
+ "selected": false,
796
+ "dragging": false
797
+ },
798
+ {
799
+ "id": "text-answer-user",
800
+ "type": "basic/text",
801
+ "position": {
802
+ "x": 7600,
803
+ "y": 160
804
+ },
805
+ "data": {
806
+ "title": "Контекст ответа",
807
+ "text": "Роль: {role}\nЗадача: {business_task}\nУпаковка: {package_type}\nОтрасль: {industry}\nМасштаб: {company_size}",
808
+ "width": 460,
809
+ "height": 210
810
+ },
811
+ "style": {
812
+ "width": 460
813
+ },
814
+ "dragHandle": ".node-shell__header",
815
+ "measured": {
816
+ "width": 560,
817
+ "height": 298
818
+ },
819
+ "selected": false,
820
+ "dragging": false
821
+ },
822
+ {
823
+ "id": "request-engineering-answer",
824
+ "type": "basic/request",
825
+ "position": {
826
+ "x": 8240,
827
+ "y": 20
828
+ },
829
+ "data": {
830
+ "title": "Собрать инженерный ответ",
831
+ "width": 390
832
+ },
833
+ "style": {
834
+ "width": 390
835
+ },
836
+ "dragHandle": ".node-shell__header",
837
+ "measured": {
838
+ "width": 390,
839
+ "height": 178
840
+ },
841
+ "selected": false,
842
+ "dragging": false
843
+ },
844
+ {
845
+ "id": "msg-engineering-answer",
846
+ "type": "basic/assistant-message",
847
+ "position": {
848
+ "x": 8720,
849
+ "y": 20
850
+ },
851
+ "data": {
852
+ "title": "Ответ 4D Lab",
853
+ "text": "",
854
+ "paraphrase": false,
855
+ "allowBargeIn": false,
856
+ "width": 520
857
+ },
858
+ "style": {
859
+ "width": 520
860
+ },
861
+ "dragHandle": ".node-shell__header",
862
+ "measured": {
863
+ "width": 500,
864
+ "height": 338
865
+ },
866
+ "selected": false,
867
+ "dragging": false
868
+ },
869
+ {
870
+ "id": "q-handoff",
871
+ "type": "basic/question",
872
+ "position": {
873
+ "x": 9300,
874
+ "y": 20
875
+ },
876
+ "data": {
877
+ "title": "Позвать эксперта",
878
+ "question": "Хотите, я позову менеджера или инженера Готэк, чтобы он продолжил разговор по вашему проекту без повторных вопросов?",
879
+ "paraphrase": false,
880
+ "allowBargeIn": false,
881
+ "noTimeout": false,
882
+ "width": 500
883
+ },
884
+ "style": {
885
+ "width": 500
886
+ },
887
+ "dragHandle": ".node-shell__header",
888
+ "measured": {
889
+ "width": 430,
890
+ "height": 382
891
+ },
892
+ "selected": false,
893
+ "dragging": false
894
+ },
895
+ {
896
+ "id": "branch-handoff",
897
+ "type": "basic/semantic-branch",
898
+ "position": {
899
+ "x": 9840,
900
+ "y": 20
901
+ },
902
+ "data": {
903
+ "title": "Нужен менеджер",
904
+ "choices": [
905
+ {
906
+ "id": "yes",
907
+ "label": "да; позовите; хочу обсудить; нужен менеджер; пригласите эксперта"
908
+ },
909
+ {
910
+ "id": "question",
911
+ "label": "есть еще вопрос; хочу уточнить; расскажите подробнее"
912
+ },
913
+ {
914
+ "id": "no",
915
+ "label": "нет; не надо; спасибо; пока достаточно"
916
+ }
917
+ ],
918
+ "retryOnUnclear": true,
919
+ "retryQuestion": "Уточните: позвать менеджера, ответить еще на вопрос или завершить разговор?",
920
+ "retryParaphrase": false,
921
+ "width": 470
922
+ },
923
+ "style": {
924
+ "width": 470
925
+ },
926
+ "dragHandle": ".node-shell__header",
927
+ "measured": {
928
+ "width": 480,
929
+ "height": 650
930
+ },
931
+ "selected": false,
932
+ "dragging": false
933
+ },
934
+ {
935
+ "id": "q-extra",
936
+ "type": "basic/question",
937
+ "position": {
938
+ "x": 10380,
939
+ "y": 360
940
+ },
941
+ "data": {
942
+ "title": "Дополнительный вопрос",
943
+ "question": "Что именно вы хотели бы уточнить о Готэк, 4D Lab или упаковочном решении?",
944
+ "paraphrase": false,
945
+ "allowBargeIn": false,
946
+ "noTimeout": false,
947
+ "width": 450
948
+ },
949
+ "style": {
950
+ "width": 450
951
+ },
952
+ "dragHandle": ".node-shell__header",
953
+ "measured": {
954
+ "width": 430,
955
+ "height": 382
956
+ },
957
+ "selected": false,
958
+ "dragging": false
959
+ },
960
+ {
961
+ "id": "answer-extra",
962
+ "type": "basic/knowledge-answer",
963
+ "position": {
964
+ "x": 10900,
965
+ "y": 360
966
+ },
967
+ "data": {
968
+ "title": "Ответ из базы знаний",
969
+ "source": "uploaded",
970
+ "contextPath": "scenarios/knowledge/rosupack_2026_knowledge_base.md",
971
+ "originalPath": "scenarios/knowledge/rosupack_2026_knowledge_base.md",
972
+ "contextFilename": "rosupack_2026_knowledge_base.md",
973
+ "contextCharacters": 14053,
974
+ "allowBargeIn": false,
975
+ "width": 400
976
+ },
977
+ "style": {
978
+ "width": 400
979
+ },
980
+ "dragHandle": ".node-shell__header",
981
+ "measured": {
982
+ "width": 400,
983
+ "height": 391
984
+ },
985
+ "selected": false,
986
+ "dragging": false
987
+ },
988
+ {
989
+ "id": "ws-call-manager",
990
+ "type": "basic/assistant-message",
991
+ "position": {
992
+ "x": 10400,
993
+ "y": -220
994
+ },
995
+ "data": {
996
+ "title": "Вызвать менеджера",
997
+ "text": "Передаю менеджеру контекст разговора: запрос «{initial_request}», запись «{schedule_query}», роль «{role}», задача «{business_task}», упаковка «{package_type}».",
998
+ "paraphrase": false,
999
+ "allowBargeIn": false,
1000
+ "width": 430
1001
+ },
1002
+ "style": {
1003
+ "width": 430
1004
+ },
1005
+ "dragHandle": ".node-shell__header",
1006
+ "measured": {
1007
+ "width": 400,
1008
+ "height": 408
1009
+ },
1010
+ "selected": false,
1011
+ "dragging": false
1012
+ },
1013
+ {
1014
+ "id": "msg-manager-final",
1015
+ "type": "basic/assistant-message",
1016
+ "position": {
1017
+ "x": 10940,
1018
+ "y": -220
1019
+ },
1020
+ "data": {
1021
+ "title": "Менеджер подойдет",
1022
+ "text": "Отлично. Я передала контекст коллегам на стенде. Менеджер подойдет к вам через несколько секунд, чтобы продолжить разговор без повторных вопросов. Пожалуйста, присаживайтесь в зоне ресепшен.",
1023
+ "paraphrase": false,
1024
+ "allowBargeIn": false,
1025
+ "width": 520
1026
+ },
1027
+ "style": {
1028
+ "width": 520
1029
+ },
1030
+ "dragHandle": ".node-shell__header",
1031
+ "measured": {
1032
+ "width": 500,
1033
+ "height": 338
1034
+ },
1035
+ "selected": false,
1036
+ "dragging": false
1037
+ },
1038
+ {
1039
+ "id": "msg-finish",
1040
+ "type": "basic/assistant-message",
1041
+ "position": {
1042
+ "x": 10380,
1043
+ "y": 20
1044
+ },
1045
+ "data": {
1046
+ "title": "Завершить без менеджера",
1047
+ "text": "Хорошо, была рада помочь. Если захотите обсудить проект подробнее, просто скажите — я позову коллегу со стенда.",
1048
+ "paraphrase": false,
1049
+ "allowBargeIn": false,
1050
+ "width": 500
1051
+ },
1052
+ "style": {
1053
+ "width": 500
1054
+ },
1055
+ "dragHandle": ".node-shell__header",
1056
+ "measured": {
1057
+ "width": 500,
1058
+ "height": 338
1059
+ },
1060
+ "selected": false,
1061
+ "dragging": false
1062
+ },
1063
+ {
1064
+ "id": "restart",
1065
+ "type": "basic/restart",
1066
+ "position": {
1067
+ "x": 11540,
1068
+ "y": 20
1069
+ },
1070
+ "data": {
1071
+ "title": "В начало",
1072
+ "width": 280
1073
+ },
1074
+ "style": {
1075
+ "width": 280
1076
+ },
1077
+ "dragHandle": ".node-shell__header",
1078
+ "measured": {
1079
+ "width": 280,
1080
+ "height": 149
1081
+ },
1082
+ "selected": false,
1083
+ "dragging": false
1084
+ }
1085
+ ],
1086
+ "edges": [
1087
+ {
1088
+ "id": "e-start-role",
1089
+ "source": "start",
1090
+ "sourceHandle": "dialog",
1091
+ "target": "role-sofia",
1092
+ "targetHandle": "dialog-in",
1093
+ "type": "default"
1094
+ },
1095
+ {
1096
+ "id": "e-role-intent",
1097
+ "source": "role-sofia",
1098
+ "sourceHandle": "dialog",
1099
+ "target": "q-intent",
1100
+ "targetHandle": "dialog-in",
1101
+ "type": "default"
1102
+ },
1103
+ {
1104
+ "id": "e-intent-save",
1105
+ "source": "q-intent",
1106
+ "sourceHandle": "turn",
1107
+ "target": "save-initial-request",
1108
+ "targetHandle": "turn",
1109
+ "type": "default"
1110
+ },
1111
+ {
1112
+ "id": "e-intent-branch-turn",
1113
+ "source": "q-intent",
1114
+ "sourceHandle": "turn",
1115
+ "target": "branch-intent",
1116
+ "targetHandle": "turn",
1117
+ "type": "default"
1118
+ },
1119
+ {
1120
+ "id": "e-save-initial-branch",
1121
+ "source": "save-initial-request",
1122
+ "sourceHandle": "dialog",
1123
+ "target": "branch-intent",
1124
+ "targetHandle": "dialog-in",
1125
+ "type": "default"
1126
+ },
1127
+ {
1128
+ "id": "e-intent-appointment",
1129
+ "source": "branch-intent",
1130
+ "sourceHandle": "appointment",
1131
+ "target": "q-schedule-info",
1132
+ "targetHandle": "dialog-in",
1133
+ "type": "default"
1134
+ },
1135
+ {
1136
+ "id": "e-intent-scenario",
1137
+ "source": "branch-intent",
1138
+ "sourceHandle": "scenario",
1139
+ "target": "ws-demo-profile",
1140
+ "targetHandle": "dialog-in",
1141
+ "type": "default"
1142
+ },
1143
+ {
1144
+ "id": "e-intent-manager",
1145
+ "source": "branch-intent",
1146
+ "sourceHandle": "manager",
1147
+ "target": "ws-call-manager",
1148
+ "targetHandle": "dialog-in",
1149
+ "type": "default"
1150
+ },
1151
+ {
1152
+ "id": "e-schedule-save",
1153
+ "source": "q-schedule-info",
1154
+ "sourceHandle": "turn",
1155
+ "target": "save-schedule-query",
1156
+ "targetHandle": "turn",
1157
+ "type": "default"
1158
+ },
1159
+ {
1160
+ "id": "e-schedule-answer-turn",
1161
+ "source": "q-schedule-info",
1162
+ "sourceHandle": "turn",
1163
+ "target": "answer-schedule",
1164
+ "targetHandle": "turn",
1165
+ "type": "default"
1166
+ },
1167
+ {
1168
+ "id": "e-schedule-answer-dialog",
1169
+ "source": "q-schedule-info",
1170
+ "sourceHandle": "dialog",
1171
+ "target": "answer-schedule",
1172
+ "targetHandle": "dialog-in",
1173
+ "type": "default"
1174
+ },
1175
+ {
1176
+ "id": "e-answer-schedule-manager-q",
1177
+ "source": "answer-schedule",
1178
+ "sourceHandle": "dialog",
1179
+ "target": "q-schedule-manager",
1180
+ "targetHandle": "dialog-in",
1181
+ "type": "default"
1182
+ },
1183
+ {
1184
+ "id": "e-q-schedule-branch",
1185
+ "source": "q-schedule-manager",
1186
+ "sourceHandle": "turn",
1187
+ "target": "branch-schedule-manager",
1188
+ "targetHandle": "turn",
1189
+ "type": "default"
1190
+ },
1191
+ {
1192
+ "id": "e-schedule-yes-manager",
1193
+ "source": "branch-schedule-manager",
1194
+ "sourceHandle": "yes",
1195
+ "target": "ws-call-manager",
1196
+ "targetHandle": "dialog-in",
1197
+ "type": "default"
1198
+ },
1199
+ {
1200
+ "id": "e-schedule-no-restart",
1201
+ "source": "branch-schedule-manager",
1202
+ "sourceHandle": "no",
1203
+ "target": "restart",
1204
+ "targetHandle": "dialog-in",
1205
+ "type": "default"
1206
+ },
1207
+ {
1208
+ "id": "e-profile-ws-question",
1209
+ "source": "ws-demo-profile",
1210
+ "sourceHandle": "dialog",
1211
+ "target": "q-profile",
1212
+ "targetHandle": "dialog-in",
1213
+ "type": "default"
1214
+ },
1215
+ {
1216
+ "id": "e-profile-save-industry",
1217
+ "source": "q-profile",
1218
+ "sourceHandle": "turn",
1219
+ "target": "save-industry",
1220
+ "targetHandle": "turn",
1221
+ "type": "default"
1222
+ },
1223
+ {
1224
+ "id": "e-profile-save-size",
1225
+ "source": "q-profile",
1226
+ "sourceHandle": "turn",
1227
+ "target": "save-company-size",
1228
+ "targetHandle": "turn",
1229
+ "type": "default"
1230
+ },
1231
+ {
1232
+ "id": "e-profile-save-role",
1233
+ "source": "q-profile",
1234
+ "sourceHandle": "turn",
1235
+ "target": "save-role",
1236
+ "targetHandle": "turn",
1237
+ "type": "default"
1238
+ },
1239
+ {
1240
+ "id": "e-profile-branch-turn",
1241
+ "source": "q-profile",
1242
+ "sourceHandle": "turn",
1243
+ "target": "branch-role",
1244
+ "targetHandle": "turn",
1245
+ "type": "default"
1246
+ },
1247
+ {
1248
+ "id": "e-save-role-branch",
1249
+ "source": "save-role",
1250
+ "sourceHandle": "dialog",
1251
+ "target": "branch-role",
1252
+ "targetHandle": "dialog-in",
1253
+ "type": "default"
1254
+ },
1255
+ {
1256
+ "id": "e-role-marketing-demo",
1257
+ "source": "branch-role",
1258
+ "sourceHandle": "marketing",
1259
+ "target": "ws-demo-role",
1260
+ "targetHandle": "dialog-in",
1261
+ "type": "default"
1262
+ },
1263
+ {
1264
+ "id": "e-role-operations-demo",
1265
+ "source": "branch-role",
1266
+ "sourceHandle": "operations",
1267
+ "target": "ws-demo-role",
1268
+ "targetHandle": "dialog-in",
1269
+ "type": "default"
1270
+ },
1271
+ {
1272
+ "id": "e-role-rnd-demo",
1273
+ "source": "branch-role",
1274
+ "sourceHandle": "rnd",
1275
+ "target": "ws-demo-role",
1276
+ "targetHandle": "dialog-in",
1277
+ "type": "default"
1278
+ },
1279
+ {
1280
+ "id": "e-role-procurement-demo",
1281
+ "source": "branch-role",
1282
+ "sourceHandle": "procurement",
1283
+ "target": "ws-demo-role",
1284
+ "targetHandle": "dialog-in",
1285
+ "type": "default"
1286
+ },
1287
+ {
1288
+ "id": "e-role-other-manager",
1289
+ "source": "branch-role",
1290
+ "sourceHandle": "other",
1291
+ "target": "ws-call-manager",
1292
+ "targetHandle": "dialog-in",
1293
+ "type": "default"
1294
+ },
1295
+ {
1296
+ "id": "e-role-demo-task",
1297
+ "source": "ws-demo-role",
1298
+ "sourceHandle": "dialog",
1299
+ "target": "q-task",
1300
+ "targetHandle": "dialog-in",
1301
+ "type": "default"
1302
+ },
1303
+ {
1304
+ "id": "e-task-save",
1305
+ "source": "q-task",
1306
+ "sourceHandle": "turn",
1307
+ "target": "save-business-task",
1308
+ "targetHandle": "turn",
1309
+ "type": "default"
1310
+ },
1311
+ {
1312
+ "id": "e-task-branch-turn",
1313
+ "source": "q-task",
1314
+ "sourceHandle": "turn",
1315
+ "target": "branch-task",
1316
+ "targetHandle": "turn",
1317
+ "type": "default"
1318
+ },
1319
+ {
1320
+ "id": "e-save-task-branch",
1321
+ "source": "save-business-task",
1322
+ "sourceHandle": "dialog",
1323
+ "target": "branch-task",
1324
+ "targetHandle": "dialog-in",
1325
+ "type": "default"
1326
+ },
1327
+ {
1328
+ "id": "e-task-new_product-demo",
1329
+ "source": "branch-task",
1330
+ "sourceHandle": "new_product",
1331
+ "target": "ws-demo-task",
1332
+ "targetHandle": "dialog-in",
1333
+ "type": "default"
1334
+ },
1335
+ {
1336
+ "id": "e-task-retail_entry-demo",
1337
+ "source": "branch-task",
1338
+ "sourceHandle": "retail_entry",
1339
+ "target": "ws-demo-task",
1340
+ "targetHandle": "dialog-in",
1341
+ "type": "default"
1342
+ },
1343
+ {
1344
+ "id": "e-task-shelf_impact-demo",
1345
+ "source": "branch-task",
1346
+ "sourceHandle": "shelf_impact",
1347
+ "target": "ws-demo-task",
1348
+ "targetHandle": "dialog-in",
1349
+ "type": "default"
1350
+ },
1351
+ {
1352
+ "id": "e-task-line_performance-demo",
1353
+ "source": "branch-task",
1354
+ "sourceHandle": "line_performance",
1355
+ "target": "ws-demo-task",
1356
+ "targetHandle": "dialog-in",
1357
+ "type": "default"
1358
+ },
1359
+ {
1360
+ "id": "e-task-logistics_cost-demo",
1361
+ "source": "branch-task",
1362
+ "sourceHandle": "logistics_cost",
1363
+ "target": "ws-demo-task",
1364
+ "targetHandle": "dialog-in",
1365
+ "type": "default"
1366
+ },
1367
+ {
1368
+ "id": "e-task-transport_damage-demo",
1369
+ "source": "branch-task",
1370
+ "sourceHandle": "transport_damage",
1371
+ "target": "ws-demo-task",
1372
+ "targetHandle": "dialog-in",
1373
+ "type": "default"
1374
+ },
1375
+ {
1376
+ "id": "e-task-material_optimization-demo",
1377
+ "source": "branch-task",
1378
+ "sourceHandle": "material_optimization",
1379
+ "target": "ws-demo-task",
1380
+ "targetHandle": "dialog-in",
1381
+ "type": "default"
1382
+ },
1383
+ {
1384
+ "id": "e-task-assortment_optimization-demo",
1385
+ "source": "branch-task",
1386
+ "sourceHandle": "assortment_optimization",
1387
+ "target": "ws-demo-task",
1388
+ "targetHandle": "dialog-in",
1389
+ "type": "default"
1390
+ },
1391
+ {
1392
+ "id": "e-task-supply_reliability-demo",
1393
+ "source": "branch-task",
1394
+ "sourceHandle": "supply_reliability",
1395
+ "target": "ws-demo-task",
1396
+ "targetHandle": "dialog-in",
1397
+ "type": "default"
1398
+ },
1399
+ {
1400
+ "id": "e-task-other-manager",
1401
+ "source": "branch-task",
1402
+ "sourceHandle": "other",
1403
+ "target": "ws-call-manager",
1404
+ "targetHandle": "dialog-in",
1405
+ "type": "default"
1406
+ },
1407
+ {
1408
+ "id": "e-task-demo-package",
1409
+ "source": "ws-demo-task",
1410
+ "sourceHandle": "dialog",
1411
+ "target": "q-package",
1412
+ "targetHandle": "dialog-in",
1413
+ "type": "default"
1414
+ },
1415
+ {
1416
+ "id": "e-package-save-type",
1417
+ "source": "q-package",
1418
+ "sourceHandle": "turn",
1419
+ "target": "save-package-type",
1420
+ "targetHandle": "turn",
1421
+ "type": "default"
1422
+ },
1423
+ {
1424
+ "id": "e-package-save-category",
1425
+ "source": "q-package",
1426
+ "sourceHandle": "turn",
1427
+ "target": "save-api-category",
1428
+ "targetHandle": "turn",
1429
+ "type": "default"
1430
+ },
1431
+ {
1432
+ "id": "e-package-branch-turn",
1433
+ "source": "q-package",
1434
+ "sourceHandle": "turn",
1435
+ "target": "branch-package",
1436
+ "targetHandle": "turn",
1437
+ "type": "default"
1438
+ },
1439
+ {
1440
+ "id": "e-save-package-branch",
1441
+ "source": "save-package-type",
1442
+ "sourceHandle": "dialog",
1443
+ "target": "branch-package",
1444
+ "targetHandle": "dialog-in",
1445
+ "type": "default"
1446
+ },
1447
+ {
1448
+ "id": "e-save-api-category-branch",
1449
+ "source": "save-api-category",
1450
+ "sourceHandle": "dialog",
1451
+ "target": "branch-package",
1452
+ "targetHandle": "dialog-in",
1453
+ "type": "default"
1454
+ },
1455
+ {
1456
+ "id": "e-package-known-demo",
1457
+ "source": "branch-package",
1458
+ "sourceHandle": "known",
1459
+ "target": "ws-demo-package",
1460
+ "targetHandle": "dialog-in",
1461
+ "type": "default"
1462
+ },
1463
+ {
1464
+ "id": "e-package-other-manager",
1465
+ "source": "branch-package",
1466
+ "sourceHandle": "other",
1467
+ "target": "ws-call-manager",
1468
+ "targetHandle": "dialog-in",
1469
+ "type": "default"
1470
+ },
1471
+ {
1472
+ "id": "e-ws-package-request",
1473
+ "source": "ws-demo-package",
1474
+ "sourceHandle": "dialog",
1475
+ "target": "request-engineering-answer",
1476
+ "targetHandle": "dialog-in",
1477
+ "type": "default"
1478
+ },
1479
+ {
1480
+ "id": "e-text-system-request",
1481
+ "source": "text-answer-system",
1482
+ "sourceHandle": "text",
1483
+ "target": "request-engineering-answer",
1484
+ "targetHandle": "system",
1485
+ "type": "default"
1486
+ },
1487
+ {
1488
+ "id": "e-text-user-request",
1489
+ "source": "text-answer-user",
1490
+ "sourceHandle": "text",
1491
+ "target": "request-engineering-answer",
1492
+ "targetHandle": "user",
1493
+ "type": "default"
1494
+ },
1495
+ {
1496
+ "id": "e-request-answer-msg",
1497
+ "source": "request-engineering-answer",
1498
+ "sourceHandle": "response",
1499
+ "target": "msg-engineering-answer",
1500
+ "targetHandle": "text",
1501
+ "type": "default"
1502
+ },
1503
+ {
1504
+ "id": "e-msg-answer-handoff",
1505
+ "source": "msg-engineering-answer",
1506
+ "sourceHandle": "dialog",
1507
+ "target": "q-handoff",
1508
+ "targetHandle": "dialog-in",
1509
+ "type": "default"
1510
+ },
1511
+ {
1512
+ "id": "e-q-handoff-branch",
1513
+ "source": "q-handoff",
1514
+ "sourceHandle": "turn",
1515
+ "target": "branch-handoff",
1516
+ "targetHandle": "turn",
1517
+ "type": "default"
1518
+ },
1519
+ {
1520
+ "id": "e-handoff-yes-manager",
1521
+ "source": "branch-handoff",
1522
+ "sourceHandle": "yes",
1523
+ "target": "ws-call-manager",
1524
+ "targetHandle": "dialog-in",
1525
+ "type": "default"
1526
+ },
1527
+ {
1528
+ "id": "e-handoff-question-extra",
1529
+ "source": "branch-handoff",
1530
+ "sourceHandle": "question",
1531
+ "target": "q-extra",
1532
+ "targetHandle": "dialog-in",
1533
+ "type": "default"
1534
+ },
1535
+ {
1536
+ "id": "e-handoff-no-finish",
1537
+ "source": "branch-handoff",
1538
+ "sourceHandle": "no",
1539
+ "target": "msg-finish",
1540
+ "targetHandle": "dialog-in",
1541
+ "type": "default"
1542
+ },
1543
+ {
1544
+ "id": "e-q-extra-answer-turn",
1545
+ "source": "q-extra",
1546
+ "sourceHandle": "turn",
1547
+ "target": "answer-extra",
1548
+ "targetHandle": "turn",
1549
+ "type": "default"
1550
+ },
1551
+ {
1552
+ "id": "e-q-extra-answer-dialog",
1553
+ "source": "q-extra",
1554
+ "sourceHandle": "dialog",
1555
+ "target": "answer-extra",
1556
+ "targetHandle": "dialog-in",
1557
+ "type": "default"
1558
+ },
1559
+ {
1560
+ "id": "e-answer-extra-handoff",
1561
+ "source": "answer-extra",
1562
+ "sourceHandle": "dialog",
1563
+ "target": "q-handoff",
1564
+ "targetHandle": "dialog-in",
1565
+ "type": "default"
1566
+ },
1567
+ {
1568
+ "id": "e-ws-manager-final",
1569
+ "source": "ws-call-manager",
1570
+ "sourceHandle": "dialog",
1571
+ "target": "msg-manager-final",
1572
+ "targetHandle": "dialog-in",
1573
+ "type": "default"
1574
+ },
1575
+ {
1576
+ "id": "e-manager-final-restart",
1577
+ "source": "msg-manager-final",
1578
+ "sourceHandle": "dialog",
1579
+ "target": "restart",
1580
+ "targetHandle": "dialog-in",
1581
+ "type": "default"
1582
+ },
1583
+ {
1584
+ "id": "e-finish-restart",
1585
+ "source": "msg-finish",
1586
+ "sourceHandle": "dialog",
1587
+ "target": "restart",
1588
+ "targetHandle": "dialog-in",
1589
+ "type": "default"
1590
+ }
1591
+ ],
1592
+ "viewport": {
1593
+ "x": 430,
1594
+ "y": 320,
1595
+ "zoom": 0.16
1596
+ }
1597
+ }
1598
+ }