Fix chunk finder

This commit is contained in:
itqop 2025-07-19 16:56:09 +03:00
parent 8002962f03
commit a26c19a80a
2 changed files with 26 additions and 10 deletions

View File

@ -39,11 +39,29 @@ def parse_output_node(state: EmailGenerationState) -> EmailGenerationState:
subject = _validate_subject(subject) subject = _validate_subject(subject)
body = _validate_body(body) body = _validate_body(body)
ranked_context = state.get("ranked_context")
real_chunk_ids = []
if isinstance(used_chunks, list) and ranked_context:
for chunk_idx in used_chunks:
try:
idx = int(chunk_idx) - 1
if 0 <= idx < len(ranked_context.chunks):
chunk = ranked_context.chunks[idx]
chunk_info = f"{chunk.parent_doc_id}#{chunk.chunk_id}"
real_chunk_ids.append(chunk_info)
else:
real_chunk_ids.append(str(chunk_idx))
except (ValueError, TypeError):
real_chunk_ids.append(str(chunk_idx))
else:
real_chunk_ids = []
email_draft = EmailDraft( email_draft = EmailDraft(
subject=subject, subject=subject,
body=body, body=body,
short_reasoning=short_reasoning, short_reasoning=short_reasoning,
used_chunks=used_chunks if isinstance(used_chunks, list) else [], used_chunks=real_chunk_ids,
) )
state["email_draft"] = email_draft state["email_draft"] = email_draft

View File

@ -70,12 +70,7 @@ class RetrievalService:
text_query = " ".join(search_terms) text_query = " ".join(search_terms)
metadata_filters = {} metadata_filters = None
if lead_features.industry_tag != "other":
metadata_filters["$or"] = [
{"industry": {"$contains": lead_features.industry_tag}},
{"roles_relevant": {"$contains": lead_features.role_category}},
]
return RetrievalQuery( return RetrievalQuery(
text_query=text_query, text_query=text_query,
@ -155,9 +150,12 @@ class RetrievalService:
if chunk.metadata.get("metrics"): if chunk.metadata.get("metrics"):
metrics = chunk.metadata["metrics"] metrics = chunk.metadata["metrics"]
metrics_parts = [] metrics_parts = []
for key, value in metrics.items(): if isinstance(metrics, dict):
if isinstance(value, (int, float)): for key, value in metrics.items():
metrics_parts.append(f"{key}: {value}") if isinstance(value, (int, float)):
metrics_parts.append(f"{key}: {value}")
elif isinstance(metrics, str):
metrics_parts.append(metrics)
if metrics_parts: if metrics_parts:
metrics_info = f" ({', '.join(metrics_parts)})" metrics_info = f" ({', '.join(metrics_parts)})"