"""
Chatbot Models Package

This package contains all Django models for the AI chatbot application.

Model Organization:
-------------------
1. ChatSession - User conversation threads (maps to LangGraph thread_id)
2. UserPreference - AI settings and user preferences  
3. TokenUsage - Track AI token consumption and costs
4. MessageFeedback - User ratings and feedback on AI responses
5. UserDocument - File uploads for RAG (Retrieval Augmented Generation)
6. SystemPromptTemplate - Reusable system prompts
7. UserTool - Custom tools/functions users can enable
8. AvailableTool - Catalog of available tools
9. UserAPIKey - Encrypted user API keys

Important Notes:
----------------
- Message history is stored by LangGraph's PostgresCheckpointer (PG_CHECKPOINT_URI)
- Document embeddings are stored in pgvector (PGVECTOR_CONNECTION_STRING)  
- These Django models store metadata, user preferences, and analytics
- Don't duplicate what LangGraph already manages!

Architecture:
-------------
Django Models (this package):
  ✓ User-facing metadata (titles, descriptions)
  ✓ User preferences and settings
  ✓ Usage tracking and billing
  ✓ Tool configurations
  ✓ File upload metadata
  ✓ Feedback and analytics

LangGraph Checkpointer (PG_CHECKPOINT_URI):
  ✓ Message history and conversation state
  ✓ Thread/checkpoint management
  ✓ Automatic summarization

PGVector Store (PGVECTOR_CONNECTION_STRING):
  ✓ Document embeddings for RAG
  ✓ Semantic search on documents
"""

# Core conversation models
from .chat_session import ChatSession
from .user_preference import UserPreference
from .message_feedback import MessageFeedback

# Usage and analytics
from .token_usage import TokenUsage

# Document and RAG
from .user_document import UserDocument

# System configuration
from .system_prompt import SystemPromptTemplate
from .user_tool import UserTool, AvailableTool
from .user_api_key import UserAPIKey

# Export all models
__all__ = [
    # Core
    'ChatSession',
    'UserPreference',
    'MessageFeedback',
    
    # Analytics
    'TokenUsage',
    
    # RAG
    'UserDocument',
    
    # Configuration
    'SystemPromptTemplate',
    'UserTool',
    'AvailableTool',
    'UserAPIKey',
]
