73 lines
2.5 KiB
Markdown
73 lines
2.5 KiB
Markdown
---
|
|
name: data_factory
|
|
lang: cpp
|
|
domain: tools
|
|
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: []
|
|
framework: "imgui"
|
|
entry_point: "main.cpp"
|
|
dir_path: "apps/data_factory"
|
|
repo_url: "https://gitea.organic-machine.com/dataforge/data_factory"
|
|
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)
|