Fix date_range filter: convert ISO string to Unix timestamp for models.Range

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
q 2026-04-18 16:00:37 +03:00
parent 72991ff71a
commit f16df83601

View file

@ -1,3 +1,4 @@
from datetime import datetime
from typing import Any
from qdrant_client import AsyncQdrantClient, models
@ -14,6 +15,13 @@ from config import (
from schemas import Question, SparseVector
def _iso_to_unix(s: str) -> float:
try:
return datetime.fromisoformat(s.replace("Z", "+00:00")).timestamp()
except (ValueError, AttributeError):
return 0.0
def _build_filter(question: Question) -> models.Filter | None:
must_conditions: list[models.Condition] = []
@ -22,8 +30,8 @@ def _build_filter(question: Question) -> models.Filter | None:
models.FieldCondition(
key="metadata.start",
range=models.Range(
gte=question.date_range.from_,
lte=question.date_range.to,
gte=_iso_to_unix(question.date_range.from_),
lte=_iso_to_unix(question.date_range.to),
),
)
)