Signe22 commited on
Commit
1ad5d03
·
verified ·
1 Parent(s): 50f0f1f

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +113 -96
app.py CHANGED
@@ -23,6 +23,7 @@ app.add_middleware(
23
  allow_headers=["*"],
24
  )
25
 
 
26
 
27
  def get_connection() -> sqlite3.Connection:
28
  return sqlite3.connect(DB_PATH)
@@ -41,11 +42,12 @@ def health():
41
  def get_labels():
42
  conn = get_connection()
43
  query = """
44
- SELECT DISTINCT label
45
- FROM classified_articles
46
- WHERE label IS NOT NULL
47
- AND label != 'not relevant to field'
48
- ORDER BY label
 
49
  """
50
  df = pd.read_sql_query(query, conn)
51
  conn.close()
@@ -56,11 +58,12 @@ def get_labels():
56
  def get_sources():
57
  conn = get_connection()
58
  query = """
59
- SELECT DISTINCT source
60
- FROM classified_articles
61
- WHERE source IS NOT NULL
62
- AND label != 'not relevant to field'
63
- ORDER BY source
 
64
  """
65
  df = pd.read_sql_query(query, conn)
66
  conn.close()
@@ -82,6 +85,7 @@ def get_daily_summary():
82
  LIMIT 1
83
  """
84
 
 
85
  df = pd.read_sql_query(query, conn)
86
  conn.close()
87
 
@@ -133,14 +137,14 @@ def daily_actions(
133
  conn = get_connection()
134
 
135
  query = """
136
- SELECT
137
- date(published_at) AS day,
138
- label,
139
- COUNT(*) AS count
140
- FROM classified_articles
141
- WHERE 1=1
142
- AND label != 'not relevant to field'
143
- """
144
  params = []
145
 
146
  if start_date:
@@ -189,7 +193,8 @@ def get_articles(
189
  FROM classified_articles
190
  WHERE 1=1
191
  AND label != 'not relevant to field'
192
- """
 
193
  params = []
194
 
195
  if label:
@@ -242,28 +247,28 @@ def get_monitoring_results(
242
  conn = get_connection()
243
 
244
  query = """
245
- SELECT
246
- monitoring_id,
247
- article_id,
248
- title,
249
- description,
250
- clean_text,
251
- predicted_label,
252
- source,
253
- url,
254
- published_at,
255
- classified_at,
256
- label_judgment,
257
- label_confidence,
258
- label_explanation,
259
- overall_status,
260
- requires_human_review,
261
- judge_model,
262
- raw_judge_response,
263
- evaluated_at
264
- FROM monitoring_results
265
- WHERE 1=1
266
- """
267
  params = []
268
 
269
  if overall_status:
@@ -313,57 +318,68 @@ def get_monitoring_summary():
313
  conn = get_connection()
314
 
315
  total_monitored = int(pd.read_sql_query(
316
- "SELECT COUNT(*) AS n FROM monitoring_results",
317
- conn
 
 
 
318
  )["n"].iloc[0])
319
 
320
  needs_review = int(pd.read_sql_query(
321
- "SELECT COUNT(*) AS n FROM monitoring_results WHERE requires_human_review = 1",
322
- conn
 
 
 
 
323
  )["n"].iloc[0])
324
 
325
  label_distribution = pd.read_sql_query(
326
- """
327
- SELECT label_judgment, COUNT(*) AS count
328
- FROM monitoring_results
329
- GROUP BY label_judgment
330
- ORDER BY count DESC
331
- """,
332
- conn
 
333
  ).to_dict(orient="records")
334
 
335
  status_distribution = pd.read_sql_query(
336
- """
337
- SELECT overall_status, COUNT(*) AS count
338
- FROM monitoring_results
339
- GROUP BY overall_status
340
- ORDER BY count DESC
341
- """,
342
- conn
 
343
  ).to_dict(orient="records")
344
 
345
  common_problem_labels = pd.read_sql_query(
346
- """
347
- SELECT predicted_label, COUNT(*) AS count
348
- FROM monitoring_results
349
- WHERE overall_status != 'ok'
350
- GROUP BY predicted_label
351
- ORDER BY count DESC
352
- """,
353
- conn
 
354
  ).to_dict(orient="records")
355
 
356
  daily_issues = pd.read_sql_query(
357
- """
358
- SELECT
359
- date(evaluated_at) AS day,
360
- overall_status,
361
- COUNT(*) AS count
362
- FROM monitoring_results
363
- GROUP BY date(evaluated_at), overall_status
364
- ORDER BY day ASC, overall_status ASC
365
- """,
366
- conn
 
367
  ).to_dict(orient="records")
368
 
369
  conn.close()
@@ -383,25 +399,26 @@ def get_review_queue(limit: int = Query(100, ge=1, le=500)):
383
  conn = get_connection()
384
 
385
  query = """
386
- SELECT
387
- monitoring_id,
388
- article_id,
389
- title,
390
- description,
391
- predicted_label,
392
- source,
393
- url,
394
- published_at,
395
- label_judgment,
396
- label_confidence,
397
- label_explanation,
398
- overall_status,
399
- requires_human_review,
400
- evaluated_at
401
- FROM monitoring_results
402
- WHERE requires_human_review = 1
403
- ORDER BY evaluated_at DESC
404
- LIMIT ?
 
405
  """
406
 
407
  df = pd.read_sql_query(query, conn, params=[limit])
 
23
  allow_headers=["*"],
24
  )
25
 
26
+ LAST_14_DAYS_CONDITION = "date(published_at) >= date('now', '-14 days')"
27
 
28
  def get_connection() -> sqlite3.Connection:
29
  return sqlite3.connect(DB_PATH)
 
42
  def get_labels():
43
  conn = get_connection()
44
  query = """
45
+ SELECT DISTINCT label
46
+ FROM classified_articles
47
+ WHERE label IS NOT NULL
48
+ AND label != 'not relevant to field'
49
+ AND """ + LAST_14_DAYS_CONDITION + """
50
+ ORDER BY label
51
  """
52
  df = pd.read_sql_query(query, conn)
53
  conn.close()
 
58
  def get_sources():
59
  conn = get_connection()
60
  query = """
61
+ SELECT DISTINCT source
62
+ FROM classified_articles
63
+ WHERE source IS NOT NULL
64
+ AND label != 'not relevant to field'
65
+ AND """ + LAST_14_DAYS_CONDITION + """
66
+ ORDER BY source
67
  """
68
  df = pd.read_sql_query(query, conn)
69
  conn.close()
 
85
  LIMIT 1
86
  """
87
 
88
+
89
  df = pd.read_sql_query(query, conn)
90
  conn.close()
91
 
 
137
  conn = get_connection()
138
 
139
  query = """
140
+ SELECT
141
+ date(published_at) AS day,
142
+ label,
143
+ COUNT(*) AS count
144
+ FROM classified_articles
145
+ WHERE 1=1
146
+ AND label != 'not relevant to field'
147
+ AND """ + LAST_14_DAYS_CONDITION
148
  params = []
149
 
150
  if start_date:
 
193
  FROM classified_articles
194
  WHERE 1=1
195
  AND label != 'not relevant to field'
196
+ AND """ + LAST_14_DAYS_CONDITION
197
+
198
  params = []
199
 
200
  if label:
 
247
  conn = get_connection()
248
 
249
  query = """
250
+ SELECT
251
+ monitoring_id,
252
+ article_id,
253
+ title,
254
+ description,
255
+ clean_text,
256
+ predicted_label,
257
+ source,
258
+ url,
259
+ published_at,
260
+ classified_at,
261
+ label_judgment,
262
+ label_confidence,
263
+ label_explanation,
264
+ overall_status,
265
+ requires_human_review,
266
+ judge_model,
267
+ raw_judge_response,
268
+ evaluated_at
269
+ FROM monitoring_results
270
+ WHERE 1=1
271
+ AND """ + LAST_14_DAYS_CONDITION
272
  params = []
273
 
274
  if overall_status:
 
318
  conn = get_connection()
319
 
320
  total_monitored = int(pd.read_sql_query(
321
+ """
322
+ SELECT COUNT(*) AS n
323
+ FROM monitoring_results
324
+ WHERE """ + LAST_14_DAYS_CONDITION,
325
+ conn
326
  )["n"].iloc[0])
327
 
328
  needs_review = int(pd.read_sql_query(
329
+ """
330
+ SELECT COUNT(*) AS n
331
+ FROM monitoring_results
332
+ WHERE requires_human_review = 1
333
+ AND """ + LAST_14_DAYS_CONDITION,
334
+ conn
335
  )["n"].iloc[0])
336
 
337
  label_distribution = pd.read_sql_query(
338
+ """
339
+ SELECT label_judgment, COUNT(*) AS count
340
+ FROM monitoring_results
341
+ WHERE """ + LAST_14_DAYS_CONDITION + """
342
+ GROUP BY label_judgment
343
+ ORDER BY count DESC
344
+ """,
345
+ conn
346
  ).to_dict(orient="records")
347
 
348
  status_distribution = pd.read_sql_query(
349
+ """
350
+ SELECT overall_status, COUNT(*) AS count
351
+ FROM monitoring_results
352
+ WHERE """ + LAST_14_DAYS_CONDITION + """
353
+ GROUP BY overall_status
354
+ ORDER BY count DESC
355
+ """,
356
+ conn
357
  ).to_dict(orient="records")
358
 
359
  common_problem_labels = pd.read_sql_query(
360
+ """
361
+ SELECT predicted_label, COUNT(*) AS count
362
+ FROM monitoring_results
363
+ WHERE overall_status != 'ok'
364
+ AND """ + LAST_14_DAYS_CONDITION + """
365
+ GROUP BY predicted_label
366
+ ORDER BY count DESC
367
+ """,
368
+ conn
369
  ).to_dict(orient="records")
370
 
371
  daily_issues = pd.read_sql_query(
372
+ """
373
+ SELECT
374
+ date(evaluated_at) AS day,
375
+ overall_status,
376
+ COUNT(*) AS count
377
+ FROM monitoring_results
378
+ WHERE """ + LAST_14_DAYS_CONDITION + """
379
+ GROUP BY date(evaluated_at), overall_status
380
+ ORDER BY day ASC, overall_status ASC
381
+ """,
382
+ conn
383
  ).to_dict(orient="records")
384
 
385
  conn.close()
 
399
  conn = get_connection()
400
 
401
  query = """
402
+ SELECT
403
+ monitoring_id,
404
+ article_id,
405
+ title,
406
+ description,
407
+ predicted_label,
408
+ source,
409
+ url,
410
+ published_at,
411
+ label_judgment,
412
+ label_confidence,
413
+ label_explanation,
414
+ overall_status,
415
+ requires_human_review,
416
+ evaluated_at
417
+ FROM monitoring_results
418
+ WHERE requires_human_review = 1
419
+ AND """ + LAST_14_DAYS_CONDITION + """
420
+ ORDER BY evaluated_at DESC
421
+ LIMIT ?
422
  """
423
 
424
  df = pd.read_sql_query(query, conn, params=[limit])