docs(flows): DoD obligatorio con user-facing surface + abrir issues 0100-0103 (taxonomia, frontmatter migration, dev_console, work dashboard)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-17 00:07:04 +02:00
parent 6337d93491
commit 8c5152fca4
12 changed files with 765 additions and 170 deletions
+28 -19
View File
@@ -26,20 +26,23 @@ static std::string g_ws_path = "/api/ws/datafactory";
static std::vector<data_factory::Node> g_nodes;
static std::vector<data_factory::Run> g_runs_all;
static std::vector<data_factory::DatabaseInfo> g_databases;
static std::vector<data_factory::TableEntry> g_tables;
static WsClient g_ws;
static int g_ws_msg_count = 0;
static bool g_initial_fetched = false;
static bool g_refresh_pending = false;
// Panel toggles.
static bool g_show_map = true;
static bool g_show_extractors = true;
static bool g_show_transformers= true;
static bool g_show_databases = true;
static bool g_show_sinks = true;
static bool g_show_health = true;
static bool g_show_detail = true;
static bool g_show_live = false;
static bool g_show_map = true;
static bool g_show_extractors = true;
static bool g_show_transformers = true;
static bool g_show_databases = true;
static bool g_show_tables = true;
static bool g_show_sinks = true;
static bool g_show_health = true;
static bool g_show_detail = true;
static bool g_show_table_preview = true;
static bool g_show_live = false;
static void upsert_run(const data_factory::Run& r) {
for (auto& existing : g_runs_all) {
@@ -132,6 +135,7 @@ static void render() {
g_refresh_pending = false;
data_factory::list_nodes_http(g_api_url, "", g_nodes);
data_factory::list_databases_http(g_api_url, g_databases);
data_factory::list_tables_http(g_api_url, g_tables);
std::vector<data_factory::Run> tmp;
if (data_factory::list_runs_http(g_api_url, "", 200, tmp)) {
for (auto& r : tmp) upsert_run(r);
@@ -149,11 +153,14 @@ static void render() {
if (g_show_extractors) data_factory_ui::draw_extractors(g_api_url, g_nodes, g_runs_all);
if (g_show_transformers) data_factory_ui::draw_transformers(g_api_url, g_nodes, g_runs_all);
if (g_show_databases) data_factory_ui::draw_databases(g_api_url, g_databases);
if (g_show_tables) data_factory_ui::draw_tables(g_api_url, g_tables);
if (g_show_sinks) data_factory_ui::draw_sinks(g_api_url, g_nodes, g_runs_all);
if (g_show_health) data_factory_ui::draw_health(g_api_url, g_runs_all);
if (g_show_detail) data_factory_ui::draw_node_detail_panel(
g_api_url, g_nodes, g_runs_all, &g_show_detail);
if (g_show_live) draw_live();
if (g_show_detail) data_factory_ui::draw_node_detail_panel(
g_api_url, g_nodes, g_runs_all, &g_show_detail);
if (g_show_table_preview) data_factory_ui::draw_table_preview_panel(
g_api_url, &g_show_table_preview);
if (g_show_live) draw_live();
}
// Self-test: blocking HTTP GET to sqlite_api /api/datafactory/nodes. No GUI.
@@ -179,14 +186,16 @@ int main(int argc, char** argv) {
g_ws.start(g_ws_host, g_ws_port, g_ws_path);
static fn_ui::PanelToggle panels[] = {
{ "Map", nullptr, &g_show_map },
{ "Extractors", nullptr, &g_show_extractors },
{ "Transformers", nullptr, &g_show_transformers },
{ "Databases", nullptr, &g_show_databases },
{ "Sinks", nullptr, &g_show_sinks },
{ "Health", nullptr, &g_show_health },
{ "Node Detail", nullptr, &g_show_detail },
{ "Live (WS)", nullptr, &g_show_live },
{ "Map", nullptr, &g_show_map },
{ "Extractors", nullptr, &g_show_extractors },
{ "Transformers", nullptr, &g_show_transformers },
{ "Databases", nullptr, &g_show_databases },
{ "Tables", nullptr, &g_show_tables },
{ "Table Preview", nullptr, &g_show_table_preview },
{ "Sinks", nullptr, &g_show_sinks },
{ "Health", nullptr, &g_show_health },
{ "Node Detail", nullptr, &g_show_detail },
{ "Live (WS)", nullptr, &g_show_live },
};
fn::AppConfig cfg;