{
 "name": "[노드 한 장] Summarization Chain · 가상 업무 공지를 핵심 3줄로",
 "nodes": [
  {
   "id": "m",
   "name": "Run manually",
   "type": "n8n-nodes-base.manualTrigger",
   "typeVersion": 1,
   "position": [
    0,
    0
   ],
   "parameters": {}
  },
  {
   "id": "c",
   "name": "Sample notice",
   "type": "n8n-nodes-base.code",
   "typeVersion": 2,
   "position": [
    220,
    0
   ],
   "parameters": {
    "jsCode": "// 교육용 가상 공지. 실제 회사/고객 정보 없음\nreturn [{json:{notice:\"[교육용 가상 업무 공지 / 샘플 데이터]\\n이 문서는 AI 요약 실습을 위해 직접 만든 가상 공지입니다. 실제 회사, 직원, 고객, 계약 또는 운영 일정에 관한 내용이 아닙니다. 아래의 날짜와 규칙도 모두 연습용 설정이며 누구에게도 실제 업무 지시가 되지 않습니다.\\n\\n연습용 팀의 문서 정리 주간을 가정합니다. 11월 4일부터 문서 정리 방식과 회의 기록 양식을 시험적으로 바꿉니다. 이번 시험의 목적은 새로운 도구를 자랑하는 것이 아니라, 회의가 끝난 뒤 담당자와 마감일을 다시 물어보는 시간을 줄이는 것입니다. 시험은 일주일 동안만 진행하며, 연습 결과를 보고 기존 방식을 유지할지 판단합니다. 모든 팀이 반드시 같은 양식을 써야 하는 것은 아니고, 아래 예외 조건에 해당하면 기존 양식을 계속 사용할 수 있습니다.\\n\\n각 문서 담당자는 11월 3일 오후 5시까지 자신이 관리하는 문서 목록과 접근 권한을 점검합니다. 목록에는 문서 제목, 담당 역할, 최근 수정일, 외부 공유 여부만 기록합니다. 직원 실명, 연락처, 고객 이름, 계좌번호, 계약 금액은 이 연습 목록에 적지 않습니다. 이미 공개된 안내 자료라도 실제 고객의 이름이 섞여 있으면 그대로 복사하지 말고 교육용 대체 문장으로 바꿉니다. 외부 공유가 필요 없는 파일의 링크 권한은 조직 내부 열람으로 맞췄는지 확인합니다.\\n\\n회의 기록은 회의 제목과 참석 역할, 결정 사항, 후속 작업의 세 구역으로 나눕니다. 결정 사항에는 무엇을 하기로 했는지 적고, 후속 작업에는 담당 역할과 마감일을 함께 씁니다. 대화 내용을 한 문장도 빠짐없이 옮기는 것이 목표는 아닙니다. 확정되지 않은 아이디어는 결정 사항에 섞지 않고 검토 중 항목으로 분리합니다. 결정하지 않은 내용을 AI가 보충해서 넣어서는 안 되며, 회의에서 말하지 않은 이유나 배경을 추측해서 기록하지 않습니다.\\n\\n매주 금요일 오전 10시까지 각 담당 역할은 이번 주에 완료한 작업, 아직 남은 작업, 도움이 필요한 작업을 각각 한 줄씩 기록합니다. 완료 표시만 있고 근거 문서가 없으면 완료로 확정하지 않습니다. 작업이 밀렸을 때는 사람을 평가하는 표현 대신 막힌 조건과 다음 행동을 적습니다. 이 주간 기록은 업무 현황을 연습하는 표일 뿐이며 근태 평가나 직원 성과 점수로 쓰지 않습니다. 숫자가 없는 항목에 임의의 진척률을 추가하지 않는 것도 이번 연습의 규칙입니다.\\n\\n접근 권한이 없는 문서는 내용을 요약하기 위해 억지로 열지 않습니다. 원본 담당 역할에 열람 가능 범위를 확인하고, 권한이 허용된 부분만 연습 자료로 사용합니다. 다른 사람이 비공개로 남긴 메모는 복사하지 않습니다. AI에 넣는 문서도 공개 가능한 가상 문장으로만 구성하며, 실제 사내 자료를 제공하지 않습니다. 교육 자료를 외부에 보여줄 때는 화면 위에 샘플 데이터라고 표시하고 실제 조직의 운영 사례로 오해받지 않도록 설명을 붙입니다.\\n\\n예외는 두 가지입니다. 첫째, 고객 대응이 급한 작업을 맡은 역할은 11월 3일 오후 5시 점검 마감 대신 같은 날 오후 7시까지 제출할 수 있습니다. 둘째, 별도의 보안 규정 때문에 문서 양식을 바꿀 수 없는 경우에는 기존 양식을 유지하고 변경하지 못한 이유만 연습 기록에 적습니다. 예외라고 해서 민감 정보를 AI 입력에 넣어도 된다는 뜻은 아닙니다. 제출 시간을 늦추는 예외와 기존 양식을 유지하는 예외를 서로 섞어서 이해하지 않도록 주의합니다.\\n\\n일주일의 시험이 끝나면 불필요했던 항목, 도움이 됐던 항목, 다음에 수정할 항목을 모아 검토합니다. 새로운 양식이 무조건 더 좋다고 결론 내리지 않으며 작성 시간과 누락된 정보도 함께 살펴봅니다. 검토 전에는 새 양식을 정식 정책이라고 부르지 않습니다. 이 문서 전체는 길고 반복되는 안내를 핵심 세 줄로 줄이는 AI 실습용이며, 실제 일정 공지나 실무 정책이 아닙니다.\"}}];"
   }
  },
  {
   "id": "s",
   "name": "Summarization Chain",
   "type": "@n8n/n8n-nodes-langchain.chainSummarization",
   "typeVersion": 2.1,
   "position": [
    440,
    0
   ],
   "parameters": {
    "operationMode": "nodeInputJson",
    "chunkingMode": "simple",
    "chunkSize": 700,
    "chunkOverlap": 80,
    "options": {
     "summarizationMethodAndPrompts": {
      "values": {
       "summarizationMethod": "map_reduce",
       "combineMapPrompt": "다음은 교육용 가상 업무 공지의 일부입니다. 샘플이라는 맥락을 유지하고, 실행할 일·일정·마감·예외·민감정보 금지 규칙을 빠뜨리지 않게 한국어로 짧게 요약하세요. 없는 사실은 추가하지 마세요.\n\n{text}\n\n부분 요약:",
       "prompt": "아래 부분 요약들은 모두 교육용 가상 공지입니다. 실제 회사 사실이 아닙니다. 중복을 없애고 핵심을 정확히 한국어 3줄로만 요약하세요. 1) 시험 시작·기간 2) 점검 마감과 예외 3) 회의/주간기록 규칙과 민감정보 금지를 우선하세요. 각 줄은 100자 이내, 빈 줄 없이, 없는 내용은 추가하지 마세요.\n\n{text}\n\n최종 3줄:"
      }
     }
    }
   }
  },
  {
   "id": "o",
   "name": "OpenAI Chat Model",
   "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
   "typeVersion": 1.2,
   "position": [
    440,
    240
   ],
   "parameters": {
    "model": {
     "__rl": true,
     "mode": "list",
     "value": "gpt-4.1-mini",
     "cachedResultName": "gpt-4.1-mini"
    },
    "options": {
     "temperature": 0
    }
   }
  }
 ],
 "connections": {
  "Run manually": {
   "main": [
    [
     {
      "node": "Sample notice",
      "type": "main",
      "index": 0
     }
    ]
   ]
  },
  "Sample notice": {
   "main": [
    [
     {
      "node": "Summarization Chain",
      "type": "main",
      "index": 0
     }
    ]
   ]
  },
  "OpenAI Chat Model": {
   "ai_languageModel": [
    [
     {
      "node": "Summarization Chain",
      "type": "ai_languageModel",
      "index": 0
     }
    ]
   ]
  }
 },
 "settings": {
  "timezone": "Asia/Seoul",
  "executionOrder": "v1"
 },
 "meta": {
  "templateCredsSetupCompleted": false,
  "source": "datapopcorn.ai/workflow/nodes"
 }
}