NeonClary's picture
Deploy brand mark, logo palette, goal-aware starters, and carousel fit.
ffcad5d verified
Raw History Blame Contribute Delete
2.25 kB
from datetime import datetime
from typing import List, Literal, Optional
from bson import ObjectId
from pydantic import BaseModel, Field
from app.models.user import PyObjectId
FactCategory = Literal["person", "organization", "environment", "needs", "preferences"]
FactSource = Literal["stated", "inferred"]
class UserFact(BaseModel):
class Config:
allow_population_by_field_name = True
arbitrary_types_allowed = True
json_encoders = {ObjectId: str}
id: PyObjectId = Field(default_factory=PyObjectId, alias="_id")
user_id: PyObjectId
category: FactCategory
key: str
value: str
source: FactSource
confidence: Optional[float] = None
evidence: Optional[str] = None
created_at: datetime = Field(default_factory=datetime.utcnow)
updated_at: datetime = Field(default_factory=datetime.utcnow)
class UserFactCreate(BaseModel):
category: FactCategory
key: str
value: str
evidence: Optional[str] = None
class UserFactUpdate(BaseModel):
value: Optional[str] = None
source: Optional[FactSource] = None
confidence: Optional[float] = None
evidence: Optional[str] = None
category: Optional[FactCategory] = None
class UserFactResponse(BaseModel):
id: str
user_id: str
category: FactCategory
key: str
value: str
source: FactSource
confidence: Optional[float] = None
evidence: Optional[str] = None
created_at: Optional[datetime] = None
updated_at: Optional[datetime] = None
class UserFactListResponse(BaseModel):
facts: List[UserFactResponse]
class UserSummary(BaseModel):
class Config:
allow_population_by_field_name = True
arbitrary_types_allowed = True
json_encoders = {ObjectId: str}
id: PyObjectId = Field(default_factory=PyObjectId, alias="_id")
user_id: PyObjectId
short: str = ""
long: str = ""
generated_at: datetime = Field(default_factory=datetime.utcnow)
version: Optional[int] = None
class UserSummaryResponse(BaseModel):
user_id: str
short: str = ""
long: str = ""
generated_at: Optional[datetime] = None
version: Optional[int] = None