"""溯源记录模型"""
from typing import Optional

from sqlalchemy import JSON, ForeignKey
from sqlalchemy.orm import Mapped, mapped_column

from src.models.base import BaseModel


class Trace(BaseModel):
    """溯源记录模型"""
    __tablename__ = "traces"

    task_id: Mapped[str] = mapped_column(
        ForeignKey("tasks.id"),
        nullable=False,
        index=True,
    )
    query_analysis: Mapped[dict] = mapped_column(JSON, nullable=False)
    data_sources: Mapped[list] = mapped_column(JSON, default=list)
    reasoning_steps: Mapped[list] = mapped_column(JSON, default=list)
    confidence: Mapped[dict] = mapped_column(JSON, nullable=False)
