Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/alfonsoolavarria/florilegio/llms.txt

Use this file to discover all available pages before exploring further.

Florilegio integra dos obras de referencia clásicas del estudio bíblico: la Concordancia de Strong y el Diccionario Expositivo de Vine. La Concordancia de Strong asigna un número único a cada palabra del hebreo y el griego bíblico, proporcionando su definición léxica. El Diccionario Expositivo de Vine amplía ese análisis con entradas temáticas que agrupan usos y matices de una misma raíz en el contexto del Antiguo y Nuevo Testamento. En Florilegio, ambas obras están indexadas en la base de datos y se consultan automáticamente al visualizar el detalle de cualquier palabra en la herramienta de estudio interlineal.

Modelo VineConcord

Almacena las entradas del Diccionario Expositivo de Vine. Cada registro representa un tema o palabra clave con su definición completa y los números Strong asociados.
class VineConcord(models.Model):
    topic        = models.CharField(max_length=255, primary_key=True)
    definition   = models.TextField(blank=True, null=True)
    is_strong    = models.BooleanField(default=False)
    is_concord   = models.BooleanField(default=False)
    strong_numbers = models.JSONField(default=list)  # Lista de enteros, ej. [3056, 3004]

    class Meta:
        db_table = 'vine_concord'
CampoDescripción
topicPalabra clave o tema (PK); ej. "WORD", "GRACE"
definitionTexto completo de la definición de Vine
is_strongTrue si esta entrada está indexada por número Strong
is_concordTrue si pertenece a una concordancia temática
strong_numbersLista de números Strong enteros asociados (ej. [3056, 3004])

Modelo StrongConcord

Almacena las entradas individuales de la Concordancia de Strong. Cada registro representa una entrada léxica identificada por su número Strong completo.
class StrongConcord(models.Model):
    topic        = models.CharField(max_length=255, primary_key=True)
    definition   = models.TextField(blank=True, null=True)
    is_strong    = models.BooleanField(default=False)
    is_concord   = models.BooleanField(default=False)
    strong_numbers = models.JSONField(default=list)

    class Meta:
        db_table = 'strong_concord'
La clave primaria topic contiene el número Strong con su prefijo de idioma: G3056 para griego, H1234 para hebreo.
El formato de los números Strong utiliza un prefijo de una letra para indicar el idioma del término original:
  • G para palabras del griego (Nuevo Testamento) — ej. G3056 (λόγος, logos)
  • H para palabras del hebreo (Antiguo Testamento) — ej. H1234 (בָּרָא, bara)
Al consultar StrongConcord, usa el número completo con prefijo. Al consultar VineConcord, usa solo la parte numérica como entero en strong_numbers__contains.

Flujo de búsqueda en el detalle de palabra

Cuando un usuario accede a /palabra/<idioma>/<pk>/, la vista palabra_detalle sigue este proceso para obtener las definiciones:
1

Obtener el número Strong de la palabra

Para palabras griegas, el Strong proviene de Morfologia.strong. Para palabras hebreas, de MorfologiaHebreo.strong.
strong_num = palabra.morfologia.strong       # Griego: "G3056"
strong_num = palabra.morfologia_hebreo.strong  # Hebreo: "H1234"
2

Consultar StrongConcord

Se busca la entrada léxica por el número Strong completo:
strong_key = strong_num  # Ya incluye prefijo G o H
strong_def = StrongConcord.objects.filter(topic=strong_key).first()
3

Consultar VineConcord

Se extrae la parte numérica del Strong y se buscan todas las entradas de Vine que lo incluyan en su lista strong_numbers:
num_part = ''.join(c for c in strong_num if c.isdigit())  # "3056"
vine_defs = list(
    VineConcord.objects.filter(strong_numbers__contains=[int(num_part)])
)
4

Renderizar el detalle

El template palabra_detalle.html recibe strong_def (un objeto StrongConcord o None) y vine_defs (lista de objetos VineConcord), que muestra como secciones de referencia bajo el análisis morfológico.

Comandos de importación

Los datos de Strong y Vine deben importarse antes de que las concordancias funcionen en el sitio. Florilegio provee comandos de gestión de Django para ello:
# Importa la Concordancia de Strong desde los archivos JSON del proyecto
python manage.py import_strong_from_json
# Lee strong_griego.json y strong_hebreo.json en la raíz del proyecto

# Importa datos adicionales de concordancias desde el panel de administración
python manage.py import_strong_concord

# Extrae y normaliza números Strong desde los datos de morfología ya importados
python manage.py extract_strong_numbers
Los archivos fuente strong_griego.json y strong_hebreo.json se encuentran en la raíz del repositorio.

API de Strong

GET /api/strong/<numero>/
Devuelve todas las entradas de VineConcord que contienen el número Strong indicado en su campo strong_numbers. El parámetro numero es un entero (sin prefijo). Ejemplo de solicitud:
GET /api/strong/3056/
Ejemplo de respuesta:
{
  "status": "success",
  "data": [
    {
      "topic": "WORD",
      "definition": "logos (λόγος, 3056) denotes (I) the expression of thought..."
    },
    {
      "topic": "REASON",
      "definition": "logos is also translated as reason in several passages..."
    }
  ]
}
En caso de error interno:
{
  "status": "error",
  "message": "descripción del error"
}

Build docs developers (and LLMs) love