Files

41 lines
2.0 KiB
Python

from datetime import datetime
from decimal import Decimal
from typing import Any
from sqlalchemy import JSON, BigInteger, DateTime, Integer, Numeric, SmallInteger, String, Text
from sqlalchemy.orm import Mapped, mapped_column
from app.model.base import Base
class ConversationMessage(Base):
__tablename__ = "conversation_message"
id: Mapped[int] = mapped_column(BigInteger, primary_key=True)
session_id: Mapped[str] = mapped_column(String(64), nullable=False)
message_no: Mapped[int | None] = mapped_column(Integer)
customer_id: Mapped[int | None] = mapped_column(BigInteger)
portal: Mapped[str] = mapped_column(String(32), nullable=False)
role: Mapped[str] = mapped_column(String(16), nullable=False)
content: Mapped[str] = mapped_column(Text, nullable=False)
tool_calls: Mapped[dict[str, Any] | None] = mapped_column(JSON)
trace_id: Mapped[str | None] = mapped_column(String(64))
intent: Mapped[str | None] = mapped_column(String(32))
confidence: Mapped[Decimal | None] = mapped_column(Numeric(5, 4))
source_references: Mapped[list[dict[str, Any]] | None] = mapped_column(JSON)
created_at: Mapped[datetime] = mapped_column(DateTime, nullable=False)
class ConversationFeedback(Base):
__tablename__ = "conversation_feedback"
id: Mapped[int] = mapped_column(BigInteger, primary_key=True)
feedback_no: Mapped[str] = mapped_column(String(32), unique=True, nullable=False)
session_id: Mapped[str] = mapped_column(String(64), nullable=False)
message_id: Mapped[int] = mapped_column(BigInteger, nullable=False)
customer_id: Mapped[int | None] = mapped_column(BigInteger)
rating: Mapped[int] = mapped_column(SmallInteger, nullable=False)
feedback_type: Mapped[str | None] = mapped_column(String(32))
feedback_content: Mapped[str | None] = mapped_column(String(1000))
status: Mapped[str] = mapped_column(String(16), nullable=False, default="open")
created_at: Mapped[datetime] = mapped_column(DateTime, nullable=False)
updated_at: Mapped[datetime] = mapped_column(DateTime, nullable=False)