"""RelationCandidate — candidato de relacion extraido por el LLM."""

from dataclasses import dataclass


@dataclass
class RelationCandidate:
    """Candidato de relacion entre dos entidades extraido por el LLM.

    `from_name` y `to_name` contienen los nombres crudos del texto. `from_id`
    y `to_id` se llenan durante la fase de deduplicacion cuando se resuelven
    contra los EntityCandidate finales.
    """

    from_name: str
    to_name: str
    from_id: str = ""
    to_id: str = ""
    relation_type: str = ""
    description: str = ""
    confidence: float = 0.0
    source_chunk_index: int = -1

    def to_dict(self) -> dict:
        """Serializa el candidato a un diccionario."""
        return {
            "from_name": self.from_name,
            "to_name": self.to_name,
            "from_id": self.from_id,
            "to_id": self.to_id,
            "relation_type": self.relation_type,
            "description": self.description,
            "confidence": self.confidence,
            "source_chunk_index": self.source_chunk_index,
        }
