Skip to content

Commit ed3bfdd

Browse files
committed
Refactor to use get_field_value() for safer field access to avoid KeyError exceptions
1 parent d04a722 commit ed3bfdd

2 files changed

Lines changed: 36 additions & 27 deletions

File tree

infra/scripts/index_scripts/03_cu_process_data_text.py

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -306,6 +306,10 @@ def create_tables():
306306

307307
create_tables()
308308

309+
def get_field_value(fields, field_name, default=""):
310+
field = fields.get(field_name, {})
311+
return field.get('valueString', default)
312+
309313
# Process files and insert into DB and Search
310314
conversationIds, docs, counter = [], [], 0
311315
for path in paths:
@@ -325,17 +329,17 @@ def create_tables():
325329
start_timestamp = datetime.strptime(start_time, timestamp_format)
326330
conversation_id = file_name.split('convo_', 1)[1].split('_')[0]
327331
conversationIds.append(conversation_id)
328-
duration = int(result['result']['contents'][0]['fields']['Duration']['valueString'])
332+
fields = result['result']['contents'][0]['fields']
333+
duration = int(get_field_value(fields, 'Duration', '0'))
329334
end_timestamp = str(start_timestamp + timedelta(seconds=duration)).split(".")[0]
330335
start_timestamp = str(start_timestamp).split(".")[0]
331-
fields = result['result']['contents'][0]['fields']
332-
summary = fields['summary']['valueString']
333-
satisfied = fields['satisfied']['valueString']
334-
sentiment = fields['sentiment']['valueString']
335-
topic = fields['topic']['valueString']
336-
key_phrases = fields['keyPhrases']['valueString']
337-
complaint = fields['complaint']['valueString']
338-
content = fields['content']['valueString']
336+
summary = get_field_value(fields, 'summary')
337+
satisfied = get_field_value(fields, 'satisfied')
338+
sentiment = get_field_value(fields, 'sentiment')
339+
topic = get_field_value(fields, 'topic')
340+
key_phrases = get_field_value(fields, 'keyPhrases')
341+
complaint = get_field_value(fields, 'complaint')
342+
content = get_field_value(fields, 'content')
339343
cursor.execute(
340344
"INSERT INTO processed_data (ConversationId, EndTime, StartTime, Content, summary, satisfied, sentiment, topic, key_phrases, complaint) VALUES (?,?,?,?,?,?,?,?,?,?)",
341345
(conversation_id, end_timestamp, start_timestamp, content, summary, satisfied, sentiment, topic, key_phrases, complaint)

infra/scripts/index_scripts/04_cu_process_custom_data.py

Lines changed: 23 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -351,6 +351,10 @@ def create_tables():
351351

352352
create_tables()
353353

354+
def get_field_value(fields, field_name, default=""):
355+
field = fields.get(field_name, {})
356+
return field.get('valueString', default)
357+
354358
ANALYZER_ID = "ckm-json"
355359
# Process files and insert into DB and Search - transcripts
356360
conversationIds, docs, counter = [], [], 0
@@ -367,17 +371,17 @@ def create_tables():
367371
start_timestamp = datetime.strptime(start_time, timestamp_format)
368372
conversation_id = file_name.split('convo_', 1)[1].split('_')[0]
369373
conversationIds.append(conversation_id)
370-
duration = int(result['result']['contents'][0]['fields']['Duration']['valueString'])
374+
fields = result['result']['contents'][0]['fields']
375+
duration = int(get_field_value(fields, 'Duration', '0'))
371376
end_timestamp = str(start_timestamp + timedelta(seconds=duration)).split(".")[0]
372377
start_timestamp = str(start_timestamp).split(".")[0]
373-
fields = result['result']['contents'][0]['fields']
374-
summary = fields['summary']['valueString']
375-
satisfied = fields['satisfied']['valueString']
376-
sentiment = fields['sentiment']['valueString']
377-
topic = fields['topic']['valueString']
378-
key_phrases = fields['keyPhrases']['valueString']
379-
complaint = fields['complaint']['valueString']
380-
content = fields['content']['valueString']
378+
summary = get_field_value(fields, 'summary')
379+
satisfied = get_field_value(fields, 'satisfied')
380+
sentiment = get_field_value(fields, 'sentiment')
381+
topic = get_field_value(fields, 'topic')
382+
key_phrases = get_field_value(fields, 'keyPhrases')
383+
complaint = get_field_value(fields, 'complaint')
384+
content = get_field_value(fields, 'content')
381385
cursor.execute(
382386
"INSERT INTO processed_data (ConversationId, EndTime, StartTime, Content, summary, satisfied, sentiment, topic, key_phrases, complaint) VALUES (?,?,?,?,?,?,?,?,?,?)",
383387
(conversation_id, end_timestamp, start_timestamp, content, summary, satisfied, sentiment, topic, key_phrases, complaint)
@@ -421,19 +425,20 @@ def create_tables():
421425
conversation_id = file_name.split('convo_', 1)[1].split('_')[0]
422426
conversationIds.append(conversation_id)
423427

424-
duration = int(result['result']['contents'][0]['fields']['Duration']['valueString'])
428+
fields = result['result']['contents'][0]['fields']
429+
duration = int(get_field_value(fields, 'Duration', '0'))
425430
end_timestamp = str(start_timestamp + timedelta(seconds=duration))
426431
end_timestamp = end_timestamp.split(".")[0]
427432
start_timestamp = str(start_timestamp).split(".")[0]
428433

429-
summary = result['result']['contents'][0]['fields']['summary']['valueString']
430-
satisfied = result['result']['contents'][0]['fields']['satisfied']['valueString']
431-
sentiment = result['result']['contents'][0]['fields']['sentiment']['valueString']
432-
topic = result['result']['contents'][0]['fields']['topic']['valueString']
433-
key_phrases = result['result']['contents'][0]['fields']['keyPhrases']['valueString']
434-
complaint = result['result']['contents'][0]['fields']['complaint']['valueString']
435-
content = result['result']['contents'][0]['fields']['content']['valueString']
436-
# print(topic)
434+
summary = get_field_value(fields, 'summary')
435+
satisfied = get_field_value(fields, 'satisfied')
436+
sentiment = get_field_value(fields, 'sentiment')
437+
topic = get_field_value(fields, 'topic')
438+
key_phrases = get_field_value(fields, 'keyPhrases')
439+
complaint = get_field_value(fields, 'complaint')
440+
content = get_field_value(fields, 'content')
441+
437442
cursor.execute(f"INSERT INTO processed_data (ConversationId, EndTime, StartTime, Content, summary, satisfied, sentiment, topic, key_phrases, complaint) VALUES (?,?,?,?,?,?,?,?,?,?)", (conversation_id, end_timestamp, start_timestamp, content, summary, satisfied, sentiment, topic, key_phrases, complaint))
438443
conn.commit()
439444

0 commit comments

Comments
 (0)