rubric-ai / backend /api /models.py
itslikethisnow's picture
three stages complete
a43aaf6
"""Pydantic models for API request/response validation."""
from pydantic import BaseModel
from datetime import datetime
class TaskIDRequest(BaseModel):
"""Request model for task-based endpoints."""
task_id: int
class SuggestGroupsResponse(BaseModel):
"""Response model for group suggestion endpoint."""
suggested_groups: list[str]
class ChatMessage(BaseModel):
"""Model for individual chat messages."""
role: str # 'user', 'ai', 'system'
content: str
created_at: datetime | None = None
class ChatRequest(BaseModel):
"""Request model for chat endpoint."""
message: str
task_id: int
project_title: str
current_stage: str
output_mode: str = "standard"
prompt_group_config: dict | None = None
custom_system_prompt: str | None = None
conversation_id: str | None = None # Optional conversation ID for persistence
current_group_name: str | None = None
selected_standards: list[dict] | None = None
current_alignment_work: str | None = None
message_history: list[ChatMessage] | None = None # Sliding window of recent messages
class ChatResponse(BaseModel):
"""Response model for chat endpoint."""
response: str
conversation_id: str | None = None # Return conversation ID for tracking
class ConversationSummary(BaseModel):
"""Summary model for conversation list."""
id: str
title: str | None
project_id: str | None
created_at: datetime
updated_at: datetime
class ConversationListResponse(BaseModel):
"""Response model for listing conversations."""
conversations: list[ConversationSummary]
class ConversationMessagesResponse(BaseModel):
"""Response model for fetching conversation messages."""
conversation_id: str
messages: list[ChatMessage]
class GenerateRubricRequest(BaseModel):
"""Request model for rubric generation endpoint."""
task_id: int
prompt_groups: dict
class GenerateRubricResponse(BaseModel):
"""Response model for rubric generation endpoint."""
rubric: dict
message: str