{ "name": "robeing-daily-headlines-actual-runtime", "nodes": [ { "parameters": { "content": "실제 운영 경로 시각화용 문서입니다.\\nSSOT는 DOCS/workflow/*.md이며 이 JSON은 n8n 시각화 파생물입니다.", "height": 120, "width": 360, "color": 5 }, "id": "sched-headlines-note-001", "name": "SSOT Note", "type": "n8n-nodes-base.stickyNote", "typeVersion": 1, "position": [80, 40] }, { "parameters": { "rule": { "cronExpression": "10 9 * * 1-5" } }, "id": "sched-headlines-001", "name": "09:10 Trigger", "type": "n8n-nodes-base.scheduleTrigger", "typeVersion": 1, "position": [120, 220] }, { "parameters": { "jsCode": "return [{\n json: {\n scheduler_source: 'scheduled_jobs.daily_headlines',\n cron_expression: '10 9 * * mon-fri',\n channel_id: 'C09C98KK2TT',\n runtime: 'rb8001 APScheduler + DB loader'\n }\n}];" }, "id": "sched-headlines-002", "name": "DB Job Config", "type": "n8n-nodes-base.code", "typeVersion": 2, "position": [360, 220] }, { "parameters": { "jsCode": "return [{\n json: {\n step: 'app.scheduler.jobs.daily_headlines._run_headlines_with_logging(channel_id)',\n channel_id: $json.channel_id,\n description: 'DB scheduler가 rb8001 내부 래퍼 함수를 직접 호출'\n }\n}];" }, "id": "sched-headlines-003", "name": "daily_headlines Wrapper", "type": "n8n-nodes-base.code", "typeVersion": 2, "position": [620, 220] }, { "parameters": { "jsCode": "return [{\n json: {\n workflow: 'run_headlines_workflow(channel_id)',\n state_store: '/code/state/headlines_graph.sqlite',\n steps: [\n 'fetch_naver',\n 'fetch_sea',\n 'extract_terms',\n 'format',\n 'send'\n ],\n channel_id: $json.channel_id\n }\n}];" }, "id": "sched-headlines-004", "name": "LangGraph Workflow", "type": "n8n-nodes-base.code", "typeVersion": 2, "position": [900, 220] }, { "parameters": { "method": "POST", "url": "=http://192.168.219.52:8505/api/news/naver/startup-headlines", "sendBody": true, "specifyBody": "json", "jsonBody": "={\"format\":\"slack\"}", "options": { "response": { "response": { "fullResponse": true } } } }, "id": "sched-headlines-005", "name": "skill-news Naver Headlines", "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.2, "position": [1180, 140] }, { "parameters": { "method": "POST", "url": "=http://192.168.219.52:8505/api/news/sea/headlines", "sendBody": true, "specifyBody": "json", "jsonBody": "={\"format\":\"json\"}", "options": { "response": { "response": { "fullResponse": true } } } }, "id": "sched-headlines-006", "name": "skill-news SEA Headlines", "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.2, "position": [1180, 300] }, { "parameters": { "jsCode": "return [{\n json: {\n step: 'rb8001 headlines_workflow.format_node',\n channel_id: $item(0).$node['LangGraph Workflow'].json.channel_id,\n summary: [\n '네이버 Slack 텍스트 수신',\n '동남아 소식 섹션 삽입',\n '키워드 요약 미삽입',\n '클로징 후 명언, 마지막 빈줄 2줄'\n ],\n naver_endpoint: '/api/news/naver/startup-headlines',\n sea_endpoint: '/api/news/sea/headlines'\n }\n}];" }, "id": "sched-headlines-007", "name": "Format Briefing Text", "type": "n8n-nodes-base.code", "typeVersion": 2, "position": [1460, 220] }, { "parameters": { "resource": "message", "operation": "post", "channel": "={{ $json.channel_id }}", "text": "={{ 'rb8001 headlines_workflow.send_node -> chat_postMessage' }}", "otherOptions": {} }, "id": "sched-headlines-008", "name": "Slack Delivery", "type": "n8n-nodes-base.slack", "typeVersion": 2, "position": [1720, 220] } ], "connections": { "09:10 Trigger": { "main": [ [ { "node": "DB Job Config", "type": "main", "index": 0 } ] ] }, "DB Job Config": { "main": [ [ { "node": "daily_headlines Wrapper", "type": "main", "index": 0 } ] ] }, "daily_headlines Wrapper": { "main": [ [ { "node": "LangGraph Workflow", "type": "main", "index": 0 } ] ] }, "LangGraph Workflow": { "main": [ [ { "node": "skill-news Naver Headlines", "type": "main", "index": 0 }, { "node": "skill-news SEA Headlines", "type": "main", "index": 0 } ] ] }, "skill-news Naver Headlines": { "main": [ [ { "node": "Format Briefing Text", "type": "main", "index": 0 } ] ] }, "skill-news SEA Headlines": { "main": [ [ { "node": "Format Briefing Text", "type": "main", "index": 0 } ] ] }, "Format Briefing Text": { "main": [ [ { "node": "Slack Delivery", "type": "main", "index": 0 } ] ] } }, "pinData": {}, "meta": { "templateCredsSetupCompleted": true, "instanceId": "robeing-scheduler" } }