enrichment: capture failure cause + admin retry button
Each enrichment failure now records {"_error": "...", "_step": "..."} into
enrichment_json, mirrors the message into the errors log (visible in
/logs/protokoll), and the list shows the cause as a tooltip on the
"Fehler beim Abrufen der Infos" text. Admins also get a "erneut versuchen"
link per failed row that re-queues just that flat (POST /actions/enrich-flat).
The pipeline raises a typed EnrichmentError per step (fetch / llm / crash)
so future failure modes don't get swallowed as a silent "failed".
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
e0ac869425
commit
a8f698bf5e
3 changed files with 79 additions and 24 deletions
15
web/app.py
15
web/app.py
|
|
@ -1045,6 +1045,21 @@ async def action_enrich_all(
|
|||
return _wohnungen_partial_or_redirect(request, admin)
|
||||
|
||||
|
||||
@app.post("/actions/enrich-flat")
|
||||
async def action_enrich_flat(
|
||||
request: Request,
|
||||
flat_id: str = Form(...),
|
||||
csrf: str = Form(...),
|
||||
admin=Depends(require_admin),
|
||||
):
|
||||
require_csrf(admin["id"], csrf)
|
||||
db.set_flat_enrichment(flat_id, "pending")
|
||||
enrichment.kick(flat_id)
|
||||
db.log_audit(admin["username"], "enrichment.retry",
|
||||
f"flat={flat_id}", user_id=admin["id"], ip=client_ip(request))
|
||||
return _wohnungen_partial_or_redirect(request, admin)
|
||||
|
||||
|
||||
@app.post("/actions/users/delete")
|
||||
async def action_users_delete(
|
||||
request: Request,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue