fix: Update NarratorSummary model to make name_arabic optional and name_transliterated nullable; enhance query filters for non-null Arabic names

This commit is contained in:
salah 2026-03-02 22:07:32 +01:00
parent f2bab9cadd
commit 5083e377a0
2 changed files with 6 additions and 2 deletions

View File

@ -126,8 +126,8 @@ class HadithDetail(BaseModel):
# ── Narrator ─────────────────────────────────────────────────────────────── # ── Narrator ───────────────────────────────────────────────────────────────
class NarratorSummary(BaseModel): class NarratorSummary(BaseModel):
name_arabic: str = Field(description="Primary Arabic name") name_arabic: str = Field("", description="Primary Arabic name")
name_transliterated: str = Field("", description="Latin transliteration") name_transliterated: Optional[str] = Field("", description="Latin transliteration")
entity_type: str = Field("", description="PERSON, KUNYA, NISBA, TITLE") entity_type: str = Field("", description="PERSON, KUNYA, NISBA, TITLE")
generation: Optional[str] = Field(None, description="طبقة: صحابي، تابعي، تابع التابعين") generation: Optional[str] = Field(None, description="طبقة: صحابي، تابعي، تابع التابعين")
reliability_grade: Optional[str] = Field(None, description="جرح وتعديل grade: ثقة، صدوق، ضعيف") reliability_grade: Optional[str] = Field(None, description="جرح وتعديل grade: ثقة، صدوق، ضعيف")

View File

@ -253,12 +253,14 @@ async def narrators_by_generation(
total = db.neo4j_count(""" total = db.neo4j_count("""
MATCH (n:Narrator) MATCH (n:Narrator)
WHERE toLower(n.generation) CONTAINS toLower($gen) WHERE toLower(n.generation) CONTAINS toLower($gen)
AND n.name_arabic IS NOT NULL
RETURN count(n) AS count RETURN count(n) AS count
""", {"gen": q_norm}) """, {"gen": q_norm})
rows = db.neo4j_query(""" rows = db.neo4j_query("""
MATCH (n:Narrator) MATCH (n:Narrator)
WHERE toLower(n.generation) CONTAINS toLower($gen) WHERE toLower(n.generation) CONTAINS toLower($gen)
AND n.name_arabic IS NOT NULL
OPTIONAL MATCH (n)-[:APPEARS_IN]->(h:Hadith) OPTIONAL MATCH (n)-[:APPEARS_IN]->(h:Hadith)
RETURN n.name_arabic AS name_arabic, RETURN n.name_arabic AS name_arabic,
n.name_transliterated AS name_transliterated, n.name_transliterated AS name_transliterated,
@ -293,6 +295,7 @@ async def narrators_by_place(
MATCH (n:Narrator)-[r]->(p:Place) MATCH (n:Narrator)-[r]->(p:Place)
WHERE type(r) IN ['BORN_IN', 'LIVED_IN', 'DIED_IN', 'TRAVELED_TO'] WHERE type(r) IN ['BORN_IN', 'LIVED_IN', 'DIED_IN', 'TRAVELED_TO']
AND toLower(p.name_arabic) CONTAINS toLower($place) AND toLower(p.name_arabic) CONTAINS toLower($place)
AND n.name_arabic IS NOT NULL
RETURN count(DISTINCT n) AS count RETURN count(DISTINCT n) AS count
""", {"place": q_norm}) """, {"place": q_norm})
@ -300,6 +303,7 @@ async def narrators_by_place(
MATCH (n:Narrator)-[r]->(p:Place) MATCH (n:Narrator)-[r]->(p:Place)
WHERE type(r) IN ['BORN_IN', 'LIVED_IN', 'DIED_IN', 'TRAVELED_TO'] WHERE type(r) IN ['BORN_IN', 'LIVED_IN', 'DIED_IN', 'TRAVELED_TO']
AND toLower(p.name_arabic) CONTAINS toLower($place) AND toLower(p.name_arabic) CONTAINS toLower($place)
AND n.name_arabic IS NOT NULL
OPTIONAL MATCH (n)-[:APPEARS_IN]->(h:Hadith) OPTIONAL MATCH (n)-[:APPEARS_IN]->(h:Hadith)
RETURN DISTINCT n.name_arabic AS name_arabic, RETURN DISTINCT n.name_arabic AS name_arabic,
n.name_transliterated AS name_transliterated, n.name_transliterated AS name_transliterated,