feat: extraccion masiva footprint_aurgi (41 funcs + 4 types + stack Docker geo)
Extrae al registry funciones del proyecto interno footprint_aurgi: - core (6): slugify_ascii, normalize_for_join, cp_provincia_es, infer_provincia_from_cp, safe_read_csv_fallback, csv_to_parquet_duckdb - geo puras (7): haversine_km, point_in_ring, point_in_polygon, point_in_polygons_bbox, polygon_bbox, extent_with_padding, distance_bucket - geo I/O (4): load_geojson_polygons, load_boundary_gdf, add_basemap_osm, add_basemap_with_timeout - valhalla client (4): valhalla_route, valhalla_isochrone, valhalla_isochrones_async, valhalla_matrix_1_to_n - datascience stats (7): trimmed_mean, geometric_mean, detect_distribution_type, best_central_tendency, summary_stats, kde_density_levels, alpha_shape_concave_hull - datascience fuzzy (3): fuzzy_merge_adaptive (rapidfuzz), words_to_dataset, remove_words_from_column - datascience viz (2): plot_kde_2d, plot_heatmap_log - infra (4): compress_pdf_ghostscript, render_table_page_pdfpages, add_header_logo, osm2pgsql_ingest - pipelines (4): setup_geo_stack_docker, compute_centers_reachability, generate_isochrones_by_zone, count_points_per_zone - types geo (4): LonLat, BBox, IsochroneRequest, Centro Incluye: - apps/footprint_geo_stack/ (PostGIS + Martin + Valhalla via docker-compose) - 131/132 tests pasan (1 skip esperado: osm2pgsql en PATH) - Issue tracker dev/issues/0052-footprint-aurgi-extraction.md - Atribucion uniforme: source_repo internal:footprint_aurgi, source_license internal-aurgi - Build con 9 agentes en paralelo (8 wave 1 + 1 wave 2 pipelines) Tambien commitea trabajo previo no commiteado: aggregate_extraction_results, chunk_with_overlap, clean_pdf_text, merge_entity_aliases, extract_graph_gliner2, extract_relations_mrebel, extract_triples_spacy_es, gliner2/mrebel/marianmt/rebel/spacy_es load_model, parse_rebel_output, translate_es_to_en, issue 0050/0051. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -23,3 +23,24 @@ Sesion para verificar que las 5 apps C++ del registry usan programacion funciona
|
||||
- Pendiente: commit + push de los cambios (binary `fn` rebuilt no commiteado, .md y `registry/indexer.go` modificados).
|
||||
|
||||
Refs: ADR [0003](../adr/0003-orphan-tu-as-separate-function-entry.md), funciones `graph_labels_select_cpp_viz`, `graph_viewport_selection_cpp_viz`, `graph_types_cpp_viz`, apps `chart_demo_cpp_viz`, `shaders_lab_cpp_gfx`. Cambio en indexer: `registry/indexer.go` lineas ~87-122.
|
||||
|
||||
## 22:50 — Pipeline NER+RE para graph_explorer: 18 funciones nuevas + analysis + playground + vault
|
||||
|
||||
- Hecho: investigacion empirica completa de modelos NER/RE en `projects/osint_graph/analysis/gliner_glirel_tuning/`. **9 notebooks** ejecutados (01-09), cada uno con su `build_notebook_*.py` y, los pesados, su `run_*.py` que vuelca a JSON. Los notebooks viven listos para abrir desde Jupyter Lab (`localhost:8888`).
|
||||
- Hecho: dos rondas de `fn-constructor` el mismo dia. Ronda 1 (mañana): 8 funciones para mREBEL/REBEL/MarianMT (`parse_rebel_output`, `align_relations_to_entities`, `mrebel_load_model`, `mrebel_base_load_model`, `rebel_load_model`, `marianmt_es_en_load_model`, `translate_es_to_en`, `extract_relations_mrebel`). Ronda 2 (tarde): 10 funciones para GLiNER2 + OpenIE ES + composicion (`clean_pdf_text`, `chunk_with_overlap`, `merge_entity_aliases`, `filter_relations_by_entity_types`, `aggregate_extraction_results`, `gliner2_load_model`, `extract_graph_gliner2`, `spacy_es_load_model`, `extract_triples_spacy_es`, `extract_graph_from_text` pipeline). **Total registry: 980 → 990 funciones, 60 tests pytest verdes.**
|
||||
- Hecho: 3 ADRs cortos en `vaults/osint_nlp_models/decisions/` registrando la cadena de decisiones: mañana `mrebel-over-glirel.md`, tarde `gliner2-over-mrebel.md` (decision final), `license-constraint.md`. Vault con 5 fichas `.md` por modelo (gliner, glirel, mrebel, gliner2, candidates).
|
||||
- Hecho: PDF `politica_proteccion_datos.pdf` (BBVA, 89.882 chars) copiado a `~/vaults/osint_nlp_models/test_documents/` para reproducibilidad cross-PC. Procesado por todos los pipelines: GLiNER2 t=0.3+coref → 440 nodos / 166 aristas / 139s; NuExtract GPU → 80 nodos / 10 aristas / 361s.
|
||||
- Hecho: playground HTML en `projects/osint_graph/analysis/gliner_glirel_tuning/playground/`. FastAPI server con GLiNER2 cacheado, frontend Sigma.js con layout server-side via `networkx.spring_layout` (sin fisica frontend → sin loops ResizeObserver). Sirviendo en `localhost:7878` con chunking automatico, post-filter typed, coref, KPIs, JSON exportable.
|
||||
- Hecho: 4 issues nuevos: `dev/issues/0050-jupyter-exec-collab-client-failure.md` (bug + workaround), `dev/issues/0051-extraction-pipeline-followups.md` (5 funciones aun por construir), `graph_explorer/issues/0041-split-confidence-thresholds.md`, `graph_explorer/issues/0042-gliner2-unified-extractor.md`. Issue `0042-mrebel-relation-extractor.md.superseded` archivado al ganar GLiNER2.
|
||||
- Hecho: `cpp/CMakeLists.txt` patcheado (commit `e72d6364`) para que `_GE_DIR` y `_DASH_DIR` se sobreescriban via `-D...=<path>` — habilita `parallel-fix-issues` sobre apps C++ con worktrees.
|
||||
- Hecho: workaround compat `huggingface_hub` 1.x en `glirel_load_model.py` (commit `3b3378cf`) — classmethod monkey-patch idempotente para `_from_pretrained` con kwargs `proxies`/`resume_download`.
|
||||
- Hecho: dos issues del sub-repo `dataforge/graph_explorer` mergeados local en master con `--no-ff` (`issue/0035e-polish-and-tests` commit `f614a51`, `issue/0013-paste-extract-panel` commit `2a49c2b`). 125/125 tests pytest verdes.
|
||||
- Hecho: `CHANGELOG.md` actualizado con seccion completa NER+RE (funciones, analysis, vault, playground, issues, decisiones, bugs+fixes).
|
||||
- Hecho: `analysis.md` de `gliner_glirel_tuning` reescrito con tabla de 9 notebooks + stack final + decisiones del vault + comandos para reproducir.
|
||||
- Hecho: `app.md` de `graph_explorer` añade seccion "Pipeline NER+RE disponible en el registry" — el stack completo listo para cablear en `extract_graph_hybrid_py_pipelines` y panel `paste_extract`.
|
||||
- Pendiente: validacion Windows del binario `graph_explorer` con los merges de hoy (issues 0013 + 0035e).
|
||||
- Pendiente: push de los 3 commits no pusheados (`fn_registry` master commits e72d6364 + 3b3378cf, `dataforge/graph_explorer` master commits f614a51 + 2a49c2b).
|
||||
- Pendiente: **issue 0051** — 5 funciones aun por construir (NuExtract loader/extractor, `extract_graph_from_pdf` pipeline, `extract_triples_spacy_es_v2` con pasiva refleja+copulares+coref, fix kernel startup que sombrea pip packages, `extract_relations_rebel` EN-only). Brief listo en el issue para proxima ronda fn-constructor.
|
||||
- Pendiente: implementar issues 0041 + 0042 del `graph_explorer` (paralelizables con `/parallel-fix-issues`). El registry tiene **todas** las funciones necesarias.
|
||||
|
||||
Refs: notebooks `01-09_*.ipynb` en `projects/osint_graph/analysis/gliner_glirel_tuning/notebooks/`. Funciones nuevas en `python/functions/{core,datascience,pipelines}/`. Decisiones en `vaults/osint_nlp_models/decisions/`. Issues 0050, 0051 en `dev/issues/`. Issues 0041, 0042 en `projects/osint_graph/apps/graph_explorer/issues/`.
|
||||
|
||||
Reference in New Issue
Block a user