Spaces:
Running
on
Zero
Running
on
Zero
Update app.py
Browse files
app.py
CHANGED
@@ -243,7 +243,7 @@ def analyze_single_message(text, thresholds):
|
|
243 |
|
244 |
return abuse_score, threshold_labels, top_patterns, result, stage, darvo_score
|
245 |
|
246 |
-
def analyze_composite(msg1, msg2, msg3, *answers_and_none):
|
247 |
none_selected_checked = answers_and_none[-1]
|
248 |
responses_checked = any(answers_and_none[:-1])
|
249 |
none_selected = not responses_checked and none_selected_checked
|
@@ -260,17 +260,19 @@ def analyze_composite(msg1, msg2, msg3, *answers_and_none):
|
|
260 |
)
|
261 |
|
262 |
messages = [msg1, msg2, msg3]
|
263 |
-
|
|
|
264 |
if not active:
|
265 |
return "Please enter at least one message."
|
266 |
|
267 |
-
results = [analyze_single_message(m, THRESHOLDS.copy()) for m in active]
|
268 |
-
abuse_scores = [r[0] for r in results]
|
269 |
-
top_labels = [r[2][0][0] for r in results]
|
270 |
-
top_scores = [r[2][0][1] for r in results]
|
271 |
-
sentiments = [r[3]['label'] for r in results]
|
272 |
-
stages = [r[4] for r in results]
|
273 |
-
darvo_scores = [r[5] for r in results]
|
|
|
274 |
|
275 |
composite_abuse = int(round(sum(abuse_scores) / len(abuse_scores)))
|
276 |
top_label = f"{top_labels[0]} – {int(round(top_scores[0] * 100))}%"
|
@@ -300,7 +302,8 @@ def analyze_composite(msg1, msg2, msg3, *answers_and_none):
|
|
300 |
|
301 |
return out
|
302 |
|
303 |
-
|
|
|
304 |
quiz_boxes = [gr.Checkbox(label=q) for q, _ in ESCALATION_QUESTIONS]
|
305 |
none_box = gr.Checkbox(label="None of the above")
|
306 |
|
|
|
243 |
|
244 |
return abuse_score, threshold_labels, top_patterns, result, stage, darvo_score
|
245 |
|
246 |
+
def analyze_composite(msg1, date1, msg2, date2, msg3, date3, *answers_and_none):
|
247 |
none_selected_checked = answers_and_none[-1]
|
248 |
responses_checked = any(answers_and_none[:-1])
|
249 |
none_selected = not responses_checked and none_selected_checked
|
|
|
260 |
)
|
261 |
|
262 |
messages = [msg1, msg2, msg3]
|
263 |
+
dates = [date1, date2, date3]
|
264 |
+
active = [(m, d) for m, d in zip(messages, dates) if m.strip()]
|
265 |
if not active:
|
266 |
return "Please enter at least one message."
|
267 |
|
268 |
+
results = [(analyze_single_message(m, THRESHOLDS.copy()), d) for m, d in active]
|
269 |
+
abuse_scores = [r[0][0] for r in results]
|
270 |
+
top_labels = [r[0][2][0][0] for r in results]
|
271 |
+
top_scores = [r[0][2][0][1] for r in results]
|
272 |
+
sentiments = [r[0][3]['label'] for r in results]
|
273 |
+
stages = [r[0][4] for r in results]
|
274 |
+
darvo_scores = [r[0][5] for r in results]
|
275 |
+
dates_used = [r[1] or "Undated" for r in results] # Store dates for future mapping
|
276 |
|
277 |
composite_abuse = int(round(sum(abuse_scores) / len(abuse_scores)))
|
278 |
top_label = f"{top_labels[0]} – {int(round(top_scores[0] * 100))}%"
|
|
|
302 |
|
303 |
return out
|
304 |
|
305 |
+
message_date_pairs = [(gr.Textbox(label=f"Message {i+1}"), gr.Textbox(label=f"Date {i+1} (optional)", placeholder="e.g. 2025-04-22")) for i in range(3)]
|
306 |
+
textbox_inputs = [item for pair in message_date_pairs for item in pair] # Flatten for Gradio input
|
307 |
quiz_boxes = [gr.Checkbox(label=q) for q, _ in ESCALATION_QUESTIONS]
|
308 |
none_box = gr.Checkbox(label="None of the above")
|
309 |
|