from src.Security.GenerarIDs import GeneradorIDUnico
from typing import List

class Nota:
    def __init__(
        self,
        titulo: str,
        tags: List[str] = None,
        conexiones: List[str] = None,
        texto: str = "",
        vector: List[float] = None,
        resumen: str = "",
        vector_resumen: List[float] = None,
        id: str = None
    ):
        """
        Clase que representa una nota de texto con estructura semántica.

        :param titulo: Título de la nota.
        :param tags: Lista de etiquetas asociadas.
        :param conexiones: Lista de identificadores relacionados.
        :param vector: Embedding vectorial de la nota.
        :param resumen: Texto resumen de la nota.
        :param vector_resumen: Embedding del resumen.
        :param id: Identificador único (si no se proporciona, se genera automáticamente).
        """
        self.id = id if id is not None else GeneradorIDUnico("NOTA").generar()
        self.titulo = titulo
        self.tags = tags if tags is not None else []
        self.conexiones = conexiones if conexiones is not None else []
        self.texto = texto
        self.vector = vector
        self.resumen = resumen
        self.vector_resumen = vector_resumen

    def __repr__(self):
        return (
            f"<Nota id={self.id}, titulo='{self.titulo}', tags={len(self.tags)}, "
            f"conexiones={len(self.conexiones)}, vector_dim={len(self.vector)}, "
            f"resumen_len={len(self.resumen)}, vector_resumen_dim={len(self.vector_resumen)}>"
        )