from pydantic import BaseModel, Field
from typing import Any, Optional

class ProcessRequest_chat(BaseModel):
    sessionId: str = Field(..., max_length=64)
    timeStamp: str = Field(..., max_length=32)
    text: str = Field(...)
    needFormUpdate: bool = False

class ProcessResponse_chat(BaseModel):
    sessionId: str = Field(..., max_length=64)
    timeStamp: str = Field(..., max_length=32)
    outputText: str = Field(...)
    formUpdate: Any = Field(default_factory=dict)
    nextStage: str = Field(..., max_length=32)
    nextStageCode: str = Field(..., max_length=4)
    code: str = Field(..., max_length=4)
    msg: Optional[str] = None
    
class ProcessRequest_get(BaseModel):
    sessionId: str = Field(..., max_length=64)
    timeStamp: str = Field(..., max_length=32)
    key: str = Field(...)
    includeInputInfo: bool = False

class ProcessResponse_get(BaseModel):
    sessionId: str = Field(..., max_length=64)
    timeStamp: str = Field(..., max_length=32)
    value: str = Field(...)
    code: str = Field(..., max_length=4)
    msg: Optional[str] = None

class ProcessRequest_set(BaseModel):
    sessionId: str = Field(..., max_length=64)
    timeStamp: str = Field(..., max_length=32)
    key: str = Field(...)
    value: str = Field(...)
    includeInputInfo: bool = False

class ProcessResponse_set(BaseModel):
    sessionId: str = Field(..., max_length=64)
    timeStamp: str = Field(..., max_length=32)
    code: str = Field(..., max_length=4)
    msg: Optional[str] = None

class ProcessRequest_delete_session(BaseModel):
    sessionId: str = Field(..., max_length=64)
    timeStamp: str = Field(..., max_length=32)

class ProcessResponse_delete_session(BaseModel):
    sessionId: str = Field(..., max_length=64)
    timeStamp: str = Field(..., max_length=32)
    code: str = Field(..., max_length=4)
    msg: Optional[str] = None
