wu981526092 commited on
Commit
9ad889b
·
1 Parent(s): d3559e7

🔧 Fix sample data loader to support window KG files for Replay button

Browse files
Files changed (1) hide show
  1. backend/database/sample_data.py +65 -6
backend/database/sample_data.py CHANGED
@@ -100,18 +100,61 @@ class SampleDataLoader:
100
  self._knowledge_graphs = []
101
 
102
  for i, sample in enumerate(config["samples"]):
103
- # Load the knowledge graph data
104
  kg_data = self._load_knowledge_graph(sample["knowledge_graph_file"])
105
 
106
- # Convert to the expected format
 
 
 
 
107
  kg_entry = {
108
  "filename": sample["knowledge_graph_file"].split("/")[-1], # Get just the filename
109
  "trace_index": i, # Links to trace by index
110
  "graph_data": kg_data["graph_data"]
111
  }
 
 
 
 
 
 
 
112
  self._knowledge_graphs.append(kg_entry)
113
 
114
- logger.info(f"Loaded {len(self._knowledge_graphs)} sample knowledge graphs")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
115
 
116
  return self._knowledge_graphs
117
 
@@ -231,17 +274,33 @@ def insert_sample_data(session, force_insert=False):
231
  try:
232
  trace_index = kg_data["trace_index"]
233
  if trace_index < len(trace_ids):
 
 
 
 
 
 
 
234
  save_knowledge_graph(
235
  session=session,
236
  filename=kg_data["filename"],
237
  graph_data=kg_data["graph_data"],
238
  trace_id=trace_ids[trace_index],
239
- window_index=None, # None for final KG
240
- window_total=1, # Not None to indicate it's a processed final KG
 
 
 
241
  is_original=True
242
  )
243
  results["knowledge_graphs_inserted"] += 1
244
- logger.info(f"Inserted sample knowledge graph: {kg_data['filename']}")
 
 
 
 
 
 
245
  except Exception as e:
246
  error_msg = f"Error inserting knowledge graph {kg_data['filename']}: {str(e)}"
247
  logger.error(error_msg)
 
100
  self._knowledge_graphs = []
101
 
102
  for i, sample in enumerate(config["samples"]):
103
+ # Load the main knowledge graph data
104
  kg_data = self._load_knowledge_graph(sample["knowledge_graph_file"])
105
 
106
+ # Check if this sample supports replay (has window KGs)
107
+ supports_replay = sample.get("supports_replay", False)
108
+ window_info = sample.get("window_info", {})
109
+
110
+ # Convert main KG to the expected format
111
  kg_entry = {
112
  "filename": sample["knowledge_graph_file"].split("/")[-1], # Get just the filename
113
  "trace_index": i, # Links to trace by index
114
  "graph_data": kg_data["graph_data"]
115
  }
116
+
117
+ # Add window metadata for final KG (window_index=None, window_total=count)
118
+ if supports_replay and window_info:
119
+ kg_entry["window_total"] = window_info.get("window_count", 0)
120
+ kg_entry["processing_run_id"] = window_info.get("processing_run_id")
121
+ logger.debug(f"Main KG {kg_entry['filename']} configured with {kg_entry['window_total']} windows")
122
+
123
  self._knowledge_graphs.append(kg_entry)
124
 
125
+ # Load window KGs if they exist
126
+ if supports_replay and window_info.get("window_files"):
127
+ window_files = window_info["window_files"]
128
+ window_count = window_info.get("window_count", len(window_files))
129
+ processing_run_id = window_info.get("processing_run_id")
130
+
131
+ logger.debug(f"Loading {len(window_files)} window KGs for {sample['id']}")
132
+
133
+ for window_index, window_file in enumerate(window_files):
134
+ try:
135
+ # Load window KG data
136
+ window_kg_data = self._load_knowledge_graph(window_file)
137
+
138
+ # Convert window KG to the expected format
139
+ window_kg_entry = {
140
+ "filename": window_file.split("/")[-1], # Get just the filename
141
+ "trace_index": i, # Links to same trace
142
+ "graph_data": window_kg_data["graph_data"],
143
+ "window_index": window_index, # This makes it a window KG
144
+ "window_total": window_count,
145
+ "processing_run_id": processing_run_id,
146
+ "window_start_char": window_kg_data.get("window_start_char"),
147
+ "window_end_char": window_kg_data.get("window_end_char")
148
+ }
149
+
150
+ self._knowledge_graphs.append(window_kg_entry)
151
+ logger.debug(f"Loaded window KG {window_index}: {window_kg_entry['filename']}")
152
+
153
+ except Exception as e:
154
+ logger.error(f"Failed to load window KG {window_file}: {e}")
155
+ continue
156
+
157
+ logger.info(f"Loaded {len(self._knowledge_graphs)} sample knowledge graphs (including window KGs)")
158
 
159
  return self._knowledge_graphs
160
 
 
274
  try:
275
  trace_index = kg_data["trace_index"]
276
  if trace_index < len(trace_ids):
277
+ # Extract window information from the KG data
278
+ window_index = kg_data.get("window_index") # None for final KG, index for window KG
279
+ window_total = kg_data.get("window_total", 1) # Use provided window_total or default to 1
280
+ window_start_char = kg_data.get("window_start_char")
281
+ window_end_char = kg_data.get("window_end_char")
282
+ processing_run_id = kg_data.get("processing_run_id")
283
+
284
  save_knowledge_graph(
285
  session=session,
286
  filename=kg_data["filename"],
287
  graph_data=kg_data["graph_data"],
288
  trace_id=trace_ids[trace_index],
289
+ window_index=window_index,
290
+ window_total=window_total,
291
+ window_start_char=window_start_char,
292
+ window_end_char=window_end_char,
293
+ processing_run_id=processing_run_id,
294
  is_original=True
295
  )
296
  results["knowledge_graphs_inserted"] += 1
297
+
298
+ # Log different messages for final vs window KGs
299
+ if window_index is None:
300
+ logger.info(f"Inserted sample knowledge graph: {kg_data['filename']} (final, {window_total} windows)")
301
+ else:
302
+ logger.info(f"Inserted sample knowledge graph: {kg_data['filename']} (window {window_index})")
303
+
304
  except Exception as e:
305
  error_msg = f"Error inserting knowledge graph {kg_data['filename']}: {str(e)}"
306
  logger.error(error_msg)