feat(pipeline): deploy e2e_cems_industrial_emissions_flow from MERICA Canvas UI
This commit is contained in:
@@ -8,7 +8,7 @@ governance:
|
|||||||
tier: Tier.Tier1
|
tier: Tier.Tier1
|
||||||
certification: Certification.Gold
|
certification: Certification.Gold
|
||||||
tasks:
|
tasks:
|
||||||
- task_id: node-1975
|
- task_id: node-6716
|
||||||
type: source_db
|
type: source_db
|
||||||
label: Extract Master Emission Sources
|
label: Extract Master Emission Sources
|
||||||
enabled: true
|
enabled: true
|
||||||
@@ -19,12 +19,12 @@ tasks:
|
|||||||
table: public.ref_emission_sources
|
table: public.ref_emission_sources
|
||||||
table_name: public.ref_emission_sources
|
table_name: public.ref_emission_sources
|
||||||
target_type: minio_s3
|
target_type: minio_s3
|
||||||
- task_id: node-3042
|
- task_id: node-7780
|
||||||
type: duckdb_transform
|
type: duckdb_transform
|
||||||
label: DuckDB Master to Bronze Iceberg
|
label: DuckDB Master to Bronze Iceberg
|
||||||
enabled: true
|
enabled: true
|
||||||
dependencies:
|
dependencies:
|
||||||
- node-1975
|
- node-6716
|
||||||
config:
|
config:
|
||||||
layer: silver
|
layer: silver
|
||||||
source_parquet_path: s3://dlh-bronze/staging/ref_emission_sources/*.parquet
|
source_parquet_path: s3://dlh-bronze/staging/ref_emission_sources/*.parquet
|
||||||
@@ -47,7 +47,7 @@ tasks:
|
|||||||
region_zone, license_status, created_at FROM read_parquet('s3://dlh-bronze/staging/ref_emission_sources/*.parquet')
|
region_zone, license_status, created_at FROM read_parquet('s3://dlh-bronze/staging/ref_emission_sources/*.parquet')
|
||||||
QUALIFY ROW_NUMBER() OVER (PARTITION BY source_id ORDER BY created_at DESC)
|
QUALIFY ROW_NUMBER() OVER (PARTITION BY source_id ORDER BY created_at DESC)
|
||||||
= 1
|
= 1
|
||||||
- task_id: node-4059
|
- task_id: node-8779
|
||||||
type: source_db
|
type: source_db
|
||||||
label: Extract Raw CEMS Telemetry
|
label: Extract Raw CEMS Telemetry
|
||||||
enabled: true
|
enabled: true
|
||||||
@@ -58,12 +58,12 @@ tasks:
|
|||||||
table: public.raw_cems_telemetry_logs
|
table: public.raw_cems_telemetry_logs
|
||||||
table_name: public.raw_cems_telemetry_logs
|
table_name: public.raw_cems_telemetry_logs
|
||||||
target_type: minio_s3
|
target_type: minio_s3
|
||||||
- task_id: node-5075
|
- task_id: node-9796
|
||||||
type: ge_quality
|
type: ge_quality
|
||||||
label: GE Telemetry Staging Check
|
label: GE Telemetry Staging Check
|
||||||
enabled: true
|
enabled: true
|
||||||
dependencies:
|
dependencies:
|
||||||
- node-4059
|
- node-8779
|
||||||
config:
|
config:
|
||||||
ge_scope_level: all
|
ge_scope_level: all
|
||||||
ge_table_name: staging_cems_telemetry
|
ge_table_name: staging_cems_telemetry
|
||||||
@@ -75,43 +75,45 @@ tasks:
|
|||||||
ge_col_table: stasiun_spku
|
ge_col_table: stasiun_spku
|
||||||
ge_target_column: stasiun_id
|
ge_target_column: stasiun_id
|
||||||
ge_column_test_type: not_null
|
ge_column_test_type: not_null
|
||||||
sql_assertion: ''
|
sql_assertion: SELECT count(*) FROM silver.table WHERE status NOT IN ('APPROVED',
|
||||||
sql: ''
|
'IN_REVIEW', 'REJECTED')
|
||||||
|
sql: SELECT count(*) FROM silver.table WHERE status NOT IN ('APPROVED', 'IN_REVIEW',
|
||||||
|
'REJECTED')
|
||||||
expected: 0
|
expected: 0
|
||||||
error_message: Unexpected rows detected in table
|
error_message: Unexpected rows detected in table
|
||||||
suite: bronze
|
suite: bronze
|
||||||
fail: Stop DAG
|
fail: Stop DAG
|
||||||
- task_id: node-6110
|
- task_id: node-0811
|
||||||
type: duckdb_transform
|
type: duckdb_transform
|
||||||
label: DuckDB Telemetry to Bronze Iceberg
|
label: DuckDB Telemetry to Bronze Iceberg
|
||||||
enabled: true
|
enabled: true
|
||||||
dependencies:
|
dependencies:
|
||||||
- node-5075
|
- node-9796
|
||||||
config:
|
config:
|
||||||
layer: silver
|
layer: silver
|
||||||
source_parquet_path: s3://dlh-bronze/staging/raw_cems_telemetry/*.parquet
|
source_parquet_path: s3://dlh-bronze/staging/raw_cems_telemetry_logs/*.parquet
|
||||||
source_path: s3://dlh-bronze/staging/raw_cems_telemetry/*.parquet
|
source_path: s3://dlh-bronze/staging/raw_cems_telemetry_logs/*.parquet
|
||||||
target_table: bronze_cems_telemetry_logs
|
target_table: bronze_cems_telemetry_logs
|
||||||
table_name: bronze_cems_telemetry_logs
|
table_name: bronze_cems_telemetry_logs
|
||||||
primary_keys: log_id
|
primary_keys: log_id
|
||||||
query: SELECT log_id, source_id, telemetry_timestamp, so2_mg_nm3, nox_mg_nm3,
|
query: SELECT log_id, source_id, telemetry_timestamp, so2_mg_nm3, nox_mg_nm3,
|
||||||
pm_dust_mg_nm3, co_mg_nm3, flue_gas_flow_m3_s, flue_temp_celsius, sensor_status,
|
pm_dust_mg_nm3, co_mg_nm3, flue_gas_flow_m3_s, flue_temp_celsius, sensor_status,
|
||||||
created_at FROM read_parquet('s3://dlh-bronze/staging/raw_cems_telemetry/*.parquet')
|
created_at FROM read_parquet('s3://dlh-bronze/staging/raw_cems_telemetry_logs/*.parquet')
|
||||||
QUALIFY ROW_NUMBER() OVER (PARTITION BY log_id ORDER BY created_at DESC) = 1
|
QUALIFY ROW_NUMBER() OVER (PARTITION BY log_id ORDER BY created_at DESC) = 1
|
||||||
sql_query: SELECT log_id, source_id, telemetry_timestamp, so2_mg_nm3, nox_mg_nm3,
|
sql_query: SELECT log_id, source_id, telemetry_timestamp, so2_mg_nm3, nox_mg_nm3,
|
||||||
pm_dust_mg_nm3, co_mg_nm3, flue_gas_flow_m3_s, flue_temp_celsius, sensor_status,
|
pm_dust_mg_nm3, co_mg_nm3, flue_gas_flow_m3_s, flue_temp_celsius, sensor_status,
|
||||||
created_at FROM read_parquet('s3://dlh-bronze/staging/raw_cems_telemetry/*.parquet')
|
created_at FROM read_parquet('s3://dlh-bronze/staging/raw_cems_telemetry_logs/*.parquet')
|
||||||
QUALIFY ROW_NUMBER() OVER (PARTITION BY log_id ORDER BY created_at DESC) = 1
|
QUALIFY ROW_NUMBER() OVER (PARTITION BY log_id ORDER BY created_at DESC) = 1
|
||||||
transformation_sql: SELECT log_id, source_id, telemetry_timestamp, so2_mg_nm3,
|
transformation_sql: SELECT log_id, source_id, telemetry_timestamp, so2_mg_nm3,
|
||||||
nox_mg_nm3, pm_dust_mg_nm3, co_mg_nm3, flue_gas_flow_m3_s, flue_temp_celsius,
|
nox_mg_nm3, pm_dust_mg_nm3, co_mg_nm3, flue_gas_flow_m3_s, flue_temp_celsius,
|
||||||
sensor_status, created_at FROM read_parquet('s3://dlh-bronze/staging/raw_cems_telemetry/*.parquet')
|
sensor_status, created_at FROM read_parquet('s3://dlh-bronze/staging/raw_cems_telemetry_logs/*.parquet')
|
||||||
QUALIFY ROW_NUMBER() OVER (PARTITION BY log_id ORDER BY created_at DESC) = 1
|
QUALIFY ROW_NUMBER() OVER (PARTITION BY log_id ORDER BY created_at DESC) = 1
|
||||||
- task_id: node-7127
|
- task_id: node-1818
|
||||||
type: ge_quality
|
type: ge_quality
|
||||||
label: GE Telemetry Bronze Quality
|
label: GE Telemetry Bronze Quality
|
||||||
enabled: true
|
enabled: true
|
||||||
dependencies:
|
dependencies:
|
||||||
- node-6110
|
- node-0811
|
||||||
config:
|
config:
|
||||||
ge_scope_level: all
|
ge_scope_level: all
|
||||||
ge_table_name: bronze_cems_telemetry_logs
|
ge_table_name: bronze_cems_telemetry_logs
|
||||||
@@ -123,19 +125,21 @@ tasks:
|
|||||||
ge_col_table: stasiun_spku
|
ge_col_table: stasiun_spku
|
||||||
ge_target_column: stasiun_id
|
ge_target_column: stasiun_id
|
||||||
ge_column_test_type: not_null
|
ge_column_test_type: not_null
|
||||||
sql_assertion: ''
|
sql_assertion: SELECT count(*) FROM silver.table WHERE status NOT IN ('APPROVED',
|
||||||
sql: ''
|
'IN_REVIEW', 'REJECTED')
|
||||||
|
sql: SELECT count(*) FROM silver.table WHERE status NOT IN ('APPROVED', 'IN_REVIEW',
|
||||||
|
'REJECTED')
|
||||||
expected: 0
|
expected: 0
|
||||||
error_message: Unexpected rows detected in table
|
error_message: Unexpected rows detected in table
|
||||||
suite: bronze
|
suite: bronze
|
||||||
fail: Stop DAG
|
fail: Stop DAG
|
||||||
- task_id: node-8143
|
- task_id: node-2864
|
||||||
type: dbt_transform
|
type: dbt_transform
|
||||||
label: dbt Silver CEMS Enriched
|
label: dbt Silver CEMS Enriched
|
||||||
enabled: true
|
enabled: true
|
||||||
dependencies:
|
dependencies:
|
||||||
- node-3042
|
- node-7780
|
||||||
- node-7127
|
- node-1818
|
||||||
config:
|
config:
|
||||||
dbt_layer: silver
|
dbt_layer: silver
|
||||||
dbt_model: silver_cems_emission_enriched
|
dbt_model: silver_cems_emission_enriched
|
||||||
@@ -170,12 +174,12 @@ tasks:
|
|||||||
\ t.sensor_status\nFROM {{ ref('bronze_cems_telemetry_logs') }} t\nJOIN {{\
|
\ t.sensor_status\nFROM {{ ref('bronze_cems_telemetry_logs') }} t\nJOIN {{\
|
||||||
\ ref('bronze_ref_emission_sources') }} s\n ON t.source_id = s.source_id\n\
|
\ ref('bronze_ref_emission_sources') }} s\n ON t.source_id = s.source_id\n\
|
||||||
WHERE t.sensor_status = 'VALID'"
|
WHERE t.sensor_status = 'VALID'"
|
||||||
- task_id: node-9175
|
- task_id: node-3898
|
||||||
type: ge_quality
|
type: ge_quality
|
||||||
label: GE Silver Compliance Quality Gate
|
label: GE Silver Compliance Quality Gate
|
||||||
enabled: true
|
enabled: true
|
||||||
dependencies:
|
dependencies:
|
||||||
- node-8143
|
- node-2864
|
||||||
config:
|
config:
|
||||||
ge_scope_level: all
|
ge_scope_level: all
|
||||||
ge_table_name: silver_cems_emission_enriched
|
ge_table_name: silver_cems_emission_enriched
|
||||||
@@ -187,18 +191,20 @@ tasks:
|
|||||||
ge_col_table: stasiun_spku
|
ge_col_table: stasiun_spku
|
||||||
ge_target_column: stasiun_id
|
ge_target_column: stasiun_id
|
||||||
ge_column_test_type: not_null
|
ge_column_test_type: not_null
|
||||||
sql_assertion: ''
|
sql_assertion: SELECT count(*) FROM silver.table WHERE status NOT IN ('APPROVED',
|
||||||
sql: ''
|
'IN_REVIEW', 'REJECTED')
|
||||||
|
sql: SELECT count(*) FROM silver.table WHERE status NOT IN ('APPROVED', 'IN_REVIEW',
|
||||||
|
'REJECTED')
|
||||||
expected: 0
|
expected: 0
|
||||||
error_message: Unexpected rows detected in table
|
error_message: Unexpected rows detected in table
|
||||||
suite: bronze
|
suite: bronze
|
||||||
fail: Stop DAG
|
fail: Stop DAG
|
||||||
- task_id: node-0193
|
- task_id: node-5020
|
||||||
type: dbt_transform
|
type: dbt_transform
|
||||||
label: dbt Gold Industrial Compliance Mart
|
label: dbt Gold Industrial Compliance Mart
|
||||||
enabled: true
|
enabled: true
|
||||||
dependencies:
|
dependencies:
|
||||||
- node-9175
|
- node-3898
|
||||||
config:
|
config:
|
||||||
dbt_layer: gold
|
dbt_layer: gold
|
||||||
dbt_model: gold_industry_emission_compliance_mart
|
dbt_model: gold_industry_emission_compliance_mart
|
||||||
@@ -231,12 +237,12 @@ tasks:
|
|||||||
\ CURRENT_TIMESTAMP AS mart_refreshed_at\nFROM {{ ref('silver_cems_emission_enriched')\
|
\ CURRENT_TIMESTAMP AS mart_refreshed_at\nFROM {{ ref('silver_cems_emission_enriched')\
|
||||||
\ }}\nGROUP BY region_zone, industry_sector\nORDER BY total_violations_count\
|
\ }}\nGROUP BY region_zone, industry_sector\nORDER BY total_violations_count\
|
||||||
\ DESC, total_so2_emission_ton DESC"
|
\ DESC, total_so2_emission_ton DESC"
|
||||||
- task_id: node-1241
|
- task_id: node-6105
|
||||||
type: ge_quality
|
type: ge_quality
|
||||||
label: GE Gold Compliance Mart Gate
|
label: GE Gold Compliance Mart Gate
|
||||||
enabled: true
|
enabled: true
|
||||||
dependencies:
|
dependencies:
|
||||||
- node-0193
|
- node-5020
|
||||||
config:
|
config:
|
||||||
ge_scope_level: all
|
ge_scope_level: all
|
||||||
ge_table_name: gold_industry_emission_compliance_mart
|
ge_table_name: gold_industry_emission_compliance_mart
|
||||||
@@ -248,18 +254,20 @@ tasks:
|
|||||||
ge_col_table: stasiun_spku
|
ge_col_table: stasiun_spku
|
||||||
ge_target_column: stasiun_id
|
ge_target_column: stasiun_id
|
||||||
ge_column_test_type: not_null
|
ge_column_test_type: not_null
|
||||||
sql_assertion: ''
|
sql_assertion: SELECT count(*) FROM silver.table WHERE status NOT IN ('APPROVED',
|
||||||
sql: ''
|
'IN_REVIEW', 'REJECTED')
|
||||||
|
sql: SELECT count(*) FROM silver.table WHERE status NOT IN ('APPROVED', 'IN_REVIEW',
|
||||||
|
'REJECTED')
|
||||||
expected: 0
|
expected: 0
|
||||||
error_message: Unexpected rows detected in table
|
error_message: Unexpected rows detected in table
|
||||||
suite: bronze
|
suite: bronze
|
||||||
fail: Stop DAG
|
fail: Stop DAG
|
||||||
- task_id: node-2409
|
- task_id: node-7152
|
||||||
type: sitomat_callback
|
type: sitomat_callback
|
||||||
label: SITOMAT Governance Callback
|
label: SITOMAT Governance Callback
|
||||||
enabled: true
|
enabled: true
|
||||||
dependencies:
|
dependencies:
|
||||||
- node-1241
|
- node-6105
|
||||||
config:
|
config:
|
||||||
layer: gold
|
layer: gold
|
||||||
artifact_ref: lakehouse.gold.gold_industry_emission_compliance_mart
|
artifact_ref: lakehouse.gold.gold_industry_emission_compliance_mart
|
||||||
|
|||||||
@@ -0,0 +1,4 @@
|
|||||||
|
-- dbt Bronze View Model: raw_cems_telemetry_logs
|
||||||
|
{{ config(materialized='view') }}
|
||||||
|
|
||||||
|
SELECT * FROM {{ source('public', 'raw_cems_telemetry_logs') }}
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
-- dbt Bronze View Model: ref_emission_sources
|
||||||
|
{{ config(materialized='view') }}
|
||||||
|
|
||||||
|
SELECT * FROM {{ source('public', 'ref_emission_sources') }}
|
||||||
@@ -6,7 +6,7 @@
|
|||||||
"owner_name": "Administrator Lokal (Break-Glass)",
|
"owner_name": "Administrator Lokal (Break-Glass)",
|
||||||
"nodes": [
|
"nodes": [
|
||||||
{
|
{
|
||||||
"id": "node-1975",
|
"id": "node-6716",
|
||||||
"type": "customNode",
|
"type": "customNode",
|
||||||
"position": {
|
"position": {
|
||||||
"x": 80,
|
"x": 80,
|
||||||
@@ -32,7 +32,7 @@
|
|||||||
"dragging": false
|
"dragging": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "node-3042",
|
"id": "node-7780",
|
||||||
"type": "customNode",
|
"type": "customNode",
|
||||||
"position": {
|
"position": {
|
||||||
"x": 270,
|
"x": 270,
|
||||||
@@ -61,7 +61,7 @@
|
|||||||
"dragging": false
|
"dragging": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "node-4059",
|
"id": "node-8779",
|
||||||
"type": "customNode",
|
"type": "customNode",
|
||||||
"position": {
|
"position": {
|
||||||
"x": 460,
|
"x": 460,
|
||||||
@@ -87,7 +87,7 @@
|
|||||||
"dragging": false
|
"dragging": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "node-5075",
|
"id": "node-9796",
|
||||||
"type": "customNode",
|
"type": "customNode",
|
||||||
"position": {
|
"position": {
|
||||||
"x": 650,
|
"x": 650,
|
||||||
@@ -123,7 +123,7 @@
|
|||||||
"dragging": false
|
"dragging": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "node-6110",
|
"id": "node-0811",
|
||||||
"type": "customNode",
|
"type": "customNode",
|
||||||
"position": {
|
"position": {
|
||||||
"x": 840,
|
"x": 840,
|
||||||
@@ -136,14 +136,14 @@
|
|||||||
"configured": true,
|
"configured": true,
|
||||||
"config": {
|
"config": {
|
||||||
"layer": "silver",
|
"layer": "silver",
|
||||||
"source_parquet_path": "s3://dlh-bronze/staging/raw_cems_telemetry/*.parquet",
|
"source_parquet_path": "s3://dlh-bronze/staging/raw_cems_telemetry_logs/*.parquet",
|
||||||
"source_path": "s3://dlh-bronze/staging/raw_cems_telemetry/*.parquet",
|
"source_path": "s3://dlh-bronze/staging/raw_cems_telemetry_logs/*.parquet",
|
||||||
"target_table": "bronze_cems_telemetry_logs",
|
"target_table": "bronze_cems_telemetry_logs",
|
||||||
"table_name": "bronze_cems_telemetry_logs",
|
"table_name": "bronze_cems_telemetry_logs",
|
||||||
"primary_keys": "log_id",
|
"primary_keys": "log_id",
|
||||||
"query": "SELECT log_id, source_id, telemetry_timestamp, so2_mg_nm3, nox_mg_nm3, pm_dust_mg_nm3, co_mg_nm3, flue_gas_flow_m3_s, flue_temp_celsius, sensor_status, created_at FROM read_parquet('s3://dlh-bronze/staging/raw_cems_telemetry/*.parquet') QUALIFY ROW_NUMBER() OVER (PARTITION BY log_id ORDER BY created_at DESC) = 1",
|
"query": "SELECT log_id, source_id, telemetry_timestamp, so2_mg_nm3, nox_mg_nm3, pm_dust_mg_nm3, co_mg_nm3, flue_gas_flow_m3_s, flue_temp_celsius, sensor_status, created_at FROM read_parquet('s3://dlh-bronze/staging/raw_cems_telemetry_logs/*.parquet') QUALIFY ROW_NUMBER() OVER (PARTITION BY log_id ORDER BY created_at DESC) = 1",
|
||||||
"sql_query": "SELECT log_id, source_id, telemetry_timestamp, so2_mg_nm3, nox_mg_nm3, pm_dust_mg_nm3, co_mg_nm3, flue_gas_flow_m3_s, flue_temp_celsius, sensor_status, created_at FROM read_parquet('s3://dlh-bronze/staging/raw_cems_telemetry/*.parquet') QUALIFY ROW_NUMBER() OVER (PARTITION BY log_id ORDER BY created_at DESC) = 1",
|
"sql_query": "SELECT log_id, source_id, telemetry_timestamp, so2_mg_nm3, nox_mg_nm3, pm_dust_mg_nm3, co_mg_nm3, flue_gas_flow_m3_s, flue_temp_celsius, sensor_status, created_at FROM read_parquet('s3://dlh-bronze/staging/raw_cems_telemetry_logs/*.parquet') QUALIFY ROW_NUMBER() OVER (PARTITION BY log_id ORDER BY created_at DESC) = 1",
|
||||||
"transformation_sql": "SELECT log_id, source_id, telemetry_timestamp, so2_mg_nm3, nox_mg_nm3, pm_dust_mg_nm3, co_mg_nm3, flue_gas_flow_m3_s, flue_temp_celsius, sensor_status, created_at FROM read_parquet('s3://dlh-bronze/staging/raw_cems_telemetry/*.parquet') QUALIFY ROW_NUMBER() OVER (PARTITION BY log_id ORDER BY created_at DESC) = 1"
|
"transformation_sql": "SELECT log_id, source_id, telemetry_timestamp, so2_mg_nm3, nox_mg_nm3, pm_dust_mg_nm3, co_mg_nm3, flue_gas_flow_m3_s, flue_temp_celsius, sensor_status, created_at FROM read_parquet('s3://dlh-bronze/staging/raw_cems_telemetry_logs/*.parquet') QUALIFY ROW_NUMBER() OVER (PARTITION BY log_id ORDER BY created_at DESC) = 1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"width": 96,
|
"width": 96,
|
||||||
@@ -152,7 +152,7 @@
|
|||||||
"dragging": false
|
"dragging": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "node-7127",
|
"id": "node-1818",
|
||||||
"type": "customNode",
|
"type": "customNode",
|
||||||
"position": {
|
"position": {
|
||||||
"x": 1030,
|
"x": 1030,
|
||||||
@@ -188,7 +188,7 @@
|
|||||||
"dragging": false
|
"dragging": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "node-8143",
|
"id": "node-2864",
|
||||||
"type": "customNode",
|
"type": "customNode",
|
||||||
"position": {
|
"position": {
|
||||||
"x": 1220,
|
"x": 1220,
|
||||||
@@ -215,7 +215,7 @@
|
|||||||
"dragging": false
|
"dragging": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "node-9175",
|
"id": "node-3898",
|
||||||
"type": "customNode",
|
"type": "customNode",
|
||||||
"position": {
|
"position": {
|
||||||
"x": 1410,
|
"x": 1410,
|
||||||
@@ -251,7 +251,7 @@
|
|||||||
"dragging": false
|
"dragging": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "node-0193",
|
"id": "node-5020",
|
||||||
"type": "customNode",
|
"type": "customNode",
|
||||||
"position": {
|
"position": {
|
||||||
"x": 1600,
|
"x": 1600,
|
||||||
@@ -278,7 +278,7 @@
|
|||||||
"dragging": false
|
"dragging": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "node-1241",
|
"id": "node-6105",
|
||||||
"type": "customNode",
|
"type": "customNode",
|
||||||
"position": {
|
"position": {
|
||||||
"x": 1790,
|
"x": 1790,
|
||||||
@@ -314,7 +314,7 @@
|
|||||||
"dragging": false
|
"dragging": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "node-2409",
|
"id": "node-7152",
|
||||||
"type": "customNode",
|
"type": "customNode",
|
||||||
"position": {
|
"position": {
|
||||||
"x": 1980,
|
"x": 1980,
|
||||||
@@ -344,9 +344,9 @@
|
|||||||
],
|
],
|
||||||
"edges": [
|
"edges": [
|
||||||
{
|
{
|
||||||
"source": "node-1975",
|
"source": "node-6716",
|
||||||
"sourceHandle": null,
|
"sourceHandle": null,
|
||||||
"target": "node-3042",
|
"target": "node-7780",
|
||||||
"targetHandle": null,
|
"targetHandle": null,
|
||||||
"type": "removableEdge",
|
"type": "removableEdge",
|
||||||
"style": {
|
"style": {
|
||||||
@@ -354,12 +354,12 @@
|
|||||||
"strokeWidth": 2
|
"strokeWidth": 2
|
||||||
},
|
},
|
||||||
"data": {},
|
"data": {},
|
||||||
"id": "reactflow__edge-node-1975-node-3042"
|
"id": "reactflow__edge-node-6716-node-7780"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"source": "node-3042",
|
"source": "node-7780",
|
||||||
"sourceHandle": null,
|
"sourceHandle": null,
|
||||||
"target": "node-8143",
|
"target": "node-2864",
|
||||||
"targetHandle": null,
|
"targetHandle": null,
|
||||||
"type": "removableEdge",
|
"type": "removableEdge",
|
||||||
"style": {
|
"style": {
|
||||||
@@ -367,12 +367,12 @@
|
|||||||
"strokeWidth": 2
|
"strokeWidth": 2
|
||||||
},
|
},
|
||||||
"data": {},
|
"data": {},
|
||||||
"id": "reactflow__edge-node-3042-node-8143"
|
"id": "reactflow__edge-node-7780-node-2864"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"source": "node-4059",
|
"source": "node-8779",
|
||||||
"sourceHandle": null,
|
"sourceHandle": null,
|
||||||
"target": "node-5075",
|
"target": "node-9796",
|
||||||
"targetHandle": null,
|
"targetHandle": null,
|
||||||
"type": "removableEdge",
|
"type": "removableEdge",
|
||||||
"style": {
|
"style": {
|
||||||
@@ -380,12 +380,12 @@
|
|||||||
"strokeWidth": 2
|
"strokeWidth": 2
|
||||||
},
|
},
|
||||||
"data": {},
|
"data": {},
|
||||||
"id": "reactflow__edge-node-4059-node-5075"
|
"id": "reactflow__edge-node-8779-node-9796"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"source": "node-5075",
|
"source": "node-9796",
|
||||||
"sourceHandle": null,
|
"sourceHandle": null,
|
||||||
"target": "node-6110",
|
"target": "node-0811",
|
||||||
"targetHandle": null,
|
"targetHandle": null,
|
||||||
"type": "removableEdge",
|
"type": "removableEdge",
|
||||||
"style": {
|
"style": {
|
||||||
@@ -393,12 +393,12 @@
|
|||||||
"strokeWidth": 2
|
"strokeWidth": 2
|
||||||
},
|
},
|
||||||
"data": {},
|
"data": {},
|
||||||
"id": "reactflow__edge-node-5075-node-6110"
|
"id": "reactflow__edge-node-9796-node-0811"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"source": "node-6110",
|
"source": "node-0811",
|
||||||
"sourceHandle": null,
|
"sourceHandle": null,
|
||||||
"target": "node-7127",
|
"target": "node-1818",
|
||||||
"targetHandle": null,
|
"targetHandle": null,
|
||||||
"type": "removableEdge",
|
"type": "removableEdge",
|
||||||
"style": {
|
"style": {
|
||||||
@@ -406,12 +406,12 @@
|
|||||||
"strokeWidth": 2
|
"strokeWidth": 2
|
||||||
},
|
},
|
||||||
"data": {},
|
"data": {},
|
||||||
"id": "reactflow__edge-node-6110-node-7127"
|
"id": "reactflow__edge-node-0811-node-1818"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"source": "node-7127",
|
"source": "node-1818",
|
||||||
"sourceHandle": null,
|
"sourceHandle": null,
|
||||||
"target": "node-8143",
|
"target": "node-2864",
|
||||||
"targetHandle": null,
|
"targetHandle": null,
|
||||||
"type": "removableEdge",
|
"type": "removableEdge",
|
||||||
"style": {
|
"style": {
|
||||||
@@ -419,12 +419,12 @@
|
|||||||
"strokeWidth": 2
|
"strokeWidth": 2
|
||||||
},
|
},
|
||||||
"data": {},
|
"data": {},
|
||||||
"id": "reactflow__edge-node-7127-node-8143"
|
"id": "reactflow__edge-node-1818-node-2864"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"source": "node-8143",
|
"source": "node-2864",
|
||||||
"sourceHandle": null,
|
"sourceHandle": null,
|
||||||
"target": "node-9175",
|
"target": "node-3898",
|
||||||
"targetHandle": null,
|
"targetHandle": null,
|
||||||
"type": "removableEdge",
|
"type": "removableEdge",
|
||||||
"style": {
|
"style": {
|
||||||
@@ -432,12 +432,12 @@
|
|||||||
"strokeWidth": 2
|
"strokeWidth": 2
|
||||||
},
|
},
|
||||||
"data": {},
|
"data": {},
|
||||||
"id": "reactflow__edge-node-8143-node-9175"
|
"id": "reactflow__edge-node-2864-node-3898"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"source": "node-9175",
|
"source": "node-3898",
|
||||||
"sourceHandle": null,
|
"sourceHandle": null,
|
||||||
"target": "node-0193",
|
"target": "node-5020",
|
||||||
"targetHandle": null,
|
"targetHandle": null,
|
||||||
"type": "removableEdge",
|
"type": "removableEdge",
|
||||||
"style": {
|
"style": {
|
||||||
@@ -445,12 +445,12 @@
|
|||||||
"strokeWidth": 2
|
"strokeWidth": 2
|
||||||
},
|
},
|
||||||
"data": {},
|
"data": {},
|
||||||
"id": "reactflow__edge-node-9175-node-0193"
|
"id": "reactflow__edge-node-3898-node-5020"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"source": "node-0193",
|
"source": "node-5020",
|
||||||
"sourceHandle": null,
|
"sourceHandle": null,
|
||||||
"target": "node-1241",
|
"target": "node-6105",
|
||||||
"targetHandle": null,
|
"targetHandle": null,
|
||||||
"type": "removableEdge",
|
"type": "removableEdge",
|
||||||
"style": {
|
"style": {
|
||||||
@@ -458,12 +458,12 @@
|
|||||||
"strokeWidth": 2
|
"strokeWidth": 2
|
||||||
},
|
},
|
||||||
"data": {},
|
"data": {},
|
||||||
"id": "reactflow__edge-node-0193-node-1241"
|
"id": "reactflow__edge-node-5020-node-6105"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"source": "node-1241",
|
"source": "node-6105",
|
||||||
"sourceHandle": null,
|
"sourceHandle": null,
|
||||||
"target": "node-2409",
|
"target": "node-7152",
|
||||||
"targetHandle": null,
|
"targetHandle": null,
|
||||||
"type": "removableEdge",
|
"type": "removableEdge",
|
||||||
"style": {
|
"style": {
|
||||||
@@ -471,11 +471,11 @@
|
|||||||
"strokeWidth": 2
|
"strokeWidth": 2
|
||||||
},
|
},
|
||||||
"data": {},
|
"data": {},
|
||||||
"id": "reactflow__edge-node-1241-node-2409"
|
"id": "reactflow__edge-node-6105-node-7152"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"notes": [],
|
"notes": [],
|
||||||
"is_draft": false,
|
"is_draft": false,
|
||||||
"status": "deployed",
|
"status": "deployed",
|
||||||
"updated_at": "2026-10-18T20:38:50.813467Z"
|
"updated_at": "2026-10-18T21:03:55.984345Z"
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user