"""EntityCandidate — candidato de entidad extraido por el LLM.""" from dataclasses import dataclass, field @dataclass class EntityCandidate: """Candidato de entidad extraido por el LLM. Puede venir de un solo chunk o ser el resultado de mergear multiples extracciones. `merged_from` rastrea los nombres originales para debugging. """ name: str name_normalized: str = "" type_ref: str = "" type_label: str = "" attributes: dict = field(default_factory=dict) confidence: float = 0.0 source_chunk_indices: list[int] = field(default_factory=list) merged_from: list[str] = field(default_factory=list) def to_dict(self) -> dict: """Serializa el candidato a un diccionario.""" return { "name": self.name, "name_normalized": self.name_normalized, "type_ref": self.type_ref, "type_label": self.type_label, "attributes": self.attributes, "confidence": self.confidence, "source_chunk_indices": self.source_chunk_indices, "merged_from": self.merged_from, }