Files
aio-01d4-stu/Lecture/70/00-DAY70-OVERVIEW.md

6.8 KiB
Raw Permalink Blame History

70일차 개요 · Workflow 템플릿화와 모듈화

운영·확장 관점의 AI 워크플로우 설계 고도화 · 2026-10-22 13장 · 각 장은 가로줄(---)로 나뉩니다. 1교시에는 1~5장을 보고, 나머지 장은 각 단계를 설명할 때 함께 띄웁니다.

장 범위
1~5 표지 · 목표 · 시간표 · 복사의 비용 · 오늘의 그림
6~7 1단계 · 템플릿화
8~9 2단계 · 모듈화
10~11 3단계 · 변경 관리
12~13 7교시 바이브 코딩 · 정리와 예고

1 / 13 · 표지

flowchart LR
  K["공지 키트<br/>설정 표"] --> M[["규칙 검사<br/>모듈"]]
  S["SMS"] --> M
  T["시험용 웹훅"] --> M
  classDef o fill:#F2A541,stroke:#F2A541,color:#fff
  classDef t fill:#0F7C80,stroke:#0F7C80,color:#fff
  classDef g fill:#8A9BA0,stroke:#8A9BA0,color:#fff
  class K,S o
  class M t
  class T g

70일차

Workflow 템플릿화와 모듈화

같은 것과 다른 것 · 설정 표 · Sub-workflow 모듈 · 계약 · 하위 호환 · 버전

운영·확장 관점의 AI 워크플로우 설계 고도화 · 2026-10-22


2 / 13 · 오늘 할 수 있게 될 세 가지

오늘 할 수 있게 될 것
① 복사본에서 같은 것·다른 것을 찾아 설정 표 하나로 여러 종류를 처리하는 워크플로우로 만든다
② 여러 곳에서 쓰는 일을 모듈(Sub-workflow)로 떼어 따로 시험하고, 두 워크플로우가 함께 쓴다
③ 모듈을 바꿀 때 하위 호환은 같은 id로, 깨지는 변경은 새 버전으로 두고 영향 받는 테스트를 모두 돌린다

3 / 13 · 오늘의 시간표

① 1~2교시 ② 3~4교시 ③ 5~6교시 ④ 7~8교시
1단계 2단계 3단계 바이브 코딩
템플릿화 모듈화 변경 관리 tkit
Lab 01 복사본 → 공지 키트 Lab 02 모듈 · SMS Lab 03 v1.1 · v2 · 영향 표 만들기 · 발표 · 정리

09:00 시작 · 50분 수업 10분 휴식 · 4교시 뒤 13:00~14:00 점심


4 / 13 · 복사의 비용

samples/: 69일차 공지 팀을 점검·보안·교육용으로 복사한 3개 (파일에서 비교한 값)

노드 9개, 이름은 모두 같음
다른 노드 4개 (웹훅 경로, 작성자 지시문, 규칙 검사 코드, 결과의 종류)
같은 값이 두 곳에 꼭 넣을 문장이 지시문과 검사 코드에 따로
공통 규칙 하나 더하기 6곳 (파일 3개 × 지시문·검사)

복사는 처음에는 빠르고, 고칠 때 비쌉니다.


5 / 13 · 오늘의 그림

flowchart LR
  W(["kind · facts"]) --> KS["Kind settings<br/>(설정 표)"] --> A{{"작성자"}} --> M[["규칙 검사 모듈<br/>v1.1 · v2"]] --> R(["공지"])
  SW(["facts"]) --> SA{{"SMS 작성"}} --> M1[["규칙 검사 모듈 v1.1"]] --> SR(["문자"])

Lab 01(설정 표) → Lab 02(모듈, 두 번째 사용처) → Lab 03(모듈 바꾸기) 순서로 완성합니다.


6 / 13 · 1단계 · 같은 것, 다른 것, 우연히 다른 것

분류 예 어디로
같은 것 흐름(웹훅 → 작성 → 검사 → 결과), 날짜·연락처 검사 그대로 하나 · 여러 곳에서 쓰면 모듈
종류마다 다른 것 머리말, 최대 길이, 꼭 넣을 문장 설정 표
우연히 다른 것 한 파일만 고친 규칙, 오타 복사가 만든 버그 → 하나로 맞춤

7 / 13 · 1단계 · 설정 표와 없는 값 (수업 준비 측정)

결과
공지 키트 (표 3줄) lab01 5/5
표에 없는 survey를 보냄 (예제) 머리말·익명 문장 없이 그대로 게시
표에 한 줄 + 없는 종류는 400과 목록 lab01-challenge 1/4 → 4/4

표에 없는 종류는 규칙도 없습니다. 없으면 멈추고, 있는 종류를 알려 줍니다.


8 / 13 · 2단계 · Sub-workflow 모듈

flowchart LR
  C["부르는 쪽<br/>Execute Workflow<br/>id modRuleCheck01"] -->|"facts · draft ·<br/>max_length · required_phrases"| T["모듈<br/>Execute Workflow Trigger"] --> R["Rule checks"] -->|"passed · codes · issues"| C
확인 (n8n 2.42.6)
웹훅 없는 모듈도 push로 게시되고 불러짐 ✔
시험용 웹훅으로 모듈만 시험 lab02-module 5/5, 0.1초 (LLM 없음)
키트가 모듈을 부르게 바꾼 뒤 lab01 5/5 → 5/5 (테스트 수정 없음)

9 / 13 · 2단계 · 두 번째 사용처: SMS

공지 키트 SMS
모듈 같은 modRuleCheck01 같은 modRuleCheck01
max_length 설정 표 (500~800) 80
required_phrases 설정 표 []
테스트 lab01 5/5 lab02-challenge 4/4

다른 값은 모듈 안이 아니라 입력으로. 모듈 안에 "SMS면 80"이 들어가면 쓰는 곳이 늘 때마다 모듈을 고칩니다.


10 / 13 · 3단계 · 하위 호환 변경 (같은 id)

사외 링크 금지: 새 입력 allowed_domains(없으면 intra.example.com), 새 코드 external_link

수업 준비 때 결과
처음 (new URL()로 호스트 읽기) lab03 2/4 — 사내 링크도 막음 (Code 노드에 URL 없음)
글자로 호스트 자르기 4/4
push 직후 쓰는 곳 모두 모듈 시험 5/5 · 키트 5/5 · SMS 4/4

11 / 13 · 3단계 · 깨지는 변경은 v2 (새 id)

v1.1 (modRuleCheck01) v2 (modRuleCheck02)
결과 passed, codes, issues passed, blocking, warnings, issues
too_long 막음 경고
쓰는 곳 SMS, 시험용 웹훅 공지 키트, v2 시험용 웹훅

수업 준비 때: 키트를 v2로 옮기며 키트 결과의 codes를 빼자 lab01 2/5. codes를 남기고 새 필드를 더해 5/5. 계약은 층마다 있습니다.


12 / 13 · 7교시 · 바이브 코딩 tkit

$ tkit ~/vibe/templates
▸ n8n-notice-kit   name: [training-mail]  prefix: [[교육 신청 확인]]  max_length: [400]
  • 템플릿 폴더 + template.yaml → 변수를 채워 새 파일 (cookiecutter 방식)
  • 가장 까다로운 곳: 템플릿 변수와 n8n 표현식 {{ }}이 겹침

13 / 13 · 정리와 71일차 예고

오늘 한 줄
1단계 다른 것은 설정 표 한 곳에, 표에 없으면 멈춘다
2단계 여러 곳에서 쓰는 일은 모듈로, 다른 값은 입력으로, 시험용 웹훅으로 따로 시험
3단계 하위 호환은 같은 id, 깨지는 변경은 새 id. 바꾸면 영향 표의 테스트를 모두
  • 71일차: RAG 기반 검색·응답 — 사내 규정 문서를 검색해 근거와 함께 답하기 · 바이브 코딩 tdoc