여정 설계 시스템 — 질문과 답변으로 퀘스트를 만든다
작성 2026-08-10 · 이 제품의 핵심 IP 설계 규칙 번호는 지식 베이스의 「종합 — 확정된 설계 규칙 35개」를 가리킨다.
0. 전제 하나 — 템플릿이 먼저, 위저드는 탈출구
학원 원장은 여정을 설계하고 싶은 게 아니다. 고르고 조금 고치고 싶어 한다. "당신의 퀘스트를 만들어 보세요"로 시작하는 화면은 빈 캔버스 공포를 준다.
그래서 진입 경로는 이 순서다.
템플릿 목록 (6종) ──고를 게 있다──→ 표 편집기에서 수정 ──→ 시작
│
맞는 게 없다
↓
위저드 8문항 ──→ 여정 자동 생성 ──→ 표 편집기에서 수정 ──→ 시작
인터뷰에서 검증할 것: "이 6개 중에 쓸 만한 게 있습니까, 아니면 직접 만들고 싶습니까?" 템플릿을 고르는 사람이 다수면 위저드는 후순위 기능이 된다. 그 반대면 위저드가 제품의 중심이다. 이 답에 따라 개발 우선순위가 통째로 바뀐다.
1. 여정의 구조
Journey(여정) 기간이 정해진 캠페인. 예: "2학기 12주 항해"
└ Chapter(장) 4주 단위 구간. 예: 1장 출항 / 2장 난바다 / 3장 귀항
├ RecurringQuest 반복 퀘스트. 매일·주N회로 되풀이된다
├ MilestoneQuest 이정표. 누적·연속 조건을 채우면 1회 달성
└ Metric 자동 집계 지표. 출석률·완수율·연속일수·누적점
4주 챕터는 임의의 숫자가 아니다. 14주 종단 연구에서 게이미피케이션 효과는 4주차부터 떨어져 6~10주에 저점을 찍고 이후 회복하는 U자형을 그렸다(규칙 15). 챕터 경계를 그 하락 지점에 맞추고 전환마다 새 국면 — 새 목표, 새 서사, 새 보상 구조 — 을 넣어 저점을 덮는다.
챕터 수 산정
chapters = clamp(round(기간주수 / 4), 2, 5)
| 기간 | 계산 | 챕터 수 |
|---|---|---|
| 4주 | 1 → 하한 적용 | 2 (2주씩) |
| 8주 | 2 | 2 |
| 12주 | 3 | 3 |
| 16주 | 4 | 4 |
| 24주 | 6 → 상한 적용 | 5 |
하한 2를 두는 이유는 중간 이정표가 하나도 없는 여정은 끝까지 피드백이 없기 때문이다. 상한 5를 두는 이유는 챕터가 많아지면 각 장의 서사가 얇아져 전환 효과가 사라지기 때문이다.
2. 기성 템플릿 6종
각 템플릿은 위저드 8문항의 답이 미리 채워진 상태다. 원장은 대상 그룹만 고르면 바로 시작할 수 있다.
| # | 이름 | 기간 | 반복 행동 | 증빙 | 주 대상 |
|---|---|---|---|---|---|
| T1 | 중등 내신 대비 | 12주 | 수업 출석(주3) · 오답노트 1문제(매일) · 주간 테스트(주1) | 강사 체크 / 본인 체크 / 점수 입력 | 중·고등 학원 |
| T2 | 초등 학습 습관 | 8주 | 수업 출석(주2) · 숙제 제출(주2) · 독서 10분(매일) | 강사 체크 / 강사 체크 / 본인 체크 | 초등 학원 |
| T3 | 어학 완주 | 12주 | 수업 출석(주2) · 단어 학습(매일) · 말하기 녹음(주1) | 강사 체크 / 본인 체크 / 파일 제출 | 어학원·성인 |
| T4 | 교회 청년부 정착 | 8주 | 예배 출석(주1) · 소그룹 나눔(주1) | 리더 체크 / 리더 체크 | 교회 |
| T5 | 동호회 운동 챌린지 | 4주 | 운동(주3) · 주간 기록(주1) | 본인 체크 / 숫자 입력 | 동호회 |
| T6 | 자격증 완주 | 16주 | 강의 수강(주3) · 문제풀이(주5) · 모의고사(격주) | 본인 체크 / 본인 체크 / 점수 입력 | 성인·직업훈련 |
T4·T5는 규제 부담이 낮은 무료 파일럿 경로용이다(인터뷰 킷 참조).
3. 위저드 8문항
템플릿에 맞는 게 없을 때만 들어온다. 목표는 3분 안에 끝나는 것이다.
Q1. 누구에게 줄까요?
기존 그룹(반) 목록에서 선택. 새 그룹이면 이름과 인원만 입력. → 퀘스트는 그룹에 부여되고 구성원이 상속받는다. 개인별 부여는 예외 처리로만 존재한다.
Q2. 이 여정으로 무엇이 달라지길 원하세요?
3지선다 + 자유 입력.
- 결석·지각이 줄었으면
- 숙제·복습을 매일 했으면
- 시험 준비 습관이 잡혔으면
- (직접 입력)
→ 이 답이 여정 이름과 서사 톤을 정한다. 퀘스트 종류를 직접 정하지는 않는다.
Q3. 기간은요?
4주 / 8주 / 12주(한 학기) / 직접 입력 → 챕터 수가 여기서 결정된다(§1).
Q4. 매번 반복할 행동은 무엇인가요? (최대 3개)
행동마다 이름 + 빈도(매일 / 주 N회 / 주 1회 / 격주).
3개 제한은 의도된 것이다. 반복 퀘스트가 4개를 넘으면 학생의 하루 체크 항목이 많아져 시작 자체가 무거워진다(규칙 6). 더 필요하면 챕터를 넘길 때 교체한다.
Q5. 각 행동을 어떻게 확인하나요?
행동마다 하나 선택 — 강사가 체크 / 본인이 체크 / 사진·파일 제출 / 점수 입력. 사진·파일은 승인 큐로 들어가고, 나머지는 즉시 반영된다.
이 질문이 제품의 급소다. 선택에 따라 리더의 하루 부담이 30초가 되기도 하고 10분이 되기도 한다. 각 선택지 옆에 "이 반 기준 하루 예상 소요"를 초 단위로 즉시 계산해 보여준다. 상세 비교는 입력 부담.
Q6. 보상은 어떻게 할까요? 예산 상한은요?
- 칭호·뱃지 (비용 0)
- 포인트 상점 (예산 입력)
- 실물 보상 (예산 입력)
- 특권 (자리 선택·숙제 면제 등, 비용 0)
기본 선택은 칭호·특권이다. 매번 주는 예상 가능한 물질 보상은 내재동기를 깎고, 그 효과는 성인보다 아동에게 더 크다(규칙 3). 실물을 고르면 이정표에만 배치되고, 화면에 근거를 한 줄로 표시한다.
Q7. 경쟁 요소를 넣을까요?
- 개인 목표만 ← 기본값
- 팀 대항 (반 안에서 조를 나눔)
- 상위 N명 노출
- (전체 순위표는 선택지에 없다)
절대 전체 순위표는 만들지 않는다(규칙 17·18). 16주 종단에서 리더보드+뱃지 강좌 학생이 비게임화 강좌보다 동기·만족·역량감이 더 낮아졌고, 하위권일수록 이탈했다. 팀 대항이나 상위 노출을 고르면 그 자리에서 이 근거를 경고로 띄운다.
Q8. 참가자에게 어떤 세계로 보일까요?
대항해 / 성장 기록(중립) / 학교 테마 / 없음 → 순수 표현층. 데이터와 규칙은 동일하고 이름표와 그림만 바뀐다.
4. 생성 규칙 (결정적)
같은 답을 넣으면 항상 같은 여정이 나온다. 무작위성 없음.
1. chapters = clamp(round(주수 / 4), 2, 5)
2. 각 행동 → RecurringQuest 1개
cadence = 답한 빈도
evidence = 답한 확인 방법
점수 = 빈도가 높을수록 낮게 (매일 1점 / 주N회 2점 / 주1회 5점)
3. 각 챕터 끝 → MilestoneQuest 1개
조건 = 그 챕터 구간의 완수율 임계값
임계값 = 60% → 70% → 75% → 80% → 80% (챕터 순서대로, 상한 80%)
점수 = 반복 퀘스트 1주 합계의 3배
4. 여정 끝 → 최종 MilestoneQuest 1개
조건 = 전체 완수율 70% 이상
보상 = 예산이 있으면 실물, 없으면 최고 칭호
5. Metric 4종 자동 생성 — 출석률 / 완수율 / 연속일수 / 누적점
임계값이 100%로 올라가지 않는 이유: 목표 난이도와 성과의 상관은 능력 범위 안에서만 r=0.82이고, 불가능한 목표에서는 r=0.11로 무너진다(규칙 8). 완벽을 요구하면 한 번 놓친 학생이 즉시 포기한다.
점수를 빈도에 반비례시키는 이유: 매일 하는 행동이 주 1회 행동보다 총점이 높아야 하는 건 맞지만, 1회당 점수까지 높으면 하루 놓친 것의 체감 손실이 과도해진다.
5. 생성 후 — 표 편집기
생성 결과는 곧바로 표로 열린다. 행 = 퀘스트, 열 = 제목 · 종류 · 빈도 · 증빙 · 점수 · 기간. 인라인으로 고치고, 행을 추가·삭제한다. 저장 버튼 없이 즉시 반영.
원장이 위저드를 다시 돌릴 일은 거의 없다. 고치는 건 표에서 한다.
6. 시행 중 수정 규칙
여정이 시작된 뒤에도 퀘스트 추가·보상 변경이 가능해야 한다(사용자 요구사항). 다만 불변식이 하나 있다.
이미 지급된 보상과 포인트는 회수하지 않는다. 포인트 원장은 append-only이고 정수로만 계산한다. 취소는 음수 항목을 추가하는 게 아니라 애초에 불가능하다. 관리자가 규칙을 바꿔도 과거 지급분에는 소급되지 않는다.
이유는 기술이 아니라 신뢰다. 어제 받은 점수가 오늘 사라지는 시스템에서 학생은 다음 퀘스트를 하지 않는다.
| 수정 종류 | 허용 | 소급 |
|---|---|---|
| 퀘스트 추가 | ✅ | 추가 시점부터 |
| 퀘스트 삭제 | ✅ (숨김 처리, 하드 삭제 없음) | 기존 달성·점수는 유지 |
| 점수 변경 | ✅ | 변경 시점부터. 과거 지급분 불변 |
| 이정표 임계값 변경 | ✅ | 아직 달성 안 한 이정표만 |
| 보상 변경 | ✅ | 미지급분만 |
| 기간 연장 | ✅ | 챕터 재계산 없이 마지막 챕터를 늘린다 |
| 기간 단축 | ⚠️ 경고 후 허용 | 잘려나가는 이정표는 "상황 종료"로 닫고 실패 처리하지 않는다 |
7. dry-run — 규칙이 실제로 여정을 만드는가
사례 1 — 학원 중등 수학반, 12주, 20명
입력: Q1 중등수학A(20명) / Q2 숙제를 매일 했으면 / Q3 12주 / Q4 ①수업 출석 주3회 ②오답노트 1문제 매일 ③주간 테스트 주1회 / Q5 ①강사 체크 ②본인 체크 ③점수 입력 / Q6 칭호 + 최종 실물(5만원) / Q7 개인 목표만 / Q8 대항해
손으로 돌린 결과
| 항목 | 계산 | 값 |
|---|---|---|
| 챕터 수 | clamp(round(12/4),2,5) = clamp(3,2,5) | 3 |
| 반복 퀘스트 | 행동 3개 | 3개 (1점 / 2점 / 5점) |
| 이정표 | 챕터 3 + 최종 1 | 4개 |
| 이정표 임계값 | 순서대로 | 60% → 70% → 75%, 최종 70% |
| 퀘스트 정의 총계 | 3 + 4 | 7개 |
| 1인당 12주 인스턴스 | 출석 3×12=36, 오답 7×12=84, 테스트 1×12=12, 이정표 4 | 136건 |
| 20명 반 전체 | 136 × 20 | 2,720건 |
사례 2 — 교회 청년부, 8주, 40명
입력: Q3 8주 / Q4 ①주일 예배 주1회 ②소그룹 나눔 주1회 / Q5 둘 다 리더 체크 / Q6 칭호만 / Q7 팀 대항 / Q8 성장 기록
| 항목 | 계산 | 값 |
|---|---|---|
| 챕터 수 | clamp(round(8/4),2,5) = 2 | 2 |
| 반복 퀘스트 | 2개 (각 5점) | 2개 |
| 이정표 | 2 + 1 | 3개 (60% → 70%, 최종 70%) |
| 1인당 8주 인스턴스 | 8 + 8 + 3 | 19건 |
| 40명 전체 | 19 × 40 | 760건 |
Q7에서 팀 대항을 골랐으므로 화면에 경고가 뜬다: *"경쟁 요소는 하위권 참여자의 동기를 낮춘다는 연구가 있습니다. 순위는 조 단위로만 보이고 개인 순위는 표시되지 않습니다."*
사례 3 — 동호회 러닝, 4주, 15명
입력: Q3 4주 / Q4 ①달리기 주3회 ②주간 거리 기록 주1회 / Q5 ①본인 체크 ②숫자 입력 / Q6 칭호만 / Q7 개인 목표만 / Q8 없음
| 항목 | 계산 | 값 |
|---|---|---|
| 챕터 수 | round(4/4)=1 → 하한 2 적용 | 2 (2주씩) |
| 반복 퀘스트 | 2개 (2점 / 5점) | 2개 |
| 이정표 | 2 + 1 | 3개 |
| 1인당 4주 인스턴스 | 12 + 4 + 3 | 19건 |
| 15명 전체 | 19 × 15 | 285건 |
규칙 대조 결과: 세 사례 모두 계산과 규칙이 일치했다. 하한 2 적용이 사례 3에서 실제로 발동했다.
3중 교차 검증 (2026-08-10) — 같은 값이 세 경로에서 독립적으로 나왔다.
| 경로 | 사례 1 결과 |
|---|---|
| 위 표의 손계산 | 3챕터 · 3반복 · 4이정표 · 136건 · 2,720건 |
mockup/wizard.html 실제 실행 (Playwright) | 3챕터 · 3반복 · 4이정표 · 136건 · 2,720건 |
| 독립 Python 재구현 | 3챕터 · 3반복 · 4이정표 · 136건 · 2,720건 |
사례 2·3도 동일하게 일치했다(19건/760건, 19건/285건).
검수에서 발견돼 고친 버그 1건 — 챕터 구간 라벨이
i*4+1 ~ (i+1)*4로 고정돼 있어 챕터 수가 하한 2·상한 5로 clamp될 때 어긋났다. 4주 2챕터는 "5~4주"라는 불가능한 구간이 나왔고, 24주 5챕터는 21~24주가 통째로 사라졌다. 기간을 챕터 수로 균등 분할하도록 고쳤고, 4주(1~2, 3~4) · 12주(1~4, 5~8, 9~12) · 24주(1~5, 6~10, 11~14, 15~19, 20~24)에서 끊김·중복 없이 기간 끝까지 이어지는 것을 확인했다.
규모 시뮬레이션 — 저장이 터지는가
학생 300명 · 반 12개 · 반복 퀘스트 3종(주 11회 발생) · 12주 기준:
1인당 = 11회/주 × 12주 = 132건 + 이정표 4건 = 136건
전체 = 136 × 300명 ≈ 40,800건
4만 건은 어떤 데이터베이스에도 부담이 아니다. 수백 명 규모에서 저장 폭증 위험은 없다. 병목은 저장이 아니라 리더의 입력 시간이다 — 그래서 입력 부담가 필요하다.
8. 목업이 이 명세를 전부 구현하지는 않았다
mockup/wizard.html은 인터뷰용이라 일부만 구현했다. 원장에게 보여줄 때 이 차이를 밝혀야 한다.
| 명세 | 목업 |
|---|---|
| Q3 기간 직접 입력 | 4·8·12·16·24주 고정 선택만 |
| Q5 사진·파일 제출 | 선택지는 있으나 업로드 화면 없음 |
| Q6 보상 예산 상한 입력 | 미구현 (budget 필드는 선언만) |
| Q7 상위 N명 노출 | "상위 3명"으로 고정 |
| 「본인 체크 + 10% 스팟체크」 조합 | Q5에서 스팟체크 비율을 지정할 수 없음 |
| 표 편집기 인라인 수정 | 결과 표는 읽기 전용 |
마지막 줄이 특히 중요하다. 입력 부담의 권장 조합은 자율 학습 항목에 "본인 체크 + 무작위 10% 확인"을 쓰는데, 위저드 Q5에는 그 조합을 고를 수단이 없다. 명세와 목업 중 어느 쪽을 고칠지는 인터뷰 뒤에 정한다 — 원장이 스팟체크를 이해하고 원하는지가 먼저다.
9. 이 문서가 확정하지 않은 것
- 테이블 스키마와 인덱스 — 인터뷰 전에 확정하면
Group(반)전제가 "1:1 개인 수업" 한마디로 무너진다 - 템플릿 6종의 실제 문구와 서사 — 원장에게 보여준 뒤 고친다
- 점수 배점의 절대값 — 밸런스는 파일럿 데이터로 조정한다