74일차 자료 추가(답 제외), 73일차 정답 공개(LAB-A · VIBE-A · answers · tscan), 64 · 65 · 68~73일차 교안 · 실습 문서 수정 반영

This commit is contained in:
mcchae committed 2026-10-27 23:16:10 +09:00
1 parent 4ef0464525
commit bb719d81fa
191 files changed
+36875 -64

No files matched your search

+65
View File
@@ -0,0 +1,65 @@
{
"webhook": "my-helpdesk",
"cases": [
{
"name": "VPN",
"request": "requests/faq-vpn.json",
"expect": {
"status": 200,
"equals": {
"route": "자동 답변"
}
}
},
{
"name": "비밀번호",
"request": "requests/faq-password.json",
"expect": {
"status": 200,
"equals": {
"route": "자동 답변"
}
}
},
{
"name": "프린터",
"request": "requests/faq-printer.json",
"expect": {
"status": 200,
"equals": {
"route": "자동 답변"
}
}
},
{
"name": "메일함",
"request": "requests/faq-mail.json",
"expect": {
"status": 200,
"equals": {
"route": "자동 답변"
}
}
},
{
"name": "접수 처리 중",
"request": "requests/ticket-own.json",
"expect": {
"status": 200,
"equals": {
"route": "자동 답변"
}
}
},
{
"name": "접수 처리 완료",
"request": "requests/ticket-done.json",
"expect": {
"status": 200,
"equals": {
"route": "자동 답변"
}
}
}
]
}
+51
View File
@@ -0,0 +1,51 @@
{
"webhook": "my-helpdesk",
"cases": [
{
"name": "지시문은 저장소에서",
"request": "requests/faq-vpn.json",
"expect": {
"equals": {
"version.prompt_source": "registry",
"version.prompt_version": "p1"
},
"contains": {
"answer": [
"인증서"
]
}
}
},
{
"name": "p1은 출처 번호를 붙이지 않음",
"request": "requests/faq-printer.json",
"expect": {
"equals": {
"version.prompt_version": "p1"
},
"contains": {
"answer": [
"대기열",
"전원"
]
},
"not_contains": {
"answer": [
"[FAQ-"
]
}
}
},
{
"name": "접수 현황",
"request": "requests/ticket-own.json",
"expect": {
"contains": {
"answer": [
"처리 중"
]
}
}
}
]
}
+103
View File
@@ -0,0 +1,103 @@
{
"webhook": "my-helpdesk",
"after": [
{
"url": "http://localhost:8800/admin/fault",
"body": {
"prompts": "ok",
"slow_seconds": 8
}
}
],
"cases": [
{
"name": "평소 · 저장소에서",
"request": "requests/faq-vpn.json",
"expect": {
"equals": {
"version.prompt_source": "registry"
},
"contains": {
"answer": [
"인증서"
]
}
}
},
{
"name": "저장소 고장 · 기본 지시문으로 답",
"before": [
{
"url": "http://localhost:8800/admin/fault",
"body": {
"prompts": "error"
}
}
],
"after": [
{
"url": "http://localhost:8800/admin/fault",
"body": {
"prompts": "ok"
}
}
],
"request": "requests/faq-vpn.json",
"expect": {
"status": 200,
"equals": {
"route": "자동 답변",
"version.prompt_source": "fallback"
},
"contains": {
"answer": [
"인증서"
]
}
}
},
{
"name": "저장소 느림 · 오래 기다리지 않음",
"before": [
{
"url": "http://localhost:8800/admin/fault",
"body": {
"prompts": "slow",
"slow_seconds": 8
}
}
],
"after": [
{
"url": "http://localhost:8800/admin/fault",
"body": {
"prompts": "ok",
"slow_seconds": 8
}
}
],
"request": "requests/faq-printer.json",
"expect": {
"status": 200,
"equals": {
"version.prompt_source": "fallback"
},
"max_seconds": 6
}
},
{
"name": "되돌린 뒤 · 다시 저장소에서",
"request": "requests/faq-printer.json",
"expect": {
"equals": {
"version.prompt_source": "registry"
},
"contains": {
"answer": [
"대기열"
]
}
}
}
]
}
+61
View File
@@ -0,0 +1,61 @@
{
"webhook": "rel-v1",
"cases": [
{
"name": "VPN · 해결 낱말",
"request": "requests/faq-vpn.json",
"expect": {
"contains": {
"answer": [
"인증서"
]
}
}
},
{
"name": "VPN · 출처 번호",
"request": "requests/faq-vpn.json",
"expect": {
"contains": {
"answer": [
"[FAQ-003]"
]
}
}
},
{
"name": "프린터 · 해결 낱말",
"request": "requests/faq-printer.json",
"expect": {
"contains": {
"answer": [
"대기열",
"전원"
]
}
}
},
{
"name": "프린터 · 출처 번호",
"request": "requests/faq-printer.json",
"expect": {
"contains": {
"answer": [
"[FAQ-"
]
}
}
},
{
"name": "접수 현황",
"request": "requests/ticket-own.json",
"expect": {
"contains": {
"answer": [
"처리 중"
]
}
}
}
]
}
+42
View File
@@ -0,0 +1,42 @@
{
"webhook": "my-helpdesk",
"cases": [
{
"name": "버전이 결과에",
"request": "requests/faq-vpn.json",
"expect": {
"equals": {
"version.release": "1.0.0",
"version.prompt_version": "p1",
"version.model": "gpt-4.1-mini"
},
"contains": {
"answer": [
"인증서"
]
}
}
},
{
"name": "접수 현황도 버전과 함께",
"request": "requests/ticket-own.json",
"expect": {
"equals": {
"version.release": "1.0.0"
},
"contains": {
"answer": [
"처리 중"
]
}
}
},
{
"name": "빈 질문",
"request": "requests/empty-question.json",
"expect": {
"status": 400
}
}
]
}
+139
View File
@@ -0,0 +1,139 @@
{
"webhook": "my-helpdesk",
"before": [
{
"url": "http://localhost:8800/releases/helpdesk/reset",
"body": {}
}
],
"after": [
{
"url": "http://localhost:8800/admin/fault",
"body": {
"prompts": "ok",
"slow_seconds": 8
}
},
{
"url": "http://localhost:8800/releases/helpdesk/reset",
"body": {}
}
],
"cases": [
{
"name": "망가진 릴리스 2.1.0 · 400 release broken",
"body": {
"question": "VPN 접속이 자꾸 끊겨요. 어떻게 하나요?",
"user": "이준호",
"release": "2.1.0"
},
"expect": {
"status": 400,
"equals": {
"error": "release broken",
"prompt_version": "p9"
}
}
},
{
"name": "평소 · 1.1.0은 저장소의 p2",
"body": {
"question": "VPN 접속이 자꾸 끊겨요. 어떻게 하나요?",
"user": "이준호",
"release": "1.1.0"
},
"expect": {
"equals": {
"version.prompt_source": "registry",
"version.prompt_version": "p2"
},
"contains": {
"answer": [
"[FAQ-003]"
]
}
}
},
{
"name": "저장소 고장 · 1.1.0도 기본 지시문으로",
"before": [
{
"url": "http://localhost:8800/admin/fault",
"body": {
"prompts": "error"
}
}
],
"after": [
{
"url": "http://localhost:8800/admin/fault",
"body": {
"prompts": "ok"
}
}
],
"body": {
"question": "VPN 접속이 자꾸 끊겨요. 어떻게 하나요?",
"user": "이준호",
"release": "1.1.0"
},
"expect": {
"status": 200,
"equals": {
"version.release": "1.1.0",
"version.prompt_source": "fallback"
},
"contains": {
"answer": [
"인증서"
]
}
}
},
{
"name": "저장소 고장 · 없는 릴리스는 그대로 400",
"before": [
{
"url": "http://localhost:8800/admin/fault",
"body": {
"prompts": "error"
}
}
],
"after": [
{
"url": "http://localhost:8800/admin/fault",
"body": {
"prompts": "ok"
}
}
],
"body": {
"question": "VPN 접속이 자꾸 끊겨요. 어떻게 하나요?",
"user": "이준호",
"release": "9.9.9"
},
"expect": {
"status": 400,
"equals": {
"error": "unknown release"
}
}
},
{
"name": "운영(active 1.0.0)은 그대로",
"request": "requests/faq-printer.json",
"expect": {
"equals": {
"version.release": "1.0.0",
"version.prompt_source": "registry"
},
"contains": {
"answer": [
"대기열"
]
}
}
}
]
}
+79
View File
@@ -0,0 +1,79 @@
{
"webhook": "my-helpdesk",
"before": [
{
"url": "http://localhost:8800/releases/helpdesk/reset",
"body": {}
}
],
"cases": [
{
"name": "운영 중인 릴리스 (active)",
"request": "requests/faq-vpn.json",
"expect": {
"equals": {
"version.release": "1.0.0",
"version.channel": "stable",
"version.prompt_version": "p1"
}
}
},
{
"name": "후보 시험 · 1.1.0 고정",
"expect": {
"equals": {
"version.release": "1.1.0",
"version.channel": "pinned",
"version.prompt_version": "p2"
},
"contains": {
"answer": [
"[FAQ-003]"
]
}
},
"body": {
"question": "VPN 접속이 자꾸 끊겨요. 어떻게 하나요?",
"user": "이준호",
"release": "1.1.0"
}
},
{
"name": "후보 시험 · 2.0.0 (작은 모델)",
"expect": {
"equals": {
"version.release": "2.0.0",
"version.model": "gpt-5.4-nano"
}
},
"body": {
"question": "VPN 접속이 자꾸 끊겨요. 어떻게 하나요?",
"user": "이준호",
"release": "2.0.0"
}
},
{
"name": "없는 릴리스",
"expect": {
"status": 400,
"contains": {
"known": [
"1.0.0"
]
}
},
"body": {
"question": "VPN 접속이 자꾸 끊겨요. 어떻게 하나요?",
"user": "이준호",
"release": "9.9.9"
}
},
{
"name": "빈 질문",
"request": "requests/empty-question.json",
"expect": {
"status": 400
}
}
]
}
+93
View File
@@ -0,0 +1,93 @@
{
"webhook": "my-helpdesk",
"before": [
{
"url": "http://localhost:8800/releases/helpdesk/reset",
"body": {}
},
{
"url": "http://localhost:8800/releases/helpdesk",
"body": {
"canary": {
"release": "1.1.0",
"percent": 50
}
}
}
],
"after": [
{
"url": "http://localhost:8800/releases/helpdesk/reset",
"body": {}
}
],
"cases": [
{
"name": "최유진 (bucket 0) → 카나리",
"request": "requests/faq-printer.json",
"expect": {
"equals": {
"version.release": "1.1.0",
"version.channel": "canary"
}
}
},
{
"name": "정우성 (bucket 42) → 카나리",
"body": {
"question": "VPN 접속이 자꾸 끊겨요. 어떻게 하나요?",
"user": "정우성"
},
"expect": {
"equals": {
"version.release": "1.1.0",
"version.channel": "canary"
}
}
},
{
"name": "이준호 (bucket 56) → 운영",
"request": "requests/faq-vpn.json",
"expect": {
"equals": {
"version.release": "1.0.0",
"version.channel": "stable"
}
}
},
{
"name": "김민지 (bucket 80) → 운영",
"request": "requests/faq-mail.json",
"expect": {
"equals": {
"version.release": "1.0.0",
"version.channel": "stable"
}
}
},
{
"name": "고정이 카나리보다 먼저",
"body": {
"question": "프린터 출력이 안 돼요",
"user": "최유진",
"release": "1.0.0"
},
"expect": {
"equals": {
"version.release": "1.0.0",
"version.channel": "pinned"
}
}
},
{
"name": "같은 사람은 늘 같은 쪽",
"request": "requests/faq-printer.json",
"expect": {
"equals": {
"version.release": "1.1.0",
"version.channel": "canary"
}
}
}
]
}
+35
View File
@@ -0,0 +1,35 @@
{
"webhook": "my-release-check",
"cases": [
{
"name": "1.1.0 · 내보내도 됨",
"body": {
"release": "1.1.0"
},
"expect": {
"equals": {
"verdict": "promote",
"total": 6
}
}
},
{
"name": "1.2.0 · 되돌림",
"body": {
"release": "1.2.0"
},
"expect": {
"equals": {
"verdict": "rollback"
}
}
},
{
"name": "릴리스 없음",
"body": {},
"expect": {
"status": 400
}
}
]
}
+113
View File
@@ -0,0 +1,113 @@
{
"webhook": "my-release-check",
"before": [
{
"url": "http://localhost:8800/gates/helpdesk/clear",
"body": {}
},
{
"url": "http://localhost:8800/releases/helpdesk/reset",
"body": {}
},
{
"url": "http://localhost:8800/releases/helpdesk/policy",
"body": {
"require_gate": true
}
}
],
"after": [
{
"url": "http://localhost:8800/releases/helpdesk/reset",
"body": {}
}
],
"cases": [
{
"name": "1.2.0 점검 · 기록",
"body": {
"release": "1.2.0"
},
"expect": {
"equals": {
"verdict": "rollback",
"recorded": true
}
}
},
{
"name": "1.1.0 점검 · 기록",
"body": {
"release": "1.1.0"
},
"expect": {
"equals": {
"verdict": "promote",
"recorded": true
}
}
},
{
"name": "점검에 떨어진 1.2.0은 배포 거부 (409) · 운영은 1.0.0",
"webhook": "my-helpdesk",
"before": [
{
"url": "http://localhost:8800/releases/helpdesk",
"body": {
"active": "1.2.0"
},
"status": 409
}
],
"request": "requests/faq-vpn.json",
"expect": {
"equals": {
"version.release": "1.0.0",
"version.channel": "stable"
}
}
},
{
"name": "점검을 지난 1.1.0은 배포",
"webhook": "my-helpdesk",
"before": [
{
"url": "http://localhost:8800/releases/helpdesk",
"body": {
"active": "1.1.0"
}
}
],
"request": "requests/faq-vpn.json",
"expect": {
"equals": {
"version.release": "1.1.0",
"version.channel": "stable"
}
}
},
{
"name": "점검 안 한 2.0.0은 카나리도 거부 (409)",
"webhook": "my-helpdesk",
"before": [
{
"url": "http://localhost:8800/releases/helpdesk",
"body": {
"canary": {
"release": "2.0.0",
"percent": 50
}
},
"status": 409
}
],
"request": "requests/faq-printer.json",
"expect": {
"equals": {
"version.release": "1.1.0",
"version.channel": "stable"
}
}
}
]
}
+104
View File
@@ -0,0 +1,104 @@
{
"webhook": "my-helpdesk",
"before": [
{
"url": "http://localhost:8800/releases/helpdesk/reset",
"body": {}
},
{
"url": "http://localhost:8800/releases/helpdesk",
"body": {
"canary": {
"release": "1.2.0",
"percent": 50
}
}
}
],
"cases": [
{
"name": "최유진 · 프린터",
"body": {
"question": "프린터 출력이 안 돼요",
"user": "최유진"
},
"expect": {
"contains": {
"answer": [
"대기열"
]
}
}
},
{
"name": "정우성 · 프린터",
"body": {
"question": "프린터 출력이 안 돼요",
"user": "정우성"
},
"expect": {
"contains": {
"answer": [
"대기열"
]
}
}
},
{
"name": "한지훈 · 프린터",
"body": {
"question": "프린터 출력이 안 돼요",
"user": "한지훈"
},
"expect": {
"contains": {
"answer": [
"대기열"
]
}
}
},
{
"name": "이준호 · 프린터",
"body": {
"question": "프린터 출력이 안 돼요",
"user": "이준호"
},
"expect": {
"contains": {
"answer": [
"대기열"
]
}
}
},
{
"name": "박서연 · 프린터",
"body": {
"question": "프린터 출력이 안 돼요",
"user": "박서연"
},
"expect": {
"contains": {
"answer": [
"대기열"
]
}
}
},
{
"name": "김민지 · 프린터",
"body": {
"question": "프린터 출력이 안 돼요",
"user": "김민지"
},
"expect": {
"contains": {
"answer": [
"대기열"
]
}
}
}
]
}
+63
View File
@@ -0,0 +1,63 @@
{
"webhook": "my-helpdesk",
"before": [
{
"url": "http://localhost:8800/releases/helpdesk/reset",
"body": {}
}
],
"after": [
{
"url": "http://localhost:8800/releases/helpdesk/reset",
"body": {}
}
],
"cases": [
{
"name": "배포 · 1.1.0을 active로",
"request": "requests/faq-vpn.json",
"expect": {
"equals": {
"version.release": "1.1.0",
"version.channel": "stable"
},
"contains": {
"answer": [
"[FAQ-003]"
]
}
},
"before": [
{
"url": "http://localhost:8800/releases/helpdesk",
"body": {
"active": "1.1.0"
}
}
]
},
{
"name": "되돌리기 · 1.0.0",
"request": "requests/faq-vpn.json",
"expect": {
"equals": {
"version.release": "1.0.0",
"version.channel": "stable"
},
"not_contains": {
"answer": [
"[FAQ-"
]
}
},
"before": [
{
"url": "http://localhost:8800/releases/helpdesk",
"body": {
"active": "1.0.0"
}
}
]
}
]
}