--- name: data_factory lang: cpp domain: tools version: 0.1.0 description: "Factorio-style data pipeline factory: extractors, transformers, databases, sinks. Live updates via WS pubsub." tags: [imgui, dashboard, data-pipeline, factory, http, websocket] uses_functions: - empty_state_cpp_core - badge_cpp_core uses_types: [] uses_modules: [data_table_cpp] framework: "imgui" entry_point: "main.cpp" dir_path: "apps/data_factory" repo_url: "https://gitea.organic-machine.com/dataforge/data_factory" icon: phosphor: "factory" accent: "#f97316" e2e_checks: - id: build_cmake cmd: "cmake --build cpp/build -j --target data_factory" timeout_s: 300 severity: critical - id: binary_exists cmd: "test -x cpp/build/linux/apps/data_factory/data_factory || test -x cpp/build/apps/data_factory/data_factory" timeout_s: 5 severity: critical - id: self_test cmd: "(cpp/build/linux/apps/data_factory/data_factory --self-test 2>&1 || cpp/build/apps/data_factory/data_factory --self-test 2>&1) | head -20" timeout_s: 10 expect_stdout_contains: "self-test" severity: warning - id: cpp_apps_conformance cmd: "./fn doctor cpp-apps 2>&1 | grep -A1 data_factory || echo 'no issues'" expect_stdout_contains: "no issues" severity: critical --- # data_factory Factorio-style data pipeline factory: extractors, transformers, databases, sinks. Live updates via WS pubsub. ## Build ```bash cd cpp && cmake --build build --target data_factory -j ``` ## Run ```bash ./cpp/build/data_factory ``` ## Paneles | Panel | Que muestra | |---|---| | Map | Arbol plano agrupado por kind (extractor/transformer/database/sink/validator). Placeholder de futuro grafo. | | Extractors | Tabla kind=extractor: Name / Function / Schedule / Last Run / Status / Rows-KB. | | Transformers | Tabla kind=transformer: Name / Function / Last Run / Status / Rows-KB. | | Databases | Tabla de DBs registradas: Label / Kind / URI / Tables / Size / Last Seen. | | Sinks | Tabla kind=sink: Name / Function / Last Run / Status / Rows-KB. | | Health | KPIs: runs_24h / success_rate / failed_24h+pending / throughput rows-KB 24h. | | Node Detail | Panel lateral con node seleccionado: metadata + FnInfo card + ultimas 10 runs. | | Live (WS) | Diag de conexion WS al /api/ws/datafactory de sqlite_api. | ## Backend Apunta a `http://127.0.0.1:8484` (sqlite_api). Endpoints consumidos: - `GET /api/datafactory/nodes?kind=...` - `GET /api/datafactory/runs?node_id=...&limit=N` - `GET /api/datafactory/databases` - `GET /api/functions/{id}` (registry metadata para FnInfo) - `GET /api/ws/datafactory` (snapshot + delta runs cada 250ms) ## 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.