From fff2d1c85910fd04fb101575d1962e344752f77c Mon Sep 17 00:00:00 2001 From: Chaim Date: Thu, 7 May 2026 07:08:31 +0000 Subject: [PATCH] fix(precedent-library): per-record extraction must drain the queue too MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit reextract_metadata / reextract_halachot extract & apply but never cleared metadata_extraction_requested_at / halacha_extraction_requested_at — only the bulk worker (process_pending_extractions) did. Result: clicking "חלץ מטא-דאטה" on the edit sheet (or calling precedent_extract_metadata directly) left the row stuck in the queue forever, with the UI badge showing "ממתין לחילוץ" even after extraction succeeded. Mirror the worker's behaviour: on success ('completed' / 'no_changes' / 'no_halachot'), call db.clear_extraction_request to drain the queue. Coolify deploy required for the FastAPI container; local MCP server needs a process restart for the change to take effect (long-running). --- mcp-server/src/legal_mcp/services/precedent_library.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/mcp-server/src/legal_mcp/services/precedent_library.py b/mcp-server/src/legal_mcp/services/precedent_library.py index b419a21..792e18c 100644 --- a/mcp-server/src/legal_mcp/services/precedent_library.py +++ b/mcp-server/src/legal_mcp/services/precedent_library.py @@ -265,6 +265,11 @@ async def reextract_halachot( await progress("extracting_halachot", 50, "מחלץ הלכות מחדש") result = await halacha_extractor.extract(case_law_id) + # Clear the queue timestamp on completion so the UI badge / worker queue + # don't keep showing this row. The queue worker (process_pending_extractions) + # already does this; mirror it here so per-record extraction drains too. + if result.get("status") in ("completed", "no_halachot"): + await db.clear_extraction_request(case_law_id, kind="halacha") await progress( "completed", 100, @@ -411,6 +416,10 @@ async def reextract_metadata( await progress("extracting_metadata", 40, "מחלץ מטא-דאטה (תקציר, תגיות)") result = await precedent_metadata_extractor.extract_and_apply(case_law_id) + # Clear the queue timestamp so the UI / worker stop showing this row. + # See note in reextract_halachot. + if result.get("status") in ("completed", "no_changes"): + await db.clear_extraction_request(case_law_id, kind="metadata") fields = result.get("fields") or [] msg = ( f"מולאו {len(fields)} שדות: {', '.join(fields)}"