feat(ebook): enhance phrase judgment logging with failure tracking

This commit is contained in:
2026-07-24 11:38:50 -04:00
parent 70bf8627a2
commit 4c71508e73
2 changed files with 14 additions and 5 deletions
+4 -1
View File
@@ -121,9 +121,11 @@ def judge_ngrams(request: Request, config: AppConfig, session: DbSession) -> HTM
return templates.TemplateResponse(request, "partials/error.html", {"message": str(error)}, status_code=500) return templates.TemplateResponse(request, "partials/error.html", {"message": str(error)}, status_code=500)
logger.info( logger.info(
"ebook_admin_judge_ngrams_complete books_seen=%s books_judged=%s candidates_judged=%s protected=%s mentions=%s", "ebook_admin_judge_ngrams_complete books_seen=%s books_judged=%s books_failed=%s candidates_judged=%s "
"protected=%s mentions=%s",
result.books_seen, result.books_seen,
result.books_judged, result.books_judged,
result.books_failed,
result.candidates_judged, result.candidates_judged,
result.protected_phrases, result.protected_phrases,
result.phrase_mentions, result.phrase_mentions,
@@ -136,6 +138,7 @@ def judge_ngrams(request: Request, config: AppConfig, session: DbSession) -> HTM
f"Judged {result.candidates_judged} candidates across {result.books_judged} of " f"Judged {result.candidates_judged} candidates across {result.books_judged} of "
f"{result.books_seen} books; {result.protected_phrases} protected phrases, " f"{result.books_seen} books; {result.protected_phrases} protected phrases, "
f"{result.phrase_mentions} mentions" f"{result.phrase_mentions} mentions"
+ (f"; {result.books_failed} books failed" if result.books_failed else "")
) )
}, },
) )
+10 -4
View File
@@ -207,6 +207,7 @@ class PhraseJudgmentBackfillResult:
books_seen: int books_seen: int
books_judged: int books_judged: int
books_failed: int
candidates_judged: int candidates_judged: int
protected_phrases: int protected_phrases: int
phrase_mentions: int phrase_mentions: int
@@ -1208,6 +1209,7 @@ def judge_candidate_phrases_for_books(
sources = list(session.scalars(select(EbookSource).order_by(EbookSource.id))) sources = list(session.scalars(select(EbookSource).order_by(EbookSource.id)))
books_seen = len(sources) books_seen = len(sources)
books_judged = 0 books_judged = 0
books_failed = 0
candidates_judged = 0 candidates_judged = 0
protected_count = 0 protected_count = 0
mention_count = 0 mention_count = 0
@@ -1282,13 +1284,15 @@ def judge_candidate_phrases_for_books(
session.commit() session.commit()
except Exception: except Exception:
session.rollback() session.rollback()
books_failed += 1
logger.exception( logger.exception(
"ebook_candidate_phrase_judgment_book_failed source_id=%s book_number=%s books_seen=%s", "ebook_candidate_phrase_judgment_book_failed source_id=%s book_number=%s books_seen=%s books_failed=%s",
source.id, source.id,
book_number, book_number,
books_seen, books_seen,
books_failed,
) )
raise continue
books_judged += 1 books_judged += 1
candidates_judged += judged candidates_judged += judged
protected_count += len(protected) protected_count += len(protected)
@@ -1307,10 +1311,11 @@ def judge_candidate_phrases_for_books(
) )
logger.info( logger.info(
"ebook_candidate_phrase_judgment_complete books_seen=%s books_judged=%s candidates_judged=%s " "ebook_candidate_phrase_judgment_complete books_seen=%s books_judged=%s books_failed=%s "
"protected=%s mentions=%s", "candidates_judged=%s protected=%s mentions=%s",
books_seen, books_seen,
books_judged, books_judged,
books_failed,
candidates_judged, candidates_judged,
protected_count, protected_count,
mention_count, mention_count,
@@ -1318,6 +1323,7 @@ def judge_candidate_phrases_for_books(
return PhraseJudgmentBackfillResult( return PhraseJudgmentBackfillResult(
books_seen=books_seen, books_seen=books_seen,
books_judged=books_judged, books_judged=books_judged,
books_failed=books_failed,
candidates_judged=candidates_judged, candidates_judged=candidates_judged,
protected_phrases=protected_count, protected_phrases=protected_count,
phrase_mentions=mention_count, phrase_mentions=mention_count,