Spaces:
Sleeping
Sleeping
| """ | |
| 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 | |
| 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 | |
| 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} | |
| 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 | |
| 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) | |