from sqlalchemy import Boolean, Column, DateTime, Float, Integer, String, Text
from sqlalchemy.dialects.postgresql import JSONB

from app.core.schema_binding import global_model
from app.models.base import BaseModel


@global_model
class AnnotationTask(BaseModel):
    __tablename__ = 'annotation_tasks'
    __table_args__ = {'schema': 'hub_global'}
    title = Column(String(255), nullable=False)
    description = Column(Text, nullable=True)
    content = Column(Text, nullable=False)
    task_type = Column(String(50), nullable=False)
    status = Column(String(50), default='pending', index=True)
    priority = Column(String(50), default='medium')
    deadline = Column(DateTime, nullable=True)
    assigned_to = Column(Integer, nullable=True, index=True)
    assigned_by = Column(Integer, nullable=True)
    created_by = Column(Integer, nullable=True)
    completed_at = Column(DateTime, nullable=True)
    reviewed_at = Column(DateTime, nullable=True)
    reviewed_by = Column(Integer, nullable=True)
    quality_score = Column(Float, nullable=True)
    approved = Column(Boolean, nullable=True)
    reviewer_feedback = Column(Text, nullable=True)
    annotation_data = Column(JSONB, nullable=True)
    meta_data = Column(JSONB, default={})
