3v324v23 commited on
Commit
8dd6527
·
1 Parent(s): f56bbc4

Изменение формата ответа дизайнерского API с добавлением расширенных полей

Browse files
Files changed (1) hide show
  1. app.py +53 -8
app.py CHANGED
@@ -103,12 +103,23 @@ class ProxyHTTPRequestHandler(http.server.BaseHTTPRequestHandler):
103
 
104
  def _handle_designer_reload(self):
105
  """Обработка запросов дизайнера"""
 
106
  response_data = {
107
- "success": True,
108
  "packages": [
109
  {
110
  "name": "default",
111
  "description": "Default package",
 
 
 
 
 
 
 
 
 
 
112
  "graphs": []
113
  }
114
  ]
@@ -120,15 +131,49 @@ class ProxyHTTPRequestHandler(http.server.BaseHTTPRequestHandler):
120
  property_data = json.load(f)
121
 
122
  graphs = property_data.get('graphs', [])
123
- response_data["packages"][0]["graphs"] = graphs
124
- logger.info(f"PROXY: Возвращаем данные для дизайнера с графами: {json.dumps(graphs)}")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
125
  except Exception as e:
126
  logger.error(f"PROXY: Ошибка при чтении графов для дизайнера: {e}")
127
-
128
- self.send_response(HTTPStatus.OK)
129
- self.send_header('Content-Type', 'application/json')
130
- self.end_headers()
131
- self.wfile.write(json.dumps(response_data).encode('utf-8'))
132
 
133
  def _get_headers(self):
134
  """Получение заголовков для проксирования"""
 
103
 
104
  def _handle_designer_reload(self):
105
  """Обработка запросов дизайнера"""
106
+ # Новый формат ответа для designer API
107
  response_data = {
108
+ "status": 200,
109
  "packages": [
110
  {
111
  "name": "default",
112
  "description": "Default package",
113
+ "agents": [
114
+ {
115
+ "name": "voice_agent",
116
+ "description": "A simple voice agent"
117
+ },
118
+ {
119
+ "name": "chat_agent",
120
+ "description": "A simple chat agent"
121
+ }
122
+ ],
123
  "graphs": []
124
  }
125
  ]
 
131
  property_data = json.load(f)
132
 
133
  graphs = property_data.get('graphs', [])
134
+ # Обеспечиваем форматирование совместимое с designer API
135
+ formatted_graphs = []
136
+ for graph in graphs:
137
+ # Копируем граф и добавляем дополнительные поля, которые могут ожидаться
138
+ graph_copy = graph.copy()
139
+ if 'id' not in graph_copy:
140
+ graph_copy['id'] = graph_copy.get('name', '').lower().replace(' ', '_')
141
+ if 'package' not in graph_copy:
142
+ graph_copy['package'] = 'default'
143
+ formatted_graphs.append(graph_copy)
144
+
145
+ response_data["packages"][0]["graphs"] = formatted_graphs
146
+
147
+ # Добавим альтернативные форматы в лог
148
+ alternative_format = {
149
+ "success": True,
150
+ "packages": [
151
+ {
152
+ "name": "default",
153
+ "description": "Default package",
154
+ "graphs": formatted_graphs
155
+ }
156
+ ]
157
+ }
158
+
159
+ alternate_format2 = formatted_graphs
160
+
161
+ logger.info(f"PROXY: Ответ для designer API, формат 1: {json.dumps(response_data)}")
162
+ logger.info(f"PROXY: Ответ для designer API, формат 2: {json.dumps(alternative_format)}")
163
+ logger.info(f"PROXY: Ответ для designer API, формат 3: {json.dumps(alternate_format2)}")
164
+
165
+ # Тестируем разные варианты ответов
166
+ # 1. Отправляем третий формат (простой массив графов)
167
+ self.send_response(HTTPStatus.OK)
168
+ self.send_header('Content-Type', 'application/json')
169
+ self.end_headers()
170
+ self.wfile.write(json.dumps(alternate_format2).encode('utf-8'))
171
+
172
+ # В следующих вызовах попробуем другие форматы
173
+
174
  except Exception as e:
175
  logger.error(f"PROXY: Ошибка при чтении графов для дизайнера: {e}")
176
+ self.send_error(HTTPStatus.INTERNAL_SERVER_ERROR, str(e))
 
 
 
 
177
 
178
  def _get_headers(self):
179
  """Получение заголовков для проксирования"""