feat(cli): tht memory solved-index / solved-search (question->SQL exemplars)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -62,3 +62,28 @@ def save_solved_question(record: VectorRecord, *, writer, embedder) -> int:
|
||||
"metadata": pack_metadata(record),
|
||||
"embedding": embedding,
|
||||
}])
|
||||
|
||||
|
||||
class SolvedIndexError(Exception):
|
||||
"""La sessione non ha (ancora) gli artefatti per il record solved_question."""
|
||||
|
||||
|
||||
def build_solved_record(session_dir, manifest, promoted_tables) -> VectorRecord:
|
||||
"""Costruisce il record dagli artefatti persistiti (vista effective D15):
|
||||
richiede sql_final.sql e la decisione sql_approved; la domanda e' l'ultima
|
||||
question_rewritten, fallback la domanda del manifest."""
|
||||
from tht.memory import question_context
|
||||
from tht.phase import effective_decisions
|
||||
|
||||
sql_file = session_dir / "sql_final.sql"
|
||||
if not sql_file.exists():
|
||||
raise SolvedIndexError("sql_final.sql assente")
|
||||
decisions = effective_decisions(session_dir)
|
||||
if not any(d.type == "sql_approved" for d in decisions):
|
||||
raise SolvedIndexError("decisione sql_approved assente")
|
||||
return solved_question_record(
|
||||
session_id=manifest.id,
|
||||
question=question_context(decisions, manifest),
|
||||
sql=sql_file.read_text().strip(),
|
||||
tables=sorted(promoted_tables or set()),
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user