72일차 자료 추가(답 제외)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
mcchaeandClaude Opus 5.5 committed 2026-10-25 22:57:12 +09:00
1 parent aaf77d4e18
commit febde9757c
63 files changed
+12260

No files matched your search

+56
View File
@@ -0,0 +1,56 @@
{
"webhook": "my-helpdesk",
"cases": [
{
"name": "FAQ · 접수 시간 따로",
"request": "requests/faq-vpn-nocache.json",
"expect": {
"contains": {
"timings": [
"faq_ms"
]
}
}
},
{
"name": "접수 조회 시간",
"request": "requests/faq-vpn-nocache.json",
"expect": {
"contains": {
"timings": [
"ticket_ms"
]
}
}
},
{
"name": "가장 오래 걸린 단계",
"request": "requests/faq-vpn-nocache.json",
"expect": {
"contains": {
"slowest_step": [
"classify",
"answer",
"review"
]
}
}
},
{
"name": "접수 현황도 같은 모양",
"request": "requests/ticket-own.json",
"expect": {
"contains": {
"answer": [
"처리 중"
],
"slowest_step": [
"classify",
"answer",
"review"
]
}
}
}
]
}
+104
View File
@@ -0,0 +1,104 @@
{
"webhook": "my-helpdesk",
"cases": [
{
"name": "예산 안 (넉넉한 예산)",
"body": {
"question": "VPN 접속이 자꾸 끊겨요. 어떻게 하나요?",
"user": "이준호",
"no_cache": true,
"budget_ms": 60000
},
"expect": {
"equals": {
"over_budget": false,
"budget_ms": 60000
},
"contains": {
"llm_ms": [
"0",
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9"
],
"answer": [
"인증서"
]
}
}
},
{
"name": "예산 넘음 (0.5초 예산)",
"body": {
"question": "VPN 접속이 자꾸 끊겨요. 어떻게 하나요?",
"user": "이준호",
"no_cache": true,
"budget_ms": 500
},
"expect": {
"equals": {
"over_budget": true,
"budget_ms": 500
}
}
},
{
"name": "예산을 안 주면 3초",
"request": "requests/faq-vpn-nocache.json",
"expect": {
"equals": {
"budget_ms": 3000
},
"contains": {
"llm_ms": [
"0",
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9"
]
}
}
},
{
"name": "접수 현황도 같은 모양",
"request": "requests/ticket-own.json",
"expect": {
"equals": {
"budget_ms": 3000,
"category": "ticket"
},
"contains": {
"llm_ms": [
"0",
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9"
],
"slowest_step": [
"classify",
"answer",
"review"
]
}
}
}
]
}
+66
View File
@@ -0,0 +1,66 @@
{
"webhook": "my-helpdesk",
"cases": [
{
"name": "VPN FAQ · 단계별 시간",
"request": "requests/faq-vpn-nocache.json",
"expect": {
"equals": {
"route": "자동 답변",
"category": "faq"
},
"contains": {
"answer": [
"인증서"
],
"timings": [
"answer_ms"
]
}
}
},
{
"name": "VPN FAQ · 전체 시간 · LLM 호출 수",
"request": "requests/faq-vpn-nocache.json",
"expect": {
"contains": {
"timings": [
"total_ms"
],
"steps": [
"answer"
],
"llm_calls": [
"1",
"2",
"3"
]
}
}
},
{
"name": "접수 현황",
"request": "requests/ticket-own.json",
"expect": {
"equals": {
"category": "ticket"
},
"contains": {
"answer": [
"처리 중"
],
"timings": [
"answer_ms"
]
}
}
},
{
"name": "빈 질문",
"request": "requests/empty-question.json",
"expect": {
"status": 400
}
}
]
}
+87
View File
@@ -0,0 +1,87 @@
{
"webhook": "my-helpdesk",
"before": [
{
"webhook": "my-helpdesk",
"body": {
"question": "워밍업: 프린터 출력이 안 돼요",
"user": "이준호",
"no_cache": true
}
}
],
"cases": [
{
"name": "VPN · LLM 한 번 · 2.5초 안",
"request": "requests/faq-vpn-nocache.json",
"expect": {
"equals": {
"llm_calls": 1,
"cached": false
},
"contains": {
"answer": [
"인증서"
]
},
"max_seconds": 2.5
}
},
{
"name": "비밀번호 · LLM 한 번",
"body": {
"question": "비밀번호를 잊어버렸어요. 재설정은 어떻게 하나요?",
"user": "한지훈",
"no_cache": true
},
"expect": {
"equals": {
"llm_calls": 1
},
"contains": {
"answer": [
"비밀번호 찾기",
"휴대폰"
]
},
"max_seconds": 2.5
}
},
{
"name": "접수 현황 · LLM 한 번",
"request": "requests/ticket-own.json",
"expect": {
"equals": {
"llm_calls": 1
},
"contains": {
"answer": [
"처리 중"
]
},
"max_seconds": 2.5
}
},
{
"name": "규칙으로 모르면 분류 + 답 두 번",
"expect": {
"equals": {
"llm_calls": 2
}
},
"body": {
"question": "회의실 화면 공유가 안 되는데 누구에게 물어보나요?",
"user": "이준호",
"no_cache": true
}
},
{
"name": "빈 질문은 LLM 없이",
"request": "requests/empty-question.json",
"expect": {
"status": 400,
"max_seconds": 1
}
}
]
}
+104
View File
@@ -0,0 +1,104 @@
{
"webhook": "my-helpdesk",
"before": [
{
"url": "http://localhost:8800/cache-clear",
"body": {}
}
],
"cases": [
{
"name": "처음 묻는 VPN (캐시 없음)",
"request": "requests/faq-vpn.json",
"expect": {
"equals": {
"cached": false
},
"contains": {
"answer": [
"인증서"
]
}
}
},
{
"name": "다른 말로 묻는 VPN → FAQ 번호 캐시",
"body": {
"question": "VPN 연결이 계속 끊어지는데요",
"user": "최유진"
},
"expect": {
"equals": {
"cached": true,
"cache_by": "faq",
"llm_calls": 0
},
"contains": {
"answer": [
"인증서"
]
},
"max_seconds": 1
}
},
{
"name": "같은 말은 질문 캐시",
"request": "requests/faq-vpn-again.json",
"expect": {
"equals": {
"cached": true,
"cache_by": "question",
"llm_calls": 0
},
"max_seconds": 1
}
},
{
"name": "no_cache면 FAQ 번호 캐시도 안 씀",
"body": {
"question": "VPN 연결이 계속 끊어지는데요",
"user": "최유진",
"no_cache": true
},
"expect": {
"equals": {
"cached": false
},
"contains": {
"answer": [
"인증서"
]
}
}
},
{
"name": "다른 FAQ는 따로 (프린터 처음)",
"request": "requests/faq-printer.json",
"expect": {
"equals": {
"cached": false
},
"contains": {
"answer": [
"대기열",
"전원"
]
}
}
},
{
"name": "접수 현황은 캐시 안 함",
"request": "requests/ticket-own.json",
"expect": {
"equals": {
"cached": false
},
"contains": {
"answer": [
"처리 중"
]
}
}
}
]
}
+158
View File
@@ -0,0 +1,158 @@
{
"webhook": "my-helpdesk",
"before": [
{
"url": "http://localhost:8800/cache-clear",
"body": {}
}
],
"cases": [
{
"name": "예제 1 · 프린터 FAQ는 규칙으로",
"request": "requests/faq-printer.json",
"expect": {
"equals": {
"category": "faq"
},
"contains": {
"steps": [
"rule"
],
"answer": [
"대기열",
"전원"
]
},
"not_contains": {
"steps": [
"classify"
]
}
}
},
{
"name": "예제 1 · 접수 번호는 규칙으로",
"request": "requests/ticket-own.json",
"expect": {
"equals": {
"category": "ticket"
},
"contains": {
"steps": [
"rule"
],
"answer": [
"처리 중"
]
},
"not_contains": {
"steps": [
"classify"
]
}
}
},
{
"name": "예제 1 · 없는 접수 번호",
"request": "requests/ticket-missing.json",
"expect": {
"equals": {
"category": "ticket"
},
"contains": {
"answer": [
"찾지 못",
"확인되지",
"없습니다",
"존재하지"
]
},
"not_contains": {
"answer": [
"처리 중",
"처리 완료",
"접수됨",
"반려"
]
}
}
},
{
"name": "예제 1 · 규칙으로 모르면 LLM이 분류",
"expect": {
"contains": {
"steps": [
"classify"
]
}
},
"body": {
"question": "회의실 화면 공유가 안 되는데 누구에게 물어보나요?",
"user": "이준호",
"no_cache": true
}
},
{
"name": "예제 2 · 처음 묻는 VPN",
"request": "requests/faq-vpn.json",
"expect": {
"equals": {
"cached": false
},
"contains": {
"answer": [
"인증서"
]
}
}
},
{
"name": "예제 2 · 같은 질문 (띄어쓰기·대소문자 다름)",
"request": "requests/faq-vpn-again.json",
"expect": {
"equals": {
"cached": true,
"llm_calls": 0
},
"contains": {
"answer": [
"인증서"
]
},
"max_seconds": 1
}
},
{
"name": "예제 2 · no_cache면 캐시 안 씀",
"request": "requests/faq-vpn-nocache.json",
"expect": {
"equals": {
"cached": false
}
}
},
{
"name": "예제 2 · 접수 현황은 캐시 안 함 (1)",
"request": "requests/ticket-own.json",
"expect": {
"equals": {
"cached": false
}
}
},
{
"name": "예제 2 · 접수 현황은 캐시 안 함 (2)",
"request": "requests/ticket-own.json",
"expect": {
"equals": {
"cached": false
},
"contains": {
"answer": [
"처리 중"
]
}
}
}
]
}
+103
View File
@@ -0,0 +1,103 @@
{
"webhook": "my-health",
"after": [
{
"url": "http://localhost:8800/admin/fault",
"body": {
"faq": "ok",
"tickets": "ok"
}
}
],
"cases": [
{
"name": "평소",
"request": "requests/health.json",
"expect": {
"equals": {
"status": "ok",
"checks.llm": true,
"checks.faq": true
}
}
},
{
"name": "FAQ 오류",
"before": [
{
"url": "http://localhost:8800/admin/fault",
"body": {
"faq": "error"
}
}
],
"after": [
{
"url": "http://localhost:8800/admin/fault",
"body": {
"faq": "ok",
"tickets": "ok"
}
}
],
"request": "requests/health.json",
"expect": {
"equals": {
"status": "degraded",
"checks.faq": false,
"checks.data_api": true
}
}
},
{
"name": "FAQ 느림 (8초) · 점검은 빨리 끝남",
"before": [
{
"url": "http://localhost:8800/admin/fault",
"body": {
"faq": "slow",
"slow_seconds": 8
}
}
],
"after": [
{
"url": "http://localhost:8800/admin/fault",
"body": {
"faq": "ok",
"tickets": "ok"
}
}
],
"request": "requests/health.json",
"expect": {
"equals": {
"status": "degraded",
"checks.faq": false
},
"max_seconds": 5
}
},
{
"name": "LLM 멈춤",
"before": [
{
"llm": "down"
}
],
"after": [
{
"llm": "up"
}
],
"request": "requests/health.json",
"expect": {
"equals": {
"status": "degraded",
"checks.llm": false,
"checks.faq": true
}
}
}
]
}
+106
View File
@@ -0,0 +1,106 @@
{
"webhook": "my-helpdesk",
"before": [
{
"url": "http://localhost:8800/cache-clear",
"body": {}
}
],
"after": [
{
"url": "http://localhost:8800/admin/fault",
"body": {
"faq": "ok",
"tickets": "ok"
}
},
{
"url": "http://localhost:8800/cache-clear",
"body": {}
}
],
"cases": [
{
"name": "평소",
"request": "requests/faq-vpn-nocache.json",
"expect": {
"equals": {
"route": "자동 답변"
}
}
},
{
"name": "FAQ 느림 · 처음 한 번은 기다린 뒤 담당자",
"before": [
{
"url": "http://localhost:8800/admin/fault",
"body": {
"faq": "slow",
"slow_seconds": 8
}
}
],
"body": {
"question": "비밀번호를 잊어버렸어요",
"user": "한지훈",
"no_cache": true
},
"expect": {
"status": 200,
"equals": {
"route": "담당자 연결",
"reason": "data_api_down"
},
"max_seconds": 7
}
},
{
"name": "FAQ 느림 · 다음 질문은 기다리지 않음 (차단기 열림)",
"body": {
"question": "프린터 출력이 안 돼요",
"user": "최유진",
"no_cache": true
},
"expect": {
"status": 200,
"equals": {
"route": "담당자 연결",
"reason": "breaker_open"
},
"max_seconds": 1
}
},
{
"name": "FAQ가 돌아오고 차단기를 비우면 평소대로",
"before": [
{
"url": "http://localhost:8800/admin/fault",
"body": {
"faq": "ok",
"tickets": "ok"
}
},
{
"url": "http://localhost:8800/cache-clear",
"body": {}
}
],
"body": {
"question": "프린터 출력이 안 돼요",
"user": "최유진",
"no_cache": true
},
"expect": {
"equals": {
"route": "자동 답변"
},
"contains": {
"answer": [
"대기열",
"전원"
]
}
}
}
]
}
+66
View File
@@ -0,0 +1,66 @@
{
"webhook": "my-helpdesk",
"before": [
{
"url": "http://localhost:8800/cache-clear",
"body": {}
},
{
"llm": "down"
}
],
"after": [
{
"llm": "up"
}
],
"cases": [
{
"name": "VPN · FAQ 원문으로",
"request": "requests/faq-vpn-nocache.json",
"expect": {
"status": 200,
"equals": {
"route": "간단 답변"
},
"contains": {
"answer": [
"인증서"
]
}
}
},
{
"name": "접수 현황 · 상태 그대로",
"request": "requests/ticket-own.json",
"expect": {
"status": 200,
"equals": {
"route": "간단 답변"
},
"contains": {
"answer": [
"처리 중"
]
}
}
},
{
"name": "모르는 질문 · 담당자",
"request": "requests/off-topic.json",
"expect": {
"status": 200,
"equals": {
"route": "담당자 연결"
}
}
},
{
"name": "빈 질문",
"request": "requests/empty-question.json",
"expect": {
"status": 400
}
}
]
}
+123
View File
@@ -0,0 +1,123 @@
{
"webhook": "my-helpdesk",
"before": [
{
"url": "http://localhost:8800/cache-clear",
"body": {}
}
],
"after": [
{
"url": "http://localhost:8800/admin/fault",
"body": {
"faq": "ok",
"tickets": "ok"
}
}
],
"cases": [
{
"name": "평소 접수 현황",
"request": "requests/ticket-own.json",
"expect": {
"equals": {
"route": "자동 답변",
"category": "ticket"
},
"contains": {
"answer": [
"처리 중"
]
}
}
},
{
"name": "접수 API 500 · 접수 질문은 담당자",
"before": [
{
"url": "http://localhost:8800/admin/fault",
"body": {
"tickets": "error"
}
}
],
"after": [
{
"url": "http://localhost:8800/admin/fault",
"body": {
"faq": "ok",
"tickets": "ok"
}
}
],
"request": "requests/ticket-own.json",
"expect": {
"status": 200,
"equals": {
"route": "담당자 연결",
"reason": "tickets_down"
},
"not_contains": {
"answer": [
"처리 중",
"처리 완료",
"접수됨",
"반려"
]
},
"max_seconds": 3
}
},
{
"name": "접수 API 500 · FAQ 질문은 그대로 답",
"before": [
{
"url": "http://localhost:8800/admin/fault",
"body": {
"tickets": "error"
}
}
],
"after": [
{
"url": "http://localhost:8800/admin/fault",
"body": {
"faq": "ok",
"tickets": "ok"
}
}
],
"request": "requests/faq-vpn-nocache.json",
"expect": {
"status": 200,
"equals": {
"route": "자동 답변",
"category": "faq"
},
"contains": {
"answer": [
"인증서"
]
}
}
},
{
"name": "없는 접수 번호는 그대로 (404는 고장이 아님)",
"request": "requests/ticket-missing.json",
"expect": {
"equals": {
"route": "자동 답변",
"category": "ticket"
},
"contains": {
"answer": [
"찾지 못",
"확인되지",
"없습니다",
"존재하지"
]
}
}
}
]
}
+123
View File
@@ -0,0 +1,123 @@
{
"webhook": "my-helpdesk",
"after": [
{
"url": "http://localhost:8800/admin/fault",
"body": {
"faq": "ok",
"tickets": "ok"
}
}
],
"cases": [
{
"name": "평소",
"request": "requests/faq-vpn-nocache.json",
"expect": {
"equals": {
"route": "자동 답변"
}
}
},
{
"name": "FAQ가 느릴 때 (8초)",
"before": [
{
"url": "http://localhost:8800/admin/fault",
"body": {
"faq": "slow",
"slow_seconds": 8
}
}
],
"after": [
{
"url": "http://localhost:8800/admin/fault",
"body": {
"faq": "ok",
"tickets": "ok"
}
}
],
"body": {
"question": "비밀번호를 잊어버렸어요",
"user": "한지훈",
"no_cache": true
},
"expect": {
"status": 200,
"equals": {
"route": "담당자 연결"
},
"max_seconds": 7
}
},
{
"name": "FAQ가 오류일 때 (500)",
"before": [
{
"url": "http://localhost:8800/admin/fault",
"body": {
"faq": "error"
}
}
],
"after": [
{
"url": "http://localhost:8800/admin/fault",
"body": {
"faq": "ok",
"tickets": "ok"
}
}
],
"body": {
"question": "비밀번호를 잊어버렸어요",
"user": "한지훈",
"no_cache": true
},
"expect": {
"status": 200,
"equals": {
"route": "담당자 연결"
},
"max_seconds": 5
}
},
{
"name": "캐시에 있으면 FAQ가 멈춰도 답",
"before": [
{
"url": "http://localhost:8800/cache-clear",
"body": {}
},
{
"webhook": "my-helpdesk",
"request": "requests/faq-printer.json"
},
{
"url": "http://localhost:8800/admin/fault",
"body": {
"faq": "error"
}
}
],
"after": [
{
"url": "http://localhost:8800/admin/fault",
"body": {
"faq": "ok",
"tickets": "ok"
}
}
],
"request": "requests/faq-printer.json",
"expect": {
"equals": {
"route": "자동 답변",
"cached": true
}
}
}
]
}