Spaces:
Sleeping
Sleeping
File size: 1,832 Bytes
1fff71f 1d8729f 1fff71f 1d8729f 1fff71f 5d3ee93 1fff71f |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
"""
Data models for Profile and Contact Management UI.
Feature: 012-profile-contact-ui
"""
from dataclasses import dataclass
from datetime import datetime
from typing import Literal, Optional
@dataclass
class UserProfile:
"""User profile entity."""
user_id: str
display_name: str
profile_picture_url: Optional[str]
created_at: datetime
last_login: datetime
session_id: str # Format: {user_id}_session
@dataclass
class ContactSession:
"""Contact session entity."""
session_id: str # Format: {user_id}_{UUID_v4}
user_id: str
contact_id: str # Contact identifier (maps to project_id in v2 backend)
contact_name: str
contact_description: Optional[str]
is_reference: bool
created_at: datetime
last_interaction: datetime
normalized_name: Optional[str] = None # Feature: 001-refine-memory-producer-logic
sequence_number: Optional[int] = None # Feature: 001-refine-memory-producer-logic
producer_id: Optional[str] = None # Feature: 001-refine-memory-producer-logic - Format: {user_id}_{normalized_name}_{seq}
@dataclass
class Fact:
"""
Fact entity - alias for Message with mode='memorize'.
Used for semantic clarity in the application.
"""
message_id: str # UUID
session_id: str
content: str
created_at: datetime
mode: Literal["memorize"] = "memorize" # Always 'memorize' for facts
@dataclass
class Message:
"""Message entity - unified model for chat messages and facts."""
message_id: str # UUID
session_id: str
mode: Literal["chat", "memorize"] # 'chat' for messages, 'memorize' for facts
content: str
created_at: datetime
sender: Optional[Literal["user", "assistant"]] = None # Only for mode='chat'
metadata: Optional[dict] = None # Optional (e.g., LLM model, tokens)
|