Toggle navigation
Toggle navigation
This project
Loading...
Sign in
Rafael Lopez
/
ppto
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Authored by
Rafael Lopez
2026-03-01 23:08:00 -0400
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
f315f66b2b97fc55d3c5a0f59506b66a9ba85124
f315f66b
1 parent
a9d6c7ef
ajustes
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
64 additions
and
34 deletions
BUSQUEDA.md
src/routes/+page.svelte
BUSQUEDA.md
View file @
f315f66
...
...
@@ -7,7 +7,24 @@ Buscador instantáneo con Fuse.js en cliente. Busca en clasificadores presupuest
### Motor de búsqueda
-
**Tecnología**
: Fuse.js (cliente)
-
**Razón**
: ~2,000-4,000 registros totales, cabe en memoria, búsqueda instantánea sin latencia
-
**Razón**
: ~1,000 registros totales (~600 entidades + ~450 objetos), cabe en memoria, búsqueda instantánea sin latencia
### Configuración Fuse.js
```
javascript
const
fuseOptions
=
{
keys
:
[
{
name
:
'nombre_normalizado'
,
weight
:
0.6
},
{
name
:
'sigla_normalizada'
,
weight
:
0.2
},
{
name
:
'codigo_normalizado'
,
weight
:
0.2
}
],
threshold
:
0.4
,
distance
:
100
,
includeScore
:
true
,
includeMatches
:
true
,
minMatchCharLength
:
2
,
ignoreLocation
:
true
};
```
### Tolerancia a errores
-
Normalización de acentos ("andres" → "andrés")
...
...
@@ -24,12 +41,13 @@ Buscador instantáneo con Fuse.js en cliente. Busca en clasificadores presupuest
## Estructura del Índice
### Índice unificado (
futur
o)
### Índice unificado (
implementad
o)
Todos los clasificadores en un solo array con
`tipo`
:
```
javascript
// src/lib/data/index.js
const
indice
=
[
// src/lib/services/search.js
const
searchData
=
[
// Entidades
{
tipo
:
'entidad'
,
codigo
:
139
,
...
...
@@ -37,22 +55,28 @@ const indice = [
sigla
:
'UMSA'
,
contexto
:
'Universidades Públicas'
,
a
ñ
os
:
20
,
// campos normalizados para búsqueda
_nombre_normalizado
:
'universidad mayor de san andres
'
,
_sigla_normalizada
:
'umsa
'
nombre_normalizado
:
'universidad mayor de san andres'
,
sigla_normalizada
:
'umsa
'
,
codigo_normalizado
:
'139
'
},
// Objetos de gasto
{
tipo
:
'objeto_gasto'
,
codigo
:
25100
,
codigo
:
'25100'
,
nombre
:
'Pasajes'
,
contexto
:
'Servicios'
,
// ...
sigla
:
null
,
contexto
:
'Objeto del Gasto · Partida'
,
nivel
:
'partida'
,
nombre_normalizado
:
'pasajes'
,
sigla_normalizada
:
''
,
codigo_normalizado
:
'25100'
}
]
```
### Por ahora (MVP)
Solo clasificador de entidades (
`clas_institucional`
).
### Fuentes de datos
-
**Entidades**
: tabla
`ppto.clas_institucional`
-
**Objetos de gasto**
: tabla
`ppto.clas_objetos`
## Columnas de Búsqueda
...
...
@@ -65,12 +89,12 @@ Solo clasificador de entidades (`clas_institucional`).
|
`n_gestiones`
| ✗ | ✓ "X años de datos" |
|
`entidad`
| ✗ | para URL |
### Objetos de gasto (
futuro
)
### Objetos de gasto (
clas_objetos
)
| Columna | Buscar | Mostrar |
|---------|--------|---------|
|
`desc_objeto`
| ✓ | ✓ nombre principal |
|
`
codigo_objeto`
| ✓ | ✓ código
|
|
`
desc_partida`
| ✗ | ✓ contexto
|
|
`
objeto`
| ✓ | ✓ código (monospace)
|
|
`
nivel`
| ✗ | ✓ contexto ("Objeto del Gasto · Partida")
|
## Flujo de Búsqueda
...
...
@@ -92,7 +116,7 @@ Solo clasificador de entidades (`clas_institucional`).
```
/entidad/[codigo] → /entidad/139
/
gasto/[codigo] → /gasto/25100 (futuro)
/
objeto/[codigo] → /objeto/25100
/area/[codigo] → /area/1.1.4 (futuro, opcional)
```
...
...
@@ -100,18 +124,22 @@ Solo clasificador de entidades (`clas_institucional`).
```
┌─────────────────────────────────────────────────────┐
│ 🔍 [
buscar entidad, objeto de gasto...]
│
│ 🔍 [
Buscar entidad u objeto de gasto...]
│
├─────────────────────────────────────────────────────┤
│ Universidad Mayor De San Andrés (UMSA) │
│ Universidades Públicas
· 20 años
│
│ Universidad Mayor De San Andrés (UMSA) │
← Entidad
│ Universidades Públicas
│
├─────────────────────────────────────────────────────┤
│
Universidad Pública De El Alto (UPEA) │
│
Universidades Públicas · 21 años
│
│
25100 Pasajes │ ← Objeto de gasto
│
Objeto del Gasto · Partida
│
├─────────────────────────────────────────────────────┤
│ ... │
└─────────────────────────────────────────────────────┘
```
### Diferencias visuales
-
**Entidades**
: Nombre + (sigla) en primera línea
-
**Objetos de gasto**
: Código (monospace) + Nombre en primera línea
## Estados del Buscador
| Estado | Qué mostrar |
...
...
@@ -143,14 +171,19 @@ src/lib/
└── index.js ← Carga y construcción del índice
```
## Estado de Implementación
| Clasificador | Estado | Tabla |
|--------------|--------|-------|
| Entidades | ✅ Implementado |
`ppto.clas_institucional`
|
| Objetos de gasto | ✅ Implementado |
`ppto.clas_objetos`
|
| Fuente de financiamiento | ⏳ Pendiente | - |
| Geográfico | ⏳ Pendiente | - |
## Trabajo Futuro
### Índice normalizado
Cuando haya múltiples clasificadores, crear un proceso que:
1.
Descargue todos los clasificadores
2.
Normalice campos de búsqueda (acentos, minúsculas)
3.
Genere un índice unificado optimizado
4.
Posiblemente pre-computar en servidor y servir como JSON estático
### Índice pre-computado
Posibilidad de pre-computar el índice en servidor y servir como JSON estático para mejorar tiempo de carga inicial.
### Migración a servidor
Si el índice supera ~20,000 registros:
...
...
src/routes/+page.svelte
View file @
f315f66
...
...
@@ -7,10 +7,7 @@
</svelte:head>
<div class="max-w-4xl mx-auto p-4">
<h1 class="text-2xl mb-2">Presupuesto Público de Bolivia</h1>
<p class="mb-6 text-gray-600">
20 años de datos fiscales · 600+ entidades · Actualización diaria
</p>
<h1 class="text-2xl mb-6">Presupuesto Público de Bolivia</h1>
<div class="mb-8">
<SearchBox />
...
...
@@ -21,9 +18,9 @@
<strong>Clasificadores</strong>
<p class="text-gray-600">Navegar por instituciones, objetos de gasto, etc.</p>
</a>
<
div class="p-4 border rounded opacit
y-50">
<
a href="/historias" class="p-4 border rounded hover:bg-gra
y-50">
<strong>Historias</strong>
<p class="text-gray-600">
Próximamente
</p>
</
div
>
<p class="text-gray-600">
Análisis y visualizaciones del gasto público
</p>
</
a
>
</div>
</div>
...
...
Please
register
or
login
to post a comment