diff --git a/app/models/schemas.py b/app/models/schemas.py index 5447914..1ce3445 100644 --- a/app/models/schemas.py +++ b/app/models/schemas.py @@ -126,8 +126,8 @@ class HadithDetail(BaseModel): # ── Narrator ─────────────────────────────────────────────────────────────── class NarratorSummary(BaseModel): - name_arabic: str = Field(description="Primary Arabic name") - name_transliterated: str = Field("", description="Latin transliteration") + name_arabic: str = Field("", description="Primary Arabic name") + name_transliterated: Optional[str] = Field("", description="Latin transliteration") entity_type: str = Field("", description="PERSON, KUNYA, NISBA, TITLE") generation: Optional[str] = Field(None, description="طبقة: صحابي، تابعي، تابع التابعين") reliability_grade: Optional[str] = Field(None, description="جرح وتعديل grade: ثقة، صدوق، ضعيف") diff --git a/app/routers/narrators.py b/app/routers/narrators.py index 9f42a93..605889f 100644 --- a/app/routers/narrators.py +++ b/app/routers/narrators.py @@ -253,12 +253,14 @@ async def narrators_by_generation( total = db.neo4j_count(""" MATCH (n:Narrator) WHERE toLower(n.generation) CONTAINS toLower($gen) + AND n.name_arabic IS NOT NULL RETURN count(n) AS count """, {"gen": q_norm}) rows = db.neo4j_query(""" MATCH (n:Narrator) WHERE toLower(n.generation) CONTAINS toLower($gen) + AND n.name_arabic IS NOT NULL OPTIONAL MATCH (n)-[:APPEARS_IN]->(h:Hadith) RETURN n.name_arabic AS name_arabic, n.name_transliterated AS name_transliterated, @@ -293,6 +295,7 @@ async def narrators_by_place( MATCH (n:Narrator)-[r]->(p:Place) WHERE type(r) IN ['BORN_IN', 'LIVED_IN', 'DIED_IN', 'TRAVELED_TO'] AND toLower(p.name_arabic) CONTAINS toLower($place) + AND n.name_arabic IS NOT NULL RETURN count(DISTINCT n) AS count """, {"place": q_norm}) @@ -300,6 +303,7 @@ async def narrators_by_place( MATCH (n:Narrator)-[r]->(p:Place) WHERE type(r) IN ['BORN_IN', 'LIVED_IN', 'DIED_IN', 'TRAVELED_TO'] AND toLower(p.name_arabic) CONTAINS toLower($place) + AND n.name_arabic IS NOT NULL OPTIONAL MATCH (n)-[:APPEARS_IN]->(h:Hadith) RETURN DISTINCT n.name_arabic AS name_arabic, n.name_transliterated AS name_transliterated,