"""
知识库标注模型（Q&A 对）

手动添加的高优先级问答对，检索时优先匹配。
"""
from sqlalchemy import Column, String, Text, Integer, Boolean, Index

from app.base_model import BaseModel


class KnowledgeAnnotation(BaseModel):
    """
    知识库标注（Q&A 对）

    用户手动添加的问答对，检索时优先匹配 question，返回 answer。
    """
    __tablename__ = "ai_knowledge_annotation"

    knowledge_base_id = Column(String(21), nullable=False, index=True, comment="所属知识库ID（逻辑外键关联ai_knowledge_base）")

    # Q&A 内容
    question = Column(Text, nullable=False, comment="问题")
    answer = Column(Text, nullable=False, comment="答案")

    # 向量化状态
    embedding_status = Column(String(20), default="pending", comment="向量化状态: pending/completed/failed")

    # 状态
    enabled = Column(Boolean, default=True, comment="是否启用")
    hit_count = Column(Integer, default=0, comment="命中次数")

    __table_args__ = (
        Index('idx_annotation_kb_enabled', 'knowledge_base_id', 'enabled'),
    )
