DOCS/workflow/_archive/slack_action_extractor_request.json
happybell80 45847403fe docs: workflow Phase 1 정리 — 레거시 이동, n8n 제거, IP 하드코딩 제거
- 레거시 .md 2건(slack_basic_dialogue, service_health_check)을 _archive/로 이동
- n8n .json 파일 18건을 _archive/로 이동
- README.md 전면 재작성: n8n 전제 제거, 현행 아키텍처(APScheduler DB + SKILL.md) 반영
- 구 IP(192.168.219.52)를 localhost로 교체 (infrastructure-ssot-principle 준수)

Refs: DOCS#8

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 07:48:39 +09:00

109 lines
3.9 KiB
JSON

{
"name": "robeing-slack-action-extractor-request",
"nodes": [
{
"parameters": {
"channelId": {
"__rl": true,
"mode": "list",
"value": ""
},
"options": {}
},
"id": "conv-act-001",
"name": "Slack Trigger",
"type": "n8n-nodes-base.slackTrigger",
"typeVersion": 1,
"position": [220, 220]
},
{
"parameters": {
"jsCode": "const event = $json.event || {};\nconst text = (event.text || '').replace(/<@[^>]+>/g, '').trim();\nconst wantsActions = /할 일|액션|todo|action/i.test(text);\nreturn {\n should_process: wantsActions && Boolean(event.channel) && Boolean(event.user),\n channel_id: event.channel || '',\n thread_ts: event.thread_ts || event.ts || '',\n company_id: event.team || event.team_id || '',\n user_id: event.user || ''\n};"
},
"id": "conv-act-002",
"name": "Detect Action Intent",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [460, 220]
},
{
"parameters": {
"conditions": {
"boolean": [
{
"value1": "={{ $json.should_process }}",
"value2": true
}
]
}
},
"id": "conv-act-003",
"name": "Action Request?",
"type": "n8n-nodes-base.if",
"typeVersion": 2,
"position": [700, 220]
},
{
"parameters": {
"method": "POST",
"url": "=http://192.168.219.52:8502/api/v1/extract-actions",
"sendBody": true,
"specifyBody": "json",
"jsonBody": "={\"company_id\":\"{{$json.company_id}}\",\"user_id\":\"{{$json.user_id}}\",\"skill_level\":1,\"channel_id\":\"{{$json.channel_id}}\",\"time_range\":\"24h\",\"auto_assign\":true,\"priority_detection\":true}",
"options": {
"response": {
"response": {
"fullResponse": true
}
}
}
},
"id": "conv-act-004",
"name": "Call skill-slack Extract Actions",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [970, 160]
},
{
"parameters": {
"jsCode": "const body = $json.body || {};\nconst req = $('Detect Action Intent').item.json;\nconst items = body.action_items || [];\nconst lines = items.length ? items.map((item, index) => `${index + 1}. ${item.task}${item.assignee ? ' / 담당: ' + item.assignee : ''}${item.priority ? ' / 우선순위: ' + item.priority : ''}`).join('\\n') : '추출된 액션 아이템이 없습니다.';\nreturn { channel: req.channel_id, thread_ts: req.thread_ts, text: lines };"
},
"id": "conv-act-005",
"name": "Build Action Reply",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [1230, 160]
},
{
"parameters": {
"resource": "message",
"operation": "post",
"channel": "={{ $json.channel }}",
"text": "={{ $json.text }}",
"otherOptions": {
"threadTs": "={{ $json.thread_ts }}"
}
},
"id": "conv-act-006",
"name": "Reply to Slack",
"type": "n8n-nodes-base.slack",
"typeVersion": 2,
"position": [1480, 160]
}
],
"connections": {
"Slack Trigger": { "main": [[{ "node": "Detect Action Intent", "type": "main", "index": 0 }]] },
"Detect Action Intent": { "main": [[{ "node": "Action Request?", "type": "main", "index": 0 }]] },
"Action Request?": {
"main": [
[{ "node": "Call skill-slack Extract Actions", "type": "main", "index": 0 }],
[]
]
},
"Call skill-slack Extract Actions": { "main": [[{ "node": "Build Action Reply", "type": "main", "index": 0 }]] },
"Build Action Reply": { "main": [[{ "node": "Reply to Slack", "type": "main", "index": 0 }]] }
},
"pinData": {},
"meta": { "templateCredsSetupCompleted": true, "instanceId": "robeing-conversation" }
}