fix: harden task2 preprocessing and vector guards

This commit is contained in:
2026-08-11 06:47:07 +02:00
parent f62b4dbc4c
commit f5e76fff53
6 changed files with 185 additions and 9 deletions
+30 -2
View File
@@ -4,6 +4,7 @@ from __future__ import annotations
import hashlib
import json
import logging
import re
from pathlib import Path
@@ -12,8 +13,17 @@ import typer
from tht.cli.config_cmd import CONFIG_OPT
from tht.cli.schema_cmd import _load_config_or_exit
from tht.config import workspace_id_for_config
from tht.ports.evidence import EvidenceSourceError
from tht.ports.vector import VectorStoreError
from tht.vectorstore.embeddings import EmbeddingsError
preprocess_app = typer.Typer(help="Materialize versioned preprocessing artifacts")
logger = logging.getLogger(__name__)
_PREPROCESS_EXPECTED_ERRORS = (
OSError, RuntimeError, ValueError, TypeError, KeyError,
EvidenceSourceError, VectorStoreError, EmbeddingsError,
)
def run_dwh_from_config(
@@ -132,7 +142,16 @@ def evidence_cmd(
if action == "gc":
try:
payload = gc_from_config(config, dry_run=dry_run)
except (OSError, RuntimeError, ValueError, TypeError, KeyError):
except _PREPROCESS_EXPECTED_ERRORS:
payload = {"status": "failed", "error": "evidence cleanup failed"}
if json_output:
typer.echo(json.dumps(payload, sort_keys=True))
else:
typer.secho("ERRORE: evidence cleanup failed", fg=typer.colors.RED, err=True)
raise typer.Exit(code=1) from None
except Exception:
if not json_output:
logger.exception("Evidence cleanup failed")
payload = {"status": "failed", "error": "evidence cleanup failed"}
if json_output:
typer.echo(json.dumps(payload, sort_keys=True))
@@ -153,7 +172,16 @@ def evidence_cmd(
raise typer.Exit(code=2)
try:
result = run_from_config(config, dry_run=dry_run, resume=resume)
except (OSError, RuntimeError, ValueError, TypeError, KeyError):
except _PREPROCESS_EXPECTED_ERRORS:
payload = {"status": "failed", "error": "preprocessing failed"}
if json_output:
typer.echo(json.dumps(payload, sort_keys=True))
else:
typer.secho("ERRORE: preprocessing failed", fg=typer.colors.RED, err=True)
raise typer.Exit(code=1) from None
except Exception:
if not json_output:
logger.exception("Evidence preprocessing failed")
payload = {"status": "failed", "error": "preprocessing failed"}
if json_output:
typer.echo(json.dumps(payload, sort_keys=True))