바로 가기 링크
수업에서 여는 순서대로 정리했습니다.
Gemini D1-2
gemini.google.com
Perplexity D1-2
www.perplexity.ai
Perplexity 남은 크레딧 D1-2
/rest/rate-limit/all
실습 1-D 추가 기능 D1-2
fis-test01.pplx.app
Gemini Notebook 실습본 D1-2
notebook.google.com
Gamma D1-2
gamma.app/ko
Gamma 결과 예시 D1-2
drive.google.com
Napkin D1-2
www.napkin.ai/ko
Node.js 내려받기 D1-3
nodejs.org — LTS 버전
내 n8n (로컬) D1-3
localhost:5678
카카오 개발자센터 D1-4
developers.kakao.com
샘플 문의 메일 받기 D1-4
메일 주소 입력 → 실습용 메일 도착
실습용 시트 템플릿 D1-4
사본 만들어서 사용
Webhook 체험 D1-4
주소창에 붙여넣으면 분류 결과가 즉시 회신
프롬프트
그대로 복사해서 쓰고, 밑줄 친 부분만 본인 상황에 맞게 바꾸세요.
기본형 — 4요소가 들어간 지시서 D1-2
역할 · 근거 · 형식 · 모를 때
당신은 금융권 SI 프로젝트의 장애 대응 담당자입니다. 첨부한 장애 로그 내용에만 근거해 답하세요. 표로, 5행 이내로 정리하세요. 각 행에 발생 시각 · 영향 범위 · 조치 내용을 포함하세요. 문서에 없으면 "확인 불가"라고 쓰고 추측하지 마세요.
비교용 BEFORE — 이 장애 보고서 요약해줘
① 장애 보고서 작성 D1-2
로그를 붙여 넣고 실행합니다
[역할] 당신은 (주)미래파이낸셜시스템의 장애 대응 담당자입니다.
[근거] 아래 <로그> 구획의 내용에만 근거하세요.
<등급기준> 구획의 기준으로만 등급을 산정하세요.
[형식] 1. 장애 개요(2문장) 2. 발생/복구/소요시간 3. 영향 범위
4. 조치 내역(시간순, 로그에 있는 것만) 5. 등급 및 산정 근거
각 항목 3줄 이내.
[모를 때] 근본 원인을 로그로 단정할 수 없으면 "원인 미확정 — 추가 분석 필요"
라고 쓰고 추측하지 마세요. 없는 시각·수치를 만들지 마세요.
<등급기준>
1등급: 이체·결제 등 거래 기능 중단
2등급: 조회 기능 중단 또는 5xx 10% 초과
3등급: 성능 저하, 거래 영향 없음
</등급기준>
<로그>
(여기에 로그를 붙여 넣으세요)
</로그>
원문은 원인을 단정하고 없는 숫자를 만듭니다. 고친 쪽은 "원인 미확정"이라고 씁니다.
② 요구사항 정의서 검토 D1-2
모호 표현을 집어내게 만듭니다
[역할] 당신은 금융권 SI 프로젝트의 요구사항 분석가입니다.
[근거] 아래 <요구사항> 구획의 문장에만 근거하세요.
프로젝트 배경을 상상해서 보완하지 마세요.
[형식] 표로 출력. 열은 4개:
| 요구사항ID | 문제 유형 | 문제가 되는 원문 표현 | 확인이 필요한 질문 |
문제 유형은 다음에서만: 모호표현 / 누락 / 상충 / 측정불가 / 규제확인필요
심각한 것부터 정렬, 최대 10행.
[모를 때] 문제 없는 요구사항은 표에 넣지 마세요.
판단이 어려우면 "판단보류"로 쓰고 이유를 한 줄로.
<요구사항>
(여기에 요구사항을 붙여 넣으세요)
</요구사항>
원문은 "전반적으로 잘 작성되었습니다"로 시작합니다. 고친 쪽은 적절히를 집어냅니다.
③ 사내 규정 문의 응대 D1-2
규정 파일을 먼저 첨부하고 실행합니다
[역할] 당신은 (주)미래파이낸셜시스템 인사팀의 규정 안내 담당자입니다.
질문자는 올해 입사한 신입사원입니다.
[근거] 첨부한 사내 복무 및 휴가 규정 문서의 내용에만 근거하세요.
근로기준법이나 다른 회사 사례를 끌어오지 마세요.
[형식] 5줄 이내로 답하고, 각 문장 끝에 근거 조항 번호를 (제O조)로 표기.
답변 아래 "확인이 필요한 사항"을 최대 2개까지.
[모를 때] 문서에 없는 내용은 "규정에 명시되어 있지 않습니다. 인사팀 확인이
필요합니다"라고만 쓰고 추측하지 마세요.
시험용 함정 질문 — 반려동물이 아플 때 쓸 수 있는 휴가가 있나요? "규정에 명시되어 있지 않습니다"가 나오면 성공입니다.
뉴스 브리핑 — OpenAI 노드 Message D1-3
실습 3-E · Expression 모드로 전환 후 붙여넣기
아래는 오늘 수집한 금융 관련 뉴스 5건입니다. 경영진 보고용으로 정리해주세요.
- 전체 흐름을 2문장으로 요약
- 주목할 기사 3건을 제목과 한 줄 코멘트로
- 우리 회사에 시사하는 바 1가지
확인되지 않은 내용은 추측하지 말고 '기사에 없음'이라고 쓰세요.
뉴스 데이터:
{{ JSON.stringify($json.data) }}
⚠ 입력창 옆 Fixed / Expression 토글을 Expression으로 바꿔야 {{ }}가 작동합니다.
문의 자동분류 — OpenAI 노드 Message D1-4
실습 1-B · Output Content as JSON 옵션을 반드시 켜세요
아래는 사내 시스템에 접수된 현업 문의입니다.
다음 JSON 형식으로만 답하세요. 설명을 덧붙이지 마세요.
{
"카테고리": "장애|권한요청|단순문의|개선요청 중 하나",
"긴급도": "높음|보통|낮음 중 하나",
"요약": "20자 이내 한 줄 요약",
"담당팀": "인프라|보안|애플리케이션|경영관리 중 하나"
}
판단할 근거가 부족하면 "단순문의","보통"으로 처리하세요.
문의 내용:
제목: {{ $json.Subject }}
본문: {{ $json.snippet }}
프롬프트 해부 — 형식 못 박기 + 선택지 제한 + 애매하면 어떻게 할지 지정
Napkin 색상 맞추기 D1-2
검색창에 그대로 넣으세요
우리금융그룹 CI 코드를 html 컬러코드로 알려줘
n8n 설치 · 설정값
화면에 그대로 옮겨 적는 값들입니다.
설치 명령 D1-3
Node.js LTS 설치 후 터미널에 입력
npx n8n
처음 실행 시 다운로드에 수 분 걸립니다. Editor is now accessible via: http://localhost:5678 메시지가 뜨면 성공입니다.
⚠ 터미널 창을 닫으면 n8n이 꺼집니다. 실습 내내 열어두세요.
Redirect URI — 구글 · 카카오 공통 D1-4
개발자 콘솔에 등록하는 주소
http://localhost:5678/rest/oauth2-credential/callback
⚠ 5678이 아닌 다른 포트로 실행 중이면 이 주소가 맞지 않습니다. 포트를 확인하세요.
카카오 OAuth2 자격증명 설정값 D1-4
Credentials → Add Credential → OAuth2 API
| Name | 카카오톡 나에게 보내기 |
| Grant Type | Authorization Code |
| Authorization URL | https://kauth.kakao.com/oauth/authorize |
| Access Token URL | https://kauth.kakao.com/oauth/token |
| Client ID | REST API 키 |
| Client Secret | 클라이언트 시크릿 코드 |
| Scope | talk_message |
| Authentication | Body |
⚠ 카카오 앱 설정에서 동의항목 → 카카오톡 메시지 전송을 빠뜨리면 −403 Forbidden, 클라이언트 시크릿 「사용함」을 빠뜨리면 KOE010 Bad client credentials가 납니다.
카카오톡 보내기 — HTTP Request 노드 D1-4
IF 노드의 true 출구에 연결
| Method | POST |
| URL | https://kapi.kakao.com/v2/api/talk/memo/default/send |
| Authentication | Generic Credential Type → OAuth2 API → 카카오톡 나에게 보내기 |
| Body Content Type | Form Urlencoded |
| 파라미터 이름 | template_object (Expression 모드) |
template_object 값 D1-4
JSON.stringify로 감싸야 따옴표·줄바꿈에 안 깨집니다
{{ JSON.stringify({ object_type: "text",
text: "🚨 긴급 문의\n\n" + $json.요약 + "\n보낸사람: " + $json.보낸사람 + "\n분류: " + $json.카테고리,
link: { web_url: "https://mail.google.com" } }) }}
⚠ text가 200자를 넘으면 실패합니다. 요약을 짧게 유지하세요.
IF 노드 조건 D1-4
긴급 건만 카톡으로 분기
{{ $json.긴급도 }} is equal to 높음
시트 적재용 필드 6개 D1-4
실습 1-C · Edit Fields 노드
접수일시 ← {{ $now.toISO() }}
보낸사람 ← {{ $('Gmail Trigger').item.json.From }}
제목 ← {{ $('Gmail Trigger').item.json.Subject }}
카테고리 ← {{ $json.output[0].content[0].text['카테고리'] }}
긴급도 ← {{ $json.output[0].content[0].text['긴급도'] }}
요약 ← {{ $json.output[0].content[0].text['요약'] }}
$('노드이름')은 앞앞 노드의 값을 가져올 때 씁니다. OpenAI 노드를 거치며 원본 메일 데이터가 사라졌기 때문입니다.
시트 첫 행 헤더 D1-4
실습 1-D · 탭으로 구분되어 한 번에 붙습니다
접수일시 보낸사람 제목 카테고리 긴급도 요약
텔레그램 봇 만들기 D1-4
텔레그램에서 @BotFather 검색 → 대화 시작
/newbot
표시 이름 → 사용자명 순서로 입력합니다. 사용자명은 영문·숫자·_ 만, 끝은 반드시 bot으로 끝나야 하고 5~32자입니다.
⚠ 토큰을 받은 뒤 내가 만든 봇과 대화를 시작하고 메시지를 하나 보내야 다음 단계가 작동합니다. 빠뜨리면 getUpdates가 {"ok":true,"result":[]}로 비어 나옵니다.
chat.id 확인 주소 D1-4
{내_토큰} 자리에 BotFather가 준 토큰을 넣으세요
https://api.telegram.org/bot{내_토큰}/getUpdates
💡 bot과 토큰 사이에 공백이나 콜론을 넣지 마세요. bot123456:AAF... 처럼 붙여 씁니다.
표현식 · API 주소
노드에 넣는 값입니다.
표현식 치트시트 D1-3
중괄호 두 개면 앞 노드의 값을 가져옵니다
| 앞 노드의 값 | {{ $json.필드명 }} |
| 예시 | {{ $json.담당자 }} |
| 특정 노드 지정 | {{ $('노드이름').item.json.필드명 }} |
| 현재 시각 | {{ $now.toISO() }} |
| 전체를 문자열로 | {{ JSON.stringify($json.data) }} |
| 중첩된 값 | {{ $json.rates.KRW }} |
⚠ 입력창 옆 Fixed / Expression 토글을 Expression으로 바꿔야 작동합니다. 안 바꾸면 {{ }}가 글자 그대로 나옵니다.
연습용 문장 D1-3
실습 2-A · 드래그 매핑 후 앞뒤에 글자 더하기
{{ $json.담당자 }}님, {{ $json.요청일 }} 접수되었습니다
INPUT 패널의 필드를 값 입력창으로 끌어다 놓으면 표현식이 자동으로 써집니다.
환율 조회 D1-3
실습 2-B · HTTP Request, Method: GET
https://api.frankfurter.app/latest?from=USD&to=KRW
뽑아 쓸 필드 — 기준일 {{ $json.date }} · 환율 {{ $json.rates.KRW }}
구글 뉴스 RSS D1-3
실습 3-A · RSS Read 노드
https://news.google.com/rss/search?q=금융+AI&hl=ko&gl=KR&ceid=KR:ko
q= 뒤를 바꾸면 원하는 키워드로 — q=금융보안, q=전자금융감독규정.
RSS에서 뽑아 쓸 필드 D1-3
실습 3-B · Limit(Max Items: 5) 뒤 Edit Fields
제목 ← {{ $json.title }}
링크 ← {{ $json.link }}
날짜 ← {{ $json.pubDate }}
Include Other Input Fields는 끄세요. 이번엔 나머지를 버리는 게 목적입니다.
막히면 여기부터
1일차에서 가장 많이 나오는 순서대로.
| 증상 | 확인할 것 |
|---|---|
| {{ }}가 글자 그대로 나온다 | 입력창 옆 Expression 토글을 안 켰습니다 |
| getUpdates가 {"ok":true,"result":[]} | 내 봇과 대화를 시작하고 메시지를 하나 보내야 합니다 |
| Gmail Trigger에 메일이 1건만 뜬다 | 정상입니다. 수동 실행은 표본 1건만 가져옵니다. Active로 켜면 메일마다 실행됩니다 |
| Gmail Trigger에 아무것도 안 뜬다 | Read Status 기본값이 Unread only입니다. 이미 열어본 메일은 빠집니다 |
| 카카오 −403 Forbidden | 동의항목 → 카카오톡 메시지 전송 체크를 빠뜨렸습니다 |
| 카카오 KOE010 | 앱 키 → 클라이언트 시크릿 「사용함」을 안 켰습니다 |
| 카카오 KOE006 | 카카오 앱에 n8n 콜백 URI가 등록되지 않았습니다 (http·포트까지 정확히) |
| 카카오톡이 안 온다 | template_object의 text가 200자를 넘었는지 확인하세요 |
| n8n이 갑자기 꺼졌다 | 터미널 창을 닫으셨습니다. 다시 npx n8n |
| 시트에 값이 비어 들어간다 | OpenAI 노드의 Output Content as JSON을 안 켰습니다 |
바로 가기 링크
클라우드로 옮기고, 문서를 읽힙니다.
프롬프트
2일차는 AI에게 도구를 쥐어줍니다. 도구를 쓰게 만드는 문장이 핵심입니다.
일정 비서 — AI Agent System Message D2-1
실습 1-B · 도구를 먼저 부르게 만드는 게 핵심
당신은 개인 일정 비서입니다. 반드시 지킬 것: get_calendar_events 도구를 호출하기 전에는 아무것도 쓰지 마세요. 당신은 사용자의 일정을 알지 못합니다. 도구 없이 쓴 답은 전부 틀린 것입니다. 도구가 실제로 0건을 반환한 경우에만 일정이 없다고 답하세요. 도구 결과를 받은 뒤, 카카오톡으로 보낼 짧고 친근한 한국어 요약을 작성하세요. · 한국어 평문만, 마크다운 금지 · 전체 190자 이내 (카카오톡 제한 200자) · 각 일정은 "HH:mm 제목" 한 줄로 · 도구가 반환하지 않은 일정을 절대 지어내지 말 것
⚠ 「일정이 없으면 이렇게 답하라」를 조건 없이 적어두면, 모델이 조회를 건너뛰고 그 문장으로 직행합니다. 빠져나갈 구멍을 주지 마세요.
문서 검색봇 — AI Agent System Message D2-1
실습 2-C · 근거 없는 답을 막는 네 줄
당신은 사내 규정 안내 담당자입니다. 반드시 검색된 문서 내용에만 근거해 답하세요. 문서에 없으면 "규정에서 찾을 수 없습니다"라고 답하고, 추측하지 마세요. 답변 끝에 근거가 된 규정 이름을 표시하세요.
Vector Store Tool — Description D2-1
AI가 이걸 보고 도구를 쓸지 말지 정합니다
회사의 복무규정, 경비처리 지침, 정보보안 수칙을 검색합니다. 사내 규정이나 절차에 관한 질문이면 반드시 이 도구를 사용하세요.
설명이 부실하면 AI가 도구를 아예 안 씁니다. 언제 쓰는지를 구체적으로 쓰세요.
프롬프트 튜닝 — After 예시 D2-2
실습 1-A · 3문장 · 근거 표시 · 추측 금지
당신은 사내 규정 안내 담당자입니다. 반드시 검색된 문서 내용에만 근거해 답하세요. 답변은 3문장 이내로, 끝에 근거가 된 규정 이름을 [ ] 안에 표시하세요. 문서에서 찾을 수 없으면 "규정에서 찾을 수 없습니다"라고만 답하고, 일반 상식으로 추측하지 마세요.
확신도 표시 — 조건분기용 D2-2
확신 없으면 사람에게 넘기기 위한 장치
답변과 함께 confidence 를 "높음" 또는 "낮음"으로 표시하세요. 검색된 문서에 명확한 근거가 있으면 "높음", 애매하면 "낮음"입니다.
IF 분기 — {{ $json.confidence }} 가 높음이면 자동 회신, 낮음이면 담당자 승인으로
승인 요청 메일 본문 D2-2
실습 2-B · Gmail(Send Message)
AI가 작성한 답변 초안입니다.
{{ $json.output }}
승인: {{ $execution.resumeUrl }}&action=approve
반려: {{ $execution.resumeUrl }}&action=reject
⚠ resumeUrl에는 이미 ?signature=가 붙어 있습니다. 뒤에 &가 아니라 ?를 쓰면 Invalid token이 납니다.
과제 정의서 워크시트 D2-3
실습 · 한 문장으로 못 쓰면 아직 안 정해진 것
【우리 팀 과제 정의서】 1. 한 문장 정의 ______가 발생하면, AI가 ______해서, ______로 보낸다. 2. 지금은 어떻게 하고 있나 (사람이 하는 단계를 순서대로) ① ______ ② ______ ③ ______ 3. 얼마나 자주 / 한 번에 몇 분 주 ___회 · 회당 ___분 → 월 ___시간
n8n 설정값
RAG · 승인 · 대화형 비서 설정입니다.
Railway 리다이렉트 URI D2-0
실습 2-C · 어제와 다릅니다 — localhost가 아닙니다
https://내-Railway-주소.up.railway.app/rest/oauth2-credential/callback
⚠ 클라우드로 옮기면 자격증명을 다시 등록해야 합니다. 구글 콘솔의 승인된 리디렉션 URI에도 이 주소를 추가하세요.
청킹 설정 D2-1
실습 2-B · Default Data Loader 하위
| Text Splitter | Recursive Character Text Splitter |
| Chunk Size | 800 |
| Chunk Overlap | 100 |
자르는 방식이 검색 품질의 절반입니다. ChunkViz에서 눈으로 확인해보세요.
Memory Key — 적재와 질의가 같아야 합니다 D2-1
실습 2-B / 2-C · Simple Vector Store
sanae-docs
⚠ 적재 워크플로우와 질의 워크플로우의 Memory Key가 한 글자라도 다르면 검색 결과가 0건으로 나옵니다. 답이 안 나올 때 가장 먼저 확인할 곳입니다.
Google Calendar Tool D2-1
실습 1-B · AI Agent의 Tool 연결점
| Operation | Get Many ← 기본값 Create 아님 |
| Time Min | {{ $now.setZone('Asia/Seoul').startOf('day').toISO() }} |
| Time Max | {{ $now.setZone('Asia/Seoul').endOf('day').toISO() }} |
⚠ 기본값이 Create(일정 생성)입니다. 반드시 Get Many로 바꾸세요. 그리고 워크플로우 Settings → Timezone을 Asia/Seoul로 지정하지 않으면 하루가 어긋납니다.
일정 비서 — template_object D2-1
실습 1-D · 카톡으로 보내기
{{ JSON.stringify({
object_type: "text",
text: $json.output,
link: { web_url: "https://calendar.google.com",
mobile_web_url: "https://calendar.google.com" }
}) }}
메일 질의응답으로 바꾸기 D2-2
실습 2-A · 입구와 출구만 바꿉니다
| Gmail Trigger — Search | 규정문의 -subject:승인요청 -subject:답변 |
| AI Agent — Prompt | {{ $json.snippet }} |
| Simple Memory — Session ID | Define below |
| Simple Memory — Session Key | {{ $('Gmail Trigger').item.json.threadId }} |
| Gmail 회신 — To | {{ $('Gmail Trigger').item.json.from }} |
| Gmail 회신 — Message | {{ $json.output }} |
⚠ 제외어 -subject:승인요청 -subject:답변을 빼면 자기가 보낸 메일이 자기를 다시 깨워 무한 루프가 됩니다. Session Key를 안 바꾸면 No session ID found가 납니다.
승인 절차 — Wait / IF D2-2
실습 2-B
| Wait — Resume | On Webhook Call |
| Wait — HTTP Method | GET |
| Wait — Limit Wait Time | 켜기 · 1 hours (실무는 24~48시간) |
| IF — 조건 | {{ $json.query.action }} is equal to approve |
⚠ Limit Wait Time을 안 켜면 승인하지 않은 실행이 영원히 멈춰 있습니다. 그리고 Wait 노드는 재개 URL이 공개 주소여야 하므로 클라우드 n8n에서만 동작합니다.
텔레그램 대화형 비서 D2-2
실습 3 · 대화로 일정을 넣습니다
| AI Agent — Prompt | {{ $json.message.text }} |
| Session Key | {{ $('On Telegram Message').item.json.message.chat.id }} |
| Context Window | 10 |
| Tool 1 | get_calendar_events — Operation Get Many |
| Tool 2 | create_calendar_event — Operation Create |
| Telegram 발송 — Chat ID | {{ $('On Telegram Message').item.json.message.chat.id }} |
| Telegram 발송 — Text | {{ $json.output }} |
⚠ Telegram Trigger는 공개 HTTPS 주소가 필요합니다. 로컬 n8n에서는 동작하지 않습니다.
막히면 여기부터
2일차 트러블은 대부분 이 열 가지입니다.
| 증상 | 확인할 것 |
|---|---|
| 검색봇이 아무것도 못 찾는다 | 적재와 질의의 Memory Key가 다릅니다. 가장 흔한 원인입니다 |
| AI가 도구를 안 부른다 | Tool Description이 부실하거나, 시스템 메시지에 빠져나갈 구멍을 열어줬습니다 |
| 일정이 하루 어긋난다 | 워크플로우 Settings → Timezone을 Asia/Seoul로 지정하세요 |
| 캘린더에 일정이 안 들어간다 | Google Calendar 노드의 알려진 시간대 버그입니다. HTTP Request로 API를 직접 호출하세요 |
| No session ID found | Simple Memory의 Session ID가 Chat Trigger 기본값입니다. Define below로 바꾸세요 |
| 승인 링크가 Invalid token | ?action=이 아니라 &action=입니다 |
| 승인요청 메일이 무한히 온다 | 트리거 검색어에 제외어가 없습니다. 자기 메일이 자기를 깨우고 있습니다 |
| Telegram Trigger가 안 붙는다 | 공개 HTTPS 주소가 필요합니다. 로컬에서는 불가합니다 |
| Railway로 옮긴 뒤 구글 로그인 실패 | 리다이렉트 URI가 localhost가 아니라 Railway 주소여야 합니다 |
| 답이 이상하다 — 원인 찾기 | Vector Store Tool의 출력을 먼저 보세요. 거기 정답이 있는데 답이 틀렸다면 프롬프트 문제입니다 |
워크플로우 13종
복사해서 n8n의 Workflows → Import from… → Paste에 붙여 넣거나, 내려받아 파일로 가져오세요. 임포트 후에는 {여기에_…_선택} 자리를 본인 자격증명으로 채워야 합니다.
01_첫워크플로우.json
4개 노드 · 3,094자
내용 보기
{
"name": "[교육] 01 첫 워크플로우",
"nodes": [
{
"parameters": {},
"id": "b8b62622-37f2-45eb-af50-db9f24b65f6e",
"name": "Manual Trigger",
"type": "n8n-nodes-base.manualTrigger",
"typeVersion": 1,
"position": [
64,
224
]
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "caf4037e-085d-4646-b92f-2e6b8e9c9a55",
"name": "담당자",
"type": "string",
"value": "홍길동"
},
{
"id": "2f093499-2b46-4741-80b8-642cde7db7e2",
"name": "부서",
"type": "string",
"value": "경영지원본부"
},
{
"id": "4a0054a1-6b51-4144-8721-80ab961c155a",
"name": "요청일",
"type": "string",
"value": "={{ $now.format('yyyy-MM-dd') }}"
}
]
},
"options": {}
},
"id": "a2f56508-e76c-48fc-82c2-039a128979e9",
"name": "담당자 정보 입력",
"type": "n8n-nodes-base.set",
"typeVersion": 3.3,
"position": [
288,
224
],
"notes": "실습 시 담당자/부서 값을 본인 정보로 바꿔서 입력하세요."
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "0cec2aa1-6336-47c1-a396-1e4dbdb1fd59",
"name": "상태",
"type": "string",
"value": "접수완료"
}
]
},
"includeOtherFields": true,
"options": {}
},
"id": "dca8e7ec-3283-4643-9341-b2e3a797639a",
"name": "상태 추가",
"type": "n8n-nodes-base.set",
"typeVersion": 3.3,
"position": [
512,
224
],
"notes": "교육 중 직접 설정: 'Include Other Input Fields' 옵션이 켜져 있는지 화면에서 확인하세요(버전에 따라 파라미터명이 다를 수 있음)."
},
{
"parameters": {
"content": "## 01. 첫 워크플로우\n\nD1-3 실습 1-A·1-B.\nManual Trigger로 실행 → Edit Fields(Set) 노드 2개를 거치며\n필드가 쌓이는 것을 INPUT/OUTPUT 패널로 확인하는 용도입니다.",
"height": 200,
"width": 740,
"color": 6
},
"id": "25f3eadb-ed13-4d6b-ba8e-c1fa21469cc2",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
-176,
-16
]
}
],
"pinData": {},
"connections": {
"Manual Trigger": {
"main": [
[
{
"node": "담당자 정보 입력",
"type": "main",
"index": 0
}
]
]
},
"담당자 정보 입력": {
"main": [
[
{
"node": "상태 추가",
"type": "main",
"index": 0
}
]
]
}
},
"active": false,
"settings": {
"executionOrder": "v1",
"binaryMode": "separate",
"availableInMCP": false
},
"versionId": "410c589d-5190-4669-bdf0-c48ed70e5fe2",
"meta": {
"instanceId": "809cfd47bbd4c2c80d4b672fecd0bee11a698da4bbc36ce5a16e4e3419a16341"
},
"nodeGroups": [],
"id": "IEJKVoCECyVv3Ula",
"tags": []
}02_환율조회_매핑.json
4개 노드 · 2,569자
내용 보기
{
"name": "[교육] 02 환율조회 매핑",
"nodes": [
{
"parameters": {},
"id": "8c3d0d1a-e05a-4f05-8983-cd0a9098ed1f",
"name": "Manual Trigger",
"type": "n8n-nodes-base.manualTrigger",
"typeVersion": 1,
"position": [
-64,
240
]
},
{
"parameters": {
"url": "https://api.frankfurter.app/latest?from=USD&to=KRW",
"options": {}
},
"id": "963b6704-0eb6-4230-a448-20c9b1d7d3fa",
"name": "환율 조회",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
160,
240
]
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "a2b10001-0003-4001-8001-000000000003",
"name": "기준일",
"type": "string",
"value": "={{ $json.date }}"
},
{
"id": "a2b10001-0004-4001-8001-000000000004",
"name": "환율",
"type": "string",
"value": "={{ $json.rates.KRW }}"
}
]
},
"options": {}
},
"id": "0891e270-2de9-45d0-a511-5c7e933d8e66",
"name": "필요한 값만 추출",
"type": "n8n-nodes-base.set",
"typeVersion": 3.3,
"position": [
384,
240
]
},
{
"parameters": {
"content": "## 02. 환율조회 매핑\n\nD1-3 실습 2-B (슬라이드 26).\nHTTP Request로 공개 환율 API를 호출하고,\nEdit Fields에서 `date`와 `rates.KRW`만 뽑아냅니다.\n\n인증이 필요 없는 공개 API라 그대로 실행됩니다.\n",
"height": 220,
"width": 420,
"color": 6
},
"id": "8597abf8-e1fe-4332-8537-ad7125e38420",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
-304,
-32
]
}
],
"pinData": {},
"connections": {
"Manual Trigger": {
"main": [
[
{
"node": "환율 조회",
"type": "main",
"index": 0
}
]
]
},
"환율 조회": {
"main": [
[
{
"node": "필요한 값만 추출",
"type": "main",
"index": 0
}
]
]
}
},
"active": false,
"settings": {
"executionOrder": "v1",
"binaryMode": "separate",
"availableInMCP": false
},
"versionId": "2e4149f2-9dde-4617-99da-33ca7cd62fda",
"meta": {
"instanceId": "809cfd47bbd4c2c80d4b672fecd0bee11a698da4bbc36ce5a16e4e3419a16341"
},
"nodeGroups": [],
"id": "shPKud2R9yZ7aAvU",
"tags": []
}03_뉴스브리핑.json
7개 노드 · 5,297자
내용 보기
{
"name": "[교육] 03 뉴스 브리핑",
"nodes": [
{
"parameters": {},
"id": "ae502498-7640-4605-8880-e50c91495725",
"name": "Manual Trigger",
"type": "n8n-nodes-base.manualTrigger",
"typeVersion": 1,
"position": [
-64,
192
]
},
{
"parameters": {
"url": "https://news.google.com/rss/search?q=금융+AI&hl=ko&gl=KR&ceid=KR:ko",
"options": {}
},
"id": "e300fa3c-a7dd-4106-8d27-1f3c49747c45",
"name": "RSS Read",
"type": "n8n-nodes-base.rssFeedRead",
"typeVersion": 1.1,
"position": [
176,
192
],
"notes": "교육 중 직접 설정: q= 뒤를 본인 관심 키워드로 바꿔도 됩니다 (예: q=금융보안)."
},
{
"parameters": {
"maxItems": 5
},
"id": "eaba3c99-9666-4e3a-9fbb-1c72cd407db2",
"name": "Limit",
"type": "n8n-nodes-base.limit",
"typeVersion": 1,
"position": [
384,
192
]
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "a3b20001-0004-4001-8001-000000000004",
"name": "제목",
"type": "string",
"value": "={{ $json.title }}"
},
{
"id": "a3b20001-0005-4001-8001-000000000005",
"name": "링크",
"type": "string",
"value": "={{ $json.link }}"
},
{
"id": "a3b20001-0006-4001-8001-000000000006",
"name": "날짜",
"type": "string",
"value": "={{ $json.pubDate }}"
}
]
},
"options": {}
},
"id": "5eceea7c-4ad9-4f35-bc58-3521ec55475c",
"name": "필요한 것만 남기기",
"type": "n8n-nodes-base.set",
"typeVersion": 3.3,
"position": [
608,
192
],
"notes": "Include Other Input Fields는 끕니다 (기본값 꺼짐) — 이번엔 나머지를 버리는 게 목적입니다."
},
{
"parameters": {
"aggregate": "aggregateAllItemData",
"options": {}
},
"id": "185569d6-3f2a-4692-b562-ab93a146e1f1",
"name": "Aggregate",
"type": "n8n-nodes-base.aggregate",
"typeVersion": 1,
"position": [
832,
192
]
},
{
"parameters": {
"modelId": {
"__rl": true,
"value": "gpt-4o-mini",
"mode": "list",
"cachedResultName": "GPT-4O-MINI"
},
"responses": {
"values": [
{
"content": "=아래는 오늘 수집한 금융 관련 뉴스 5건입니다.\n경영진 보고용으로 정리해주세요.\n\n- 전체 흐름을 2문장으로 요약\n- 주목할 기사 3건을 제목과 한 줄 코멘트로\n- 우리 회사에 시사하는 바 1가지\n\n확인되지 않은 내용은 추측하지 말고 '기사에 없음'이라고 쓰세요.\n\n뉴스 데이터:\n{{ JSON.stringify($json.data) }}"
}
]
},
"builtInTools": {},
"options": {}
},
"id": "18b94968-d257-4279-b89f-e7a4360bf9a3",
"name": "OpenAI",
"type": "@n8n/n8n-nodes-langchain.openAi",
"typeVersion": 2.3,
"position": [
1056,
192
],
"credentials": {
"openAiApi": {
"id": "Z3q5XM0oA3qFdKd3",
"name": "OpenAI account 2"
}
},
"notes": "교육 중 직접 설정: (1) Credentials에서 본인의 OpenAI API 자격증명을 선택하세요. (2) Resource=Text, Operation=Message a Model, Model=gpt-4o-mini로 화면에서 확인하세요. Resource/Operation 파라미터 값 문자열은 n8n 버전에 따라 다를 수 있어 확신 없이 입력했습니다."
},
{
"parameters": {
"content": "## 03. 뉴스 브리핑\n\nD1-3 실습 3-A~3-E (슬라이드 31~35).\nRSS Read → Limit(5) → Edit Fields → Aggregate(전체를 1개로 묶기) → OpenAI 순서입니다.\nAggregate가 없으면 OpenAI가 5번(=비용 5배) 호출됩니다.\n\n⚠ OpenAI Credential은 이 파일에 포함되어 있지 않습니다.\nImport 후 반드시 본인 Credential을 선택하세요.",
"height": 260,
"width": 460,
"color": 6
},
"id": "4132573d-a8b9-4e07-83d8-025490aafef7",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
-256,
-80
]
}
],
"pinData":
… (전체는 복사·내려받기로)04_문의접수분류.json
9개 노드 · 12,013자
내용 보기
{
"name": "[교육] 04 문의접수분류",
"nodes": [
{
"parameters": {
"pollTimes": {
"item": [
{
"mode": "everyHour"
}
]
},
"filters": {
"q": "문의"
}
},
"type": "n8n-nodes-base.gmailTrigger",
"typeVersion": 1.4,
"position": [
0,
0
],
"id": "25842f70-845b-4040-8ec1-9524b82ec6ab",
"name": "Gmail Trigger",
"credentials": {
"gmailOAuth2": {
"id": "QaHza6wt00jrdwCi",
"name": "Gmail account"
}
}
},
{
"parameters": {
"modelId": {
"__rl": true,
"value": "gpt-5.4-nano",
"mode": "list",
"cachedResultName": "GPT-5.4-NANO"
},
"responses": {
"values": [
{
"content": "=아래는 사내 시스템에 접수된 현업 문의입니다.\n다음 JSON 형식으로만 답하세요. 설명을 덧붙이지 마세요.\n{\n \"카테고리\": \"장애|권한요청|단순문의|개선요청 중 하나\",\n \"긴급도\": \"높음|보통|낮음 중 하나\",\n \"요약\": \"20자 이내 한 줄 요약\",\n \"담당팀\": \"인프라|보안|애플리케이션|경영관리 중 하나\"\n}\n판단할 근거가 부족하면 \"단순문의\",\"보통\"으로 처리하세요.\n문의 내용:{{ $json.Subject }}\n본문: {{ $json.snippet }}\n"
}
]
},
"builtInTools": {},
"options": {
"textFormat": {
"textOptions": {
"type": "json_object"
}
}
}
},
"type": "@n8n/n8n-nodes-langchain.openAi",
"typeVersion": 2.3,
"position": [
224,
0
],
"id": "6c141841-892c-4925-980e-7d234dce8182",
"name": "Message a model",
"credentials": {
"openAiApi": {
"id": "YSdo4bYrIDH9HEwR",
"name": "OpenAI account"
}
}
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "b5bf780a-9cc7-4c02-9dc7-78025f09959a",
"name": "접수일시",
"value": "={{ $now.toISO() }}",
"type": "string"
},
{
"id": "82773885-b5e4-4525-895a-af10d8dc211b",
"name": "보낸사람",
"value": "={{ $('Gmail Trigger').item.json.From }}",
"type": "string"
},
{
"id": "a4ed3331-b53c-430f-9394-e3c06d350cb3",
"name": "제목",
"value": "={{ $('Gmail Trigger').item.json.Subject }}",
"type": "string"
},
{
"id": "0a41d5ed-d48f-40b2-833f-bb2ab82b071b",
"name": "카테고리",
"value": "={{ ( $json.output?.[0]?.content?.[0]?.text ?? $json.message?.content ?? $json )['카테고리'] }}",
"type": "string"
},
{
"id": "5613fc88-8ffe-4d82-bb68-a7652c17f4da",
"name": "긴급도",
"value": "={{ ( $json.output?.[0]?.content?.[0]?.text ?? $json.message?.content ?? $json )['긴급도'] }}",
"type": "string"
},
{
"id": "f9f0ff0d-341e-4033-9dec-4dfc410dd2d3",
"name": "요약",
"value": "={{ ( $json.output?.[0]?.content?.[0]?.text ?? $json.message?.content ?? $json )['요약'] }}",
"type": "string"
}
]
},
"includeOtherFields": true,
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.5,
"position": [
576,
0
],
"id": "33fd738b-855f-4f3a-8006-40da621466b3",
"name": "Edit Fields"
},
{
"parameters": {
"operation": "append",
"documentId": {
"__rl": true,
"value": "{여기에_본인_시트_선택}",
"mode": "list",
"cachedResultName": "{여기에_본인_시트_선택}"
},
"sheetName": {
"__rl": true,
"value": "{여기에_시트탭_선택}",
"mode": "list",
"cachedResultName": "{여기에_시트탭_선택}"
},
"columns": {
"mappingMode": "d
… (전체는 복사·내려받기로)05_샘플문의_발송훅(선택).json
3개 노드 · 5,998자
내용 보기
{
"name": "05_샘플문의_발송훅",
"nodes": [
{
"parameters": {
"formTitle": "실습용 샘플 문의 메일 받기",
"formDescription": "메일 주소를 넣고 제출하면, 문의 자동분류 실습용 샘플 메일이 그 주소로 바로 발송됩니다. 실제 업무 메일이 아니라 교육용 더미입니다.",
"formFields": {
"values": [
{
"fieldLabel": "받을 이메일 주소",
"fieldType": "email",
"placeholder": "본인 Gmail 주소",
"requiredField": true
},
{
"fieldLabel": "보낼 통수",
"fieldType": "dropdown",
"fieldOptions": {
"values": [
{
"option": "3통 (긴급 1 + 평범 2) — 권장"
},
{
"option": "10통 전부"
}
]
},
"requiredField": true
}
]
},
"options": {
"buttonLabel": "메일 받기",
"path": "sample-inquiry"
}
},
"id": "808bd1b5-e16d-4fe7-aaed-a19d0daaf78d",
"name": "샘플 요청 폼",
"type": "n8n-nodes-base.formTrigger",
"typeVersion": 2.2,
"position": [
-304,
-16
],
"webhookId": "6b534c73-bc84-4621-978e-73e70673fcbb"
},
{
"parameters": {
"jsCode": "// 실습용 샘플 문의 10건 — 전부 창작 더미. 실제 고객/사내 문의 아님.\n// 카테고리: 장애 / 권한요청 / 문의 / 개선요청\n// ★ 표시는 AI 분류가 헷갈리도록 일부러 심어둔 함정\n\nconst SAMPLES = [\n {\n tag: '긴급·장애',\n subject: '[문의] 사내 포털 로그인이 전혀 안 됩니다',\n body: `안녕하세요, 개발2팀 박성호입니다.\\n\\n오늘 아침부터 사내 포털 로그인이 되지 않습니다.\\n비밀번호를 다시 입력해도 \"인증 서버에 연결할 수 없습니다\" 문구만 반복됩니다.\\n같은 팀 4명 모두 동일 증상입니다.\\n\\n결재 상신이 막혀 있어 빠른 확인 부탁드립니다.`\n },\n {\n tag: '긴급·장애',\n subject: '[긴급] 여신 조회 화면이 응답이 없습니다',\n body: `영업점 지원팀입니다.\\n\\n10시 20분경부터 여신 조회 화면에서 조회 버튼을 누르면\\n로딩만 계속되고 결과가 나오지 않습니다.\\n다른 메뉴는 정상입니다.\\n\\n현재 창구에 고객이 대기 중입니다. 즉시 확인 부탁드립니다.`\n },\n {\n tag: '보통·권한요청',\n subject: '[문의] 스테이징 DB 조회 권한 신청드립니다',\n body: `안녕하세요, 채널개발팀 이지원입니다.\\n\\n이번에 배정된 과제 때문에 스테이징 DB 조회 권한이 필요합니다.\\n읽기 전용이면 충분합니다.\\n\\n필요한 절차나 양식이 있으면 알려주세요. 감사합니다.`\n },\n {\n tag: '보통·권한요청',\n subject: '형상관리 저장소 접근 권한 요청',\n body: `플랫폼팀 최민석입니다.\\n\\n차세대 프로젝트 저장소에 접근이 필요한데 권한이 없다고 나옵니다.\\n프로젝트 코드는 NGP-2026 입니다.\\n\\n확인 후 부여 부탁드립니다.`\n },\n {\n tag: '보통·권한요청',\n subject: '[문의] 신규 입사자 VPN 계정 생성 요청',\n body: `인사팀입니다.\\n\\n다음 주 월요일 입사 예정인 신입 2명의 VPN 계정 생성이 필요합니다.\\n입사일 기준으로 사용 가능하도록 준비 부탁드립니다.\\n\\n상세 명단은 별도 공유하겠습니다.`\n },\n {\n tag: '보통·문의',\n subject: '[문의] 야간 배치 수행 결과는 어디서 확인하나요',\n body: `안녕하세요. 운영지원팀 신입입니다.\\n\\n어제 돌린 야간 배치가 정상적으로 끝났는지 확인하고 싶은데\\n어느 화면에서 보는지 모르겠습니다.\\n\\n확인 경로만 알려주시면 감사하겠습니다.`\n },\n {\n tag: '보통·문의 ★긴급인 척',\n subject: '[문의] 급합니다 - 회의실 예약 시스템 사용법',\n body: `급하게 여쭙습니다.\\n\\n회의실 예약 시스템에서 정기 회의를 반복 등록하려면 어떻게 하나요?\\n매주 하나씩 등록하고 있는데 방법이 있을 것 같아서요.\\n\\n바쁘시겠지만 확인 부탁드립니다.`\n },\n {\n tag: '보통·문의',\n subject: '[문의] 테스트 데이터 초기화 주기가 어떻게 되나요',\n body: `테스트팀입니다.\\n\\n개발계 테스트 데이터가 초기화되는 주기를 알고 싶습니다.\\n작업 일정을 잡는 데 참고하려고 합니다.\\n\\n감사합니다.`\n },\n {\n tag: '보통·개선요청',\n subject: '[문의] 알림 메일이 너무 자주 옵니다',\n body: `안녕하세요.\\n\\n모니터링 알림 메일이 5분마다 오다 보니\\n정작 중요한 메일을 놓치게 됩니다.\\n\\n같은 건은 묶어서 하루 한 번만 오게 바꿀 수 있을까요?`\n },\n {\n tag: '애매·개선/문의 ★분류 경계',\n subject: '[문의] 조회 화면이 좀 느린데 원래 이런가요',\n body: `안녕하세요.\\n\\n거래내역 조회가 예전보다 느려진 것 같습니다.\\n안 되는 건 아니고 5초 정도 걸립니다.\\n\\n원래 이 정도인지, 아니면 문제가 있는 건지 궁금합니다.`\n }\n];\n\nconst f = $input.first().json;\nconst to = (f['받을 이메일 주소'] || '').trim();\nconst mode = f['보낼 통수'] || '';\n\nif (!to) {\n throw new Error('받을 이메일 주소가 비어 있습니다.');\n}\n\nlet picked;\nif (mode.startsWith('10')) {\n picked = SAMPLES;\n} else {\n // 긴급 1통 + 평범 2통 — 참석자마다 다른 조합이 되도록 무작위 추출\n const cat = s => s.tag.split('·')[1].split(' ')[0];\n const urgent = SAMPLES.filter(s => s.tag.startsWith('긴급'));\n const normal = SAMPLES.filter(s => !s.tag.startsWith('긴급'));\n const pickOne = a => a[Math.floor(Math.random() * a.length)];\n const n1 = pickOne(normal);\n // 두 번째 평범
… (전체는 복사·내려받기로)06_샘플일정_넣기(선택).json
3개 노드 · 3,873자
내용 보기
{
"name": "06_샘플일정_넣기",
"nodes": [
{
"parameters": {
"formTitle": "실습용 샘플 일정 넣기",
"formDescription": "날짜를 고르고 제출하면 본인 구글 캘린더(기본 캘린더)에 하루치 일정 5건이 들어갑니다. 일정 비서 실습에 쓸 재료입니다.",
"formFields": {
"values": [
{
"fieldLabel": "일정을 넣을 날짜",
"fieldType": "date",
"requiredField": true
}
]
},
"options": {
"buttonLabel": "일정 넣기",
"path": "seed-calendar"
}
},
"id": "c27703ed-12d4-4264-9d79-a8ede7c9e65a",
"name": "날짜 입력 폼",
"type": "n8n-nodes-base.formTrigger",
"typeVersion": 2.2,
"position": [
-512,
16
],
"webhookId": "56ddeeea-3922-4b1f-aecb-4513f8359245"
},
{
"parameters": {
"jsCode": "// 실습용 하루치 일정 5건 — 전부 창작 더미\n//\n// ⚠ 시간대 처리 주의\n// n8n의 Google Calendar 노드는 start/end에 +09:00 오프셋을 넣어도,\n// timeZone 필드를 따로 지정해도 무시하고 인스턴스 시간대(대개 America/New_York)로\n// 일정을 만드는 알려진 버그가 있습니다 (n8n #14411).\n// 그래서 이 워크플로우는 Calendar 노드 대신 HTTP Request로 API를 직접 호출하고,\n// 구글이 정한 정식 형식 — 오프셋 없는 dateTime + timeZone 필드 — 으로 보냅니다.\n\nconst TZ = 'Asia/Seoul';\n\nconst PLAN = [\n { start: '09:00', end: '10:00', title: '팀 미팅', desc: '주간 진행상황 공유' },\n { start: '11:00', end: '12:00', title: '클라이언트 미팅', desc: '요구사항 확인' },\n { start: '12:00', end: '13:30', title: '부서 회식', desc: '' },\n { start: '14:00', end: '16:00', title: 'TF 보고서 작성', desc: '초안 마감' },\n { start: '18:00', end: '19:00', title: '일간 보고서 작성', desc: '' }\n];\n\nconst f = $input.first().json;\nlet day = f['일정을 넣을 날짜'];\n\nif (!day) {\n throw new Error('날짜가 비어 있습니다.');\n}\n// 폼이 ISO 문자열로 줄 수도 있으니 앞 10자(YYYY-MM-DD)만 사용\nday = String(day).slice(0, 10);\nif (!/^\\d{4}-\\d{2}-\\d{2}$/.test(day)) {\n throw new Error('날짜 형식이 올바르지 않습니다: ' + day);\n}\n\nreturn PLAN.map(p => ({\n json: {\n title: p.title,\n body: {\n summary: p.title,\n description: p.desc,\n start: { dateTime: `${day}T${p.start}:00`, timeZone: TZ },\n end: { dateTime: `${day}T${p.end}:00`, timeZone: TZ }\n }\n }\n}));"
},
"id": "9c10cb1d-6e2e-4ba7-8e0d-5e5c2d4927ab",
"name": "일정 5건 만들기",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
-288,
16
]
},
{
"parameters": {
"method": "POST",
"url": "https://www.googleapis.com/calendar/v3/calendars/primary/events",
"authentication": "predefinedCredentialType",
"nodeCredentialType": "googleCalendarOAuth2Api",
"sendBody": true,
"specifyBody": "json",
"jsonBody": "={{ JSON.stringify($json.body) }}",
"options": {}
},
"id": "1c732d8a-581d-4e2e-9970-803e2529b5c4",
"name": "캘린더에 등록",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
-80,
16
],
"credentials": {
"googleCalendarOAuth2Api": {
"id": "XGQTdr1W7Iq3OPW2",
"name": "Google Calendar account"
}
}
}
],
"pinData": {},
"connections": {
"날짜 입력 폼": {
"main": [
[
{
"node": "일정 5건 만들기",
"type": "main",
"index": 0
}
]
]
},
"일정 5건 만들기": {
"main": [
[
{
"node": "캘린더에 등록",
"type": "main",
"index": 0
}
]
]
}
},
"active": false,
"settings": {
"executionOrder": "v1",
"binaryMode": "separate",
"availableInMCP": false,
"timezone": "Asia/Seoul"
},
"versionId": "46a8d783-b0be-47c1-a455-ee6960b91526",
"meta": {
"instanceId": "809cfd47bbd4c2c80d4b672fecd0bee11a698da4bbc36ce5a16e4e3419a16341"
},
"nodeGroups": [],
"id": "RzGdavYqO78LEhHJ",
"tags": []
}07_일정비서.json
6개 노드 · 5,863자
내용 보기
{
"name": "[교육] 07 일정비서",
"nodes": [
{
"parameters": {
"rule": {
"interval": [
{
"triggerAtHour": 8
}
]
}
},
"id": "ea7f8cf9-86f0-4ddb-bff6-9272358e57e4",
"name": "Schedule Trigger",
"type": "n8n-nodes-base.scheduleTrigger",
"typeVersion": 1.2,
"position": [
-448,
448
],
"notes": "교육 중 직접 설정: 만들면서 테스트할 때는 Manual Trigger를 임시로 붙여 테스트하고, 완성 후 이 Schedule Trigger로 되돌려 Publish 하세요."
},
{
"parameters": {
"operation": "getAll",
"calendar": {
"__rl": true,
"value": "{여기에_본인_캘린더_선택}",
"mode": "list",
"cachedResultName": "{여기에_본인_캘린더_선택}"
},
"returnAll": true,
"options": {
"timeMin": "={{ $now.startOf('day') }}",
"timeMax": "={{ $now.endOf('day') }}"
}
},
"id": "4d218682-18ad-477a-8f84-c502894b7e8c",
"name": "Google Calendar",
"type": "n8n-nodes-base.googleCalendar",
"typeVersion": 1.2,
"position": [
-240,
448
],
"credentials": {
"googleCalendarOAuth2Api": {
"id": "XGQTdr1W7Iq3OPW2",
"name": "Google Calendar account"
}
},
"notes": "교육 중 직접 설정: (1) Google Calendar OAuth2 Credential 선택. (2) calendar를 화면 목록에서 본인 기본 캘린더로 선택하세요. Options의 After/Before 필드명은 n8n 버전에 따라 다를 수 있으니 화면에서 확인하세요."
},
{
"parameters": {
"aggregate": "aggregateAllItemData",
"options": {}
},
"id": "8ac6d387-3b5f-40f5-81b3-f07bab8db87c",
"name": "Aggregate",
"type": "n8n-nodes-base.aggregate",
"typeVersion": 1,
"position": [
-16,
448
]
},
{
"parameters": {
"modelId": {
"__rl": true,
"value": "gpt-4o-mini",
"mode": "list",
"cachedResultName": "GPT-4O-MINI"
},
"responses": {
"values": [
{
"content": "=아래는 오늘 내 캘린더 일정입니다.\n카카오톡으로 받을 아침 브리핑을 작성해주세요.\n\n- 첫 줄에 오늘 일정이 몇 건인지\n- 시간 순으로 \"시각 — 일정명\" 형태로 나열\n- 마지막에 준비가 필요해 보이는 것 한 가지\n- 전체 180자 이내, 이모지 최소한으로\n\n일정 데이터:\n{{ JSON.stringify($json.data) }}"
}
]
},
"builtInTools": {},
"options": {}
},
"id": "3a24c053-5971-490a-9452-86440bfcfd41",
"name": "OpenAI",
"type": "@n8n/n8n-nodes-langchain.openAi",
"typeVersion": 2.3,
"position": [
208,
448
],
"credentials": {
"openAiApi": {
"id": "Z3q5XM0oA3qFdKd3",
"name": "OpenAI account 2"
}
},
"notes": "교육 중 직접 설정: OpenAI Credential 선택."
},
{
"parameters": {
"method": "POST",
"url": "https://kapi.kakao.com/v2/api/talk/memo/default/send",
"authentication": "genericCredentialType",
"genericAuthType": "oAuth2Api",
"sendBody": true,
"contentType": "form-urlencoded",
"bodyParameters": {
"parameters": [
{
"name": "template_object",
"value": "={{ JSON.stringify({ object_type: \"text\", text: \"☀️ 오늘의 일정\\n\\n\" + ($json.message?.content ?? $json.content ?? $json.output ?? $json.text ?? \"\"), link: { web_url: \"https://calendar.google.com\", mobile_web_url: \"https://calendar.google.com\" } }) }}"
}
]
},
"options": {}
},
"id": "211b71a3-a3a7-448c-ad90-ea4c6adba19e",
"name": "카카오톡 발송",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
592,
448
],
"credentials": {
"oAuth2Api": {
"id": "yuhso36K7ihfbEXT",
"name": "카카오톡 나에게 보내기"
}
},
"notes": "교육 중 직접 설정: Authentication → Generic Credential Type → OAuth2 API에서 본인의 '카카오톡 나에게 보내기' Credential을 선택하세요. $json.message.content 경로는 OpenAI 노드 OU
… (전체는 복사·내려받기로)08_문서검색봇_적재.json
7개 노드 · 12,347자
내용 보기
{
"name": "[교육] 08 문서검색봇 적재",
"nodes": [
{
"parameters": {},
"id": "92b83ea2-137c-4aaa-935d-046479ec555b",
"name": "Manual Trigger",
"type": "n8n-nodes-base.manualTrigger",
"typeVersion": 1,
"position": [
-336,
544
]
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "a8b70001-0002-4001-8001-000000000002",
"name": "문서명",
"type": "string",
"value": "사내 규정 통합본 (복무및휴가규정/경비처리지침/정보보안기본수칙)"
},
{
"id": "a8b70001-0003-4001-8001-000000000003",
"name": "문서내용",
"type": "string",
"value": "===== [복무 및 휴가 규정 (HR-001)] =====\n\n# (주)미래파이낸셜시스템 — 복무 및 휴가 규정\n\n> **⚠ 교육용 가상 문서입니다.**\n> 실재하지 않는 회사의 창작 규정이며, 실제 법령·사규와 무관합니다.\n> 개인정보는 일절 포함되어 있지 않습니다.\n> 문서번호: HR-001 · 제정 2024.01.01 · **최종 개정 2026.03.02 (3차)**\n\n---\n\n## 제1장 총칙\n\n### 제1조 (목적)\n이 규정은 (주)미래파이낸셜시스템(이하 \"회사\")에 근무하는 임직원의 복무 및 휴가에 관한 사항을 정함을 목적으로 한다.\n\n### 제2조 (적용 범위)\n이 규정은 회사의 모든 정규직 및 계약직 임직원에게 적용한다. 다만 파견 및 도급 인력은 해당 계약에 따른다.\n\n---\n\n## 제2장 근무\n\n### 제3조 (근무시간)\n① 기본 근무시간은 **1일 8시간, 주 40시간**으로 한다.\n② 표준 근무시간은 **09:00부터 18:00까지**이며, 휴게시간은 **12:00부터 13:00까지 1시간**으로 한다.\n\n### 제4조 (유연근무제)\n① 회사는 선택적 근로시간제를 운영한다.\n② 출근 시각은 **08:00부터 10:00 사이**에서 선택할 수 있으며, 선택한 시각에 따라 퇴근 시각이 조정된다.\n③ **의무근무시간(코어타임)은 10:00부터 16:00까지**이며, 이 시간에는 반드시 근무하여야 한다.\n④ 유연근무 신청은 **매월 25일까지 익월분을 신청**하며, 팀장의 승인을 받아야 한다.\n\n### 제5조 (재택근무)\n① 재택근무는 **주 2회까지** 가능하다.\n② 재택근무 희망일 **2영업일 전까지** 팀장의 사전 승인을 받아야 한다.\n③ 재택근무 중에도 코어타임 근무 및 즉시 연락 가능한 상태를 유지하여야 한다.\n④ **신규 입사 후 3개월 이내인 자는 재택근무를 신청할 수 없다.**\n⑤ 정보보안 등급 \"대외비\" 이상 문서를 취급하는 업무는 재택근무 시 수행할 수 없다.\n\n### 제6조 (시간외근무)\n① 시간외근무는 **사전 신청 및 승인**을 원칙으로 한다.\n② 부득이하게 사전 승인을 받지 못한 경우 **익영업일 오전까지 사후 승인**을 받아야 한다.\n③ 월 시간외근무는 **52시간 근로제 범위 내**에서 운영한다.\n\n---\n\n## 제3장 휴가\n\n### 제7조 (연차유급휴가)\n① 연차유급휴가(이하 \"연차\")는 **연간 15일**을 부여한다.\n② 3년 이상 계속 근로한 자에게는 **최초 1년을 초과하는 매 2년마다 1일을 가산**하며, **가산 휴가를 포함한 총 연차는 25일을 한도**로 한다.\n③ 입사 1년 미만인 자는 **1개월 개근 시 1일**의 유급휴가를 부여한다.\n④ **미사용 연차는 익년도로 이월되지 않으며**, 회사는 미사용분에 대해 연차수당을 지급한다.\n⑤ 연차 사용 신청은 **사용일 3영업일 전까지** 그룹웨어를 통해 제출하며, 팀장의 승인으로 확정된다.\n\n### 제8조 (경조사 휴가)\n경조사 휴가는 다음과 같이 부여하며, 휴일을 포함하여 산정한다.\n\n| 구분 | 대상 | 일수 |\n|---|---|---|\n| 결혼 | 본인 | 5일 |\n| 결혼 | 자녀 | 1일 |\n| 출산 | 배우자 | 10일 |\n| 사망 | 배우자, 본인 및 배우자의 부모 | 5일 |\n| 사망 | 본인 및 배우자의 조부모, 형제자매 | 3일 |\n| 사망 | 자녀 | 5일 |\n\n### 제9조 (병가)\n① 업무 외 질병 또는 부상으로 인한 병가는 **연간 60일 이내**로 한다.\n② **3일을 초과하는 병가는 의사의 진단서를 제출**하여야 한다.\n③ 병가 기간 중 최초 30일은 통상임금의 100%, 그 이후는 통상임금의 70%를 지급한다.\n\n### 제10조 (특별휴가)\n① 회사는 **근속 5년마다 리프레시 휴가 5일**을 부여한다.\n② 리프레시 휴가는 **해당 근속연도 내에 사용**하여야 하며 이월되지 않는다.\n\n---\n\n## 제4장 보칙\n\n### 제11조 (규정의 개정)\n이 규정의 개정은 인사위원회의 심의를 거쳐 대표이사의 승인으로 시행한다.\n\n### 제12조 (문의)\n이 규정에 관한 문의는 **경영지원본부 인사팀**으로 한다.\n\n---\n\n**부칙**\n이 규정은 2026년 3월 2일부터 시행한다.\n\n\n===== [경비처리 지침 (FIN-004)] =====\n\n# (주)미래파이낸셜시스템 — 경비처리 지침\n\n> **⚠ 교육용 가상 문서입니다.**\n> 실재하지 않는 회사의 창작 지침이며, 실제 법령·사규와 무관합니다.\n> 개인정보는 일절 포함되어 있지 않습니다.\n> 문서번호: FIN-004 · 제정 2024.02.15 · **최종 개정 2026.01.10 (2차)**\n\n---\n\n## 제1장 총칙\n\n### 제1조 (목적)\n이 지침은 임직원이 업무 수행 과정에서 지출한 경비의 처리 절차와 기준을 정함을 목적으로 한다.\n\n### 제2조 (기본 원칙)\n① 모든 경비는 **업무 관련성이 명확**하여야 한다.\n② 경비는 **증빙 없이 지급하지 않는다.**\n③ 본인이 지출하고 본인이 승인하는 **자기 승인은 금지**한다.\n\n---\n\n## 제2장 경비 청구 절차\n\n### 제3조 (청구 기한)\n① 경비는 **지출일로부터 30일 이내**에 청구하여야 한다.\n② 30일을 초과한 청구는 **본부장의 사유서 승인**이 있는 경우에 한하여 접수한다.\n③ **회계연도 종료일(12월 31일)을 넘긴 전년도 경비는 청구할 수 없다.**\n\n### 제4조 (지급 시기)\n① 경비 청구는 **매월 말일까지 마감**한다.\n② 마감된 경비는 **익월 급여 지급일에 함께 지급**한다.\n\n### 제5조 (증빙 서류)\n① 모든 경비 청구에는 **적격증빙**을 첨부하여야 한다. 적격증빙은 다음과 같다.\n- 세금계산서\n- 신용카드 매출전표 (**법인카드 사용을 원칙**으로 한다)\n- 현금영수증 (지출증빙용)\n\n② 간이영수증은 **건당 3만원 이하**인 경우에 한하여 인정한다.\n③ 증빙 분실 시 **지출결의서와 사유서**를 제출하되, 연간 3회를 초과할 수 없다.\n\n### 제6조 (승인 권한)\n경비 지출의 승인 권한은 금액에 따라 다음과 같다.\n\n| 금액 | 승인권자 |\n|---|---|\n| 10만원 미만 | 팀장 |\n| 10만원 이상 ~ 100만원 미만 | 본부장 |\n| 100만원 이상 ~ 1,000만원 미만 | 경영지원본부장 |\n| 1,000만원 이상 | 대표이사 |\n\n---\n\n## 제3장 항목별 기
… (전체는 복사·내려받기로)09_문서검색봇_질의.json
7개 노드 · 6,311자
내용 보기
{
"name": "[교육] 09 문서검색봇 질의",
"nodes": [
{
"parameters": {
"options": {}
},
"id": "7c77eac2-5ad4-4c28-aab5-7f7dec14673a",
"name": "Chat Trigger",
"type": "@n8n/n8n-nodes-langchain.chatTrigger",
"typeVersion": 1.1,
"position": [
192,
672
],
"webhookId": "8f817177-95e4-4d90-bacb-885be46b1b95",
"notes": "교육 중 직접 설정: 캔버스 하단 'Chat' 버튼으로 테스트합니다. 공개 배포(Publish)는 이 실습 범위 밖입니다."
},
{
"parameters": {
"promptType": "define",
"text": "={{ $json.chatInput }}",
"options": {
"systemMessage": "당신은 사내 규정 안내 담당자입니다.\n반드시 검색된 문서 내용에만 근거해 답하세요.\n문서에 없으면 \"규정에서 찾을 수 없습니다\"라고 답하고, 추측하지 마세요.\n답변 끝에 근거가 된 규정 이름을 표시하세요."
}
},
"id": "9d12b861-88e9-4821-ae0b-560182d6e6be",
"name": "AI Agent",
"type": "@n8n/n8n-nodes-langchain.agent",
"typeVersion": 3.1,
"position": [
432,
672
],
"notes": "교육 중 직접 설정: AI Agent의 typeVersion·세부 옵션 이름은 n8n 버전에 따라 자주 바뀝니다. Import 후 노드를 열어 System Message가 제대로 들어갔는지, 아래 세 서브노드(Model/Memory/Tool)가 정상 연결되어 빨간 경고가 없는지 반드시 확인하세요."
},
{
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini",
"cachedResultName": "gpt-4o-mini",
"cachedResultUrl": ""
},
"options": {}
},
"id": "6b091414-b3a2-4c7d-b65c-0d1e4d7ddca4",
"name": "OpenAI Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"typeVersion": 1.2,
"position": [
352,
880
],
"credentials": {
"openAiApi": {
"id": "YSdo4bYrIDH9HEwR",
"name": "OpenAI account"
}
},
"notes": "교육 중 직접 설정: OpenAI Credential을 선택하세요. 이 파일에는 Credential 값이 담겨 있지 않습니다."
},
{
"parameters": {},
"id": "7581b05a-9ac6-4c34-8f63-c986a35ba6e0",
"name": "Simple Memory",
"type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
"typeVersion": 1.4,
"position": [
544,
880
],
"notes": "기본값(세션당 대화 기억)을 그대로 씁니다. 세션 ID 관련 옵션은 화면에서 기본값을 확인하세요."
},
{
"parameters": {
"mode": "retrieve-as-tool",
"toolName": "sanae_docs_search",
"toolDescription": "회사의 복무규정, 경비처리 지침, 정보보안 수칙을 검색합니다.\n사내 규정이나 절차에 관한 질문이면 반드시 이 도구를 사용하세요.",
"memoryKey": {
"__rl": true,
"mode": "id",
"value": "vector_store_key"
}
},
"id": "91258d82-4bf5-431b-9702-69a7d9ee39c2",
"name": "Simple Vector Store",
"type": "@n8n/n8n-nodes-langchain.vectorStoreInMemory",
"typeVersion": 1.2,
"position": [
752,
880
],
"notes": "구조 수정(검증 완료): 별도의 'Vector Store Tool' 노드 없이 이 노드가 직접 AI Agent의 ai_tool 입력에 연결됩니다. Operation Mode = 'Retrieve Documents (As Tool for AI Agent)' (파라미터값 mode: 'retrieve-as-tool') — n8n-io/n8n 소스코드(packages/@n8n/ai-utilities/.../createVectorStoreNode)로 파라미터명·값을 확정: mode, toolName(버전 1.2 이하에서 필수), toolDescription, topK.\ntypeVersion 1.2 (중요, 8/3 재수정): 실기기 재검증 중 08에서 데이터를 넣고 09에서 조회했는데 결과가 계속 빈 배열로 나오는 문제를 발견 — n8n 소스코드(VectorStoreInMemory.node.ts)를 확인해보니 typeVersion 1.1 이하는 Memory Key가 '워크플로우ID+값'으로 자동 접두되어 워크플로우 간 절대 공유되지 않는 구조였습니다(같은 문자열을 써도 08·09가 서로 다른 저장소를 봄). typeVersion 1.2부터 Memory Key가 리소스로케이터가 되어 여러 워크플로우 간 공유됩니다. Memory Key: vector_store_key — 08번(적재)도 typeVersion 1.2로 맞춰야 합니다."
},
{
"parameters": {
"options": {}
},
"id": "cd73ed85-c24b-455b-be38-34cf69b40499",
"name": "Embeddings OpenAI",
"type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi",
"typeVersion": 1.2,
"position": [
752,
1072
],
"credentials": {
"openAiApi": {
"id": "YSdo4bYrIDH9HEwR",
"name": "OpenAI account"
}
},
"notes": "교육 중 직접 설정: OpenAI Credential을 선택하세요. 이 파일에는 Credential 값이 담겨 있지 않습니다."
},
… (전체는 복사·내려받기로)10_일정비서_카톡푸시_OpenAI.json
5개 노드 · 5,673자
내용 보기
{
"name": "[교육] 10 일정비서 — 카카오톡 아침 푸시 (OpenAI)",
"nodes": [
{
"parameters": {
"rule": {
"interval": [
{
"triggerAtHour": 8
}
]
}
},
"id": "1d1025cd-7bdf-4d92-ba34-0bae61bda444",
"name": "Every Morning 8AM",
"type": "n8n-nodes-base.scheduleTrigger",
"typeVersion": 1.3,
"position": [
752,
272
]
},
{
"parameters": {
"promptType": "define",
"text": "={{ $now.setZone(\"Asia/Seoul\").toFormat(\"yyyy-MM-dd\") }} 오늘 하루의 일정을 get_calendar_events 도구로 조회한 뒤 요약해줘.",
"options": {
"systemMessage": "=You are a personal calendar assistant. The current date and time is {{ $now }} (timezone Asia/Seoul).\n\nMANDATORY FIRST STEP: You MUST call the get_calendar_events tool before writing anything.\nThe tool already searches today in Asia/Seoul — call it with no arguments.\nYou have no knowledge of the user's schedule. Any answer written without calling the tool is wrong.\nDo not guess, and do not claim the calendar is empty unless the tool actually returned zero events.\n\nAfter the tool returns, write a short, friendly Korean summary for a KakaoTalk push message.\n\nRules:\n- Respond in Korean only. Plain text, no markdown.\n- Keep the ENTIRE message under 190 characters (KakaoTalk text template limit is 200).\n- List each event as one line: \"HH:mm 제목\" and include location only if short.\n- Only if the tool returned zero events, reply exactly: \"오늘은 등록된 일정이 없습니다. 좋은 하루 보내세요!\"\n- Never invent events not returned by the tool. Output only the message text, nothing else.",
"enableStreaming": false
}
},
"id": "4a5dc4f1-d9b0-4492-b91d-227e4a290620",
"name": "Summarize Today",
"type": "@n8n/n8n-nodes-langchain.agent",
"typeVersion": 3.1,
"position": [
976,
272
]
},
{
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini",
"cachedResultName": "gpt-4o-mini",
"cachedResultUrl": ""
},
"options": {}
},
"id": "572c1c04-97e4-4b08-baee-b3ff97b954b7",
"name": "OpenAI Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"typeVersion": 1.2,
"position": [
976,
496
],
"credentials": {
"openAiApi": {
"id": "YSdo4bYrIDH9HEwR",
"name": "OpenAI account"
}
}
},
{
"parameters": {
"operation": "getAll",
"calendar": {
"__rl": true,
"value": "{여기에_본인_캘린더_선택}",
"mode": "list",
"cachedResultName": "{여기에_본인_캘린더_선택}"
},
"timeMin": "={{ $now.setZone('Asia/Seoul').startOf('day').toISO() }}",
"timeMax": "={{ $now.setZone('Asia/Seoul').endOf('day').toISO() }}",
"options": {
"orderBy": "startTime"
}
},
"id": "8e1352b6-7914-4bfa-b907-97555afa9f3a",
"name": "get_calendar_events",
"type": "n8n-nodes-base.googleCalendarTool",
"typeVersion": 1.3,
"position": [
1120,
496
],
"credentials": {
"googleCalendarOAuth2Api": {
"id": "XGQTdr1W7Iq3OPW2",
"name": "Google Calendar account"
}
}
},
{
"parameters": {
"method": "POST",
"url": "https://kapi.kakao.com/v2/api/talk/memo/default/send",
"authentication": "genericCredentialType",
"genericAuthType": "oAuth2Api",
"sendBody": true,
"contentType": "form-urlencoded",
"bodyParameters": {
"parameters": [
{
"name": "template_object",
"value": "={{ JSON.stringify({ object_type: \"text\", text: $json.output, link: { web_url: \"https://calendar.google.com\", mobile_web_url: \"https://calendar.google.com\" } }) }}"
}
… (전체는 복사·내려받기로)11_일정비서_텔레그램대화_OpenAI.json
7개 노드 · 7,171자
내용 보기
{
"name": "[교육] 11 일정비서 — 텔레그램 대화형 (OpenAI)",
"nodes": [
{
"parameters": {
"updates": [
"message"
],
"additionalFields": {}
},
"id": "98338524-694d-4d9e-915b-4ed0636be5bb",
"name": "On Telegram Message",
"type": "n8n-nodes-base.telegramTrigger",
"typeVersion": 1.4,
"position": [
-384,
32
],
"webhookId": "bc1373d0-741b-4a29-b6ce-6f77a25f4f3d",
"credentials": {
"telegramApi": {
"id": "5WR2y6CCOMZNeBsI",
"name": "Telegram account"
}
}
},
{
"parameters": {
"promptType": "define",
"text": "={{ $json.message.text }}",
"options": {
"systemMessage": "=You are a personal calendar assistant. The current date and time is {{ $now }} (timezone Asia/Seoul).\n\nMANDATORY FIRST STEP: You MUST call the get_calendar_events tool before writing anything.\nPass timeMin = start of today and timeMax = end of today in Asia/Seoul.\nYou have no knowledge of the user's schedule. Any answer written without calling the tool is wrong.\nDo not guess, and do not claim the calendar is empty unless the tool actually returned zero events.\n\nAfter the tool returns, write a short, friendly Korean summary for a KakaoTalk push message.\n\nRules:\n- Respond in Korean only. Plain text, no markdown.\n- Keep the ENTIRE message under 190 characters (KakaoTalk text template limit is 200).\n- List each event as one line: \"HH:mm 제목\" and include location only if short.\n- Only if the tool returned zero events, reply exactly: \"오늘은 등록된 일정이 없습니다. 좋은 하루 보내세요!\"\n- Never invent events not returned by the tool. Output only the message text, nothing else.",
"enableStreaming": false
}
},
"id": "3deaa217-33f7-4e26-bc38-4547722a185d",
"name": "Calendar Assistant",
"type": "@n8n/n8n-nodes-langchain.agent",
"typeVersion": 3.1,
"position": [
-32,
80
]
},
{
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini",
"cachedResultName": "gpt-4o-mini",
"cachedResultUrl": ""
},
"options": {}
},
"id": "f747a181-00cc-4c29-823e-071d0ca94cd9",
"name": "OpenAI Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"typeVersion": 1.2,
"position": [
-160,
304
],
"credentials": {
"openAiApi": {
"id": "YSdo4bYrIDH9HEwR",
"name": "OpenAI account"
}
}
},
{
"parameters": {
"sessionIdType": "customKey",
"sessionKey": "={{ $('On Telegram Message').item.json.message.chat.id }}",
"contextWindowLength": 10
},
"id": "56a8a0cb-8a45-4ab4-9110-bf1282466176",
"name": "Conversation Memory",
"type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
"typeVersion": 1.4,
"position": [
-32,
304
]
},
{
"parameters": {
"operation": "getAll",
"calendar": {
"__rl": true,
"value": "{여기에_본인_캘린더_선택}",
"mode": "list",
"cachedResultName": "{여기에_본인_캘린더_선택}"
},
"options": {}
},
"id": "219c7301-af0b-4321-bec8-1bad1fde87b5",
"name": "get_calendar_events",
"type": "n8n-nodes-base.googleCalendarTool",
"typeVersion": 1.3,
"position": [
96,
304
],
"credentials": {
"googleCalendarOAuth2Api": {
"id": "XGQTdr1W7Iq3OPW2",
"name": "Google Calendar account"
}
}
},
{
"parameters": {
"calendar": {
"__rl": true,
"value": "{여기에_본인_캘린더_선택}",
"mode": "list",
"cachedResultName": "{여기에_본인_캘린더_선택}"
},
"start": "={{ $fromAI('start', 'Event start time as ISO 8601 date-time in Asia/Seoul', 'strin
… (전체는 복사·내려받기로)12_웹훅_문의체험.json
6개 노드 · 9,814자
내용 보기
{
"name": "[교육] 12 웹훅 문의체험",
"nodes": [
{
"parameters": {
"path": "inquiry",
"responseMode": "responseNode",
"options": {}
},
"type": "n8n-nodes-base.webhook",
"typeVersion": 2,
"position": [
0,
320
],
"id": "28d70dca-c4f5-4745-bba3-05084b46fe57",
"name": "Webhook",
"webhookId": "8c458d09-e7bf-4b32-9dbd-12518acd098e"
},
{
"parameters": {
"modelId": {
"__rl": true,
"value": "gpt-5.4-nano",
"mode": "list"
},
"responses": {
"values": [
{
"content": "=아래는 사내 시스템에 접수된 현업 문의입니다.\n다음 JSON 형식으로만 답하세요. 설명을 덧붙이지 마세요.\n{\n \"카테고리\": \"장애|권한요청|단순문의|개선요청 중 하나\",\n \"긴급도\": \"높음|보통|낮음 중 하나\",\n \"요약\": \"20자 이내 한 줄 요약\",\n \"담당팀\": \"인프라|보안|애플리케이션|경영관리 중 하나\"\n}\n판단할 근거가 부족하면 \"단순문의\",\"보통\"으로 처리하세요.\n문의 내용: {{ $json.query.q }}\n"
}
]
},
"builtInTools": {},
"options": {
"textFormat": {
"textOptions": {
"type": "json_object"
}
}
}
},
"type": "@n8n/n8n-nodes-langchain.openAi",
"typeVersion": 2.3,
"position": [
224,
320
],
"id": "a1636bf0-2cd8-4aa3-933a-ab02baf4372f",
"name": "OpenAI 분류",
"credentials": {
"openAiApi": {
"id": "YSdo4bYrIDH9HEwR",
"name": "OpenAI account"
}
}
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "312d58cb-fd23-4e0f-b32c-695e11f61e6f",
"name": "접수일시",
"value": "={{ $now.toISO() }}",
"type": "string"
},
{
"id": "09d3502e-eaac-4f5f-ae89-1b80b2c58a82",
"name": "질문",
"value": "={{ $('Webhook').item.json.query.q }}",
"type": "string"
},
{
"id": "1c0bbeb2-f7d4-4faa-840a-1c1bb6b68fc0",
"name": "카테고리",
"value": "={{ ( $json.output?.[0]?.content?.[0]?.text ?? $json.message?.content ?? $json )['카테고리'] }}",
"type": "string"
},
{
"id": "3159aa53-c9b5-49d7-bbec-22073e15d4e8",
"name": "긴급도",
"value": "={{ ( $json.output?.[0]?.content?.[0]?.text ?? $json.message?.content ?? $json )['긴급도'] }}",
"type": "string"
},
{
"id": "33fca12d-a13a-4f7a-8dfa-564341aedb95",
"name": "요약",
"value": "={{ ( $json.output?.[0]?.content?.[0]?.text ?? $json.message?.content ?? $json )['요약'] }}",
"type": "string"
},
{
"id": "73e4eb72-ab9e-4e48-8056-f29416e7d551",
"name": "담당팀",
"value": "={{ ( $json.output?.[0]?.content?.[0]?.text ?? $json.message?.content ?? $json )['담당팀'] }}",
"type": "string"
}
]
},
"includeOtherFields": true,
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.5,
"position": [
592,
320
],
"id": "ba239649-2bf5-402c-92d9-c25d7a6dfc15",
"name": "Edit Fields"
},
{
"parameters": {
"operation": "append",
"documentId": {
"__rl": true,
"value": "110vrTXuGzgFUJ43SqCEwWbXrUZmtHInlYb-UOhEVWfE",
"mode": "list",
"cachedResultName": "FIS-AI-N8N",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/110vrTXuGzgFUJ43SqCEwWbXrUZmtHInlYb-UOhEVWfE/edit?usp=drivesdk"
},
"sheetName": {
"__rl": true,
"value": "gid=0",
"mode": "list",
"cachedResultName": "Sheet1",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/110vrTXuGzgFUJ43SqCEwWbXrUZmtHInlYb-UOhEVWfE/edit
… (전체는 복사·내려받기로)13_질의응답봇_승인.json
13개 노드 · 12,070자
내용 보기
{
"name": "[교육] 13 질의응답봇 승인",
"nodes": [
{
"parameters": {
"pollTimes": {
"item": [
{
"mode": "everyMinute"
}
]
},
"filters": {
"q": "규정문의 -subject:승인요청 -subject:답변",
"readStatus": "unread"
}
},
"type": "n8n-nodes-base.gmailTrigger",
"typeVersion": 1.4,
"position": [
-656,
1280
],
"id": "236a7c7f-3878-4f34-a72b-6a30990e960c",
"name": "Gmail Trigger",
"credentials": {
"gmailOAuth2": {
"id": "{여기에_본인_Gmail_자격증명_선택}",
"name": "Gmail account"
}
}
},
{
"parameters": {
"promptType": "define",
"text": "={{ $json.snippet }}",
"options": {
"systemMessage": "=당신은 사내 규정 안내 담당자입니다.\n반드시 검색된 문서 내용에만 근거해 답하세요.\n문서에 없으면 \"규정에서 찾을 수 없습니다\"라고 답하고, 추측하지 마세요.\n답변 끝에 근거가 된 규정 이름을 표시하세요.\n\n추가로, 답변 마지막 줄에 반드시 다음 형식의 한 줄을 추가하세요: confidence: 높음 또는 confidence: 낮음\n검색된 문서에 명확한 근거가 있으면 \"높음\", 애매하면 \"낮음\"으로 표시하세요.",
"enableStreaming": false
}
},
"type": "@n8n/n8n-nodes-langchain.agent",
"typeVersion": 3.1,
"position": [
-432,
1280
],
"id": "ae0b730e-366d-4ec5-b323-8fd23a5fe325",
"name": "AI Agent"
},
{
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini",
"cachedResultName": "gpt-4o-mini",
"cachedResultUrl": ""
},
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"typeVersion": 1.2,
"position": [
-528,
1504
],
"id": "2c6f2488-1023-4970-ad38-c360921ee9ef",
"name": "OpenAI Chat Model",
"credentials": {
"openAiApi": {
"id": "{여기에_본인_OpenAI_자격증명_선택}",
"name": "OpenAI account"
}
}
},
{
"parameters": {
"sessionIdType": "customKey",
"sessionKey": "={{ $('Gmail Trigger').item.json.threadId }}"
},
"type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
"typeVersion": 1.4,
"position": [
-336,
1504
],
"id": "0bc8a434-0b59-406f-a855-62918952ca5a",
"name": "Simple Memory"
},
{
"parameters": {
"mode": "retrieve-as-tool",
"toolName": "sanae_docs_search",
"toolDescription": "회사의 복무규정, 경비처리 지침, 정보보안 수칙을 검색합니다.\n사내 규정이나 절차에 관한 질문이면 반드시 이 도구를 사용하세요.",
"memoryKey": {
"__rl": true,
"mode": "id",
"value": "vector_store_key"
}
},
"type": "@n8n/n8n-nodes-langchain.vectorStoreInMemory",
"typeVersion": 1.2,
"position": [
-128,
1504
],
"id": "d06dde93-1c89-41b8-b81f-a90053d4efb1",
"name": "Simple Vector Store"
},
{
"parameters": {
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi",
"typeVersion": 1.2,
"position": [
-128,
1696
],
"id": "9e2c311d-d85c-4175-a9aa-a7f4105db91e",
"name": "Embeddings OpenAI",
"credentials": {
"openAiApi": {
"id": "{여기에_본인_OpenAI_자격증명_선택}",
"name": "OpenAI account"
}
}
},
{
"parameters": {
"sendTo": "{여기에_본인_이메일}",
"subject": "=[승인요청] 규정 문의 답변 초안 · {{ $('Gmail Trigger').item.json.From }}",
"emailType": "text",
"message": "=AI가 작성한 답변 초안입니다.\n\n{{ $json.output }}\n\n승인: {{ $execution.resumeUrl }}{{ $execution.resumeUrl.includes('?') ? '&' : '?' }}action=approve\n반려: {{ $execution.resumeUrl }}{{ $execution.resumeUrl.includes('?') ? '&' : '?' }}action=reject",
"options": {}
},
"type": "n8n-nodes-base.gmail",
"typeVersion": 2.1,
"position": [
-144,
1280
],
"id": "7a687a48-bd48-466e-9388-1964cbd3b638",
… (전체는 복사·내려받기로)실습용 문서 10종
검색봇에 적재하고, 프롬프트 실습에 첨부하는 파일입니다. 전부 창작 더미이며 실제 사내 문서가 아닙니다.
1일차/1_visual selection.png
69,152 바이트 · 원본 폴더에서 여세요
1일차/2-A. 260618[별첨2-2] 금융분야 인공지능 가이드라인.pdf
1,129,780 바이트 · 원본 폴더에서 여세요
1일차/2-A. [별첨] 금융분야 망분리 규제 개선 로드맵_FF.pdf
1,629,468 바이트 · 원본 폴더에서 여세요
1일차/2-A. _AI도입_검토_기획안.md
6,511자
내용 보기
# (주)미래파이낸셜시스템 — 생성형 AI 도입 검토 기획안 > **⚠ 교육용 가상 문서입니다.** > 실재하지 않는 회사의 창작 기획안이며, 실제 법령·사규와 무관합니다. > 개인정보는 일절 포함되어 있지 않습니다. > 문서번호: **PLN-2026-014** · 작성일 **2026.05.11** · 작성부서: **디지털혁신팀** · 문서등급: **대외비** · 배포: 경영위원회 위원 및 관련 부서장 --- ## 0. 문서 개요 | 항목 | 내용 | |---|---| | 제목 | 생성형 AI 도입 검토 기획안 (1차) | | 문서번호 | PLN-2026-014 | | 작성일 | 2026년 5월 11일 | | 작성부서 | 디지털혁신팀 | | 보고대상 | 경영위원회 | | 문서등급 | 대외비 | | 관련 부서 | 정보시스템본부, 경영지원본부, 고객지원팀, 상품기획팀, 마케팅팀 | | 개정 이력 | 초안(2026.4.28) → 부서 의견수렴 반영 1차(본 문서, 2026.5.11) | 본 기획안은 사내 업무 생산성 제고를 위한 생성형 AI 파일럿 도입 방향을 제시하기 위해 작성되었다. 세부 계약·구축 방식은 경영위원회 승인 이후 별도 실행계획으로 구체화한다. --- ## 1. 추진 배경 가. 최근 금융권 전반에서 생성형 AI를 활용한 업무 효율화 사례가 빠르게 확산되고 있으며, 문서 작성·요약·정보 검색 등 반복성 높은 업무 영역에서 뚜렷한 생산성 개선 효과가 보고되고 있다. 동종 업계 일부 회사는 이미 사내 문의응대·문서요약 영역에 생성형 AI를 시범 적용하여 처리 시간을 단축한 것으로 알려져 있다. 나. 당사는 2025년 하반기 디지털혁신팀 신설 이후 사내 업무 프로세스 개선 과제를 지속적으로 발굴해왔으며, 그 일환으로 생성형 AI 도입 가능성을 검토할 필요가 제기되었다. 2026년 1분기 경영전략회의에서도 "반복 업무의 자동화·효율화"가 핵심 과제 중 하나로 논의된 바 있다. 다. 아울러 금융당국이 금융회사의 클라우드 및 생성형 AI 활용 여건을 지속적으로 개선해오고 있어, 규제 환경 측면에서도 도입을 검토하기에 우호적인 시점으로 판단된다. (규제 환경 세부 내용은 3장 참조) 라. 이에 디지털혁신팀은 전사 확산에 앞서 제한된 범위의 파일럿 과제를 통해 효과성과 리스크를 사전 검증하고자 본 기획안을 수립하였다. 파일럿 결과는 2026년 4분기 경영위원회 최종 보고를 거쳐 확산 여부를 결정한다. --- ## 2. 현황 및 문제점 ### 2.1 현황 - 사내 각 부서는 규정·매뉴얼 확인, 회의록 정리, 고객 문의 응대 등에서 상당한 시간을 반복 업무에 투입하고 있는 것으로 파악된다. - 디지털혁신팀이 2026년 1분기 실시한 부서별 인터뷰(8개 부서, 22명 대상)에 따르면, 응답자의 상당수가 "동일한 내용을 매번 다시 찾아보거나 정리하는 데 시간이 많이 든다"고 답하였다. - 부서별 자가 응답 기준 반복 업무 체감 비중은 아래와 같다(추정치, 인터뷰 기반). | 부서 | 주요 반복업무 | 주간 체감 소요시간(추정) | |---|---|---| | 고객지원팀 | 문의 메일 분류·응대 | 팀 전체 약 40시간 | | 경영지원본부 | 규정 문의 대응, 문서 정리 | 팀 전체 약 12시간 | | 상품기획팀 | 회의록 정리, 자료 취합 | 팀 전체 약 10시간 | | 마케팅팀 | 회의록 정리, 보고서 초안 작성 | 팀 전체 약 9시간 | - 현재 사내에는 생성형 AI 관련 공식 도입 사례가 없으며, 일부 임직원이 개인 계정으로 외부 AI 서비스를 업무에 참고 용도로 사용하는 것으로 추정되나 공식적으로 파악·관리되고 있지는 않다. ### 2.2 문제점 | 구분 | 내용 | |---|---| | 정보 접근성 | 사내 규정·지침이 여러 문서에 분산되어 있어 필요한 내용을 찾는 데 시간이 소요됨 | | 반복 업무 | 회의록 작성, 문의 메일 응대 등 정형화된 업무에 담당자의 시간이 과도하게 투입됨 | | 비공식 사용 | 임직원의 개인 계정 기반 외부 AI 서비스 사용이 산발적으로 발생하나 관리 범위 밖에 있음 | | 대응 지연 | 공식 도입 방안이 없어 현업 부서의 자체적 요청에 개별 대응하는 상황이 반복됨 | | 응대 적체 | 고객지원팀의 경우 문의량 증가 추세 대비 인력 충원이 어려워 응대 지연 사례가 늘고 있음 | --- ## 3. 규제 환경 검토 ### 3.1 검토 기준 본 검토는 **2026년 5월 현재 시행 중인 「금융분야 인공지능(AI) 가이드라인」**의 원칙 가운데 파일럿 과제와 직접 관련된 **합법성**, **보안성** 원칙을 중심으로 수행하였다. 아울러 금융위원회가 추진해 온 망분리 규제 완화 흐름과 사내 「정보보안 기본수칙」(SEC-002)을 함께 검토하였다. ### 3.2 망분리 규제 완화 및 시사점 금융위원회는 「금융분야 망분리 개선 로드맵」에 따라 단계적으로 금융회사의 클라우드·생성형 AI 활용 여건을 개선해왔으며, **2026.4.20 전자금융감독규정 시행세칙 개정을 통해 망분리 규제가 전면적으로 완화됨**에 따라 외부 생성형 AI 서비스를 사내망 제약 없이 자유롭게 이용할 수 있는 환경이 마련되었다. 이는 그간 사내망 분리로 인해 제약되어 왔던 외부 AI 서비스 활용의 걸림돌이 상당 부분 해소되었음을 의미하며, 본 기획안이 제안하는 파일럿 과제 전반(4장)의 추진 근거가 된다. 특히 문서 작성·요약·자료 정리 등 내부 업무 전반에 걸쳐 외부 AI 서비스를 활용할 수 있는 여지가 넓어진 것으로 판단된다. ### 3.3 준수 원칙 검토 「금융분야 인공지능(AI) 가이드라인」 및 사내 「정보보안 기본수칙」(SEC-002)에 근거하여, 파일럿 추진 시 아래 원칙을 준수한다. | 원칙 | 검토 내용 | 근거 | |---|---|---| | 합법성 | 금융 관련 법규 및 사내 규정 준수를 전제로 서비스를 선정한다. 정보보호팀이 사전 승인한 서비스만 업무에 사용한다. | 「금융분야 AI 가이드라인」 합법성 원칙, SEC-002 제9조 | | 보안성 | 생성형 AI에 입력해서는 안 되는 정보 범위를 사내 기준에 따라 준수한다. (개인식별정보, 고유식별정보, 금융거래정보, 개인신용정보, 대외비 이상 문서, 자격증명 등) | 「금융분야 AI 가이드라인」 보안성 원칙, SEC-002 제10조 | 파일럿 과제 선정 시에도 위 두 원칙을 반영하여 서비스 승인 절차 및 입력 정보 범위를 관리한다. ### 3.4 소결 이상의 검토 결과, 현재의 규제 환경은 생성형 AI 도입에 우호적이며, 사내 정보보안 기준을 준수하는 범위 내에서 파일럿 과제를 추진하는 데 규제상 제약은 크지 않은 것으로 판단된다. --- ## 4. 도입 방안 — 파일럿 과제 3종 ### 4.1 과제 개요 | 과제 | 대상 업무 | 활용 방식 | 참여 부서 | |---|---|---|---| | 과제 1 | 사내 규정·지침 질의응답 챗봇 | 사내 문서 업로드 기반 AI 챗봇 구축 | 디지털혁신팀, 경영지원본부 | | 과제 2 | 회의록 자동 요약 및 초안 작성 | 회의 녹취/메모를 AI로 요약 | 디지털혁신팀, 전 부서(시범 3개 부서) | | 과제 3 | 고객 문의 메일 자동 분류·요약 | 접수 메일을 AI로 분류·요약하여 상담 담당자에게 전달 | 고객지원팀 | ### 4.2 서비스 후보 비교 (참고) 디지털혁신팀이 사전 조사한 서비스 후보는 아래와 같으며, 최종 선정은 정보보호팀 사전 승인 및 경영위원회 확정 이후 진행한다. | 구분 | 후보 A | 후보 B | 후보 C | |---|---|---|---| | 특징 | 문서 요약·챗봇 특화, 국내 리전 제공 | 범용 대화형 AI, 협업툴 연동 우수 | 이메일 분류·요약 특화 솔루션 | | 월 라이선스(1인 기준) | 약 3.5만원 | 약 3만원 | 약 4만원(콜당 과금 혼합) | | 한국어 지원 | 우수 | 우수 | 보통 | | 예상 적용 과제 | 과제 1 | 과제 2 | 과제 3 | ### 4.3 과제 1: 사내 규정·지침 질의응답 챗봇 - **목적**: 복무·경비·보안 등 사내 규정을 임직원이 손쉽게 찾아볼 수 있도록 AI 챗봇 형태로 제공 … (전체는 복사·내려받기로)
1일차/2-A. 국내 시중은행 생성형 AI·에이전트 도입 현황 대조표.md
6,692자
내용 보기
# 국내 주요 시중은행 생성형 AI 및 AI 에이전트 도입 현황 대조표 > 기준 시점: 2026년 8월 | 기준축: 우리은행 > 출처는 각 셀의 핵심 내용 옆 인라인 링크로 표기. "예정/목표" 표기는 계획 단계임을 나타냄. --- ## 종합 대조표 | 비교 항목 | 우리은행 (기준축) | 신한은행 | KB국민은행 | 하나은행 | NH농협은행 | |---|---|---|---|---|---| | **① 생성형 AI·에이전트 도입 현황** | Gen-AI 플랫폼 도입(2025.8, 하이브리드 클라우드) ([IT조선](https://it.chosun.com/news/articleView.html?idxno=2023092146563)); 삼성SDS 패브릭스(FabriX) 기반 5대 영역·29개 핵심업무·**175개 이상 AI 에이전트 구축** 착수(2026.5~), 2026.12 1단계 90여개 → 2027.8 완성 목표 ([삼성SDS](https://www.samsungsds.com/kr/news/wr-260407.html)); 2024.4 은행권 최초 생성형 AI 'AI뱅커' 도입 보도 ([데일리한국](https://news.nate.com/view/20241226n12306)) | 자체 LLM 기반 'AI 은행원' 무인 AI 브랜치(창구업무 64개, 2024.11) ([뉴스웨이](https://www.newsway.co.kr/news/view?ud=2025032818305637406)); 챗GPT+RAG '생성형 AI 금융지식 Q&A'(10만건+ 금융지식, 2025.5) ([LG](https://www.lg.co.kr/media/release/28963)); 자산관리 AI 에이전트 전 663개 영업점 확대(2026.2), 연말 은행 170여개·그룹 600개 에이전트 **목표** ([한국경제](https://www.hankyung.com/article/2026020943311)); 자체 플랫폼 개발 에이전트 21종 공개(2026.7) ([전자신문](https://www.etnews.com/20260721000186)) | KB GenAI 포털 오픈(2025.5, 에이전틱 AI, 지주+8개 계열사, No-Code/Low-Code/Pro Developers) ([한국경제](https://www.hankyung.com/article/202505153873P)); 직원용 생성형 AI 상담 챗봇(ML 챗봇+생성형 결합, 2025.7) ([한국경제](https://www.hankyung.com/article/202507134532P)); 3년 내 17개 영역 90여개 → 300여개 에이전트 **목표**; 고객용 AI 상담 에이전트 **2026 하반기 추진** ([전자신문](https://www.etnews.com/20260326000047)) | 자체 생성형 AI **'H-GPT'** 직원용 지식챗봇 전면 적용(2025.6) ([뉴데일리](https://biz.newdaily.co.kr/site/data/html/2025/06/17/2025061700072.html)); 융합기술원-솔트룩스 **금융 특화 AI 파운데이션 모델** 개발(2026.7), 기업여신 심사·내부통제·고객 상담 지원에 전면 도입, 향후 고객용 AI 검색으로 확장 **예정** ([전자신문](https://www.etnews.com/20260708000037)) | 생성형 AI 플랫폼 1단계 오픈(2025.7) — LG CNS DAP GenAI + **EXAONE 3.5 파인튜닝 전용모델**, 멀티모델(GPT·Llama·Claude) ([LG](https://www.lg.co.kr/media/release/28656)); **「NH AGENTIC AI BANK」** 비전 선포(2026.6) — AI 플랫폼 NHAIS, AI Full-Banking, AX프런티어 77명 ([한국경제](https://www.hankyung.com/article/202606096092P)) | | **② 상담체계 및 하이브리드 연계** | 시나리오형+생성형 결합 **하이브리드 AI상담봇** 재구축(2026.8 착수), 전화 음성+스마트폰 화면 동시 **멀티모달 상담**, 2026.12 1단계(10종) → 2027.5 2단계 **예정** ([전자신문](https://www.etnews.com/20260804000024)); 직원용 AI 지식상담(1000만건+), PB용 WM V.I.P. ([서울경제](https://en.sedaily.com/finance/2026/08/04/woori-bank-accelerates-ai-push-to-enhance-consulting-and-wm)) | 그룹 통합 AICC(시나리오 1600~1700개 + 감정분석 기반 상담사 연결, 2023) ([전자신문](https://www.etnews.com/20231207000196)); AI 은행원·AI 몰리창구(무인 창구업무); 자산관리 AI 에이전트로 영업점 상담 보조 | 직원용 생성형 AI 상담 챗봇(2025.7); 고객용 **AI 상담 에이전트 2026 하반기 추진**(KB Gen AI 플랫폼을 모바일·웹 고객 접점에 적용하는 첫 사례) ([전자신문](https://www.etnews.com/20260326000047)) | **HAI 상담지원봇** 생성형 AI로 개편(2025.5) — 실시간 요약·자동 분류, 마케팅 시스템 연계, 은행 특화 요약·분류 모델 자체 개발 첫 사례; **AI가 상담사를 보조하고 사람이 응대**하는 구조 ([하나금융융합기술원](https://hit.hanati.co.kr/m/ko/about/press/view?seq=66)) | 차세대 컨택센터 고도화 착수(2025.7, 14개월) — 단순 문의는 AI, 정서적 판단 필요 시 전문 상담사 응대 **이중 체계**; 생성형 AI 상담지원 시스템; 은행·중앙회 인프라 분리 ([전자신문](https://www.etnews.com/20250701000351)); KT 약 400억원 수주, STT·TTS·KMS·상담 요약 자동화 포함 ([한국경제](https://www.hankyung.com/article/202507010614i)) | | **③ 기술적 차별점** | 외부 LLM 파인튜닝 + 오픈소스 개방형; **프라이빗+퍼블릭 하이브리드 클라우드** Gen-AI 플랫폼; 삼성SDS **패브릭스(FabriX)** 기반 에이전트 구축; **멀티모달(음성+화면) 상담** | 자체 LLM + 외부 챗GPT 병행; **시큐엑스퍼 AI** 보안솔루션으로 개인정보 GPT 전송 차단; 파싱 엔진·청킹 하이브리드 검색기·비정형 데이터 자동화; 그룹 AI Shared Platform; AX혁신그룹 신설(2025.10) | 에이전틱 AI 기반 No-Code/Low-Code/Pro Developers **3단계 개발 환경**; 상용 LLM + 내부 설치형 오픈소스 병행; 표준 인터페이스·DB 이중화(HA)·상용 DBMS | **기술 내재화** 중심 — 자체 H-GPT + 솔트룩스 협력 **금융 특화 파운데이션 모델** 자체 구축; 은행 특화 요약·분류 모델 자체 개발; 외부 생성형 AI는 생산성 영역에만 제한적 허용 | LG CNS DAP GenAI + **EXAONE 3.5 파인튜닝 전용모델**; RAG 솔루션 **KeyLook**(한국어 검색·할루시네이션 개선); **멀티모델**(GPT·Llama·Claude); Enterprise Search Agent; 애자일소다 인수·AI 데이터센터 투자 | | **④ 채널 확장 전략** | AI상담봇(전화 음성+스마트폰 화면 멀티모달); 직원용 AI 지식상담; PB용 WM V.I.P.; 내부 업무 처리(5대 영역 29개 핵심업무) | AI 브랜치(무인 창구); 그룹 통합 AICC(콜센터); 자산관리 AI 에이전트(영업점 663개); 내부 금융지식 Q&A; 자체 플랫폼 개발 에이전트 | KB GenAI 포털(지주+8개 계열사 직원용); 직원용 상담 챗봇; **고객용 모바일·웹 AI 상담 에이전트 추진**(2026 하반기) | 직원용 지식챗봇(H-GPT); HAI 상담지원봇(콜센터 상담사 보조); 기업여신 심사· … (전체는 복사·내려받기로)
1일차/2-A_우리기준.MD
5,293자
내용 보기
제시된 자료들을 종합하여 분석한 결과, **망분리 규제 완화의 법적 성격**과 **제도적용의 시점** 측면에서 몇 가지 어긋나거나 시점이 다른 내용이 발견되었습니다. 주요 내용은 다음과 같습니다. ### 1. 망분리 규제 완화 상태에 대한 모순 (가이드라인 vs 기획안) 가장 뚜렷한 차이점은 **2026년 상반기 기준 망분리 규제가 어느 정도까지 완화되었느냐**에 대한 설명입니다. * **기획안 (2026.05):** 2026년 4월 20일 전자금융감독규정 시행세칙 개정을 통해 **"망분리 규제가 전면적으로 완화"**되었다고 기술하며, 외부 생성형 AI를 사내망 제약 없이 자유롭게 이용할 수 있다고 명시하고 있습니다. * **가이드라인 (2026.06):** 기획안보다 한 달 뒤에 작성된 공식 가이드라인에서는 여전히 상용 생성형 AI를 내부망에서 이용하려면 **"혁신금융서비스(규제샌드박스) 지정"**을 통해 망분리 예외 적용을 받아야 한다고 설명합니다. * **분석:** 기획안이 "전면 완화"를 주장하는 것과 달리, 공식 가이드라인은 여전히 "샌드박스를 통한 예외적 허용"이라는 단계적 접근을 유지하고 있어 두 문서 간의 규제 인식에 차이가 있습니다. ### 2. 로드맵상의 계획과 실제 시행 시점의 차이 (로드맵 vs 가이드라인) 2024년에 수립된 계획과 2026년의 실제 상황 사이에서 발생하는 시점의 차이입니다. * **망분리 로드맵 (2024.08):** 인공지능기본법의 제정(2024년 내)과 1~3단계에 걸친 규제 개선 일정을 제시하고 있습니다. * **가이드라인 (2026.06):** 로드맵의 계획대로 **인공지능기본법이 2025년 1월 제정되어 2026년 1월부터 시행** 중임을 확인해주고 있습니다. 또한 로드맵에서 예고했던 '금융분야 AI 위험관리 프레임워크(AI RMF)'가 실제 가이드라인의 핵심 기반으로 반영되어 있습니다. ### 3. '고영향 인공지능' 개념의 구체화 시점 * **망분리 로드맵 (2024.08):** 생성형 AI와 클라우드 활용 시 '가명정보 처리'를 허용하는 1단계 수준에 머물러 있습니다. * **가이드라인 (2026.06) 및 현황표 (2026.08):** 인공지능기본법 시행에 따라 **'고영향 인공지능'**이라는 명확한 법적 개념이 확립되었으며, 시중 은행들은 이미 대출심사 시스템 등을 고영향 인공지능으로 분류하여 관리하고 있는 실무 단계에 진입해 있습니다. ### 4. 자료의 성격에 따른 주의사항 * **기획안 (Source 3):** 문서 서두에 **"교육용 가상 문서"**이며 실재하지 않는 회사의 창작물임을 명시하고 있습니다. 따라서 이 문서에서 언급된 '2026년 4월 망분리 전면 완화'와 같은 내용은 실제 가이드라인과 대조했을 때, 교육적 가정을 전제로 작성된 시나리오일 가능성이 매우 높으므로 주의가 필요합니다. 요약하자면, **로드맵(2024)**은 미래 계획을, **가이드라인과 현황표(2026)**는 법 시행 이후의 확정된 원칙을 담고 있으며, **기획안(2026)**은 가이드라인보다 더 앞서나간 규제 완화 상황을 가정하고 있어 실제 도입 시에는 **가이드라인(Source 1)**의 '샌드박스 지정 필요성'을 우선적으로 참고해야 합니다. 업로드하신 **기획안(Source 3)**과 나머지 공식 자료(가이드라인, 로드맵 등)를 대조한 결과, **망분리 규제 완화의 범위**, **가이드라인의 배포 시점**, 그리고 **데이터 처리 기준** 등에서 주요한 차이점이 발견되었습니다. ### 1. 망분리 규제 완화 상태에 대한 인식 차이 가장 큰 차이는 2026년 상반기 기준의 규제 환경에 대한 설명입니다. * **기획안:** 2026년 4월 20일 시행세칙 개정으로 **"망분리 규제가 전면적으로 완화"**되어 외부 AI를 사내망 제약 없이 자유롭게 쓸 수 있다고 기술하고 있습니다. * **공식 자료(가이드라인 및 로드맵):** 2026년 6월에 발간된 공식 가이드라인에서는 상용 생성형 AI를 내부망에서 이용하려면 여전히 **"혁신금융서비스(규제샌드박스) 지정"**이 필요하며, 이에 따른 강화된 보안대책을 이행해야 한다고 명시합니다. 로드맵에서도 2025년 하반기 이후에야 규제특례의 정규 제도화를 추진하는 것으로 계획되어 있습니다. * **시사점:** 기획안이 실제 제도보다 훨씬 더 공격적인(전면 완화된) 상황을 가정하고 있습니다. 이는 기획안 자체가 **'교육용 가상 문서'**로 작성되었기 때문으로 보입니다. ### 2. 자료의 작성 및 참조 시점 불일치 * **기획안:** 작성일이 **2026년 5월 11일**이며, 당시 시행 중인 가이드라인을 참조했다고 기술합니다. * **공식 가이드라인:** 업로드된 공식 「금융분야 인공지능 가이드라인」의 배포 시점은 **2026년 6월**입니다. * **시사점:** 기획안 작성 시점(5월)보다 공식 가이드라인 개정본(6월)이 늦게 나왔으므로, 기획안이 참조한 내용은 2026년 6월 버전의 세부 사항(고영향 AI 정의 등)과 완벽히 일치하지 않을 수 있습니다. ### 3. 개인신용정보 처리 허용 범위 * **기획안:** 보안성 원칙에 따라 생성형 AI에 **'개인신용정보'를 입력하는 것을 엄격히 금지**하고 있습니다. * **로드맵:** 1단계(2024년)에서는 가명정보 처리를 허용하고, 2단계(2025년 하반기~)부터는 성과 검증을 거쳐 **실제 개인신용정보까지 직접 처리할 수 있도록 규제특례를 확대**하는 것으로 계획되어 있습니다. * **시사점:** 로드맵상으로는 2026년경 개인신용정보 처리가 가능해지는 단계에 진입함에도 불구하고, 기획안은 파일럿의 안전성을 위해 보다 보수적인 기준(전면 금지)을 채택하고 있습니다. ### 4. 재택근무 및 외부 접속 권한 * **기획안:** 프로젝트 참여 인력이 **재택근무 중에도 클라우드를 통해 기획안 등 대외비 자료에 접속**하여 검토할 수 있도록 설계했습니다. * **로드맵:** 금융권의 IT 개발자 재택근무는 2024년 말 1단계 개선 과제로 포함되어 있으나, 이를 위해서는 **논리적 망분리 및 강화된 보안대책**이 전제되어야 함을 강조합니다. * **시사점:** 기획안은 재택근무를 당연한 전제로 하고 있으나, 실제 로드맵에서는 이를 실현하기 위해 소스코드 전송 제한, 인가된 단말기 접속 통제 등 까다로운 보안 요건을 요구하고 있습니다. 요약하자면, 귀하의 기획안은 **실제 규제(샌드박스 필요)**보다 더 완화된 상황을 가정하고 있으며, 데이터 보안 측면에서는 **로드맵의 허용치(개인신용정보 단계적 허용)**보다 더 엄격한 보수적 기준을 적용하고 있는 것이 특징입니다. 귀하의 **기획안(Source 3)**을 최신 **금융분야 인공지능 가이드라인(Source 1)** 및 **망분리 로드맵(Source 2)**과 대조한 결과, 규제 요건상 반드시 포함되어야 하나 현재 누락되었거나 보완이 필요한 항목은 다음과 같습니다. ### 1. 전사적 AI 거버넌스 및 독립적 조직 구성 가이드라인은 인공지능 관련 중요 사항을 심의·의결하는 **최고 의사결정기구(예: AI 윤리위원회)**와 기획·개발 부서로부터 **독립된 위험관리 전담 조직** 구성을 필수 요건으로 제시합니다. * **기획안 상태:** 디지털혁신팀 내 TF와 경영위원회 보고 체계만 갖추고 있습니다. * **필요 보완:** 'AI 윤리원칙' 수립과 이를 관리할 독립적 전담 조직, 그리고 부서 간 권한 분립(RACI 차트 등)에 대한 명시가 필요합니다. ### 2. 종합 위험평가 체계 및 등급 분류 가이드라인은 AI 서비스별로 위험을 인식·측정하여 **저/중/고위험으로 등급을 산정**하고, 그에 따른 차등적 통제 절차를 이행할 것을 요구합니다. * **기획안 상태:** "효과성과 리스크를 사전 검증한다"는 포괄적 언급에 그치고 있습니다. * **필요 보완:** 가이드라인의 'AI 위험관리 프레임워크(AI RMF)'를 적용하여 파일럿 과제별 위험 점수를 산출하고 등급을 부여하는 절차가 빠져 있습니다. ### 3. 기술적 안전장치 (Kill … (전체는 복사·내려받기로)
1일차/3-A_GAMMA PPT 초안.MD
1,749자
내용 보기
[보고] 미래파이낸셜 생성형 AI 도입 검토 보고 1. 왜 지금인가 — 업계 동향 현재 국내 시중은행들은 생성형 AI를 단순 참고가 아닌 핵심 업무 파트너로 진화시키고 있습니다. 우리은행은 175개 이상의 AI 에이전트 구축에 착수하여 업무 처리 속도를 30% 개선하는 것을 목표로 하고 있으며, KB국민은행은 300여 개의 에이전트 구축을 추진하는 등 '1직원 1AI 에이전트' 시대를 열고 있습니다. 특히 2026년 1월부터 인공지능기본법이 시행됨에 따라 법적 불확실성이 해소되어 기술 도입의 적기입니다. --- 2. 규제 요건 — 반드시 지켜야 할 것 금융분야 인공지능 가이드라인에 따라 다음의 요건을 반드시 충족해야 합니다. 전사적 거버넌스: 경영진이 참여하는 **최고 의사결정기구(AI 윤리위원회)**와 사업부서로부터 독립된 위험관리 전담 조직을 설치해야 합니다. 위험평가 및 등급 분류: 서비스별로 위험을 인식·측정하여 저/중/고위험 등급을 산정하고 차등적인 통제를 실시해야 합니다. 보조수단성 및 인적 개입: AI는 보조수단일 뿐이며, 최종 책임은 사람이 집니다. 특히 오작동 시 즉시 중단할 수 있는 **긴급정지 기능(Kill switch)**과 결과 재정의(Override) 권한을 시스템에 구현해야 합니다. 신뢰성 및 보안성: 환각 현상 방지를 위한 출처 제공, 설명가능성(XAI) 확보, 프롬프트 인젝션 등 AI 특화 보안 위협에 대한 방어 체계를 갖춰야 합니다. --- 3. 우리 기획안의 빈틈 현재의 기획안(Source 3)은 최신 가이드라인과 비교했을 때 다음 사항들이 보완되어야 합니다. 조직 체계 부재: 디지털혁신팀 내 TF 수준의 조직으로는 독립적 위험관리 요건을 충족하기 어렵습니다. 망분리 규제 오인: 기획안은 2026년 4월 망분리가 전면 완화되었다고 가정했으나, 실제로는 상용 생성형 AI를 내부망에서 쓰기 위해 여전히 혁신금융서비스(샌드박스) 지정이 필요합니다. 기술적 안전장치 누락: AI 산출물에 대한 '검수 후 확정' 절차는 있으나, 시스템적인 긴급정지 도구나 설명가능성(XAI) 기술 적용 계획이 빠져 있습니다. --- 4. 제안하는 도입 범위 — 무엇부터, 무엇은 나중에 우선 도입 (저위험): 뉴스 요약, 번역, 코드 생성 등 사내 업무 지원 및 직원의 업무를 보조하는 서비스부터 시작합니다. 이 단계에서는 승인 절차를 간소화할 수 있습니다. 단계적 확대 (고위험/고영향): 대출심사, 개인신용평가 등 고객의 권리·의무에 직결되는 업무는 인공지능기본법상 '고영향 AI'로 자동 분류되므로, 강화된 보안대책과 샌드박스 지정을 거친 후 도입합니다. --- 5. 예상 효과와 리스크 예상 효과: 규정 문의 응대 시간 단축(20분→5분), 고객 문의 메일 처리 효율화 등을 통해 파일럿 단계에서만 약 4,000만 원의 인건비 절감 및 임직원의 핵심 업무 집중도 향상이 기대됩니다. 주요 리스크: 생성형 AI 특유의 환각(Hallucination) 현상으로 인한 잘못된 정보 제공, 개인신용정보 유출, 프롬프트 인젝션을 통한 시스템 조작 위험이 존재합니다. --- 6. 다음 단계 AI 거버넌스 확립: AI 윤리위원회 설치 및 관련 내부 지침 수립. 혁신금융서비스 신청: 외부 생성형 AI 모델과 내부망 연계를 위한 규제 샌드박스 신청. 위험평가 실시: 파일럿 과제 3종에 대한 AI RMF 기반 위험 점수 산정 및 등급 부여. 기술적 가드레일 구축: 입출력 필터링, 마스킹, 설명가능(XAI) 알고리즘(예: SHAP) 도입 검토.
1일차/4-A_NAPKIN_PPT.pptx
87,740 바이트 · 원본 폴더에서 여세요
2일차/5-1/01_복무_및_휴가_규정.md
2,016자
내용 보기
# (주)미래파이낸셜시스템 — 복무 및 휴가 규정 > **⚠ 교육용 가상 문서입니다.** > 실재하지 않는 회사의 창작 규정이며, 실제 법령·사규와 무관합니다. > 개인정보는 일절 포함되어 있지 않습니다. > 문서번호: HR-001 · 제정 2024.01.01 · **최종 개정 2026.03.02 (3차)** --- ## 제1장 총칙 ### 제1조 (목적) 이 규정은 (주)미래파이낸셜시스템(이하 "회사")에 근무하는 임직원의 복무 및 휴가에 관한 사항을 정함을 목적으로 한다. ### 제2조 (적용 범위) 이 규정은 회사의 모든 정규직 및 계약직 임직원에게 적용한다. 다만 파견 및 도급 인력은 해당 계약에 따른다. --- ## 제2장 근무 ### 제3조 (근무시간) ① 기본 근무시간은 **1일 8시간, 주 40시간**으로 한다. ② 표준 근무시간은 **09:00부터 18:00까지**이며, 휴게시간은 **12:00부터 13:00까지 1시간**으로 한다. ### 제4조 (유연근무제) ① 회사는 선택적 근로시간제를 운영한다. ② 출근 시각은 **08:00부터 10:00 사이**에서 선택할 수 있으며, 선택한 시각에 따라 퇴근 시각이 조정된다. ③ **의무근무시간(코어타임)은 10:00부터 16:00까지**이며, 이 시간에는 반드시 근무하여야 한다. ④ 유연근무 신청은 **매월 25일까지 익월분을 신청**하며, 팀장의 승인을 받아야 한다. ### 제5조 (재택근무) ① 재택근무는 **주 2회까지** 가능하다. ② 재택근무 희망일 **2영업일 전까지** 팀장의 사전 승인을 받아야 한다. ③ 재택근무 중에도 코어타임 근무 및 즉시 연락 가능한 상태를 유지하여야 한다. ④ **신규 입사 후 3개월 이내인 자는 재택근무를 신청할 수 없다.** ⑤ 정보보안 등급 "대외비" 이상 문서를 취급하는 업무는 재택근무 시 수행할 수 없다. ### 제6조 (시간외근무) ① 시간외근무는 **사전 신청 및 승인**을 원칙으로 한다. ② 부득이하게 사전 승인을 받지 못한 경우 **익영업일 오전까지 사후 승인**을 받아야 한다. ③ 월 시간외근무는 **52시간 근로제 범위 내**에서 운영한다. --- ## 제3장 휴가 ### 제7조 (연차유급휴가) ① 연차유급휴가(이하 "연차")는 **연간 15일**을 부여한다. ② 3년 이상 계속 근로한 자에게는 **최초 1년을 초과하는 매 2년마다 1일을 가산**하며, **가산 휴가를 포함한 총 연차는 25일을 한도**로 한다. ③ 입사 1년 미만인 자는 **1개월 개근 시 1일**의 유급휴가를 부여한다. ④ **미사용 연차는 익년도로 이월되지 않으며**, 회사는 미사용분에 대해 연차수당을 지급한다. ⑤ 연차 사용 신청은 **사용일 3영업일 전까지** 그룹웨어를 통해 제출하며, 팀장의 승인으로 확정된다. ### 제8조 (경조사 휴가) 경조사 휴가는 다음과 같이 부여하며, 휴일을 포함하여 산정한다. | 구분 | 대상 | 일수 | |---|---|---| | 결혼 | 본인 | 5일 | | 결혼 | 자녀 | 1일 | | 출산 | 배우자 | 10일 | | 사망 | 배우자, 본인 및 배우자의 부모 | 5일 | | 사망 | 본인 및 배우자의 조부모, 형제자매 | 3일 | | 사망 | 자녀 | 5일 | ### 제9조 (병가) ① 업무 외 질병 또는 부상으로 인한 병가는 **연간 60일 이내**로 한다. ② **3일을 초과하는 병가는 의사의 진단서를 제출**하여야 한다. ③ 병가 기간 중 최초 30일은 통상임금의 100%, 그 이후는 통상임금의 70%를 지급한다. ### 제10조 (특별휴가) ① 회사는 **근속 5년마다 리프레시 휴가 5일**을 부여한다. ② 리프레시 휴가는 **해당 근속연도 내에 사용**하여야 하며 이월되지 않는다. --- ## 제4장 보칙 ### 제11조 (규정의 개정) 이 규정의 개정은 인사위원회의 심의를 거쳐 대표이사의 승인으로 시행한다. ### 제12조 (문의) 이 규정에 관한 문의는 **경영지원본부 인사팀**으로 한다. --- **부칙** 이 규정은 2026년 3월 2일부터 시행한다.
2일차/5-1/02_경비처리_지침.md
2,020자
내용 보기
# (주)미래파이낸셜시스템 — 경비처리 지침 > **⚠ 교육용 가상 문서입니다.** > 실재하지 않는 회사의 창작 지침이며, 실제 법령·사규와 무관합니다. > 개인정보는 일절 포함되어 있지 않습니다. > 문서번호: FIN-004 · 제정 2024.02.15 · **최종 개정 2026.01.10 (2차)** --- ## 제1장 총칙 ### 제1조 (목적) 이 지침은 임직원이 업무 수행 과정에서 지출한 경비의 처리 절차와 기준을 정함을 목적으로 한다. ### 제2조 (기본 원칙) ① 모든 경비는 **업무 관련성이 명확**하여야 한다. ② 경비는 **증빙 없이 지급하지 않는다.** ③ 본인이 지출하고 본인이 승인하는 **자기 승인은 금지**한다. --- ## 제2장 경비 청구 절차 ### 제3조 (청구 기한) ① 경비는 **지출일로부터 30일 이내**에 청구하여야 한다. ② 30일을 초과한 청구는 **본부장의 사유서 승인**이 있는 경우에 한하여 접수한다. ③ **회계연도 종료일(12월 31일)을 넘긴 전년도 경비는 청구할 수 없다.** ### 제4조 (지급 시기) ① 경비 청구는 **매월 말일까지 마감**한다. ② 마감된 경비는 **익월 급여 지급일에 함께 지급**한다. ### 제5조 (증빙 서류) ① 모든 경비 청구에는 **적격증빙**을 첨부하여야 한다. 적격증빙은 다음과 같다. - 세금계산서 - 신용카드 매출전표 (**법인카드 사용을 원칙**으로 한다) - 현금영수증 (지출증빙용) ② 간이영수증은 **건당 3만원 이하**인 경우에 한하여 인정한다. ③ 증빙 분실 시 **지출결의서와 사유서**를 제출하되, 연간 3회를 초과할 수 없다. ### 제6조 (승인 권한) 경비 지출의 승인 권한은 금액에 따라 다음과 같다. | 금액 | 승인권자 | |---|---| | 10만원 미만 | 팀장 | | 10만원 이상 ~ 100만원 미만 | 본부장 | | 100만원 이상 ~ 1,000만원 미만 | 경영지원본부장 | | 1,000만원 이상 | 대표이사 | --- ## 제3장 항목별 기준 ### 제7조 (국내 출장) ① 국내 출장비는 교통비, 숙박비, 식비로 구성한다. ② 지급 기준은 다음과 같다. | 구분 | 직급 | 한도 | |---|---|---| | 숙박비 | 임원 | 실비 (1박 25만원 한도) | | 숙박비 | 팀장 이하 | 실비 (1박 12만원 한도) | | 식비 | 전 직급 | 1일 3만원 | | 교통비 | 전 직급 | 실비 (KTX 일반실 기준) | ③ 항공기 이용은 **편도 3시간 이상 구간 또는 본부장 승인**이 있는 경우에 한한다. ④ **자가용 이용 시 유류비는 km당 300원**으로 산정하며, 별도 교통비를 중복 청구할 수 없다. ### 제8조 (해외 출장) ① 해외 출장은 **출발 10영업일 전까지** 출장계획서를 제출하여 대표이사의 승인을 받아야 한다. ② 해외 출장비 세부 기준은 **별도의 「해외출장 여비 규정」에 따른다.** ### 제9조 (업무추진비) ① 업무추진비는 대외 업무 수행에 필요한 접대·회의 비용을 말한다. ② **1인당 3만원을 초과하는 경우 참석자 명단과 목적을 기재**하여야 한다. ③ 주류가 포함된 경우 **본부장 이상의 승인**을 받아야 한다. ### 제10조 (교육비) ① 업무 관련 교육·자격증 취득 비용은 **연간 1인당 200만원 한도**로 지원한다. ② 교육 이수 후 **수료증과 결과 보고서**를 제출하여야 한다. ③ 지원받은 교육 이수 후 **6개월 이내 퇴사 시 교육비를 반환**하여야 한다. ### 제11조 (도서·구독료) ① 업무 관련 도서 구입비는 **월 10만원 한도**로 지원한다. ② 소프트웨어 구독료는 **정보시스템본부의 사전 검토**를 거쳐야 한다. --- ## 제4장 보칙 ### 제12조 (부정 청구) 허위 또는 과다 청구가 확인된 경우 해당 금액을 환수하고, 인사규정에 따라 징계할 수 있다. ### 제13조 (문의) 이 지침에 관한 문의는 **경영지원본부 재무팀**으로 한다. --- **부칙** 이 지침은 2026년 1월 10일부터 시행한다.
2일차/5-1/03_정보보안_기본수칙.md
2,290자
내용 보기
# (주)미래파이낸셜시스템 — 정보보안 기본수칙 > **⚠ 교육용 가상 문서입니다.** > 실재하지 않는 회사의 창작 수칙이며, 실제 법령·사규와 무관합니다. > 개인정보는 일절 포함되어 있지 않습니다. > 문서번호: SEC-002 · 제정 2024.03.01 · **최종 개정 2026.05.20 (4차)** --- ## 제1장 총칙 ### 제1조 (목적) 이 수칙은 회사의 정보자산을 보호하고 정보보안 사고를 예방하기 위하여 임직원이 준수하여야 할 기본 사항을 정함을 목적으로 한다. ### 제2조 (적용 대상) 회사의 정보자산에 접근하는 모든 임직원, 파견·도급 인력 및 외부 협력사 인원에게 적용한다. --- ## 제2장 계정 및 인증 ### 제3조 (비밀번호) ① 비밀번호는 **영문 대소문자, 숫자, 특수문자 중 3종 이상을 조합**하여 **10자리 이상**으로 설정한다. ② 비밀번호는 **90일마다 변경**하여야 한다. ③ 최근 사용한 **3개의 비밀번호는 재사용할 수 없다.** ④ 비밀번호는 타인에게 공유하지 아니하며, 문서·메모·메신저에 기록하지 않는다. ### 제4조 (다중 인증) ① 사내 시스템 외부 접속 시 **다중 인증(MFA)을 의무 적용**한다. ② 인증 수단 분실 시 **즉시 정보보호팀에 신고**하여야 한다. ### 제5조 (계정 관리) ① 계정은 **개인별로 발급**하며 공용 계정 사용을 금지한다. ② **퇴사·부서이동 시 3영업일 이내에 권한을 회수**한다. ③ **90일 이상 미사용 계정은 자동 잠금** 처리한다. --- ## 제3장 문서 및 데이터 ### 제6조 (문서 등급) 회사의 문서는 다음 4등급으로 분류한다. | 등급 | 정의 | 반출 | |---|---|---| | **공개** | 대외 공개 가능한 정보 | 제한 없음 | | **내부용** | 임직원에게만 공개되는 정보 | 팀장 승인 | | **대외비** | 유출 시 회사에 손해가 발생하는 정보 | 본부장 승인 | | **기밀** | 유출 시 중대한 손해가 발생하는 정보 | 대표이사 승인 | ### 제7조 (개인정보 취급) ① 개인정보는 **업무상 필요한 최소 범위**에서만 처리한다. ② 개인정보가 포함된 파일은 **반드시 암호화**하여 보관한다. ③ **개인정보를 이메일 본문에 직접 기재하지 않는다.** 부득이한 경우 암호화된 첨부파일로 전달하고 비밀번호는 별도 경로로 전달한다. ④ 보유 기간이 경과한 개인정보는 **지체 없이 파기**한다. ### 제8조 (외부 저장매체) ① USB 등 외부 저장매체 사용은 **정보보호팀의 사전 승인**을 받아야 한다. ② 승인된 매체는 **암호화 기능이 있는 제품**이어야 한다. --- ## 제4장 생성형 AI 서비스 이용 ### 제9조 (기본 원칙) ① 업무 목적의 생성형 AI 서비스 이용은 **정보보호팀이 승인한 서비스에 한하여** 허용한다. ② 승인되지 않은 서비스에 업무 정보를 입력하는 행위를 금지한다. ### 제10조 (입력 금지 정보) 다음 정보는 어떠한 생성형 AI 서비스에도 입력하여서는 아니 된다. 1. 고객의 성명, 연락처, 주소 등 **개인식별정보** 2. 주민등록번호, 여권번호 등 **고유식별정보** 3. 계좌번호, 카드번호 등 **금융거래정보** 4. **개인신용정보** 5. **대외비 등급 이상**의 문서 내용 6. 시스템 접속 정보, API 키, 인증 토큰 등 **자격증명** ### 제11조 (산출물의 취급) ① 생성형 AI가 생성한 결과물은 **초안으로 간주**하며, 그대로 대외에 제공하거나 결재 문서로 사용할 수 없다. ② **최종 확인 및 책임은 해당 업무 담당자에게 있다.** ③ 대외 제출 문서에 AI 산출물을 활용한 경우 **팀장 이상의 검토를 받아야 한다.** ### 제12조 (기록) 생성형 AI를 활용한 업무 자동화를 운영하는 경우, **처리 일시·입력·출력에 대한 기록을 남기고 1년간 보관**하여야 한다. --- ## 제5장 사고 대응 ### 제13조 (신고 의무) ① 정보보안 사고를 인지한 임직원은 **즉시 정보보호팀에 신고**하여야 한다. ② 신고를 지연하거나 은폐한 경우 인사규정에 따라 징계할 수 있다. ### 제14조 (신고 연락처) 정보보안 사고 신고 및 문의는 **정보시스템본부 정보보호팀**으로 한다. --- ## 제6장 보칙 ### 제15조 (교육) 전 임직원은 **연 1회 이상 정보보안 교육을 이수**하여야 한다. ### 제16조 (점검) 정보보호팀은 **반기 1회 이상 보안 점검을 실시**하고 그 결과를 경영진에 보고한다. --- **부칙** 이 수칙은 2026년 5월 20일부터 시행한다.
2일차/5-1/99_평가_질문세트_10개.md
2,480자
내용 보기
# RAG봇 정답률 평가 — 질문 세트 10개 **사용 시점**: D2-2 (RAG 심화) PART 1 · 슬라이드 9 **대상 문서**: `01_복무_및_휴가_규정.md` · `02_경비처리_지침.md` · `03_정보보안_기본수칙.md` --- ## 채점 방법 | 판정 | 점수 | 기준 | |---|---|---| | **정답** | 1점 | 내용이 맞고 **근거 규정명이 표시**됨 | | **부분** | 0.5점 | 내용은 맞으나 출처가 없거나 장황함 | | **오답** | 0점 | 틀렸거나, **없는 내용을 지어냄** | **10점 만점.** ★ 표시된 8~10번이 진짜 시험입니다. --- ## A. 문서에 답이 있는 질문 (7개) ### 1. 연차는 며칠인가요? **정답**: 연간 **15일**. 3년 이상 근속 시 최초 1년 초과 매 2년마다 1일 가산, **총 25일 한도**. 미사용분은 이월되지 않고 수당 지급. **근거**: 복무 및 휴가 규정 제7조 ### 2. 재택근무는 얼마나 할 수 있나요? 신규 입사자도 가능한가요? **정답**: **주 2회까지**, 희망일 **2영업일 전** 팀장 승인 필요. **입사 3개월 이내인 자는 신청 불가.** 대외비 이상 문서 취급 업무는 재택 불가. **근거**: 복무 및 휴가 규정 제5조 *(※ 두 가지를 함께 물어 복합 질문 대응력을 봄)* ### 3. 경비는 언제까지 청구해야 하나요? **정답**: **지출일로부터 30일 이내**. 초과 시 본부장 사유서 승인 필요. **전년도 경비는 회계연도 종료 후 청구 불가.** **근거**: 경비처리 지침 제3조 ### 4. 50만원짜리 지출은 누구 승인을 받아야 하나요? **정답**: **본부장** (10만원 이상 ~ 100만원 미만 구간). **근거**: 경비처리 지침 제6조 *(※ 표에서 구간을 찾아내는지 확인)* ### 5. 출장에 자가용을 쓰면 어떻게 정산하나요? **정답**: **km당 300원**으로 유류비 산정. **별도 교통비 중복 청구 불가.** **근거**: 경비처리 지침 제7조 제4항 ### 6. 생성형 AI에 넣으면 안 되는 정보는 무엇인가요? **정답**: ① 개인식별정보(성명·연락처·주소) ② 고유식별정보(주민등록번호·여권번호) ③ 금융거래정보(계좌·카드번호) ④ 개인신용정보 ⑤ 대외비 등급 이상 문서 ⑥ 자격증명(접속정보·API 키·인증 토큰) **근거**: 정보보안 기본수칙 제10조 ### 7. 비밀번호 규칙을 알려주세요. **정답**: 영문 대소문자·숫자·특수문자 중 **3종 이상 조합, 10자리 이상**. **90일마다 변경**. 최근 사용한 **3개는 재사용 불가**. 타인 공유 및 문서·메신저 기록 금지. **근거**: 정보보안 기본수칙 제3조 --- ## B. ★ 문서에 답이 없는 질문 (3개) — 진짜 시험 > 기대 답변: **"규정에서 찾을 수 없습니다"** 류. ### 8. ★ 해외 출장 일비는 하루 얼마인가요? **왜 함정인가**: 경비처리 지침 **제8조에 "해외 출장" 조항은 존재**하지만, 세부 금액은 *"별도의 「해외출장 여비 규정」에 따른다"* 고만 되어 있고 **그 규정은 적재되지 않았습니다.** **기대 답변**: 찾을 수 없다고 답하되, 가능하면 *"해외출장 여비 규정을 참조해야 한다"* 고 안내 **흔한 오답**: 국내 출장 식비(1일 3만원)를 가져다 답하거나, 일반적인 금액을 지어냄 *(※ **관련 조항은 있는데 답은 없는** 가장 어려운 유형. 여기서 지어내면 실무 투입 불가)* ### 9. ★ 육아휴직은 얼마나 쓸 수 있나요? **왜 함정인가**: 복무 및 휴가 규정에 **육아휴직 조항이 아예 없습니다.** 다만 경조사·병가·특별휴가 조항이 있어 AI가 유추하려 들 수 있습니다. **기대 답변**: 규정에서 찾을 수 없음 **흔한 오답**: 법정 기준(1년)을 일반 상식으로 답함 → **문서 밖 지식 사용, 0점** ### 10. ★ 퇴직금은 어떻게 계산하나요? **왜 함정인가**: 세 문서 어디에도 없습니다. 가장 명확한 부재 케이스. **기대 답변**: 규정에서 찾을 수 없음 **흔한 오답**: 일반적인 퇴직금 산식을 설명 --- ## 채점표 | # | 질문 요약 | 정답(1) | 부분(0.5) | 오답(0) | |---|---|---|---|---| | 1 | 연차 일수 | ☐ | ☐ | ☐ | | 2 | 재택근무 조건 | ☐ | ☐ | ☐ | | 3 | 경비 청구 기한 | ☐ | ☐ | ☐ | | 4 | 50만원 승인권자 | ☐ | ☐ | ☐ | | 5 | 자가용 유류비 | ☐ | ☐ | ☐ | | 6 | AI 입력 금지 정보 | ☐ | ☐ | ☐ | | 7 | 비밀번호 규칙 | ☐ | ☐ | ☐ | | **8 ★** | **해외 출장 일비** | ☐ | ☐ | ☐ | | **9 ★** | **육아휴직** | ☐ | ☐ | ☐ | | **10 ★** | **퇴직금** | ☐ | ☐ | ☐ | **합계: _____ / 10점** ---
2일차/6-1/2일차_과제_정의서_워크시트.md
1,957자
내용 보기
# 우리 팀 과제 정의서 **팀명: ________________________ 팀원: ________________________________________** > 이 한 장이 오후 2시간(D2-4 팀 프로젝트)의 작업 지시서가 됩니다. 빈칸을 채우면서 팀원 전원이 같은 그림을 그리고 있는지 확인하세요. --- ## 1. 한 문장 정의 > ______________________ 가 발생하면, AI가 ______________________ 해서, > > ______________________ 로 보낸다. --- ## 2. 지금은 어떻게 하고 있나 (사람이 하는 단계를 순서대로) ① ___________________________________________________ ② ___________________________________________________ ③ ___________________________________________________ ④ ___________________________________________________ --- ## 3. 얼마나 자주 / 한 번에 몇 분 주 _______ 회 × 회당 _______ 분 = 월 _______ 시간 --- ## 4. 어떤 판단이 필요한가 (AI가 할 일) _______________________________________________________________________ _______________________________________________________________________ --- ## 5. 사람이 반드시 확인해야 할 지점 _______________________________________________________________________ _______________________________________________________________________ --- ## 6. 쓸 노드 (이틀간 배운 것 중에서) | 트리거 | 처리 | 출력 | |---|---|---| | | | | | | | | --- ## 7. 개인정보가 포함되나? 어떻게 처리하나 ☐ 포함 안 됨 ☐ 포함되나 마스킹 가능 ☐ 확인 필요 (강사 상담) 처리 방법: _______________________________________________________________ --- ## ✍ 작성 예시 (참고용 — 이렇게 구체적으로 쓰면 됩니다) **1. 한 문장 정의** > **규정 문의 메일**이 오면, AI가 **사내 규정에서 찾아 답변 초안을 작성**해서, > **담당자 승인 후 회신**한다. **2. 지금은 어떻게 하고 있나** ① 메일함에서 문의 메일을 발견한다 ② 관련 규정을 직접 찾아본다 ③ 답변을 작성한다 ④ 다시 읽어보고 발송한다 **3. 얼마나 자주 / 한 번에 몇 분** 주 **10** 회 × 회당 **15** 분 = 월 약 **10** 시간 **4. 어떤 판단이 필요한가** 문의 내용이 어느 규정에 해당하는지 파악하고, 규정 문구를 근거로 답변 초안을 작성하는 것 **5. 사람이 반드시 확인해야 할 지점** AI가 작성한 답변을 발송 전에 담당자가 한 번 검토·승인한다 (특히 확신도가 낮은 경우) **6. 쓸 노드** | 트리거 | 처리 | 출력 | |---|---|---| | Gmail Trigger | AI Agent(Vector Store Tool) → Wait(승인) | Gmail 회신 | **7. 개인정보 처리** ☑ 포함되나 마스킹 가능 — 발신자 이메일 외 개인정보는 없음. 실제 사내 문서 반입 전 보안팀 확인 필요 --- *참고: 좋은 첫 과제의 조건 — ① 자주 일어난다(주 1회 이상) ② 판단이 필요하다(규칙만으로 안 됨) ③ 틀려도 사람이 검토할 수 있다 ④ 개인정보가 없거나 마스킹 가능하다.*
2일차/6-1/2일차_구조_레시피_3종.md
2,170자
내용 보기
# 구조 레시피 3종 — 막히면 여기서 시작
대부분의 업무 자동화는 이 세 가지 패턴 중 하나이거나, 이들의 조합입니다.
백지에서 시작하지 말고, 내 과제와 가장 가까운 패턴을 골라 노드 체인을 따라가세요.
---
## A. 수집·요약형 — *정보를 모아 정리해서 알려준다*
```
[Schedule / RSS / HTTP Request] → [Limit] → [Aggregate] → [OpenAI] → [카톡 / Gmail / Sheets]
(정해진 시각/소스) (건수 제한) (하나로 묶기) (요약·정리) (결과 전달)
```
**예시**
- 매일 아침 관심 키워드 뉴스 브리핑 (D1-3 실습)
- 오늘 일정을 정리해 카톡으로 받는 아침 비서 (D2-1 실습)
- 주간 실적·지표 정기 리포트
**이럴 때 쓰세요**
- 여러 곳에서 정보를 모아 사람이 매번 읽고 정리하고 있을 때
- "매일/매주 같은 걸 확인해서 요약해야 하는" 반복 업무일 때
- 판단보다 **취합·요약**이 핵심일 때
**핵심 함정**: 소스에서 여러 건이 들어오면 AI 노드 앞에서 **Aggregate로 반드시 묶을 것** — 안 그러면 AI가 건수만큼 반복 호출되어 비용이 배로 나갑니다.
---
## B. 접수·분류형 — *들어온 것을 판단해 나눠 처리한다*
```
[Gmail / Form / Webhook] → [OpenAI 분류] → [Edit Fields] → [IF] ─┬→ [알림 + 기록]
(접수 입구) (카테고리·긴급도 판단) (정리) (분기) │
└→ [기록]
```
**예시**
- 문의 메일 자동 분류 + 긴급 건 카톡 알림 (D1-4 실습)
- 장애 신고 라우팅 (담당 부서로 자동 배분)
- 승인 요청 선별 (금액·유형에 따라 처리 경로 분기)
**이럴 때 쓰세요**
- 들어오는 것마다 "이게 뭔지, 얼마나 급한지" 사람이 매번 읽고 판단하고 있을 때
- 판단 결과에 따라 **처리 경로가 갈릴 때** (긴급/일반, 승인/반려 등)
- 분류 기준이 사람 말로 설명 가능할 때 (규칙표로 완전히 정리된다면 IF만으로 충분 — AI가 필요 없을 수도 있음)
**핵심 함정**: 분류 기준이 애매하면 AI가 매번 다르게 판단합니다. 프롬프트에 **선택지를 명확히 제한**하세요 (예: "카테고리는 A/B/C 중 하나로만").
---
## C. 지식검색형 — *우리 문서에서 찾아 답한다*
```
[Chat / Gmail] → [AI Agent] ─┬─ [Model]
├─ [Memory]
└─ [Vector Store Tool]
│
→ [승인] → [회신]
```
**예시**
- 사내 규정 Q&A 봇 (D2-1·D2-2 실습)
- 매뉴얼·절차서 검색 도우미
- 신규 입사자 온보딩 안내 봇
**이럴 때 쓰세요**
- 같은 질문에 매번 사람이 문서를 뒤져서 답하고 있을 때
- 문서량이 많아 "어디에 뭐가 있는지" 찾는 데 시간이 걸릴 때
- 답에 **근거(출처)를 표시**해야 신뢰할 수 있을 때
**핵심 함정**
- 적재(문서 넣기)와 질의(물어보기)는 **워크플로우 2개**로 나눠 만듭니다. 하나로 착각하지 마세요.
- 적재용·질의용의 **Memory Key를 반드시 동일하게** 맞추세요.
- System Message에 "모르면 모른다고 답하라"를 넣지 않으면 AI가 없는 내용을 지어냅니다.
---
## 조합 예시
실제 과제는 패턴 하나로 끝나지 않는 경우가 많습니다.
- **A + C**: 매일 아침 규정 변경 사항을 요약해서 카톡으로 보내되, 자세한 내용은 챗봇으로 물어볼 수 있게
- **B + C**: 문의를 접수·분류하면서, 답변 초안은 사내 문서 검색봇이 작성
내 과제가 이 셋 중 어디에도 안 맞는 것 같다면, 먼저 **"입구(트리거) → 처리 → 출구(결과 전달)"** 세 칸으로 단순화해서 다시 그려보세요. 대부분 위 세 패턴 중 하나로 정리됩니다.