fix: Update fields to use Optional type for better clarity and handling of null values
This commit is contained in:
parent
c6191180c8
commit
0a66b9c0e3
|
|
@ -5,7 +5,7 @@ from functools import lru_cache
|
||||||
class Settings(BaseSettings):
|
class Settings(BaseSettings):
|
||||||
app_name: str = "Hadith Scholar API"
|
app_name: str = "Hadith Scholar API"
|
||||||
app_version: str = "0.1.0"
|
app_version: str = "0.1.0"
|
||||||
debug: bool = False
|
debug: Optional[bool] = None
|
||||||
|
|
||||||
# PostgreSQL
|
# PostgreSQL
|
||||||
pg_host: str = "pg.betelgeusebytes.io"
|
pg_host: str = "pg.betelgeusebytes.io"
|
||||||
|
|
|
||||||
|
|
@ -67,8 +67,8 @@ class TopicTag(BaseModel):
|
||||||
class NarratorInChain(BaseModel):
|
class NarratorInChain(BaseModel):
|
||||||
order: int = Field(description="Position in chain: 1=closest to compiler, last=closest to Prophet ﷺ")
|
order: int = Field(description="Position in chain: 1=closest to compiler, last=closest to Prophet ﷺ")
|
||||||
name_arabic: str = Field(description="Narrator's Arabic name as it appears in the hadith text")
|
name_arabic: str = Field(description="Narrator's Arabic name as it appears in the hadith text")
|
||||||
name_transliterated: str = Field("", description="Latin transliteration of the name")
|
name_transliterated: Optional[str] = Field(None, description="Latin transliteration of the name")
|
||||||
entity_type: str = Field("", description="PERSON, KUNYA (أبو/أم), NISBA (attributional), or TITLE (رسول الله)")
|
entity_type: Optional[str] = Field(None, description="PERSON, KUNYA (أبو/أم), NISBA (attributional), or TITLE (رسول الله)")
|
||||||
transmission_verb: Optional[str] = Field(None, description="Exact Arabic transmission verb: حدثنا، أخبرنا، عن، سمعت")
|
transmission_verb: Optional[str] = Field(None, description="Exact Arabic transmission verb: حدثنا، أخبرنا، عن، سمعت")
|
||||||
|
|
||||||
model_config = {
|
model_config = {
|
||||||
|
|
@ -121,8 +121,8 @@ class HadithDetail(BaseModel):
|
||||||
|
|
||||||
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(None, description="Latin transliteration")
|
||||||
entity_type: str = Field("", description="PERSON, KUNYA, NISBA, TITLE")
|
entity_type: Optional[str] = Field(None, description="PERSON, KUNYA, NISBA, TITLE")
|
||||||
generation: Optional[str] = Field(None, description="طبقة: صحابي، تابعي، تابع التابعين")
|
generation: Optional[str] = Field(None, description="طبقة: صحابي، تابعي، تابع التابعين")
|
||||||
reliability_grade: Optional[str] = Field(None, description="جرح وتعديل: ثقة، صدوق، ضعيف، متروك")
|
reliability_grade: Optional[str] = Field(None, description="جرح وتعديل: ثقة، صدوق، ضعيف، متروك")
|
||||||
hadith_count: int = Field(0, description="Number of hadiths this narrator appears in")
|
hadith_count: int = Field(0, description="Number of hadiths this narrator appears in")
|
||||||
|
|
@ -166,8 +166,8 @@ class PlaceRelation(BaseModel):
|
||||||
|
|
||||||
class NarratorProfile(BaseModel):
|
class NarratorProfile(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(None, description="Latin transliteration")
|
||||||
entity_type: str = Field("", description="PERSON, KUNYA, NISBA, TITLE")
|
entity_type: Optional[str] = Field(None, description="PERSON, KUNYA, NISBA, TITLE")
|
||||||
full_nasab: Optional[str] = Field(None, description="Full lineage: فلان بن فلان بن فلان")
|
full_nasab: Optional[str] = Field(None, description="Full lineage: فلان بن فلان بن فلان")
|
||||||
kunya: Optional[str] = Field(None, description="أبو/أم name (e.g. أبو هريرة)")
|
kunya: Optional[str] = Field(None, description="أبو/أم name (e.g. أبو هريرة)")
|
||||||
nisba: Optional[str] = Field(None, description="Attributional name (e.g. البخاري، المدني، الزهري)")
|
nisba: Optional[str] = Field(None, description="Attributional name (e.g. البخاري، المدني، الزهري)")
|
||||||
|
|
@ -226,8 +226,8 @@ class NarratorProfile(BaseModel):
|
||||||
|
|
||||||
class IsnadNode(BaseModel):
|
class IsnadNode(BaseModel):
|
||||||
name_arabic: str = Field(description="Narrator Arabic name")
|
name_arabic: str = Field(description="Narrator Arabic name")
|
||||||
name_transliterated: str = Field("", description="Latin transliteration")
|
name_transliterated: Optional[str] = Field(None, description="Latin transliteration")
|
||||||
entity_type: str = Field("", description="PERSON, KUNYA, NISBA, TITLE")
|
entity_type: Optional[str] = Field(None, 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")
|
||||||
|
|
||||||
|
|
@ -271,9 +271,9 @@ class IsnadChain(BaseModel):
|
||||||
|
|
||||||
class NarratorInteraction(BaseModel):
|
class NarratorInteraction(BaseModel):
|
||||||
narrator_a: str = Field(description="First narrator Arabic name")
|
narrator_a: str = Field(description="First narrator Arabic name")
|
||||||
narrator_a_transliterated: str = Field("", description="First narrator transliteration")
|
narrator_a_transliterated: Optional[str] = Field(None, description="First narrator transliteration")
|
||||||
narrator_b: str = Field(description="Second narrator Arabic name")
|
narrator_b: str = Field(description="Second narrator Arabic name")
|
||||||
narrator_b_transliterated: str = Field("", description="Second narrator transliteration")
|
narrator_b_transliterated: Optional[str] = Field(None, description="Second narrator transliteration")
|
||||||
relationship_type: str = Field(description="NARRATED_FROM, TEACHER_OF, HEARD_BY, STUDENT_OF")
|
relationship_type: str = Field(description="NARRATED_FROM, TEACHER_OF, HEARD_BY, STUDENT_OF")
|
||||||
shared_hadith_count: int = Field(0, description="Number of hadiths connecting them")
|
shared_hadith_count: int = Field(0, description="Number of hadiths connecting them")
|
||||||
hadith_ids: list[str] = Field(default_factory=list, description="IDs of connecting hadiths (max 20)")
|
hadith_ids: list[str] = Field(default_factory=list, description="IDs of connecting hadiths (max 20)")
|
||||||
|
|
@ -295,7 +295,7 @@ class NarratorInteraction(BaseModel):
|
||||||
|
|
||||||
class NarratorConnection(BaseModel):
|
class NarratorConnection(BaseModel):
|
||||||
narrator: str = Field(description="Connected narrator Arabic name")
|
narrator: str = Field(description="Connected narrator Arabic name")
|
||||||
narrator_transliterated: str = Field("", description="Transliteration")
|
narrator_transliterated: Optional[str] = Field(None, description="Transliteration")
|
||||||
connection_type: str = Field(description="Relationship type")
|
connection_type: str = Field(description="Relationship type")
|
||||||
direction: str = Field(description="'incoming' (they → this) or 'outgoing' (this → them)")
|
direction: str = Field(description="'incoming' (they → this) or 'outgoing' (this → them)")
|
||||||
|
|
||||||
|
|
@ -311,7 +311,7 @@ class NarratorNetwork(BaseModel):
|
||||||
class SemanticSearchResult(BaseModel):
|
class SemanticSearchResult(BaseModel):
|
||||||
hadith: HadithSummary = Field(description="Matching hadith")
|
hadith: HadithSummary = Field(description="Matching hadith")
|
||||||
score: float = Field(description="Cosine similarity score (0-1, higher = more relevant)")
|
score: float = Field(description="Cosine similarity score (0-1, higher = more relevant)")
|
||||||
collection: str = Field("", description="Collection name")
|
collection: Optional[str] = Field(None, description="Collection name")
|
||||||
|
|
||||||
model_config = {
|
model_config = {
|
||||||
"json_schema_extra": {
|
"json_schema_extra": {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue