Files
odr_console/app.md
T
egutierrez 59af21f71c chore: auto-commit (2 archivos)
- app.md
- appicon.ico

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-19 00:31:34 +02:00

3.7 KiB

name, lang, domain, version, description, tags, uses_functions, uses_types, uses_modules, framework, entry_point, dir_path, repo_url, icon
name lang domain version description tags uses_functions uses_types uses_modules framework entry_point dir_path repo_url icon
odr_console cpp tools 0.1.0 Lanzador GUI de funciones del registry para recolectar datos online. Panel de busqueda FTS5, jobs queue async (workers concurrentes), pipeline builder DAG, browser DuckDB, assertions/proposals. Aplica bucle reactivo de 5 pasos sobre operations.db propia.
imgui
data-collection
scraping
duckdb
jobs
cdp
data_table_cpp
imgui main.cpp projects/online_data_recopilation/apps/odr_console
phosphor accent
terminal-window #52525b

Notas

App C++ ImGui que orquesta:

  1. Launcher panel — busqueda FTS5 sobre registry.db. Lanza cualquier funcion/pipeline con form auto-generado desde params_schema.
  2. Pipeline builder — DAG visual con imgui_node_editor. Compone collectors validando composabilidad (returnsuses_types). Persiste en operations.relations con status designed.
  3. Jobs queue — Pool de N workers (default 4). Cada job = subprocess Python collector. Live progress por panel (PROGRESS: en stderr). Reusa jobs_pool_cpp_core (extraido de osint_graph en issue 0065).
  4. Datasets browser — Panel DuckDB embebido. Query editor + tabla preview + ImPlot para charts. Lee parquet de vaults/odr_data/.
  5. Entities + assertions — Vista de operations.entities por dataset. Editor SQL para assertions. Boton "Eval --react" lanza paso 4 del bucle.
  6. Proposals inbox — Lista pending de registry.proposals originadas por assertions fallidas.

Estructura

odr_console/
  main.cpp                      # fn::run_app + render() + paneles
  views_launcher.cpp            # Panel 1
  views_pipelines.cpp           # Panel 2
  views_jobs.cpp                # Panel 3
  views_datasets.cpp            # Panel 4
  views_assertions.cpp          # Panel 5
  views_proposals.cpp           # Panel 6
  data_registry.cpp             # Lee registry.db (FTS5, funcs, types)
  data_operations.cpp           # CRUD operations.db (relations/executions/entities/assertions)
  data_duck.cpp                 # DuckDB connector + ingest
  collectors/                   # Mismo schema que enrichers de graph_explorer
    api_hn_top/                 # MVP: HackerNews top stories via API
      manifest.yaml
      run.py
  migrations/                   # operations.db migrations (esquema 5-pasos)
  CMakeLists.txt

Local files (regla cpp_apps §7)

  • local_files/odr_console.ini — settings persistidas
  • local_files/imgui.ini — layout
  • local_files/odr.duckdb — DuckDB embebido (datos crudos pequeños)
  • local_files/cache/<sha[0:2]>/<sha>.{html,json,parquet} — cache addressable
  • operations.db queda en el dir del exe (consultable por fn ops)

Decisiones tomadas

Tema Decision
Workers default 4 (mas que graph_explorer porque crawls esperan red)
operations.db Una unica por la app
DuckDB Embebido (linkar libduckdb), no subprocess
Collectors lang inicial Python (espejo graph_explorer enrichers)
Browser CDP via cdp-cli Go (issue 0038) cuando aplica

Decisiones pendientes

  • Refactor jobs system: en paralelo a MVP. Ver issue 0065.
  • Schema operations.db: requiere migracion 001 con relations/executions/entities/types_snapshot/assertions/assertion_results (ver fn_operations/migrations/).

Capability growth log

Una linea por bump SemVer. Bump-type segun .claude/commands/version.md:

  • major: breaking observable (CLI args, schema BBDD propia, formato wire).

  • minor: feature aditiva (nuevo panel, endpoint, opcion).

  • patch: bugfix sin cambio observable.

  • v0.1.0 (2026-05-18) — baseline.