{"runId":"e225f188-8ed9-4a2e-98c4-d51e9b1c618a","draftId":"19dc249c-a01a-4141-ae6d-628a0d2c4fca","model":"gemini-3.6-flash","at":"2026-10-12T05:15:22.393Z","stage":"read","reader":{"endpointId":"6fed2db7-f32a-47e7-903e-861dbc20456d","model":"gemini-3.6-flash","promptVersion":"image-read/v7","preprocessVersion":"full-2576-png/detail-1600-png/v1+image-pipeline/v1","requests":3,"repaired":false,"detailCrops":9},"log":[{"kind":"full","outcome":"ok","in":4641,"out":13350},{"kind":"detail","outcome":"ok","in":9099,"out":4926},{"kind":"detail","outcome":"ok","in":5773,"out":1897}],"crops":[{"cropId":"c1","rect":{"x":2433.6,"y":768.6,"w":1166.4,"h":1031.4},"targets":["b_table_device"],"reasons":["조밀 table"]},{"cropId":"c2","rect":{"x":1490.328,"y":111.52799999999998,"w":1101.7439999999997,"h":819.144},"targets":["b_heatmap"],"reasons":["조밀 heatmap"]},{"cropId":"c3","rect":{"x":1486.872,"y":772.272,"w":1108.6559999999997,"h":1027.728},"targets":["b_table_membership","b_donut_membership"],"reasons":["조밀 table"]},{"cropId":"c4","rect":{"x":0,"y":771.192,"w":1603.0079999999998,"h":1028.808},"targets":["b_bar_region","b_map"],"reasons":["다중 플롯 논리 블록"]},{"cropId":"c5","rect":{"x":2499.264,"y":116.06399999999998,"w":1100.7359999999999,"h":772.272},"targets":["b_bar_age","b_donut_gender"],"reasons":["다중 플롯 논리 블록"]},{"cropId":"c6","rect":{"x":40.176,"y":144.57599999999996,"w":477.6480000000001,"h":729.6480000000001},"targets":["b_donut1"],"reasons":["도넛 요소 분리"]},{"cropId":"c7","rect":{"x":499.392,"y":150.19199999999998,"w":419.61599999999993,"h":682.4159999999999},"targets":["kpi_2","kpi_1"],"reasons":["KPI","KPI"]},{"cropId":"c8","rect":{"x":1229.76,"y":160.55999999999997,"w":312.48,"h":652.6800000000001},"targets":["kpi_privacy","kpi_kakao"],"reasons":["KPI","KPI"]},{"cropId":"c9","rect":{"x":942.6240000000001,"y":161.42399999999998,"w":303.552,"h":650.952},"targets":["kpi_mkt","kpi_device"],"reasons":["KPI","KPI"]}],"raw":{"full":"{\n  \"is_dashboard\": \"yes\",\n  \"dashboard_box\": [\n    0,\n    0,\n    1000,\n    1000\n  ],\n  \"theme\": \"light\",\n  \"nodes\": [\n    {\n      \"id\": \"title_main\",\n      \"parent\": null,\n      \"role\": \"title\",\n      \"kind\": \"text\",\n      \"box_2d\": [\n        16,\n        15,\n        69,\n        233\n      ],\n      \"surface\": \"none\",\n      \"title\": \"Online - 회원 Report\",\n      \"confidence\": \"high\"\n    },\n    {\n      \"id\": \"filter_date\",\n      \"parent\": null,\n      \"role\": \"filter\",\n      \"kind\": \"filter_date\",\n      \"box_2d\": [\n        26,\n        915,\n        62,\n        977\n      ],\n      \"surface\": \"none\",\n      \"title\": \"조회 날짜\",\n      \"texts\": [\n        \"조회 날짜\",\n        \"2026-07-15\"\n      ],\n      \"confidence\": \"high\"\n    },\n    {\n      \"id\": \"surf_1\",\n      \"parent\": null,\n      \"role\": \"surface\",\n      \"kind\": \"none\",\n      \"box_2d\": [\n        106,\n        6,\n        473,\n        250\n      ],\n      \"surface\": \"card\",\n      \"title\": \"가입 회원 (DI값 보유)\",\n      \"composition\": \"independent\",\n      \"confidence\": \"high\"\n    },\n    {\n      \"id\": \"b_donut1\",\n      \"parent\": \"surf_1\",\n      \"role\": \"block\",\n      \"kind\": \"donut\",\n      \"box_2d\": [\n        195,\n        24,\n        460,\n        131\n      ],\n      \"surface\": \"none\",\n      \"center_text\": \"가입 회원 · 12,904\",\n      \"texts\": [\n        \"68.49%\",\n        \"31.51%\",\n        \"가입 회원\",\n        \"12,904\",\n        \"활성 회원\",\n        \"이탈 회원\"\n      ],\n      \"categories\": [\n        \"활성 회원\",\n        \"이탈 회원\"\n      ],\n      \"legend\": [\n        {\n          \"label\": \"활성 회원\",\n          \"box_2d\": [\n            444,\n            28,\n            452,\n            36\n          ]\n        },\n        {\n          \"label\": \"이탈 회원\",\n          \"box_2d\": [\n            444,\n            83,\n            452,\n            91\n          ]\n        }\n      ],\n      \"presence\": {\n        \"axis_x_labels\": \"none\",\n        \"axis_x_title\": \"none\",\n        \"axis_y_labels\": \"none\",\n        \"axis_y_title\": \"none\",\n        \"legend\": \"shown\",\n        \"legend_title\": \"none\",\n        \"rank_numbers\": \"na\"\n      },\n      \"confidence\": \"high\"\n    },\n    {\n      \"id\": \"kpi_1\",\n      \"parent\": \"surf_1\",\n      \"role\": \"block\",\n      \"kind\": \"kpi\",\n      \"box_2d\": [\n        173,\n        150,\n        273,\n        240\n      ],\n      \"surface\": \"none\",\n      \"title\": \"활성 회원 (최근 1년 내 로그인)\",\n      \"kpi\": {\n        \"value\": \"8,838\",\n        \"label_position\": \"above\"\n      },\n      \"presence\": {\n        \"axis_x_labels\": \"na\",\n        \"axis_x_title\": \"na\",\n        \"axis_y_labels\": \"na\",\n        \"axis_y_title\": \"na\",\n        \"legend\": \"na\",\n        \"legend_title\": \"na\",\n        \"rank_numbers\": \"na\"\n      },\n      \"confidence\": \"high\"\n    },\n    {\n      \"id\": \"kpi_2\",\n      \"parent\": \"surf_1\",\n      \"role\": \"block\",\n      \"kind\": \"kpi\",\n      \"box_2d\": [\n        319,\n        150,\n        440,\n        244\n      ],\n      \"surface\": \"none\",\n      \"title\": \"이탈 회원 (최근 1년 내 미로그인)\",\n      \"kpi\": {\n        \"value\": \"4,066\",\n        \"label_position\": \"above\"\n      },\n      \"presence\": {\n        \"axis_x_labels\": \"na\",\n        \"axis_x_title\": \"na\",\n        \"axis_y_labels\": \"na\",\n        \"axis_y_title\": \"na\",\n        \"legend\": \"na\",\n        \"legend_title\": \"na\",\n        \"rank_numbers\": \"na\"\n      },\n      \"confidence\": \"high\"\n    },\n    {\n      \"id\": \"surf_2\",\n      \"parent\": null,\n      \"role\": \"surface\",\n      \"kind\": \"none\",\n      \"box_2d\": [\n        106,\n        258,\n        473,\n        428\n      ],\n      \"surface\": \"card\",\n      \"title\": \"연동 · 수신 현황\",\n      \"composition\": \"independent\",\n      \"confidence\": \"high\"\n    },\n    {\n      \"id\": \"kpi_device\",\n      \"parent\": \"surf_2\",\n      \"role\": \"block\",\n      \"kind\": \"kpi\",\n      \"box_2d\": [\n        168,\n        270,\n        275,\n        338\n      ],\n      \"surface\": \"none\",\n      \"title\": \"기기 등록\",\n      \"kpi\": {\n        \"value\": \"53.03%\",\n        \"delta\": \"(6,843)\",\n        \"label_position\": \"above\"\n      },\n      \"presence\": {\n        \"axis_x_labels\": \"na\",\n        \"axis_x_title\": \"na\",\n        \"axis_y_labels\": \"na\",\n        \"axis_y_title\": \"na\",\n        \"legend\": \"na\",\n        \"legend_title\": \"na\",\n        \"rank_numbers\": \"na\"\n      },\n      \"confidence\": \"high\"\n    },\n    {\n      \"id\": \"kpi_kakao\",\n      \"parent\": \"surf_2\",\n      \"role\": \"block\",\n      \"kind\": \"kpi\",\n      \"box_2d\": [\n        168,\n        350,\n        275,\n        420\n      ],\n      \"surface\": \"none\",\n      \"title\": \"카카오톡 연동\",\n      \"kpi\": {\n        \"value\": \"63.34%\",\n        \"delta\": \"(8,174)\",\n        \"label_position\": \"above\"\n      },\n      \"presence\": {\n        \"axis_x_labels\": \"na\",\n        \"axis_x_title\": \"na\",\n        \"axis_y_labels\": \"na\",\n        \"axis_y_title\": \"na\",\n        \"legend\": \"na\",\n        \"legend_title\": \"na\",\n        \"rank_numbers\": \"na\"\n      },\n      \"confidence\": \"high\"\n    },\n    {\n      \"id\": \"kpi_mkt\",\n      \"parent\": \"surf_2\",\n      \"role\": \"block\",\n      \"kind\": \"kpi\",\n      \"box_2d\": [\n        319,\n        270,\n        435,\n        338\n      ],\n      \"surface\": \"none\",\n      \"title\": \"마케팅 수신\",\n      \"kpi\": {\n        \"value\": \"68.27%\",\n        \"delta\": \"(8,810)\",\n        \"label_position\": \"above\"\n      },\n      \"presence\": {\n        \"axis_x_labels\": \"na\",\n        \"axis_x_title\": \"na\",\n        \"axis_y_labels\": \"na\",\n        \"axis_y_title\": \"na\",\n        \"legend\": \"na\",\n        \"legend_title\": \"na\",\n        \"rank_numbers\": \"na\"\n      },\n      \"confidence\": \"high\"\n    },\n    {\n      \"id\": \"kpi_privacy\",\n      \"parent\": \"surf_2\",\n      \"role\": \"block\",\n      \"kind\": \"kpi\",\n      \"box_2d\": [\n        319,\n        350,\n        435,\n        420\n      ],\n      \"surface\": \"none\",\n      \"title\": \"개인정보 이용\",\n      \"kpi\": {\n        \"value\": \"69.28%\",\n        \"delta\": \"(8,940)\",\n        \"label_position\": \"above\"\n      },\n      \"presence\": {\n        \"axis_x_labels\": \"na\",\n        \"axis_x_title\": \"na\",\n        \"axis_y_labels\": \"na\",\n        \"axis_y_title\": \"na\",\n        \"legend\": \"na\",\n        \"legend_title\": \"na\",\n        \"rank_numbers\": \"na\"\n      },\n      \"confidence\": \"high\"\n    },\n    {\n      \"id\": \"b_heatmap\",\n      \"parent\": null,\n      \"role\": \"block\",\n      \"kind\": \"heatmap\",\n      \"box_2d\": [\n        106,\n        436,\n        473,\n        698\n      ],\n      \"surface\": \"card\",\n      \"title\": \"멤버십 & 성별 Segment\",\n      \"subtitle\": \"항목 클릭 시, 해당 '멤버십' 및 '연령'으로 필터링됨.\",\n      \"categories\": [\n        \"20대\",\n        \"30대\",\n        \"40대\",\n        \"50대 이상\"\n      ],\n      \"series\": [\n        \"프라임\",\n        \"플러스\",\n        \"베이직\",\n        \"일반\"\n      ],\n      \"axes\": {\n        \"x\": {\n          \"labels\": true,\n          \"title\": true,\n          \"title_text\": \"연령\"\n        },\n        \"y\": {\n          \"labels\": true,\n          \"title\": true,\n          \"title_text\": \"경험 레벨\"\n        }\n      },\n      \"presence\": {\n        \"axis_x_labels\": \"shown\",\n        \"axis_x_title\": \"shown\",\n        \"axis_y_labels\": \"shown\",\n        \"axis_y_title\": \"shown\",\n        \"legend\": \"none\",\n        \"legend_title\": \"none\",\n        \"rank_numbers\": \"na\"\n      },\n      \"confidence\": \"high\"\n    },\n    {\n      \"id\": \"surf_4\",\n      \"parent\": null,\n      \"role\": \"surface\",\n      \"kind\": \"none\",\n      \"box_2d\": [\n        106,\n        706,\n        473,\n        994\n      ],\n      \"surface\": \"card\",\n      \"title\": \"가입 회원별 성별 및 연령대\",\n      \"subtitle\": \"성별 및 연령대 선택 시, 해당 데이터로 필터링됨.\",\n      \"composition\": \"composite\",\n      \"confidence\": \"high\"\n    },\n    {\n      \"id\": \"b_donut_gender\",\n      \"parent\": \"surf_4\",\n      \"role\": \"block\",\n      \"kind\": \"donut\",\n      \"box_2d\": [\n        175,\n        715,\n        452,\n        815\n      ],\n      \"surface\": \"none\",\n      \"texts\": [\n        \"70.87%\",\n        \"29.13%\",\n        \"남성\",\n        \"여성\"\n      ],\n      \"categories\": [\n        \"남성\",\n        \"여성\"\n      ],\n      \"legend\": [\n        {\n          \"label\": \"남성\",\n          \"box_2d\": [\n            444,\n            755,\n            452,\n            763\n          ]\n        },\n        {\n          \"label\": \"여성\",\n          \"box_2d\": [\n            444,\n            792,\n            452,\n            800\n          ]\n        }\n      ],\n      \"presence\": {\n        \"axis_x_labels\": \"none\",\n        \"axis_x_title\": \"none\",\n        \"axis_y_labels\": \"none\",\n        \"axis_y_title\": \"none\",\n        \"legend\": \"shown\",\n        \"legend_title\": \"none\",\n        \"rank_numbers\": \"na\"\n      },\n      \"confidence\": \"high\"\n    },\n    {\n      \"id\": \"b_bar_age\",\n      \"parent\": \"surf_4\",\n      \"role\": \"block\",\n      \"kind\": \"bar\",\n      \"box_2d\": [\n        175,\n        816,\n        452,\n        984\n      ],\n      \"surface\": \"none\",\n      \"orientation\": \"vertical\",\n      \"stacked\": true,\n      \"categories\": [\n        \"20대\",\n        \"30대\",\n        \"40대\",\n        \"50대 이상\"\n      ],\n      \"series\": [\n        \"남성\",\n        \"여성\"\n      ],\n      \"axes\": {\n        \"x\": {\n          \"labels\": true,\n          \"title\": false\n        },\n        \"y\": {\n          \"labels\": false,\n          \"title\": false\n        }\n      },\n      \"presence\": {\n        \"axis_x_labels\": \"shown\",\n        \"axis_x_title\": \"none\",\n        \"axis_y_labels\": \"none\",\n        \"axis_y_title\": \"none\",\n        \"legend\": \"none\",\n        \"legend_title\": \"none\",\n        \"rank_numbers\": \"none\"\n      },\n      \"confidence\": \"high\"\n    },\n    {\n      \"id\": \"surf_5\",\n      \"parent\": null,\n      \"role\": \"surface\",\n      \"kind\": \"none\",\n      \"box_2d\": [\n        487,\n        6,\n        987,\n        428\n      ],\n      \"surface\": \"card\",\n      \"title\": \"지역별 가입 회원 현황\",\n      \"subtitle\": \"지역 선택 시, 해당 데이터로 필터링됨.\",\n      \"composition\": \"composite\",\n      \"confidence\": \"high\"\n    },\n    {\n      \"id\": \"b_map\",\n      \"parent\": \"surf_5\",\n      \"role\": \"block\",\n      \"kind\": \"map\",\n      \"box_2d\": [\n        575,\n        14,\n        960,\n        203\n      ],\n      \"surface\": \"none\",\n      \"presence\": {\n        \"axis_x_labels\": \"none\",\n        \"axis_x_title\": \"none\",\n        \"axis_y_labels\": \"none\",\n        \"axis_y_title\": \"none\",\n        \"legend\": \"none\",\n        \"legend_title\": \"none\",\n        \"rank_numbers\": \"na\"\n      },\n      \"confidence\": \"high\"\n    },\n    {\n      \"id\": \"b_bar_region\",\n      \"parent\": \"surf_5\",\n      \"role\": \"block\",\n      \"kind\": \"bar\",\n      \"box_2d\": [\n        574,\n        218,\n        975,\n        416\n      ],\n      \"surface\": \"none\",\n      \"orientation\": \"horizontal\",\n      \"stacked\": true,\n      \"rank_numbers\": \"present\",\n      \"rank_start\": 1,\n      \"categories\": [\n        \"서울시\",\n        \"경기도\",\n        \"부산시\",\n        \"대구시\",\n        \"경상남도\",\n        \"인천시\",\n        \"세종시\",\n        \"충청북도\",\n        \"경상북도\",\n        \"울산시\",\n        \"전라남도\"\n      ],\n      \"series\": [\n        \"활성 회원\",\n        \"이탈 회원\"\n      ],\n      \"legend\": [\n        {\n          \"label\": \"활성 회원\",\n          \"box_2d\": [\n            515,\n            331,\n            523,\n            339\n          ]\n        },\n        {\n          \"label\": \"이탈 회원\",\n          \"box_2d\": [\n            515,\n            379,\n            523,\n            387\n          ]\n        }\n      ],\n      \"axes\": {\n        \"x\": {\n          \"labels\": false,\n          \"title\": false\n        },\n        \"y\": {\n          \"labels\": true,\n          \"title\": false\n        }\n      },\n      \"presence\": {\n        \"axis_x_labels\": \"none\",\n        \"axis_x_title\": \"none\",\n        \"axis_y_labels\": \"shown\",\n        \"axis_y_title\": \"none\",\n        \"legend\": \"shown\",\n        \"legend_title\": \"none\",\n        \"rank_numbers\": \"shown\"\n      },\n      \"confidence\": \"high\"\n    },\n    {\n      \"id\": \"surf_6\",\n      \"parent\": null,\n      \"role\": \"surface\",\n      \"kind\": \"none\",\n      \"box_2d\": [\n        487,\n        436,\n        987,\n        698\n      ],\n      \"surface\": \"card\",\n      \"title\": \"멤버십 가입 회원 현황\",\n      \"subtitle\": \"하단 총합계는 '일반' 등급을 제외한 수치임.\",\n      \"composition\": \"composite\",\n      \"confidence\": \"high\"\n    },\n    {\n      \"id\": \"b_donut_membership\",\n      \"parent\": \"surf_6\",\n      \"role\": \"block\",\n      \"kind\": \"donut\",\n      \"box_2d\": [\n        575,\n        465,\n        758,\n        680\n      ],\n      \"surface\": \"none\",\n      \"texts\": [\n        \"7.57%\",\n        \"16.05%\",\n        \"29.41%\",\n        \"46.97%\",\n        \"일반\",\n        \"베이직\",\n        \"플러스\",\n        \"프라임\"\n      ],\n      \"categories\": [\n        \"일반\",\n        \"베이직\",\n        \"플러스\",\n        \"프라임\"\n      ],\n      \"legend\": [\n        {\n          \"label\": \"일반\",\n          \"box_2d\": [\n            602,\n            648,\n            610,\n            656\n          ]\n        },\n        {\n          \"label\": \"베이직\",\n          \"box_2d\": [\n            622,\n            648,\n            630,\n            656\n          ]\n        },\n        {\n          \"label\": \"플러스\",\n          \"box_2d\": [\n            642,\n            648,\n            650,\n            656\n          ]\n        },\n        {\n          \"label\": \"프라임\",\n          \"box_2d\": [\n            662,\n            648,\n            670,\n            656\n          ]\n        }\n      ],\n      \"presence\": {\n        \"axis_x_labels\": \"none\",\n        \"axis_x_title\": \"none\",\n        \"axis_y_labels\": \"none\",\n        \"axis_y_title\": \"none\",\n        \"legend\": \"shown\",\n        \"legend_title\": \"none\",\n        \"rank_numbers\": \"na\"\n      },\n      \"confidence\": \"high\"\n    },\n    {\n      \"id\": \"b_table_membership\",\n      \"parent\": \"surf_6\",\n      \"role\": \"block\",\n      \"kind\": \"table\",\n      \"box_2d\": [\n        775,\n        442,\n        970,\n        692\n      ],\n      \"surface\": \"none\",\n      \"table\": {\n        \"header_rows\": 1,\n        \"columns\": [\n          \"멤버십 등급\",\n          \"가입 회원 수\",\n          \"마케팅 수신 현황\"\n        ],\n        \"row_count\": 5,\n        \"row_labels\": [\n          \"일반\",\n          \"베이직\",\n          \"플러스\",\n          \"프라임\",\n          \"총합계\"\n        ],\n        \"total_row\": true\n      },\n      \"presence\": {\n        \"axis_x_labels\": \"na\",\n        \"axis_x_title\": \"na\",\n        \"axis_y_labels\": \"na\",\n        \"axis_y_title\": \"na\",\n        \"legend\": \"na\",\n        \"legend_title\": \"na\",\n        \"rank_numbers\": \"none\"\n      },\n      \"confidence\": \"high\"\n    },\n    {\n      \"id\": \"b_table_device\",\n      \"parent\": null,\n      \"role\": \"block\",\n      \"kind\": \"table\",\n      \"box_2d\": [\n        487,\n        706,\n        987,\n        994\n      ],\n      \"surface\": \"card\",\n      \"title\": \"디바이스별 기기 등록 현황\",\n      \"subtitle\": \"멤버십 기준 데이터는 멤버십 시작일(26.07.13) 기준으로 집계되며, 기기 등록률 상위 3개 항목은 순위가 높을수록 더 진하게 표시됨.\",\n      \"texts\": [\n        \"멤버십 기준\"\n      ],\n      \"table\": {\n        \"header_rows\": 1,\n        \"columns\": [\n          \"구분\",\n          \"제품명\",\n          \"판매\",\n          \"기기 등록 수\",\n          \"기기 등록률\"\n        ],\n        \"row_count\": 10,\n        \"row_labels\": [\n          \"P1\",\n          \"P2\",\n          \"P4\"\n        ],\n        \"cell_marks\": [\n          \"color_scale\"\n        ]\n      },\n      \"presence\": {\n        \"axis_x_labels\": \"na\",\n        \"axis_x_title\": \"na\",\n        \"axis_y_labels\": \"na\",\n        \"axis_y_title\": \"na\",\n        \"legend\": \"na\",\n        \"legend_title\": \"na\",\n        \"rank_numbers\": \"none\"\n      },\n      \"confidence\": \"high\"\n    }\n  ],\n  \"relations\": [\n    {\n      \"kind\": \"same_items\",\n      \"from\": \"b_donut_gender\",\n      \"to\": \"b_bar_age\",\n      \"note\": \"Both charts segment the member population by gender color encoding (blue for male, pink for female).\"\n    },\n    {\n      \"kind\": \"part_of_total\",\n      \"from\": \"b_donut_membership\",\n      \"to\": \"b_table_membership\",\n      \"note\": \"Donut segments correspond to membership tiers listed in the table below.\"\n    },\n    {\n      \"kind\": \"same_rows\",\n      \"from\": \"b_map\",\n      \"to\": \"b_bar_region\",\n      \"note\": \"Map and horizontal bar chart list regions across South Korea.\"\n    }\n  ],\n  \"unread\": []\n}","detail":["```json\n{\n  \"crops\": [\n    {\n      \"index\": 0,\n      \"node_id\": \"b_table_device\",\n      \"title\": \"디바이스별 기기 등록 현황\",\n      \"table\": {\n        \"header_rows\": 1,\n        \"columns\": [\n          \"구분\",\n          \"판매\",\n          \"기기 등록 수\",\n          \"기기 등록률\"\n        ],\n        \"groups\": [\n          {\n            \"label\": \"P1\",\n            \"span\": 3\n          },\n          {\n            \"label\": \"P2\",\n            \"span\": 3\n          },\n          {\n            \"label\": \"P4\",\n            \"span\": 4\n          }\n        ],\n        \"row_count\": 10,\n        \"row_labels\": [\n          \"솔리드 2.0\",\n          \"솔리드 3.0\",\n          \"솔리드 EZ\",\n          \"하이브리드 2.0\",\n          \"하이브리드 3.0\",\n          \"하이브리드 EZ\",\n          \"에이블 1.0\",\n          \"에이블 2.0\",\n          \"에이블 2.0+\",\n          \"에이블 프리미엄\"\n        ],\n        \"cell_samples\": [\n          {\n            \"column\": \"판매\",\n            \"samples\": [\n              \"806,069\",\n              \"555,610\",\n              \"305,955\"\n            ]\n          },\n          {\n            \"column\": \"기기 등록 수\",\n            \"samples\": [\n              \"563,112\",\n              \"388,080\",\n              \"213,048\"\n            ]\n          },\n          {\n            \"column\": \"기기 등록률\",\n            \"samples\": [\n              \"69.86%\",\n              \"69.85%\",\n              \"69.63%\"\n            ]\n          }\n        ]\n      },\n      \"confidence\": \"high\"\n    },\n    {\n      \"index\": 1,\n      \"node_id\": \"b_heatmap\",\n      \"title\": \"멤버십 & 성별 Segment\",\n      \"categories\": [\n        \"20대\",\n        \"30대\",\n        \"40대\",\n        \"50대 이상\"\n      ],\n      \"axes\": {\n        \"x\": {\n          \"labels\": true,\n          \"title\": true,\n          \"title_text\": \"연령\"\n        },\n        \"y\": {\n          \"labels\": true,\n          \"title\": true,\n          \"title_text\": \"경험 레벨\"\n        }\n      },\n      \"presence\": {\n        \"axis_x_labels\": \"shown\",\n        \"axis_x_title\": \"shown\",\n        \"axis_y_labels\": \"shown\",\n        \"axis_y_title\": \"shown\",\n        \"legend\": \"none\"\n      },\n      \"confidence\": \"high\"\n    },\n    {\n      \"index\": 2,\n      \"node_id\": \"b_donut_membership\",\n      \"title\": \"멤버십 가입 회원 현황\",\n      \"donut\": {\n        \"center\": \"none\",\n        \"slice_labels\": \"outside\",\n        \"slice_label_content\": [\n          \"percent\"\n        ]\n      },\n      \"legend\": [\n        \"일반\",\n        \"베이직\",\n        \"플러스\",\n        \"프라임\"\n      ],\n      \"presence\": {\n        \"legend\": \"shown\"\n      },\n      \"confidence\": \"high\"\n    },\n    {\n      \"index\": 2,\n      \"node_id\": \"b_table_membership\",\n      \"table\": {\n        \"header_rows\": 1,\n        \"columns\": [\n          \"멤버십 등급\",\n          \"가입 회원 수\",\n          \"마케팅 수신 현황\"\n        ],\n        \"row_count\": 5,\n        \"row_labels\": [\n          \"일반\",\n          \"베이직\",\n          \"플러스\",\n          \"프라임\",\n          \"총합계\"\n        ],\n        \"total_row\": true,\n        \"cell_samples\": [\n          {\n            \"column\": \"가입 회원 수\",\n            \"samples\": [\n              \"6,061\",\n              \"3,795\",\n              \"2,071\"\n            ]\n          },\n          {\n            \"column\": \"마케팅 수신 현황\",\n            \"samples\": [\n              \"62.53%\",\n              \"71.30%\",\n              \"77.69%\"\n            ]\n          }\n        ]\n      },\n      \"confidence\": \"high\"\n    },\n    {\n      \"index\": 3,\n      \"node_id\": \"b_map\",\n      \"title\": \"지역별 가입 회원 현황\",\n      \"confidence\": \"high\"\n    },\n    {\n      \"index\": 3,\n      \"node_id\": \"b_bar_region\",\n      \"categories\": [\n        \"서울시\",\n        \"경기도\",\n        \"부산시\",\n        \"대구시\",\n        \"경상남도\",\n        \"인천시\",\n        \"세종시\",\n        \"충청북도\",\n        \"경상북도\",\n        \"울산시\",\n        \"전라남도\"\n      ],\n      \"legend\": [\n        \"활성 회원\",\n        \"이탈 회원\"\n      ],\n      \"rank_numbers\": \"present\",\n      \"rank_start\": 1,\n      \"presence\": {\n        \"legend\": \"shown\",\n        \"rank_numbers\": \"shown\"\n      },\n      \"confidence\": \"high\"\n    },\n    {\n      \"index\": 4,\n      \"node_id\": \"b_donut_gender\",\n      \"title\": \"가입 회원별 성별 및 연령대\",\n      \"donut\": {\n        \"center\": \"none\",\n        \"slice_labels\": \"outside\",\n        \"slice_label_content\": [\n          \"percent\"\n        ]\n      },\n      \"legend\": [\n        \"남성\",\n        \"여성\"\n      ],\n      \"presence\": {\n        \"legend\": \"shown\"\n      },\n      \"confidence\": \"high\"\n    },\n    {\n      \"index\": 4,\n      \"node_id\": \"b_bar_age\",\n      \"categories\": [\n        \"20대\",\n        \"30대\",\n        \"40대\",\n        \"50대 이상\"\n      ],\n      \"legend\": [\n        \"남성\",\n        \"여성\"\n      ],\n      \"presence\": {\n        \"axis_x_labels\": \"shown\",\n        \"legend\": \"shown\"\n      },\n      \"confidence\": \"high\"\n    },\n    {\n      \"index\": 5,\n      \"node_id\": \"b_donut1\",\n      \"title\": \"가입 회원\",\n      \"center_text\": \"가입 회원 · 12,904\",\n      \"donut\": {\n        \"center\": \"label_value\",\n        \"slice_labels\": \"outside\",\n        \"slice_label_content\": [\n          \"percent\"\n        ]\n      },\n      \"legend\": [\n        \"활성 회원\",\n        \"이탈 회원\"\n      ],\n      \"presence\": {\n        \"legend\": \"shown\"\n      },\n      \"confidence\": \"high\"\n    }\n  ]\n}\n```","{\n  \"crops\": [\n    {\n      \"index\": 0,\n      \"node_id\": \"kpi_1\",\n      \"title\": \"활성 회원 (최근 1년 내 로그인)\",\n      \"kpi\": {\n        \"value\": \"8,838\",\n        \"label\": \"활성 회원 (최근 1년 내 로그인)\",\n        \"label_position\": \"above\"\n      },\n      \"confidence\": \"high\"\n    },\n    {\n      \"index\": 0,\n      \"node_id\": \"kpi_2\",\n      \"title\": \"이탈 회원 (최근 1년 내 미로그인)\",\n      \"kpi\": {\n        \"value\": \"4,066\",\n        \"label\": \"이탈 회원 (최근 1년 내 미로그인)\",\n        \"label_position\": \"above\"\n      },\n      \"confidence\": \"high\"\n    },\n    {\n      \"index\": 1,\n      \"node_id\": \"kpi_kakao\",\n      \"title\": \"카카오톡 연동\",\n      \"texts\": [\n        \"(8,174)\"\n      ],\n      \"kpi\": {\n        \"value\": \"63.34%\",\n        \"label\": \"카카오톡 연동\",\n        \"label_position\": \"above\"\n      },\n      \"confidence\": \"high\"\n    },\n    {\n      \"index\": 1,\n      \"node_id\": \"kpi_privacy\",\n      \"title\": \"개인정보 이용\",\n      \"texts\": [\n        \"(8,940)\"\n      ],\n      \"kpi\": {\n        \"value\": \"69.28%\",\n        \"label\": \"개인정보 이용\",\n        \"label_position\": \"above\"\n      },\n      \"confidence\": \"high\"\n    },\n    {\n      \"index\": 2,\n      \"node_id\": \"kpi_device\",\n      \"title\": \"기기 등록\",\n      \"texts\": [\n        \"(6,843)\"\n      ],\n      \"kpi\": {\n        \"value\": \"53.03%\",\n        \"label\": \"기기 등록\",\n        \"label_position\": \"above\"\n      },\n      \"missing_titles\": [\n        {\n          \"text\": \"연동 · 수신 현황\",\n          \"box_2d\": [\n            91,\n            44,\n            153,\n            900\n          ]\n        }\n      ],\n      \"confidence\": \"high\"\n    },\n    {\n      \"index\": 2,\n      \"node_id\": \"kpi_mkt\",\n      \"title\": \"마케팅 수신\",\n      \"texts\": [\n        \"(8,810)\"\n      ],\n      \"kpi\": {\n        \"value\": \"68.27%\",\n        \"label\": \"마케팅 수신\",\n        \"label_position\": \"above\"\n      },\n      \"confidence\": \"high\"\n    }\n  ]\n}"],"recheck":[]},"textBands":{"bands":[{"x":55,"y":912,"w":1910,"h":42},{"x":55,"y":975,"w":1960,"h":23}],"raw":["```json\n{\n  \"crops\": [\n    {\n      \"index\": 0,\n      \"node_id\": \"kpi_2\",\n      \"needs_wider_context\": true,\n      \"reason\": \"The KPI node is located at the top boundary and cut off by the crop edge.\",\n      \"missing_titles\": [\n        {\n          \"text\": \"지역별 가입 회원 현황\",\n          \"box_2d\": [340, 8, 620, 218]\n        },\n        {\n          \"text\": \"지역 선택 시, 해당 데이터로 필터링됨.\",\n          \"box_2d\": [680, 8, 860, 237]\n        },\n        {\n          \"text\": \"멤버십 가입 회원 현황\",\n          \"box_2d\": [340, 831, 620, 992]\n        },\n        {\n          \"text\": \"하단 총합계는 '일반' 등급을 제외한 수치임.\",\n          \"box_2d\": [680, 831, 855, 1000]\n        }\n      ]\n    },\n    {\n      \"index\": 1,\n      \"node_id\": \"b_donut_membership\",\n      \"needs_wider_context\": true,\n      \"reason\": \"The donut chart visual extends beyond the bottom boundary of this crop.\",\n      \"missing_titles\": [\n        {\n          \"text\": \"지역별 가입 회원 현황\",\n          \"box_2d\": [0, 8, 270, 218]\n        },\n        {\n          \"text\": \"지역 선택 시, 해당 데이터로 필터링됨.\",\n          \"box_2d\": [320, 8, 660, 237]\n        },\n        {\n          \"text\": \"멤버십 가입 회원 현황\",\n          \"box_2d\": [0, 831, 270, 992]\n        },\n        {\n          \"text\": \"하단 총합계는 '일반' 등급을 제외한 수치임.\",\n          \"box_2d\": [320, 831, 660, 1000]\n        }\n      ]\n    }\n  ]\n}\n```"],"failed":[]}}