68일차 Lab 테스트 결과(LAB-TEST-RESULT.md · test -v 출력 · 보고서) 공개, flow.py test -v 추가

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
mcchaeandClaude Opus 5.5 committed 2026-10-20 23:19:55 +09:00
1 parent 160967b005
commit 4d77cefbef
36 files changed
+7790 -1

No files matched your search

+176
View File
@@ -0,0 +1,176 @@
{
"cases": "lab01.json",
"webhook": "my-split",
"passed": 7,
"total": 7,
"results": [
{
"case": "복합 요청 · 업무 3개",
"webhook": "my-split",
"run": 1,
"passed": true,
"problems": [],
"seconds": 3.7,
"status": 200,
"request": {
"message": "T-1002 처리 상태 알려주고, 첨부한 회의록에서 할 일도 정리해줘. 그리고 프린터 출력이 안 돼요.",
"user": "박서연",
"title": "10월 16일 주간 회의",
"notes": "참석: 김민지, 이준호, 박서연. 1) 신규 고객 문의 응답 템플릿을 이준호가 금요일까지 정리한다. 2) 박서연은 다음 주 월요일까지 VPN 장애 보고서를 작성한다. 3) 서버 점검 일정은 김민지가 오늘 중 공지한다. 4) 회의실 예약 규칙 개선은 담당자를 다음 회의에서 정한다. 다음 회의는 10월 23일."
},
"response": {
"count": 3,
"tasks": [
{
"type": "it",
"text": "T-1002 처리 상태 알려줘"
},
{
"type": "meeting",
"text": "첨부한 회의록에서 할 일 정리"
},
{
"type": "it",
"text": "프린터 출력이 안 돼요"
}
]
}
},
{
"case": "IT 하나",
"webhook": "my-split",
"run": 1,
"passed": true,
"problems": [],
"seconds": 1.9,
"status": 200,
"request": {
"message": "VPN이 계속 끊겨요. 어떻게 해야 하나요?",
"user": "이준호"
},
"response": {
"count": 1,
"tasks": [
{
"type": "it",
"text": "VPN이 계속 끊겨요. 어떻게 해야 하나요?"
}
]
}
},
{
"case": "IT 둘",
"webhook": "my-split",
"run": 1,
"passed": true,
"problems": [],
"seconds": 1.5,
"status": 200,
"request": {
"message": "비밀번호를 잊어버렸어요. 그리고 메일함 용량이 꽉 찼다고 나와요.",
"user": "이준호"
},
"response": {
"count": 2,
"tasks": [
{
"type": "it",
"text": "비밀번호를 잊어버렸어요."
},
{
"type": "it",
"text": "메일함 용량이 꽉 찼다고 나와요."
}
]
}
},
{
"case": "회의록 정리",
"webhook": "my-split",
"run": 1,
"passed": true,
"problems": [],
"seconds": 1.5,
"status": 200,
"request": {
"message": "이번 회의록 할 일 정리 부탁해요",
"user": "김민지",
"title": "10월 16일 주간 회의",
"notes": "참석: 김민지, 이준호, 박서연. 1) 신규 고객 문의 응답 템플릿을 이준호가 금요일까지 정리한다. 2) 박서연은 다음 주 월요일까지 VPN 장애 보고서를 작성한다. 3) 서버 점검 일정은 김민지가 오늘 중 공지한다. 4) 회의실 예약 규칙 개선은 담당자를 다음 회의에서 정한다. 다음 회의는 10월 23일."
},
"response": {
"count": 1,
"tasks": [
{
"type": "meeting",
"text": "이번 회의록 할 일 정리 부탁해요"
}
]
}
},
{
"case": "IT와 기타",
"webhook": "my-split",
"run": 1,
"passed": true,
"problems": [],
"seconds": 1.1,
"status": 200,
"request": {
"message": "프린터 출력이 안 돼요. 그리고 다음 주 회식 장소도 추천해 주세요.",
"user": "최유진"
},
"response": {
"count": 2,
"tasks": [
{
"type": "it",
"text": "프린터 출력이 안 돼요."
},
{
"type": "other",
"text": "다음 주 회식 장소도 추천해 주세요."
}
]
}
},
{
"case": "기타만",
"webhook": "my-split",
"run": 1,
"passed": true,
"problems": [],
"seconds": 1.0,
"status": 200,
"request": {
"message": "다음 주 회식 장소 추천해 주세요",
"user": "최유진"
},
"response": {
"count": 1,
"tasks": [
{
"type": "other",
"text": "다음 주 회식 장소 추천해 주세요"
}
]
}
},
{
"case": "빈 요청",
"webhook": "my-split",
"run": 1,
"passed": true,
"problems": [],
"seconds": 0.0,
"status": 400,
"request": {
"message": "",
"user": "이준호"
},
"response": {
"error": "message is required"
}
}
]
}
+129
View File
@@ -0,0 +1,129 @@
POST http://localhost:5678/webhook/my-split · 7 case(s) × 1
✔ 복합 요청 · 업무 3개 · 3.7s
→ request POST /webhook/my-split
{
"message": "T-1002 처리 상태 알려주고, 첨부한 회의록에서 할 일도 정리해줘. 그리고 프린터 출력이 안 돼요.",
"user": "박서연",
"title": "10월 16일 주간 회의",
"notes": "참석: 김민지, 이준호, 박서연. 1) 신규 고객 문의 응답 템플릿을 이준호가 금요일까지 정리한다. 2) 박서연은 다음 주 월요일까지 VPN 장애 보고서를 작성한다. 3) 서버 점검 일정은 김민지가 오늘 중 공지한다. 4) 회의실 예약 규칙 개선은 담당자를 다음 회의에서 정한다. 다음 회의는 10월 23일."
}
← response HTTP 200
{
"count": 3,
"tasks": [
{
"type": "it",
"text": "T-1002 처리 상태 알려줘"
},
{
"type": "meeting",
"text": "첨부한 회의록에서 할 일 정리"
},
{
"type": "it",
"text": "프린터 출력이 안 돼요"
}
]
}
✔ IT 하나 · 1.9s
→ request POST /webhook/my-split
{
"message": "VPN이 계속 끊겨요. 어떻게 해야 하나요?",
"user": "이준호"
}
← response HTTP 200
{
"count": 1,
"tasks": [
{
"type": "it",
"text": "VPN이 계속 끊겨요. 어떻게 해야 하나요?"
}
]
}
✔ IT 둘 · 1.5s
→ request POST /webhook/my-split
{
"message": "비밀번호를 잊어버렸어요. 그리고 메일함 용량이 꽉 찼다고 나와요.",
"user": "이준호"
}
← response HTTP 200
{
"count": 2,
"tasks": [
{
"type": "it",
"text": "비밀번호를 잊어버렸어요."
},
{
"type": "it",
"text": "메일함 용량이 꽉 찼다고 나와요."
}
]
}
✔ 회의록 정리 · 1.5s
→ request POST /webhook/my-split
{
"message": "이번 회의록 할 일 정리 부탁해요",
"user": "김민지",
"title": "10월 16일 주간 회의",
"notes": "참석: 김민지, 이준호, 박서연. 1) 신규 고객 문의 응답 템플릿을 이준호가 금요일까지 정리한다. 2) 박서연은 다음 주 월요일까지 VPN 장애 보고서를 작성한다. 3) 서버 점검 일정은 김민지가 오늘 중 공지한다. 4) 회의실 예약 규칙 개선은 담당자를 다음 회의에서 정한다. 다음 회의는 10월 23일."
}
← response HTTP 200
{
"count": 1,
"tasks": [
{
"type": "meeting",
"text": "이번 회의록 할 일 정리 부탁해요"
}
]
}
✔ IT와 기타 · 1.1s
→ request POST /webhook/my-split
{
"message": "프린터 출력이 안 돼요. 그리고 다음 주 회식 장소도 추천해 주세요.",
"user": "최유진"
}
← response HTTP 200
{
"count": 2,
"tasks": [
{
"type": "it",
"text": "프린터 출력이 안 돼요."
},
{
"type": "other",
"text": "다음 주 회식 장소도 추천해 주세요."
}
]
}
✔ 기타만 · 1.0s
→ request POST /webhook/my-split
{
"message": "다음 주 회식 장소 추천해 주세요",
"user": "최유진"
}
← response HTTP 200
{
"count": 1,
"tasks": [
{
"type": "other",
"text": "다음 주 회식 장소 추천해 주세요"
}
]
}
✔ 빈 요청 · 0.0s
→ request POST /webhook/my-split
{
"message": "",
"user": "이준호"
}
← response HTTP 400
{
"error": "message is required"
}
Passed 7/7
report: runs/lab01-20261020-230700.json
@@ -0,0 +1,118 @@
{
"cases": "lab01-challenge.json",
"webhook": "my-split",
"passed": 0,
"total": 4,
"results": [
{
"case": "복합 요청 · 담당 Agent",
"webhook": "my-split",
"run": 1,
"passed": false,
"problems": [
"tasks.0.agent = null (expected it-agent)",
"tasks has none of ['\"agent\": \"meeting-agent\"']"
],
"seconds": 1.3,
"status": 200,
"request": {
"message": "T-1002 처리 상태 알려주고, 첨부한 회의록에서 할 일도 정리해줘. 그리고 프린터 출력이 안 돼요.",
"user": "박서연",
"title": "10월 16일 주간 회의",
"notes": "참석: 김민지, 이준호, 박서연. 1) 신규 고객 문의 응답 템플릿을 이준호가 금요일까지 정리한다. 2) 박서연은 다음 주 월요일까지 VPN 장애 보고서를 작성한다. 3) 서버 점검 일정은 김민지가 오늘 중 공지한다. 4) 회의실 예약 규칙 개선은 담당자를 다음 회의에서 정한다. 다음 회의는 10월 23일."
},
"response": {
"count": 3,
"tasks": [
{
"type": "it",
"text": "T-1002 처리 상태 알려줘"
},
{
"type": "meeting",
"text": "첨부한 회의록에서 할 일 정리"
},
{
"type": "it",
"text": "프린터 출력이 안 돼요"
}
]
}
},
{
"case": "회의록 없는 회의 요청",
"webhook": "my-split",
"run": 1,
"passed": false,
"problems": [
"tasks.0.agent = null (expected meeting-agent)",
"tasks.0.missing = null (expected [\"notes\"])"
],
"seconds": 1.6,
"status": 200,
"request": {
"message": "이번 회의록 할 일 정리 부탁해요",
"user": "김민지"
},
"response": {
"count": 1,
"tasks": [
{
"type": "meeting",
"text": "이번 회의록 할 일 정리 부탁해요"
}
]
}
},
{
"case": "기타는 담당자 연결",
"webhook": "my-split",
"run": 1,
"passed": false,
"problems": [
"tasks.0.agent = null (expected 담당자 연결)",
"tasks.0.missing = null (expected [])"
],
"seconds": 1.1,
"status": 200,
"request": {
"message": "다음 주 회식 장소 추천해 주세요",
"user": "최유진"
},
"response": {
"count": 1,
"tasks": [
{
"type": "other",
"text": "다음 주 회식 장소 추천해 주세요"
}
]
}
},
{
"case": "IT · 입력 다 있음",
"webhook": "my-split",
"run": 1,
"passed": false,
"problems": [
"tasks.0.agent = null (expected it-agent)",
"tasks.0.missing = null (expected [])"
],
"seconds": 1.1,
"status": 200,
"request": {
"message": "VPN이 계속 끊겨요. 어떻게 해야 하나요?",
"user": "이준호"
},
"response": {
"count": 1,
"tasks": [
{
"type": "it",
"text": "VPN이 계속 끊겨요. 어떻게 해야 하나요?"
}
]
}
}
]
}
@@ -0,0 +1,77 @@
POST http://localhost:5678/webhook/my-split · 4 case(s) × 1
✘ 복합 요청 · 담당 Agent · 1.3s · tasks.0.agent = null (expected it-agent); tasks has none of ['"agent": "meeting-agent"']
→ request POST /webhook/my-split
{
"message": "T-1002 처리 상태 알려주고, 첨부한 회의록에서 할 일도 정리해줘. 그리고 프린터 출력이 안 돼요.",
"user": "박서연",
"title": "10월 16일 주간 회의",
"notes": "참석: 김민지, 이준호, 박서연. 1) 신규 고객 문의 응답 템플릿을 이준호가 금요일까지 정리한다. 2) 박서연은 다음 주 월요일까지 VPN 장애 보고서를 작성한다. 3) 서버 점검 일정은 김민지가 오늘 중 공지한다. 4) 회의실 예약 규칙 개선은 담당자를 다음 회의에서 정한다. 다음 회의는 10월 23일."
}
← response HTTP 200
{
"count": 3,
"tasks": [
{
"type": "it",
"text": "T-1002 처리 상태 알려줘"
},
{
"type": "meeting",
"text": "첨부한 회의록에서 할 일 정리"
},
{
"type": "it",
"text": "프린터 출력이 안 돼요"
}
]
}
✘ 회의록 없는 회의 요청 · 1.6s · tasks.0.agent = null (expected meeting-agent); tasks.0.missing = null (expected ["notes"])
→ request POST /webhook/my-split
{
"message": "이번 회의록 할 일 정리 부탁해요",
"user": "김민지"
}
← response HTTP 200
{
"count": 1,
"tasks": [
{
"type": "meeting",
"text": "이번 회의록 할 일 정리 부탁해요"
}
]
}
✘ 기타는 담당자 연결 · 1.1s · tasks.0.agent = null (expected 담당자 연결); tasks.0.missing = null (expected [])
→ request POST /webhook/my-split
{
"message": "다음 주 회식 장소 추천해 주세요",
"user": "최유진"
}
← response HTTP 200
{
"count": 1,
"tasks": [
{
"type": "other",
"text": "다음 주 회식 장소 추천해 주세요"
}
]
}
✘ IT · 입력 다 있음 · 1.1s · tasks.0.agent = null (expected it-agent); tasks.0.missing = null (expected [])
→ request POST /webhook/my-split
{
"message": "VPN이 계속 끊겨요. 어떻게 해야 하나요?",
"user": "이준호"
}
← response HTTP 200
{
"count": 1,
"tasks": [
{
"type": "it",
"text": "VPN이 계속 끊겨요. 어떻게 해야 하나요?"
}
]
}
Passed 0/4
report: runs/lab01-challenge-20261020-230705.json
@@ -0,0 +1,120 @@
{
"cases": "lab01-challenge.json",
"webhook": "my-split",
"passed": 4,
"total": 4,
"results": [
{
"case": "복합 요청 · 담당 Agent",
"webhook": "my-split",
"run": 1,
"passed": true,
"problems": [],
"seconds": 2.8,
"status": 200,
"request": {
"message": "T-1002 처리 상태 알려주고, 첨부한 회의록에서 할 일도 정리해줘. 그리고 프린터 출력이 안 돼요.",
"user": "박서연",
"title": "10월 16일 주간 회의",
"notes": "참석: 김민지, 이준호, 박서연. 1) 신규 고객 문의 응답 템플릿을 이준호가 금요일까지 정리한다. 2) 박서연은 다음 주 월요일까지 VPN 장애 보고서를 작성한다. 3) 서버 점검 일정은 김민지가 오늘 중 공지한다. 4) 회의실 예약 규칙 개선은 담당자를 다음 회의에서 정한다. 다음 회의는 10월 23일."
},
"response": {
"count": 3,
"tasks": [
{
"type": "it",
"text": "T-1002 처리 상태 알려줘",
"agent": "it-agent",
"missing": []
},
{
"type": "meeting",
"text": "첨부한 회의록에서 할 일 정리해줘",
"agent": "meeting-agent",
"missing": []
},
{
"type": "it",
"text": "프린터 출력이 안 돼요",
"agent": "it-agent",
"missing": []
}
]
}
},
{
"case": "회의록 없는 회의 요청",
"webhook": "my-split",
"run": 1,
"passed": true,
"problems": [],
"seconds": 1.3,
"status": 200,
"request": {
"message": "이번 회의록 할 일 정리 부탁해요",
"user": "김민지"
},
"response": {
"count": 1,
"tasks": [
{
"type": "meeting",
"text": "이번 회의록 할 일 정리 부탁해요",
"agent": "meeting-agent",
"missing": [
"notes"
]
}
]
}
},
{
"case": "기타는 담당자 연결",
"webhook": "my-split",
"run": 1,
"passed": true,
"problems": [],
"seconds": 1.0,
"status": 200,
"request": {
"message": "다음 주 회식 장소 추천해 주세요",
"user": "최유진"
},
"response": {
"count": 1,
"tasks": [
{
"type": "other",
"text": "다음 주 회식 장소 추천해 주세요",
"agent": "담당자 연결",
"missing": []
}
]
}
},
{
"case": "IT · 입력 다 있음",
"webhook": "my-split",
"run": 1,
"passed": true,
"problems": [],
"seconds": 1.1,
"status": 200,
"request": {
"message": "VPN이 계속 끊겨요. 어떻게 해야 하나요?",
"user": "이준호"
},
"response": {
"count": 1,
"tasks": [
{
"type": "it",
"text": "VPN이 계속 끊겨요. 어떻게 해야 하나요?",
"agent": "it-agent",
"missing": []
}
]
}
}
]
}
@@ -0,0 +1,91 @@
POST http://localhost:5678/webhook/my-split · 4 case(s) × 1
✔ 복합 요청 · 담당 Agent · 2.8s
→ request POST /webhook/my-split
{
"message": "T-1002 처리 상태 알려주고, 첨부한 회의록에서 할 일도 정리해줘. 그리고 프린터 출력이 안 돼요.",
"user": "박서연",
"title": "10월 16일 주간 회의",
"notes": "참석: 김민지, 이준호, 박서연. 1) 신규 고객 문의 응답 템플릿을 이준호가 금요일까지 정리한다. 2) 박서연은 다음 주 월요일까지 VPN 장애 보고서를 작성한다. 3) 서버 점검 일정은 김민지가 오늘 중 공지한다. 4) 회의실 예약 규칙 개선은 담당자를 다음 회의에서 정한다. 다음 회의는 10월 23일."
}
← response HTTP 200
{
"count": 3,
"tasks": [
{
"type": "it",
"text": "T-1002 처리 상태 알려줘",
"agent": "it-agent",
"missing": []
},
{
"type": "meeting",
"text": "첨부한 회의록에서 할 일 정리해줘",
"agent": "meeting-agent",
"missing": []
},
{
"type": "it",
"text": "프린터 출력이 안 돼요",
"agent": "it-agent",
"missing": []
}
]
}
✔ 회의록 없는 회의 요청 · 1.3s
→ request POST /webhook/my-split
{
"message": "이번 회의록 할 일 정리 부탁해요",
"user": "김민지"
}
← response HTTP 200
{
"count": 1,
"tasks": [
{
"type": "meeting",
"text": "이번 회의록 할 일 정리 부탁해요",
"agent": "meeting-agent",
"missing": [
"notes"
]
}
]
}
✔ 기타는 담당자 연결 · 1.0s
→ request POST /webhook/my-split
{
"message": "다음 주 회식 장소 추천해 주세요",
"user": "최유진"
}
← response HTTP 200
{
"count": 1,
"tasks": [
{
"type": "other",
"text": "다음 주 회식 장소 추천해 주세요",
"agent": "담당자 연결",
"missing": []
}
]
}
✔ IT · 입력 다 있음 · 1.1s
→ request POST /webhook/my-split
{
"message": "VPN이 계속 끊겨요. 어떻게 해야 하나요?",
"user": "이준호"
}
← response HTTP 200
{
"count": 1,
"tasks": [
{
"type": "it",
"text": "VPN이 계속 끊겨요. 어떻게 해야 하나요?",
"agent": "it-agent",
"missing": []
}
]
}
Passed 4/4
report: runs/lab01-challenge-20261020-230724.json
@@ -0,0 +1,196 @@
{
"cases": "lab01.json",
"webhook": "my-split",
"passed": 7,
"total": 7,
"results": [
{
"case": "복합 요청 · 업무 3개",
"webhook": "my-split",
"run": 1,
"passed": true,
"problems": [],
"seconds": 1.5,
"status": 200,
"request": {
"message": "T-1002 처리 상태 알려주고, 첨부한 회의록에서 할 일도 정리해줘. 그리고 프린터 출력이 안 돼요.",
"user": "박서연",
"title": "10월 16일 주간 회의",
"notes": "참석: 김민지, 이준호, 박서연. 1) 신규 고객 문의 응답 템플릿을 이준호가 금요일까지 정리한다. 2) 박서연은 다음 주 월요일까지 VPN 장애 보고서를 작성한다. 3) 서버 점검 일정은 김민지가 오늘 중 공지한다. 4) 회의실 예약 규칙 개선은 담당자를 다음 회의에서 정한다. 다음 회의는 10월 23일."
},
"response": {
"count": 3,
"tasks": [
{
"type": "it",
"text": "T-1002 처리 상태 알려줘",
"agent": "it-agent",
"missing": []
},
{
"type": "meeting",
"text": "첨부한 회의록에서 할 일 정리",
"agent": "meeting-agent",
"missing": []
},
{
"type": "it",
"text": "프린터 출력이 안 돼요",
"agent": "it-agent",
"missing": []
}
]
}
},
{
"case": "IT 하나",
"webhook": "my-split",
"run": 1,
"passed": true,
"problems": [],
"seconds": 1.1,
"status": 200,
"request": {
"message": "VPN이 계속 끊겨요. 어떻게 해야 하나요?",
"user": "이준호"
},
"response": {
"count": 1,
"tasks": [
{
"type": "it",
"text": "VPN이 계속 끊겨요. 어떻게 해야 하나요?",
"agent": "it-agent",
"missing": []
}
]
}
},
{
"case": "IT 둘",
"webhook": "my-split",
"run": 1,
"passed": true,
"problems": [],
"seconds": 1.5,
"status": 200,
"request": {
"message": "비밀번호를 잊어버렸어요. 그리고 메일함 용량이 꽉 찼다고 나와요.",
"user": "이준호"
},
"response": {
"count": 2,
"tasks": [
{
"type": "it",
"text": "비밀번호를 잊어버렸어요.",
"agent": "it-agent",
"missing": []
},
{
"type": "it",
"text": "메일함 용량이 꽉 찼다고 나와요.",
"agent": "it-agent",
"missing": []
}
]
}
},
{
"case": "회의록 정리",
"webhook": "my-split",
"run": 1,
"passed": true,
"problems": [],
"seconds": 1.0,
"status": 200,
"request": {
"message": "이번 회의록 할 일 정리 부탁해요",
"user": "김민지",
"title": "10월 16일 주간 회의",
"notes": "참석: 김민지, 이준호, 박서연. 1) 신규 고객 문의 응답 템플릿을 이준호가 금요일까지 정리한다. 2) 박서연은 다음 주 월요일까지 VPN 장애 보고서를 작성한다. 3) 서버 점검 일정은 김민지가 오늘 중 공지한다. 4) 회의실 예약 규칙 개선은 담당자를 다음 회의에서 정한다. 다음 회의는 10월 23일."
},
"response": {
"count": 1,
"tasks": [
{
"type": "meeting",
"text": "이번 회의록 할 일 정리 부탁해요",
"agent": "meeting-agent",
"missing": []
}
]
}
},
{
"case": "IT와 기타",
"webhook": "my-split",
"run": 1,
"passed": true,
"problems": [],
"seconds": 1.2,
"status": 200,
"request": {
"message": "프린터 출력이 안 돼요. 그리고 다음 주 회식 장소도 추천해 주세요.",
"user": "최유진"
},
"response": {
"count": 2,
"tasks": [
{
"type": "it",
"text": "프린터 출력이 안 돼요.",
"agent": "it-agent",
"missing": []
},
{
"type": "other",
"text": "다음 주 회식 장소도 추천해 주세요.",
"agent": "담당자 연결",
"missing": []
}
]
}
},
{
"case": "기타만",
"webhook": "my-split",
"run": 1,
"passed": true,
"problems": [],
"seconds": 1.1,
"status": 200,
"request": {
"message": "다음 주 회식 장소 추천해 주세요",
"user": "최유진"
},
"response": {
"count": 1,
"tasks": [
{
"type": "other",
"text": "다음 주 회식 장소 추천해 주세요",
"agent": "담당자 연결",
"missing": []
}
]
}
},
{
"case": "빈 요청",
"webhook": "my-split",
"run": 1,
"passed": true,
"problems": [],
"seconds": 0.0,
"status": 400,
"request": {
"message": "",
"user": "이준호"
},
"response": {
"error": "message is required"
}
}
]
}
@@ -0,0 +1,149 @@
POST http://localhost:5678/webhook/my-split · 7 case(s) × 1
✔ 복합 요청 · 업무 3개 · 1.5s
→ request POST /webhook/my-split
{
"message": "T-1002 처리 상태 알려주고, 첨부한 회의록에서 할 일도 정리해줘. 그리고 프린터 출력이 안 돼요.",
"user": "박서연",
"title": "10월 16일 주간 회의",
"notes": "참석: 김민지, 이준호, 박서연. 1) 신규 고객 문의 응답 템플릿을 이준호가 금요일까지 정리한다. 2) 박서연은 다음 주 월요일까지 VPN 장애 보고서를 작성한다. 3) 서버 점검 일정은 김민지가 오늘 중 공지한다. 4) 회의실 예약 규칙 개선은 담당자를 다음 회의에서 정한다. 다음 회의는 10월 23일."
}
← response HTTP 200
{
"count": 3,
"tasks": [
{
"type": "it",
"text": "T-1002 처리 상태 알려줘",
"agent": "it-agent",
"missing": []
},
{
"type": "meeting",
"text": "첨부한 회의록에서 할 일 정리",
"agent": "meeting-agent",
"missing": []
},
{
"type": "it",
"text": "프린터 출력이 안 돼요",
"agent": "it-agent",
"missing": []
}
]
}
✔ IT 하나 · 1.1s
→ request POST /webhook/my-split
{
"message": "VPN이 계속 끊겨요. 어떻게 해야 하나요?",
"user": "이준호"
}
← response HTTP 200
{
"count": 1,
"tasks": [
{
"type": "it",
"text": "VPN이 계속 끊겨요. 어떻게 해야 하나요?",
"agent": "it-agent",
"missing": []
}
]
}
✔ IT 둘 · 1.5s
→ request POST /webhook/my-split
{
"message": "비밀번호를 잊어버렸어요. 그리고 메일함 용량이 꽉 찼다고 나와요.",
"user": "이준호"
}
← response HTTP 200
{
"count": 2,
"tasks": [
{
"type": "it",
"text": "비밀번호를 잊어버렸어요.",
"agent": "it-agent",
"missing": []
},
{
"type": "it",
"text": "메일함 용량이 꽉 찼다고 나와요.",
"agent": "it-agent",
"missing": []
}
]
}
✔ 회의록 정리 · 1.0s
→ request POST /webhook/my-split
{
"message": "이번 회의록 할 일 정리 부탁해요",
"user": "김민지",
"title": "10월 16일 주간 회의",
"notes": "참석: 김민지, 이준호, 박서연. 1) 신규 고객 문의 응답 템플릿을 이준호가 금요일까지 정리한다. 2) 박서연은 다음 주 월요일까지 VPN 장애 보고서를 작성한다. 3) 서버 점검 일정은 김민지가 오늘 중 공지한다. 4) 회의실 예약 규칙 개선은 담당자를 다음 회의에서 정한다. 다음 회의는 10월 23일."
}
← response HTTP 200
{
"count": 1,
"tasks": [
{
"type": "meeting",
"text": "이번 회의록 할 일 정리 부탁해요",
"agent": "meeting-agent",
"missing": []
}
]
}
✔ IT와 기타 · 1.2s
→ request POST /webhook/my-split
{
"message": "프린터 출력이 안 돼요. 그리고 다음 주 회식 장소도 추천해 주세요.",
"user": "최유진"
}
← response HTTP 200
{
"count": 2,
"tasks": [
{
"type": "it",
"text": "프린터 출력이 안 돼요.",
"agent": "it-agent",
"missing": []
},
{
"type": "other",
"text": "다음 주 회식 장소도 추천해 주세요.",
"agent": "담당자 연결",
"missing": []
}
]
}
✔ 기타만 · 1.1s
→ request POST /webhook/my-split
{
"message": "다음 주 회식 장소 추천해 주세요",
"user": "최유진"
}
← response HTTP 200
{
"count": 1,
"tasks": [
{
"type": "other",
"text": "다음 주 회식 장소 추천해 주세요",
"agent": "담당자 연결",
"missing": []
}
]
}
✔ 빈 요청 · 0.0s
→ request POST /webhook/my-split
{
"message": "",
"user": "이준호"
}
← response HTTP 400
{
"error": "message is required"
}
Passed 7/7
report: runs/lab01-20261020-230732.json
+231
View File
@@ -0,0 +1,231 @@
{
"cases": "lab02.json",
"webhook": "my-assistant",
"passed": 6,
"total": 6,
"results": [
{
"case": "복합 요청 · 3개 모두 답",
"webhook": "my-assistant",
"run": 1,
"passed": true,
"problems": [],
"seconds": 8.7,
"status": 200,
"request": {
"message": "T-1002 처리 상태 알려주고, 첨부한 회의록에서 할 일도 정리해줘. 그리고 프린터 출력이 안 돼요.",
"user": "박서연",
"title": "10월 16일 주간 회의",
"notes": "참석: 김민지, 이준호, 박서연. 1) 신규 고객 문의 응답 템플릿을 이준호가 금요일까지 정리한다. 2) 박서연은 다음 주 월요일까지 VPN 장애 보고서를 작성한다. 3) 서버 점검 일정은 김민지가 오늘 중 공지한다. 4) 회의실 예약 규칙 개선은 담당자를 다음 회의에서 정한다. 다음 회의는 10월 23일."
},
"response": {
"count": 3,
"results": [
{
"index": 1,
"type": "it",
"text": "T-1002 처리 상태 알려줘",
"agent": "it-agent",
"route": "자동 답변",
"answer": "T-1002 티켓은 현재 \"처리 중\" 상태이며, VPN 인증서 발급 승인 대기 중입니다. 10월 20일에 완료될 예정입니다. 추가 문의가 필요하면 알려주세요."
},
{
"index": 2,
"type": "meeting",
"text": "첨부한 회의록에서 할 일 정리",
"agent": "meeting-agent",
"route": "자동 답변",
"answer": "10월 16일 주간 회의에서 신규 고객 문의 응답 템플릿 정리, VPN 장애 보고서 작성, 서버 점검 일정 공지, 회의실 예약 규칙 개선 담당자 선정에 대해 논의함. 할 일: 이준호 - 신규 고객 문의 응답 템플릿 정리 (금요일); 박서연 - VPN 장애 보고서 작성 (다음 주 월요일); 김민지 - 서버 점검 일정 공지 (오늘); 미정 - 회의실 예약 규칙 개선 담당자 선정 (10월 23일)",
"actions": [
{
"owner": "이준호",
"task": "신규 고객 문의 응답 템플릿 정리",
"due": "금요일"
},
{
"owner": "박서연",
"task": "VPN 장애 보고서 작성",
"due": "다음 주 월요일"
},
{
"owner": "김민지",
"task": "서버 점검 일정 공지",
"due": "오늘"
},
{
"owner": "미정",
"task": "회의실 예약 규칙 개선 담당자 선정",
"due": "10월 23일"
}
]
},
{
"index": 3,
"type": "it",
"text": "프린터 출력이 안 돼요",
"agent": "it-agent",
"route": "자동 답변",
"answer": "프린터 전원과 네트워크 연결을 확인하고, 인쇄 대기열을 비운 뒤 다시 출력해 보세요."
}
],
"reply": "1. T-1002 처리 상태 알려줘\n → [자동 답변] T-1002 티켓은 현재 \"처리 중\" 상태이며, VPN 인증서 발급 승인 대기 중입니다. 10월 20일에 완료될 예정입니다. 추가 문의가 필요하면 알려주세요.\n2. 첨부한 회의록에서 할 일 정리\n → [자동 답변] 10월 16일 주간 회의에서 신규 고객 문의 응답 템플릿 정리, VPN 장애 보고서 작성, 서버 점검 일정 공지, 회의실 예약 규칙 개선 담당자 선정에 대해 논의함. 할 일: 이준호 - 신규 고객 문의 응답 템플릿 정리 (금요일); 박서연 - VPN 장애 보고서 작성 (다음 주 월요일); 김민지 - 서버 점검 일정 공지 (오늘); 미정 - 회의실 예약 규칙 개선 담당자 선정 (10월 23일)\n3. 프린터 출력이 안 돼요\n → [자동 답변] 프린터 전원과 네트워크 연결을 확인하고, 인쇄 대기열을 비운 뒤 다시 출력해 보세요."
}
},
{
"case": "IT 하나",
"webhook": "my-assistant",
"run": 1,
"passed": true,
"problems": [],
"seconds": 3.7,
"status": 200,
"request": {
"message": "VPN이 계속 끊겨요. 어떻게 해야 하나요?",
"user": "이준호"
},
"response": {
"count": 1,
"results": [
{
"index": 1,
"type": "it",
"text": "VPN이 계속 끊겨요. 어떻게 해야 하나요?",
"agent": "it-agent",
"route": "자동 답변",
"answer": "VPN이 계속 끊길 경우, VPN 클라이언트를 최신 버전으로 업데이트하고 인증서 만료 여부를 확인한 뒤 다시 접속해 보시기 바랍니다."
}
],
"reply": "1. VPN이 계속 끊겨요. 어떻게 해야 하나요?\n → [자동 답변] VPN이 계속 끊길 경우, VPN 클라이언트를 최신 버전으로 업데이트하고 인증서 만료 여부를 확인한 뒤 다시 접속해 보시기 바랍니다."
}
},
{
"case": "회의록 정리",
"webhook": "my-assistant",
"run": 1,
"passed": true,
"problems": [],
"seconds": 3.8,
"status": 200,
"request": {
"message": "이번 회의록 할 일 정리 부탁해요",
"user": "김민지",
"title": "10월 16일 주간 회의",
"notes": "참석: 김민지, 이준호, 박서연. 1) 신규 고객 문의 응답 템플릿을 이준호가 금요일까지 정리한다. 2) 박서연은 다음 주 월요일까지 VPN 장애 보고서를 작성한다. 3) 서버 점검 일정은 김민지가 오늘 중 공지한다. 4) 회의실 예약 규칙 개선은 담당자를 다음 회의에서 정한다. 다음 회의는 10월 23일."
},
"response": {
"count": 1,
"results": [
{
"index": 1,
"type": "meeting",
"text": "이번 회의록 할 일 정리 부탁해요",
"agent": "meeting-agent",
"route": "자동 답변",
"answer": "10월 16일 주간 회의에서 신규 고객 문의 응답 템플릿 정리, VPN 장애 보고서 작성, 서버 점검 일정 공지, 회의실 예약 규칙 개선 담당자 선정에 대해 논의함. 할 일: 이준호 - 신규 고객 문의 응답 템플릿 정리 (금요일까지); 박서연 - VPN 장애 보고서 작성 (다음 주 월요일까지); 김민지 - 서버 점검 일정 공지 (오늘 중); 미정 - 회의실 예약 규칙 개선 담당자 선정 (10월 23일 다음 회의)",
"actions": [
{
"owner": "이준호",
"task": "신규 고객 문의 응답 템플릿 정리",
"due": "금요일까지"
},
{
"owner": "박서연",
"task": "VPN 장애 보고서 작성",
"due": "다음 주 월요일까지"
},
{
"owner": "김민지",
"task": "서버 점검 일정 공지",
"due": "오늘 중"
},
{
"owner": "미정",
"task": "회의실 예약 규칙 개선 담당자 선정",
"due": "10월 23일 다음 회의"
}
]
}
],
"reply": "1. 이번 회의록 할 일 정리 부탁해요\n → [자동 답변] 10월 16일 주간 회의에서 신규 고객 문의 응답 템플릿 정리, VPN 장애 보고서 작성, 서버 점검 일정 공지, 회의실 예약 규칙 개선 담당자 선정에 대해 논의함. 할 일: 이준호 - 신규 고객 문의 응답 템플릿 정리 (금요일까지); 박서연 - VPN 장애 보고서 작성 (다음 주 월요일까지); 김민지 - 서버 점검 일정 공지 (오늘 중); 미정 - 회의실 예약 규칙 개선 담당자 선정 (10월 23일 다음 회의)"
}
},
{
"case": "IT와 기타",
"webhook": "my-assistant",
"run": 1,
"passed": true,
"problems": [],
"seconds": 3.9,
"status": 200,
"request": {
"message": "프린터 출력이 안 돼요. 그리고 다음 주 회식 장소도 추천해 주세요.",
"user": "최유진"
},
"response": {
"count": 2,
"results": [
{
"index": 1,
"type": "it",
"text": "프린터 출력이 안 돼요.",
"agent": "it-agent",
"route": "자동 답변",
"answer": "프린터 전원과 네트워크 연결을 확인하고, 인쇄 대기열을 비운 뒤 다시 출력해 보세요."
},
{
"index": 2,
"type": "other",
"text": "다음 주 회식 장소도 추천해 주세요.",
"agent": "담당자 연결",
"route": "담당자 연결",
"answer": "IT 문의와 회의록 정리 말고는 도와드릴 수 없어 담당자에게 전달했습니다."
}
],
"reply": "1. 프린터 출력이 안 돼요.\n → [자동 답변] 프린터 전원과 네트워크 연결을 확인하고, 인쇄 대기열을 비운 뒤 다시 출력해 보세요.\n2. 다음 주 회식 장소도 추천해 주세요.\n → [담당자 연결] IT 문의와 회의록 정리 말고는 도와드릴 수 없어 담당자에게 전달했습니다."
}
},
{
"case": "기타만 · Agent 안 부름",
"webhook": "my-assistant",
"run": 1,
"passed": true,
"problems": [],
"seconds": 1.0,
"status": 200,
"request": {
"message": "다음 주 회식 장소 추천해 주세요",
"user": "최유진"
},
"response": {
"count": 1,
"results": [
{
"index": 1,
"type": "other",
"text": "다음 주 회식 장소 추천해 주세요",
"agent": "담당자 연결",
"route": "담당자 연결",
"answer": "IT 문의와 회의록 정리 말고는 도와드릴 수 없어 담당자에게 전달했습니다."
}
],
"reply": "1. 다음 주 회식 장소 추천해 주세요\n → [담당자 연결] IT 문의와 회의록 정리 말고는 도와드릴 수 없어 담당자에게 전달했습니다."
}
},
{
"case": "빈 요청",
"webhook": "my-assistant",
"run": 1,
"passed": true,
"problems": [],
"seconds": 0.0,
"status": 400,
"request": {
"message": "",
"user": "이준호"
},
"response": {
"error": "message is required"
}
}
]
}
+190
View File
@@ -0,0 +1,190 @@
POST http://localhost:5678/webhook/my-assistant · 6 case(s) × 1
✔ 복합 요청 · 3개 모두 답 · 8.7s
→ request POST /webhook/my-assistant
{
"message": "T-1002 처리 상태 알려주고, 첨부한 회의록에서 할 일도 정리해줘. 그리고 프린터 출력이 안 돼요.",
"user": "박서연",
"title": "10월 16일 주간 회의",
"notes": "참석: 김민지, 이준호, 박서연. 1) 신규 고객 문의 응답 템플릿을 이준호가 금요일까지 정리한다. 2) 박서연은 다음 주 월요일까지 VPN 장애 보고서를 작성한다. 3) 서버 점검 일정은 김민지가 오늘 중 공지한다. 4) 회의실 예약 규칙 개선은 담당자를 다음 회의에서 정한다. 다음 회의는 10월 23일."
}
← response HTTP 200
{
"count": 3,
"results": [
{
"index": 1,
"type": "it",
"text": "T-1002 처리 상태 알려줘",
"agent": "it-agent",
"route": "자동 답변",
"answer": "T-1002 티켓은 현재 \"처리 중\" 상태이며, VPN 인증서 발급 승인 대기 중입니다. 10월 20일에 완료될 예정입니다. 추가 문의가 필요하면 알려주세요."
},
{
"index": 2,
"type": "meeting",
"text": "첨부한 회의록에서 할 일 정리",
"agent": "meeting-agent",
"route": "자동 답변",
"answer": "10월 16일 주간 회의에서 신규 고객 문의 응답 템플릿 정리, VPN 장애 보고서 작성, 서버 점검 일정 공지, 회의실 예약 규칙 개선 담당자 선정에 대해 논의함. 할 일: 이준호 - 신규 고객 문의 응답 템플릿 정리 (금요일); 박서연 - VPN 장애 보고서 작성 (다음 주 월요일); 김민지 - 서버 점검 일정 공지 (오늘); 미정 - 회의실 예약 규칙 개선 담당자 선정 (10월 23일)",
"actions": [
{
"owner": "이준호",
"task": "신규 고객 문의 응답 템플릿 정리",
"due": "금요일"
},
{
"owner": "박서연",
"task": "VPN 장애 보고서 작성",
"due": "다음 주 월요일"
},
{
"owner": "김민지",
"task": "서버 점검 일정 공지",
"due": "오늘"
},
{
"owner": "미정",
"task": "회의실 예약 규칙 개선 담당자 선정",
"due": "10월 23일"
}
]
},
{
"index": 3,
"type": "it",
"text": "프린터 출력이 안 돼요",
"agent": "it-agent",
"route": "자동 답변",
"answer": "프린터 전원과 네트워크 연결을 확인하고, 인쇄 대기열을 비운 뒤 다시 출력해 보세요."
}
],
"reply": "1. T-1002 처리 상태 알려줘\n → [자동 답변] T-1002 티켓은 현재 \"처리 중\" 상태이며, VPN 인증서 발급 승인 대기 중입니다. 10월 20일에 완료될 예정입니다. 추가 문의가 필요하면 알려주세요.\n2. 첨부한 회의록에서 할 일 정리\n → [자동 답변] 10월 16일 주간 회의에서 신규 고객 문의 응답 템플릿 정리, VPN 장애 보고서 작성, 서버 점검 일정 공지, 회의실 예약 규칙 개선 담당자 선정에 대해 논의함. 할 일: 이준호 - 신규 고객 문의 응답 템플릿 정리 (금요일); 박서연 - VPN 장애 보고서 작성 (다음 주 월요일); 김민지 - 서버 점검 일정 공지 (오늘); 미정 - 회의실 예약 규칙 개선 담당자 선정 (10월 23일)\n3. 프린터 출력이 안 돼요\n → [자동 답변] 프린터 전원과 네트워크 연결을 확인하고, 인쇄 대기열을 비운 뒤 다시 출력해 보세요."
}
✔ IT 하나 · 3.7s
→ request POST /webhook/my-assistant
{
"message": "VPN이 계속 끊겨요. 어떻게 해야 하나요?",
"user": "이준호"
}
← response HTTP 200
{
"count": 1,
"results": [
{
"index": 1,
"type": "it",
"text": "VPN이 계속 끊겨요. 어떻게 해야 하나요?",
"agent": "it-agent",
"route": "자동 답변",
"answer": "VPN이 계속 끊길 경우, VPN 클라이언트를 최신 버전으로 업데이트하고 인증서 만료 여부를 확인한 뒤 다시 접속해 보시기 바랍니다."
}
],
"reply": "1. VPN이 계속 끊겨요. 어떻게 해야 하나요?\n → [자동 답변] VPN이 계속 끊길 경우, VPN 클라이언트를 최신 버전으로 업데이트하고 인증서 만료 여부를 확인한 뒤 다시 접속해 보시기 바랍니다."
}
✔ 회의록 정리 · 3.8s
→ request POST /webhook/my-assistant
{
"message": "이번 회의록 할 일 정리 부탁해요",
"user": "김민지",
"title": "10월 16일 주간 회의",
"notes": "참석: 김민지, 이준호, 박서연. 1) 신규 고객 문의 응답 템플릿을 이준호가 금요일까지 정리한다. 2) 박서연은 다음 주 월요일까지 VPN 장애 보고서를 작성한다. 3) 서버 점검 일정은 김민지가 오늘 중 공지한다. 4) 회의실 예약 규칙 개선은 담당자를 다음 회의에서 정한다. 다음 회의는 10월 23일."
}
← response HTTP 200
{
"count": 1,
"results": [
{
"index": 1,
"type": "meeting",
"text": "이번 회의록 할 일 정리 부탁해요",
"agent": "meeting-agent",
"route": "자동 답변",
"answer": "10월 16일 주간 회의에서 신규 고객 문의 응답 템플릿 정리, VPN 장애 보고서 작성, 서버 점검 일정 공지, 회의실 예약 규칙 개선 담당자 선정에 대해 논의함. 할 일: 이준호 - 신규 고객 문의 응답 템플릿 정리 (금요일까지); 박서연 - VPN 장애 보고서 작성 (다음 주 월요일까지); 김민지 - 서버 점검 일정 공지 (오늘 중); 미정 - 회의실 예약 규칙 개선 담당자 선정 (10월 23일 다음 회의)",
"actions": [
{
"owner": "이준호",
"task": "신규 고객 문의 응답 템플릿 정리",
"due": "금요일까지"
},
{
"owner": "박서연",
"task": "VPN 장애 보고서 작성",
"due": "다음 주 월요일까지"
},
{
"owner": "김민지",
"task": "서버 점검 일정 공지",
"due": "오늘 중"
},
{
"owner": "미정",
"task": "회의실 예약 규칙 개선 담당자 선정",
"due": "10월 23일 다음 회의"
}
]
}
],
"reply": "1. 이번 회의록 할 일 정리 부탁해요\n → [자동 답변] 10월 16일 주간 회의에서 신규 고객 문의 응답 템플릿 정리, VPN 장애 보고서 작성, 서버 점검 일정 공지, 회의실 예약 규칙 개선 담당자 선정에 대해 논의함. 할 일: 이준호 - 신규 고객 문의 응답 템플릿 정리 (금요일까지); 박서연 - VPN 장애 보고서 작성 (다음 주 월요일까지); 김민지 - 서버 점검 일정 공지 (오늘 중); 미정 - 회의실 예약 규칙 개선 담당자 선정 (10월 23일 다음 회의)"
}
✔ IT와 기타 · 3.9s
→ request POST /webhook/my-assistant
{
"message": "프린터 출력이 안 돼요. 그리고 다음 주 회식 장소도 추천해 주세요.",
"user": "최유진"
}
← response HTTP 200
{
"count": 2,
"results": [
{
"index": 1,
"type": "it",
"text": "프린터 출력이 안 돼요.",
"agent": "it-agent",
"route": "자동 답변",
"answer": "프린터 전원과 네트워크 연결을 확인하고, 인쇄 대기열을 비운 뒤 다시 출력해 보세요."
},
{
"index": 2,
"type": "other",
"text": "다음 주 회식 장소도 추천해 주세요.",
"agent": "담당자 연결",
"route": "담당자 연결",
"answer": "IT 문의와 회의록 정리 말고는 도와드릴 수 없어 담당자에게 전달했습니다."
}
],
"reply": "1. 프린터 출력이 안 돼요.\n → [자동 답변] 프린터 전원과 네트워크 연결을 확인하고, 인쇄 대기열을 비운 뒤 다시 출력해 보세요.\n2. 다음 주 회식 장소도 추천해 주세요.\n → [담당자 연결] IT 문의와 회의록 정리 말고는 도와드릴 수 없어 담당자에게 전달했습니다."
}
✔ 기타만 · Agent 안 부름 · 1.0s
→ request POST /webhook/my-assistant
{
"message": "다음 주 회식 장소 추천해 주세요",
"user": "최유진"
}
← response HTTP 200
{
"count": 1,
"results": [
{
"index": 1,
"type": "other",
"text": "다음 주 회식 장소 추천해 주세요",
"agent": "담당자 연결",
"route": "담당자 연결",
"answer": "IT 문의와 회의록 정리 말고는 도와드릴 수 없어 담당자에게 전달했습니다."
}
],
"reply": "1. 다음 주 회식 장소 추천해 주세요\n → [담당자 연결] IT 문의와 회의록 정리 말고는 도와드릴 수 없어 담당자에게 전달했습니다."
}
✔ 빈 요청 · 0.0s
→ request POST /webhook/my-assistant
{
"message": "",
"user": "이준호"
}
← response HTTP 400
{
"error": "message is required"
}
Passed 6/6
report: runs/lab02-20261020-230806.json
@@ -0,0 +1,107 @@
{
"cases": "lab02-challenge.json",
"webhook": "my-supervisor",
"passed": 5,
"total": 5,
"results": [
{
"case": "복합 요청",
"webhook": "my-supervisor",
"run": 1,
"passed": true,
"problems": [],
"seconds": 13.0,
"status": 200,
"request": {
"message": "T-1002 처리 상태 알려주고, 첨부한 회의록에서 할 일도 정리해줘. 그리고 프린터 출력이 안 돼요.",
"user": "박서연",
"title": "10월 16일 주간 회의",
"notes": "참석: 김민지, 이준호, 박서연. 1) 신규 고객 문의 응답 템플릿을 이준호가 금요일까지 정리한다. 2) 박서연은 다음 주 월요일까지 VPN 장애 보고서를 작성한다. 3) 서버 점검 일정은 김민지가 오늘 중 공지한다. 4) 회의실 예약 규칙 개선은 담당자를 다음 회의에서 정한다. 다음 회의는 10월 23일."
},
"response": {
"reply": "T-1002 티켓은 현재 \"처리 중\" 상태이며, VPN 인증서 발급 승인 대기 중입니다. 10월 20일에 완료될 예정입니다. \n\n첨부한 10월 16일 주간 회의록에서 할 일은 다음과 같습니다. 이준호는 신규 고객 문의 응답 템플릿 정리를 금요일까지, 박서연은 VPN 장애 보고서 작성을 다음 주 월요일까지, 김민지는 서버 점검 일정 공지를 오늘 중에, 미정은 회의실 예약 규칙 개선 담당자 선정을 10월 23일 다음 회의 때까지 맡았습니다.\n\n프린터 출력 문제는 프린터 전원과 네트워크 연결을 확인하고, 인쇄 대기열을 비운 뒤 다시 출력해 보시기 바랍니다.",
"agents_used": [
"it-agent",
"meeting-agent"
],
"calls": 3
}
},
{
"case": "IT 하나",
"webhook": "my-supervisor",
"run": 1,
"passed": true,
"problems": [],
"seconds": 4.5,
"status": 200,
"request": {
"message": "VPN이 계속 끊겨요. 어떻게 해야 하나요?",
"user": "이준호"
},
"response": {
"reply": "VPN이 계속 끊길 경우, VPN 클라이언트를 최신 버전으로 업데이트하고 인증서 만료 여부를 확인한 뒤 다시 접속해 보시기 바랍니다.",
"agents_used": [
"it-agent"
],
"calls": 1
}
},
{
"case": "회의록 정리",
"webhook": "my-supervisor",
"run": 1,
"passed": true,
"problems": [],
"seconds": 5.1,
"status": 200,
"request": {
"message": "이번 회의록 할 일 정리 부탁해요",
"user": "김민지",
"title": "10월 16일 주간 회의",
"notes": "참석: 김민지, 이준호, 박서연. 1) 신규 고객 문의 응답 템플릿을 이준호가 금요일까지 정리한다. 2) 박서연은 다음 주 월요일까지 VPN 장애 보고서를 작성한다. 3) 서버 점검 일정은 김민지가 오늘 중 공지한다. 4) 회의실 예약 규칙 개선은 담당자를 다음 회의에서 정한다. 다음 회의는 10월 23일."
},
"response": {
"reply": "10월 16일 주간 회의에서 정리된 할 일은 다음과 같습니다. 이준호 님은 신규 고객 문의 응답 템플릿 정리를 금요일까지 완료해야 하고, 박서연 님은 VPN 장애 보고서를 다음 주 월요일까지 작성해야 합니다. 김민지 님은 서버 점검 일정을 오늘 중으로 공지해야 하며, 회의실 예약 규칙 개선 담당자는 10월 23일 다음 회의 전까지 선정해야 합니다.",
"agents_used": [
"meeting-agent"
],
"calls": 1
}
},
{
"case": "기타만 · Agent 안 부름",
"webhook": "my-supervisor",
"run": 1,
"passed": true,
"problems": [],
"seconds": 1.1,
"status": 200,
"request": {
"message": "다음 주 회식 장소 추천해 주세요",
"user": "최유진"
},
"response": {
"reply": "그 요청은 담당자에게 전달했습니다.",
"agents_used": [],
"calls": 0
}
},
{
"case": "빈 요청",
"webhook": "my-supervisor",
"run": 1,
"passed": true,
"problems": [],
"seconds": 0.0,
"status": 400,
"request": {
"message": "",
"user": "이준호"
},
"response": {
"error": "message is required"
}
}
]
}
@@ -0,0 +1,72 @@
POST http://localhost:5678/webhook/my-supervisor · 5 case(s) × 1
✔ 복합 요청 · 13.0s
→ request POST /webhook/my-supervisor
{
"message": "T-1002 처리 상태 알려주고, 첨부한 회의록에서 할 일도 정리해줘. 그리고 프린터 출력이 안 돼요.",
"user": "박서연",
"title": "10월 16일 주간 회의",
"notes": "참석: 김민지, 이준호, 박서연. 1) 신규 고객 문의 응답 템플릿을 이준호가 금요일까지 정리한다. 2) 박서연은 다음 주 월요일까지 VPN 장애 보고서를 작성한다. 3) 서버 점검 일정은 김민지가 오늘 중 공지한다. 4) 회의실 예약 규칙 개선은 담당자를 다음 회의에서 정한다. 다음 회의는 10월 23일."
}
← response HTTP 200
{
"reply": "T-1002 티켓은 현재 \"처리 중\" 상태이며, VPN 인증서 발급 승인 대기 중입니다. 10월 20일에 완료될 예정입니다. \n\n첨부한 10월 16일 주간 회의록에서 할 일은 다음과 같습니다. 이준호는 신규 고객 문의 응답 템플릿 정리를 금요일까지, 박서연은 VPN 장애 보고서 작성을 다음 주 월요일까지, 김민지는 서버 점검 일정 공지를 오늘 중에, 미정은 회의실 예약 규칙 개선 담당자 선정을 10월 23일 다음 회의 때까지 맡았습니다.\n\n프린터 출력 문제는 프린터 전원과 네트워크 연결을 확인하고, 인쇄 대기열을 비운 뒤 다시 출력해 보시기 바랍니다.",
"agents_used": [
"it-agent",
"meeting-agent"
],
"calls": 3
}
✔ IT 하나 · 4.5s
→ request POST /webhook/my-supervisor
{
"message": "VPN이 계속 끊겨요. 어떻게 해야 하나요?",
"user": "이준호"
}
← response HTTP 200
{
"reply": "VPN이 계속 끊길 경우, VPN 클라이언트를 최신 버전으로 업데이트하고 인증서 만료 여부를 확인한 뒤 다시 접속해 보시기 바랍니다.",
"agents_used": [
"it-agent"
],
"calls": 1
}
✔ 회의록 정리 · 5.1s
→ request POST /webhook/my-supervisor
{
"message": "이번 회의록 할 일 정리 부탁해요",
"user": "김민지",
"title": "10월 16일 주간 회의",
"notes": "참석: 김민지, 이준호, 박서연. 1) 신규 고객 문의 응답 템플릿을 이준호가 금요일까지 정리한다. 2) 박서연은 다음 주 월요일까지 VPN 장애 보고서를 작성한다. 3) 서버 점검 일정은 김민지가 오늘 중 공지한다. 4) 회의실 예약 규칙 개선은 담당자를 다음 회의에서 정한다. 다음 회의는 10월 23일."
}
← response HTTP 200
{
"reply": "10월 16일 주간 회의에서 정리된 할 일은 다음과 같습니다. 이준호 님은 신규 고객 문의 응답 템플릿 정리를 금요일까지 완료해야 하고, 박서연 님은 VPN 장애 보고서를 다음 주 월요일까지 작성해야 합니다. 김민지 님은 서버 점검 일정을 오늘 중으로 공지해야 하며, 회의실 예약 규칙 개선 담당자는 10월 23일 다음 회의 전까지 선정해야 합니다.",
"agents_used": [
"meeting-agent"
],
"calls": 1
}
✔ 기타만 · Agent 안 부름 · 1.1s
→ request POST /webhook/my-supervisor
{
"message": "다음 주 회식 장소 추천해 주세요",
"user": "최유진"
}
← response HTTP 200
{
"reply": "그 요청은 담당자에게 전달했습니다.",
"agents_used": [],
"calls": 0
}
✔ 빈 요청 · 0.0s
→ request POST /webhook/my-supervisor
{
"message": "",
"user": "이준호"
}
← response HTTP 400
{
"error": "message is required"
}
Passed 5/5
report: runs/lab02-challenge-20261020-230841.json
@@ -0,0 +1,149 @@
{
"cases": "lab02.json",
"webhook": "my-supervisor",
"passed": 1,
"total": 6,
"results": [
{
"case": "복합 요청 · 3개 모두 답",
"webhook": "my-supervisor",
"run": 1,
"passed": false,
"problems": [
"count = null (expected 3)",
"results.0.route = null (expected 자동 답변)",
"results.1.agent = null (expected meeting-agent)",
"results.0.answer has none of ['처리 중']",
"results.1.answer has none of ['이준호']",
"results.2.answer has none of ['대기열', '전원']"
],
"seconds": 10.9,
"status": 200,
"request": {
"message": "T-1002 처리 상태 알려주고, 첨부한 회의록에서 할 일도 정리해줘. 그리고 프린터 출력이 안 돼요.",
"user": "박서연",
"title": "10월 16일 주간 회의",
"notes": "참석: 김민지, 이준호, 박서연. 1) 신규 고객 문의 응답 템플릿을 이준호가 금요일까지 정리한다. 2) 박서연은 다음 주 월요일까지 VPN 장애 보고서를 작성한다. 3) 서버 점검 일정은 김민지가 오늘 중 공지한다. 4) 회의실 예약 규칙 개선은 담당자를 다음 회의에서 정한다. 다음 회의는 10월 23일."
},
"response": {
"reply": "T-1002 티켓은 현재 \"처리 중\" 상태이며, VPN 인증서 발급 승인 대기 중입니다. 10월 20일에 완료될 예정입니다. \n\n첨부한 10월 16일 주간 회의록에서 할 일은 다음과 같습니다. 이준호는 신규 고객 문의 응답 템플릿 정리를 금요일까지, 박서연은 VPN 장애 보고서 작성을 다음 주 월요일까지, 김민지는 서버 점검 일정 공지를 오늘까지, 미정은 회의실 예약 규칙 개선 담당자 선정을 10월 23일까지 완료해야 합니다.\n\n프린터 출력 문제는 프린터 전원과 네트워크 연결을 확인하고, 인쇄 대기열을 비운 뒤 다시 출력해 보시기 바랍니다.",
"agents_used": [
"it-agent",
"meeting-agent"
],
"calls": 3
}
},
{
"case": "IT 하나",
"webhook": "my-supervisor",
"run": 1,
"passed": false,
"problems": [
"count = null (expected 1)",
"results.0.agent = null (expected it-agent)"
],
"seconds": 4.5,
"status": 200,
"request": {
"message": "VPN이 계속 끊겨요. 어떻게 해야 하나요?",
"user": "이준호"
},
"response": {
"reply": "VPN이 계속 끊길 경우, VPN 클라이언트를 최신 버전으로 업데이트하고 인증서 만료 여부를 확인한 뒤 다시 접속해 보시기 바랍니다.",
"agents_used": [
"it-agent"
],
"calls": 1
}
},
{
"case": "회의록 정리",
"webhook": "my-supervisor",
"run": 1,
"passed": false,
"problems": [
"count = null (expected 1)",
"results.0.agent = null (expected meeting-agent)",
"results.0.actions has none of ['이준호']"
],
"seconds": 4.7,
"status": 200,
"request": {
"message": "이번 회의록 할 일 정리 부탁해요",
"user": "김민지",
"title": "10월 16일 주간 회의",
"notes": "참석: 김민지, 이준호, 박서연. 1) 신규 고객 문의 응답 템플릿을 이준호가 금요일까지 정리한다. 2) 박서연은 다음 주 월요일까지 VPN 장애 보고서를 작성한다. 3) 서버 점검 일정은 김민지가 오늘 중 공지한다. 4) 회의실 예약 규칙 개선은 담당자를 다음 회의에서 정한다. 다음 회의는 10월 23일."
},
"response": {
"reply": "10월 16일 주간 회의에서 정리된 할 일은 다음과 같습니다. 이준호 님은 금요일까지 신규 고객 문의 응답 템플릿을 정리하고, 박서연 님은 다음 주 월요일까지 VPN 장애 보고서를 작성해야 합니다. 김민지 님은 오늘까지 서버 점검 일정을 공지하며, 미정 님은 10월 23일까지 회의실 예약 규칙 개선 담당자를 선정하는 업무를 맡았습니다.",
"agents_used": [
"meeting-agent"
],
"calls": 1
}
},
{
"case": "IT와 기타",
"webhook": "my-supervisor",
"run": 1,
"passed": false,
"problems": [
"count = null (expected 2)",
"results.1.route = null (expected 담당자 연결)",
"results.0.answer has none of ['대기열', '전원']"
],
"seconds": 5.4,
"status": 200,
"request": {
"message": "프린터 출력이 안 돼요. 그리고 다음 주 회식 장소도 추천해 주세요.",
"user": "최유진"
},
"response": {
"reply": "프린터 출력 문제는 프린터 전원과 네트워크 연결을 확인하고, 인쇄 대기열을 비운 뒤 다시 출력해 보시기 바랍니다. 그 요청은 담당자에게 전달했습니다.",
"agents_used": [
"it-agent"
],
"calls": 1
}
},
{
"case": "기타만 · Agent 안 부름",
"webhook": "my-supervisor",
"run": 1,
"passed": false,
"problems": [
"count = null (expected 1)",
"results.0.route = null (expected 담당자 연결)",
"results.0.agent = null (expected 담당자 연결)"
],
"seconds": 1.1,
"status": 200,
"request": {
"message": "다음 주 회식 장소 추천해 주세요",
"user": "최유진"
},
"response": {
"reply": "그 요청은 담당자에게 전달했습니다.",
"agents_used": [],
"calls": 0
}
},
{
"case": "빈 요청",
"webhook": "my-supervisor",
"run": 1,
"passed": true,
"problems": [],
"seconds": 0.0,
"status": 400,
"request": {
"message": "",
"user": "이준호"
},
"response": {
"error": "message is required"
}
}
]
}
@@ -0,0 +1,86 @@
POST http://localhost:5678/webhook/my-supervisor · 6 case(s) × 1
✘ 복합 요청 · 3개 모두 답 · 10.9s · count = null (expected 3); results.0.route = null (expected 자동 답변); results.1.agent = null (expected meeting-agent); results.0.answer has none of ['처리 중']; results.1.answer has none of ['이준호']; results.2.answer has none of ['대기열', '전원']
→ request POST /webhook/my-supervisor
{
"message": "T-1002 처리 상태 알려주고, 첨부한 회의록에서 할 일도 정리해줘. 그리고 프린터 출력이 안 돼요.",
"user": "박서연",
"title": "10월 16일 주간 회의",
"notes": "참석: 김민지, 이준호, 박서연. 1) 신규 고객 문의 응답 템플릿을 이준호가 금요일까지 정리한다. 2) 박서연은 다음 주 월요일까지 VPN 장애 보고서를 작성한다. 3) 서버 점검 일정은 김민지가 오늘 중 공지한다. 4) 회의실 예약 규칙 개선은 담당자를 다음 회의에서 정한다. 다음 회의는 10월 23일."
}
← response HTTP 200
{
"reply": "T-1002 티켓은 현재 \"처리 중\" 상태이며, VPN 인증서 발급 승인 대기 중입니다. 10월 20일에 완료될 예정입니다. \n\n첨부한 10월 16일 주간 회의록에서 할 일은 다음과 같습니다. 이준호는 신규 고객 문의 응답 템플릿 정리를 금요일까지, 박서연은 VPN 장애 보고서 작성을 다음 주 월요일까지, 김민지는 서버 점검 일정 공지를 오늘까지, 미정은 회의실 예약 규칙 개선 담당자 선정을 10월 23일까지 완료해야 합니다.\n\n프린터 출력 문제는 프린터 전원과 네트워크 연결을 확인하고, 인쇄 대기열을 비운 뒤 다시 출력해 보시기 바랍니다.",
"agents_used": [
"it-agent",
"meeting-agent"
],
"calls": 3
}
✘ IT 하나 · 4.5s · count = null (expected 1); results.0.agent = null (expected it-agent)
→ request POST /webhook/my-supervisor
{
"message": "VPN이 계속 끊겨요. 어떻게 해야 하나요?",
"user": "이준호"
}
← response HTTP 200
{
"reply": "VPN이 계속 끊길 경우, VPN 클라이언트를 최신 버전으로 업데이트하고 인증서 만료 여부를 확인한 뒤 다시 접속해 보시기 바랍니다.",
"agents_used": [
"it-agent"
],
"calls": 1
}
✘ 회의록 정리 · 4.7s · count = null (expected 1); results.0.agent = null (expected meeting-agent); results.0.actions has none of ['이준호']
→ request POST /webhook/my-supervisor
{
"message": "이번 회의록 할 일 정리 부탁해요",
"user": "김민지",
"title": "10월 16일 주간 회의",
"notes": "참석: 김민지, 이준호, 박서연. 1) 신규 고객 문의 응답 템플릿을 이준호가 금요일까지 정리한다. 2) 박서연은 다음 주 월요일까지 VPN 장애 보고서를 작성한다. 3) 서버 점검 일정은 김민지가 오늘 중 공지한다. 4) 회의실 예약 규칙 개선은 담당자를 다음 회의에서 정한다. 다음 회의는 10월 23일."
}
← response HTTP 200
{
"reply": "10월 16일 주간 회의에서 정리된 할 일은 다음과 같습니다. 이준호 님은 금요일까지 신규 고객 문의 응답 템플릿을 정리하고, 박서연 님은 다음 주 월요일까지 VPN 장애 보고서를 작성해야 합니다. 김민지 님은 오늘까지 서버 점검 일정을 공지하며, 미정 님은 10월 23일까지 회의실 예약 규칙 개선 담당자를 선정하는 업무를 맡았습니다.",
"agents_used": [
"meeting-agent"
],
"calls": 1
}
✘ IT와 기타 · 5.4s · count = null (expected 2); results.1.route = null (expected 담당자 연결); results.0.answer has none of ['대기열', '전원']
→ request POST /webhook/my-supervisor
{
"message": "프린터 출력이 안 돼요. 그리고 다음 주 회식 장소도 추천해 주세요.",
"user": "최유진"
}
← response HTTP 200
{
"reply": "프린터 출력 문제는 프린터 전원과 네트워크 연결을 확인하고, 인쇄 대기열을 비운 뒤 다시 출력해 보시기 바랍니다. 그 요청은 담당자에게 전달했습니다.",
"agents_used": [
"it-agent"
],
"calls": 1
}
✘ 기타만 · Agent 안 부름 · 1.1s · count = null (expected 1); results.0.route = null (expected 담당자 연결); results.0.agent = null (expected 담당자 연결)
→ request POST /webhook/my-supervisor
{
"message": "다음 주 회식 장소 추천해 주세요",
"user": "최유진"
}
← response HTTP 200
{
"reply": "그 요청은 담당자에게 전달했습니다.",
"agents_used": [],
"calls": 0
}
✔ 빈 요청 · 0.0s
→ request POST /webhook/my-supervisor
{
"message": "",
"user": "이준호"
}
← response HTTP 400
{
"error": "message is required"
}
Passed 1/6
report: runs/lab02-20261020-230908.json
+174
View File
@@ -0,0 +1,174 @@
{
"cases": "lab03.json",
"webhook": "my-assistant",
"passed": 4,
"total": 5,
"results": [
{
"case": "회의록 없는 회의 요청",
"webhook": "my-assistant",
"run": 1,
"passed": false,
"problems": [
"status 500 (expected 200)",
"count = null (expected 1)",
"results.0.route = null (expected 입력 필요)",
"reply has none of ['회의록']"
],
"seconds": 1.3,
"status": 500,
"request": {
"message": "이번 회의록 할 일 정리 부탁해요",
"user": "김민지"
},
"response": {
"message": "Error in workflow"
}
},
{
"case": "IT 둘 · 둘 다 답",
"webhook": "my-assistant",
"run": 1,
"passed": true,
"problems": [],
"seconds": 3.6,
"status": 200,
"request": {
"message": "비밀번호를 잊어버렸어요. 그리고 메일함 용량이 꽉 찼다고 나와요.",
"user": "이준호"
},
"response": {
"count": 2,
"results": [
{
"index": 1,
"type": "it",
"text": "비밀번호를 잊어버렸어요.",
"agent": "it-agent",
"route": "자동 답변",
"answer": "사내 포털 로그인 화면의 '비밀번호 찾기'에서 휴대폰 인증 후 새 비밀번호를 설정하시면 됩니다."
},
{
"index": 2,
"type": "it",
"text": "메일함 용량이 꽉 찼다고 나와요.",
"agent": "it-agent",
"route": "자동 답변",
"answer": "메일함 용량이 꽉 찼을 때는 오래된 메일과 큰 첨부 파일을 보관함으로 옮기거나 삭제하여 용량을 확보하시면 됩니다."
}
],
"reply": "1. 비밀번호를 잊어버렸어요.\n → [자동 답변] 사내 포털 로그인 화면의 '비밀번호 찾기'에서 휴대폰 인증 후 새 비밀번호를 설정하시면 됩니다.\n2. 메일함 용량이 꽉 찼다고 나와요.\n → [자동 답변] 메일함 용량이 꽉 찼을 때는 오래된 메일과 큰 첨부 파일을 보관함으로 옮기거나 삭제하여 용량을 확보하시면 됩니다."
}
},
{
"case": "복합 요청 · 오류 없음",
"webhook": "my-assistant",
"run": 1,
"passed": true,
"problems": [],
"seconds": 6.1,
"status": 200,
"request": {
"message": "T-1002 처리 상태 알려주고, 첨부한 회의록에서 할 일도 정리해줘. 그리고 프린터 출력이 안 돼요.",
"user": "박서연",
"title": "10월 16일 주간 회의",
"notes": "참석: 김민지, 이준호, 박서연. 1) 신규 고객 문의 응답 템플릿을 이준호가 금요일까지 정리한다. 2) 박서연은 다음 주 월요일까지 VPN 장애 보고서를 작성한다. 3) 서버 점검 일정은 김민지가 오늘 중 공지한다. 4) 회의실 예약 규칙 개선은 담당자를 다음 회의에서 정한다. 다음 회의는 10월 23일."
},
"response": {
"count": 3,
"results": [
{
"index": 1,
"type": "it",
"text": "T-1002 처리 상태 알려줘",
"agent": "it-agent",
"route": "자동 답변",
"answer": "T-1002 티켓은 현재 \"처리 중\" 상태이며, VPN 인증서 발급 승인 대기 중입니다. 10월 20일에 완료될 예정입니다. 추가 문의가 필요하면 알려주세요."
},
{
"index": 2,
"type": "meeting",
"text": "첨부한 회의록에서 할 일 정리",
"agent": "meeting-agent",
"route": "자동 답변",
"answer": "10월 16일 주간 회의에서 신규 고객 문의 응답 템플릿 정리, VPN 장애 보고서 작성, 서버 점검 일정 공지, 회의실 예약 규칙 개선 담당자 선정에 대해 논의함. 할 일: 이준호 - 신규 고객 문의 응답 템플릿 정리 (금요일까지); 박서연 - VPN 장애 보고서 작성 (다음 주 월요일까지); 김민지 - 서버 점검 일정 공지 (오늘 중); 미정 - 회의실 예약 규칙 개선 담당자 선정 (10월 23일 다음 회의에서)",
"actions": [
{
"owner": "이준호",
"task": "신규 고객 문의 응답 템플릿 정리",
"due": "금요일까지"
},
{
"owner": "박서연",
"task": "VPN 장애 보고서 작성",
"due": "다음 주 월요일까지"
},
{
"owner": "김민지",
"task": "서버 점검 일정 공지",
"due": "오늘 중"
},
{
"owner": "미정",
"task": "회의실 예약 규칙 개선 담당자 선정",
"due": "10월 23일 다음 회의에서"
}
]
},
{
"index": 3,
"type": "it",
"text": "프린터 출력이 안 돼요",
"agent": "it-agent",
"route": "자동 답변",
"answer": "프린터 전원과 네트워크 연결을 확인하고, 인쇄 대기열을 비운 뒤 다시 출력해 보세요."
}
],
"reply": "1. T-1002 처리 상태 알려줘\n → [자동 답변] T-1002 티켓은 현재 \"처리 중\" 상태이며, VPN 인증서 발급 승인 대기 중입니다. 10월 20일에 완료될 예정입니다. 추가 문의가 필요하면 알려주세요.\n2. 첨부한 회의록에서 할 일 정리\n → [자동 답변] 10월 16일 주간 회의에서 신규 고객 문의 응답 템플릿 정리, VPN 장애 보고서 작성, 서버 점검 일정 공지, 회의실 예약 규칙 개선 담당자 선정에 대해 논의함. 할 일: 이준호 - 신규 고객 문의 응답 템플릿 정리 (금요일까지); 박서연 - VPN 장애 보고서 작성 (다음 주 월요일까지); 김민지 - 서버 점검 일정 공지 (오늘 중); 미정 - 회의실 예약 규칙 개선 담당자 선정 (10월 23일 다음 회의에서)\n3. 프린터 출력이 안 돼요\n → [자동 답변] 프린터 전원과 네트워크 연결을 확인하고, 인쇄 대기열을 비운 뒤 다시 출력해 보세요."
}
},
{
"case": "기타만",
"webhook": "my-assistant",
"run": 1,
"passed": true,
"problems": [],
"seconds": 1.1,
"status": 200,
"request": {
"message": "다음 주 회식 장소 추천해 주세요",
"user": "최유진"
},
"response": {
"count": 1,
"results": [
{
"index": 1,
"type": "other",
"text": "다음 주 회식 장소 추천해 주세요",
"agent": "담당자 연결",
"route": "담당자 연결",
"answer": "IT 문의와 회의록 정리 말고는 도와드릴 수 없어 담당자에게 전달했습니다."
}
],
"reply": "1. 다음 주 회식 장소 추천해 주세요\n → [담당자 연결] IT 문의와 회의록 정리 말고는 도와드릴 수 없어 담당자에게 전달했습니다."
}
},
{
"case": "빈 요청",
"webhook": "my-assistant",
"run": 1,
"passed": true,
"problems": [],
"seconds": 0.0,
"status": 400,
"request": {
"message": "",
"user": "이준호"
},
"response": {
"error": "message is required"
}
}
]
}
+134
View File
@@ -0,0 +1,134 @@
POST http://localhost:5678/webhook/my-assistant · 5 case(s) × 1
✘ 회의록 없는 회의 요청 · 1.3s · status 500 (expected 200); count = null (expected 1); results.0.route = null (expected 입력 필요); reply has none of ['회의록']
→ request POST /webhook/my-assistant
{
"message": "이번 회의록 할 일 정리 부탁해요",
"user": "김민지"
}
← response HTTP 500
{
"message": "Error in workflow"
}
✔ IT 둘 · 둘 다 답 · 3.6s
→ request POST /webhook/my-assistant
{
"message": "비밀번호를 잊어버렸어요. 그리고 메일함 용량이 꽉 찼다고 나와요.",
"user": "이준호"
}
← response HTTP 200
{
"count": 2,
"results": [
{
"index": 1,
"type": "it",
"text": "비밀번호를 잊어버렸어요.",
"agent": "it-agent",
"route": "자동 답변",
"answer": "사내 포털 로그인 화면의 '비밀번호 찾기'에서 휴대폰 인증 후 새 비밀번호를 설정하시면 됩니다."
},
{
"index": 2,
"type": "it",
"text": "메일함 용량이 꽉 찼다고 나와요.",
"agent": "it-agent",
"route": "자동 답변",
"answer": "메일함 용량이 꽉 찼을 때는 오래된 메일과 큰 첨부 파일을 보관함으로 옮기거나 삭제하여 용량을 확보하시면 됩니다."
}
],
"reply": "1. 비밀번호를 잊어버렸어요.\n → [자동 답변] 사내 포털 로그인 화면의 '비밀번호 찾기'에서 휴대폰 인증 후 새 비밀번호를 설정하시면 됩니다.\n2. 메일함 용량이 꽉 찼다고 나와요.\n → [자동 답변] 메일함 용량이 꽉 찼을 때는 오래된 메일과 큰 첨부 파일을 보관함으로 옮기거나 삭제하여 용량을 확보하시면 됩니다."
}
✔ 복합 요청 · 오류 없음 · 6.1s
→ request POST /webhook/my-assistant
{
"message": "T-1002 처리 상태 알려주고, 첨부한 회의록에서 할 일도 정리해줘. 그리고 프린터 출력이 안 돼요.",
"user": "박서연",
"title": "10월 16일 주간 회의",
"notes": "참석: 김민지, 이준호, 박서연. 1) 신규 고객 문의 응답 템플릿을 이준호가 금요일까지 정리한다. 2) 박서연은 다음 주 월요일까지 VPN 장애 보고서를 작성한다. 3) 서버 점검 일정은 김민지가 오늘 중 공지한다. 4) 회의실 예약 규칙 개선은 담당자를 다음 회의에서 정한다. 다음 회의는 10월 23일."
}
← response HTTP 200
{
"count": 3,
"results": [
{
"index": 1,
"type": "it",
"text": "T-1002 처리 상태 알려줘",
"agent": "it-agent",
"route": "자동 답변",
"answer": "T-1002 티켓은 현재 \"처리 중\" 상태이며, VPN 인증서 발급 승인 대기 중입니다. 10월 20일에 완료될 예정입니다. 추가 문의가 필요하면 알려주세요."
},
{
"index": 2,
"type": "meeting",
"text": "첨부한 회의록에서 할 일 정리",
"agent": "meeting-agent",
"route": "자동 답변",
"answer": "10월 16일 주간 회의에서 신규 고객 문의 응답 템플릿 정리, VPN 장애 보고서 작성, 서버 점검 일정 공지, 회의실 예약 규칙 개선 담당자 선정에 대해 논의함. 할 일: 이준호 - 신규 고객 문의 응답 템플릿 정리 (금요일까지); 박서연 - VPN 장애 보고서 작성 (다음 주 월요일까지); 김민지 - 서버 점검 일정 공지 (오늘 중); 미정 - 회의실 예약 규칙 개선 담당자 선정 (10월 23일 다음 회의에서)",
"actions": [
{
"owner": "이준호",
"task": "신규 고객 문의 응답 템플릿 정리",
"due": "금요일까지"
},
{
"owner": "박서연",
"task": "VPN 장애 보고서 작성",
"due": "다음 주 월요일까지"
},
{
"owner": "김민지",
"task": "서버 점검 일정 공지",
"due": "오늘 중"
},
{
"owner": "미정",
"task": "회의실 예약 규칙 개선 담당자 선정",
"due": "10월 23일 다음 회의에서"
}
]
},
{
"index": 3,
"type": "it",
"text": "프린터 출력이 안 돼요",
"agent": "it-agent",
"route": "자동 답변",
"answer": "프린터 전원과 네트워크 연결을 확인하고, 인쇄 대기열을 비운 뒤 다시 출력해 보세요."
}
],
"reply": "1. T-1002 처리 상태 알려줘\n → [자동 답변] T-1002 티켓은 현재 \"처리 중\" 상태이며, VPN 인증서 발급 승인 대기 중입니다. 10월 20일에 완료될 예정입니다. 추가 문의가 필요하면 알려주세요.\n2. 첨부한 회의록에서 할 일 정리\n → [자동 답변] 10월 16일 주간 회의에서 신규 고객 문의 응답 템플릿 정리, VPN 장애 보고서 작성, 서버 점검 일정 공지, 회의실 예약 규칙 개선 담당자 선정에 대해 논의함. 할 일: 이준호 - 신규 고객 문의 응답 템플릿 정리 (금요일까지); 박서연 - VPN 장애 보고서 작성 (다음 주 월요일까지); 김민지 - 서버 점검 일정 공지 (오늘 중); 미정 - 회의실 예약 규칙 개선 담당자 선정 (10월 23일 다음 회의에서)\n3. 프린터 출력이 안 돼요\n → [자동 답변] 프린터 전원과 네트워크 연결을 확인하고, 인쇄 대기열을 비운 뒤 다시 출력해 보세요."
}
✔ 기타만 · 1.1s
→ request POST /webhook/my-assistant
{
"message": "다음 주 회식 장소 추천해 주세요",
"user": "최유진"
}
← response HTTP 200
{
"count": 1,
"results": [
{
"index": 1,
"type": "other",
"text": "다음 주 회식 장소 추천해 주세요",
"agent": "담당자 연결",
"route": "담당자 연결",
"answer": "IT 문의와 회의록 정리 말고는 도와드릴 수 없어 담당자에게 전달했습니다."
}
],
"reply": "1. 다음 주 회식 장소 추천해 주세요\n → [담당자 연결] IT 문의와 회의록 정리 말고는 도와드릴 수 없어 담당자에게 전달했습니다."
}
✔ 빈 요청 · 0.0s
→ request POST /webhook/my-assistant
{
"message": "",
"user": "이준호"
}
← response HTTP 400
{
"error": "message is required"
}
Passed 4/5
report: runs/lab03-20261020-230920.json
@@ -0,0 +1,81 @@
{
"cases": "lab03-down.json",
"webhook": "my-assistant",
"passed": 1,
"total": 3,
"results": [
{
"case": "회의록 Agent 꺼짐 · 복합 요청",
"webhook": "my-assistant",
"run": 1,
"passed": false,
"problems": [
"status 500 (expected 200)",
"count = null (expected 3)",
"results.0.route = null (expected 자동 답변)",
"results.1.route = null (expected 담당자 연결)",
"results.0.answer has none of ['처리 중']",
"results.1.answer has none of ['응답하지 않아']"
],
"seconds": 5.6,
"status": 500,
"request": {
"message": "T-1002 처리 상태 알려주고, 첨부한 회의록에서 할 일도 정리해줘. 그리고 프린터 출력이 안 돼요.",
"user": "박서연",
"title": "10월 16일 주간 회의",
"notes": "참석: 김민지, 이준호, 박서연. 1) 신규 고객 문의 응답 템플릿을 이준호가 금요일까지 정리한다. 2) 박서연은 다음 주 월요일까지 VPN 장애 보고서를 작성한다. 3) 서버 점검 일정은 김민지가 오늘 중 공지한다. 4) 회의실 예약 규칙 개선은 담당자를 다음 회의에서 정한다. 다음 회의는 10월 23일."
},
"response": {
"message": "Error in workflow"
}
},
{
"case": "회의록 Agent 꺼짐 · 회의록만",
"webhook": "my-assistant",
"run": 1,
"passed": false,
"problems": [
"status 500 (expected 200)",
"results.0.route = null (expected 담당자 연결)"
],
"seconds": 1.4,
"status": 500,
"request": {
"message": "이번 회의록 할 일 정리 부탁해요",
"user": "김민지",
"title": "10월 16일 주간 회의",
"notes": "참석: 김민지, 이준호, 박서연. 1) 신규 고객 문의 응답 템플릿을 이준호가 금요일까지 정리한다. 2) 박서연은 다음 주 월요일까지 VPN 장애 보고서를 작성한다. 3) 서버 점검 일정은 김민지가 오늘 중 공지한다. 4) 회의실 예약 규칙 개선은 담당자를 다음 회의에서 정한다. 다음 회의는 10월 23일."
},
"response": {
"message": "Error in workflow"
}
},
{
"case": "회의록 Agent 꺼짐 · IT는 그대로",
"webhook": "my-assistant",
"run": 1,
"passed": true,
"problems": [],
"seconds": 3.0,
"status": 200,
"request": {
"message": "VPN이 계속 끊겨요. 어떻게 해야 하나요?",
"user": "이준호"
},
"response": {
"count": 1,
"results": [
{
"index": 1,
"type": "it",
"text": "VPN이 계속 끊겨요. 어떻게 해야 하나요?",
"agent": "it-agent",
"route": "자동 답변",
"answer": "VPN이 계속 끊길 경우, VPN 클라이언트를 최신 버전으로 업데이트하고 인증서 만료 여부를 확인한 뒤 다시 접속해 보시기 바랍니다."
}
],
"reply": "1. VPN이 계속 끊겨요. 어떻게 해야 하나요?\n → [자동 답변] VPN이 계속 끊길 경우, VPN 클라이언트를 최신 버전으로 업데이트하고 인증서 만료 여부를 확인한 뒤 다시 접속해 보시기 바랍니다."
}
}
]
}
@@ -0,0 +1,48 @@
POST http://localhost:5678/webhook/my-assistant · 3 case(s) × 1
✘ 회의록 Agent 꺼짐 · 복합 요청 · 5.6s · status 500 (expected 200); count = null (expected 3); results.0.route = null (expected 자동 답변); results.1.route = null (expected 담당자 연결); results.0.answer has none of ['처리 중']; results.1.answer has none of ['응답하지 않아']
→ request POST /webhook/my-assistant
{
"message": "T-1002 처리 상태 알려주고, 첨부한 회의록에서 할 일도 정리해줘. 그리고 프린터 출력이 안 돼요.",
"user": "박서연",
"title": "10월 16일 주간 회의",
"notes": "참석: 김민지, 이준호, 박서연. 1) 신규 고객 문의 응답 템플릿을 이준호가 금요일까지 정리한다. 2) 박서연은 다음 주 월요일까지 VPN 장애 보고서를 작성한다. 3) 서버 점검 일정은 김민지가 오늘 중 공지한다. 4) 회의실 예약 규칙 개선은 담당자를 다음 회의에서 정한다. 다음 회의는 10월 23일."
}
← response HTTP 500
{
"message": "Error in workflow"
}
✘ 회의록 Agent 꺼짐 · 회의록만 · 1.4s · status 500 (expected 200); results.0.route = null (expected 담당자 연결)
→ request POST /webhook/my-assistant
{
"message": "이번 회의록 할 일 정리 부탁해요",
"user": "김민지",
"title": "10월 16일 주간 회의",
"notes": "참석: 김민지, 이준호, 박서연. 1) 신규 고객 문의 응답 템플릿을 이준호가 금요일까지 정리한다. 2) 박서연은 다음 주 월요일까지 VPN 장애 보고서를 작성한다. 3) 서버 점검 일정은 김민지가 오늘 중 공지한다. 4) 회의실 예약 규칙 개선은 담당자를 다음 회의에서 정한다. 다음 회의는 10월 23일."
}
← response HTTP 500
{
"message": "Error in workflow"
}
✔ 회의록 Agent 꺼짐 · IT는 그대로 · 3.0s
→ request POST /webhook/my-assistant
{
"message": "VPN이 계속 끊겨요. 어떻게 해야 하나요?",
"user": "이준호"
}
← response HTTP 200
{
"count": 1,
"results": [
{
"index": 1,
"type": "it",
"text": "VPN이 계속 끊겨요. 어떻게 해야 하나요?",
"agent": "it-agent",
"route": "자동 답변",
"answer": "VPN이 계속 끊길 경우, VPN 클라이언트를 최신 버전으로 업데이트하고 인증서 만료 여부를 확인한 뒤 다시 접속해 보시기 바랍니다."
}
],
"reply": "1. VPN이 계속 끊겨요. 어떻게 해야 하나요?\n → [자동 답변] VPN이 계속 끊길 경우, VPN 클라이언트를 최신 버전으로 업데이트하고 인증서 만료 여부를 확인한 뒤 다시 접속해 보시기 바랍니다."
}
Passed 1/3
report: runs/lab03-down-20261020-230939.json
+180
View File
@@ -0,0 +1,180 @@
{
"cases": "lab03.json",
"webhook": "my-assistant",
"passed": 5,
"total": 5,
"results": [
{
"case": "회의록 없는 회의 요청",
"webhook": "my-assistant",
"run": 1,
"passed": true,
"problems": [],
"seconds": 2.6,
"status": 200,
"request": {
"message": "이번 회의록 할 일 정리 부탁해요",
"user": "김민지"
},
"response": {
"count": 1,
"results": [
{
"index": 1,
"type": "meeting",
"text": "이번 회의록 할 일 정리 부탁해요",
"agent": "meeting-agent",
"route": "입력 필요",
"answer": "회의록 정리를 하려면 회의록 내용(notes)을 함께 보내 주세요."
}
],
"reply": "1. 이번 회의록 할 일 정리 부탁해요\n → [입력 필요] 회의록 정리를 하려면 회의록 내용(notes)을 함께 보내 주세요."
}
},
{
"case": "IT 둘 · 둘 다 답",
"webhook": "my-assistant",
"run": 1,
"passed": true,
"problems": [],
"seconds": 3.9,
"status": 200,
"request": {
"message": "비밀번호를 잊어버렸어요. 그리고 메일함 용량이 꽉 찼다고 나와요.",
"user": "이준호"
},
"response": {
"count": 2,
"results": [
{
"index": 1,
"type": "it",
"text": "비밀번호를 잊어버렸어요.",
"agent": "it-agent",
"route": "자동 답변",
"answer": "사내 포털 로그인 화면의 '비밀번호 찾기'에서 휴대폰 인증 후 새 비밀번호를 설정하시면 됩니다."
},
{
"index": 2,
"type": "it",
"text": "메일함 용량이 꽉 찼다고 나와요.",
"agent": "it-agent",
"route": "자동 답변",
"answer": "메일함 용량이 꽉 찼을 때는 오래된 메일과 큰 첨부 파일을 보관함으로 옮기거나 삭제하여 용량을 확보하시면 됩니다."
}
],
"reply": "1. 비밀번호를 잊어버렸어요.\n → [자동 답변] 사내 포털 로그인 화면의 '비밀번호 찾기'에서 휴대폰 인증 후 새 비밀번호를 설정하시면 됩니다.\n2. 메일함 용량이 꽉 찼다고 나와요.\n → [자동 답변] 메일함 용량이 꽉 찼을 때는 오래된 메일과 큰 첨부 파일을 보관함으로 옮기거나 삭제하여 용량을 확보하시면 됩니다."
}
},
{
"case": "복합 요청 · 오류 없음",
"webhook": "my-assistant",
"run": 1,
"passed": true,
"problems": [],
"seconds": 8.2,
"status": 200,
"request": {
"message": "T-1002 처리 상태 알려주고, 첨부한 회의록에서 할 일도 정리해줘. 그리고 프린터 출력이 안 돼요.",
"user": "박서연",
"title": "10월 16일 주간 회의",
"notes": "참석: 김민지, 이준호, 박서연. 1) 신규 고객 문의 응답 템플릿을 이준호가 금요일까지 정리한다. 2) 박서연은 다음 주 월요일까지 VPN 장애 보고서를 작성한다. 3) 서버 점검 일정은 김민지가 오늘 중 공지한다. 4) 회의실 예약 규칙 개선은 담당자를 다음 회의에서 정한다. 다음 회의는 10월 23일."
},
"response": {
"count": 3,
"results": [
{
"index": 1,
"type": "it",
"text": "T-1002 처리 상태 알려줘",
"agent": "it-agent",
"route": "자동 답변",
"answer": "T-1002 티켓은 현재 \"처리 중\" 상태이며, VPN 인증서 발급 승인 대기 중입니다. 10월 20일에 완료될 예정입니다. 추가 문의가 필요하면 알려주세요."
},
{
"index": 2,
"type": "meeting",
"text": "첨부한 회의록에서 할 일 정리",
"agent": "meeting-agent",
"route": "자동 답변",
"answer": "10월 16일 주간 회의에서 신규 고객 문의 응답 템플릿 정리, VPN 장애 보고서 작성, 서버 점검 일정 공지, 회의실 예약 규칙 개선 담당자 선정에 대해 논의함. 할 일: 이준호 - 신규 고객 문의 응답 템플릿 정리 (금요일); 박서연 - VPN 장애 보고서 작성 (다음 주 월요일); 김민지 - 서버 점검 일정 공지 (오늘); 미정 - 회의실 예약 규칙 개선 담당자 선정 (10월 23일)",
"actions": [
{
"owner": "이준호",
"task": "신규 고객 문의 응답 템플릿 정리",
"due": "금요일"
},
{
"owner": "박서연",
"task": "VPN 장애 보고서 작성",
"due": "다음 주 월요일"
},
{
"owner": "김민지",
"task": "서버 점검 일정 공지",
"due": "오늘"
},
{
"owner": "미정",
"task": "회의실 예약 규칙 개선 담당자 선정",
"due": "10월 23일"
}
]
},
{
"index": 3,
"type": "it",
"text": "프린터 출력이 안 돼요",
"agent": "it-agent",
"route": "자동 답변",
"answer": "프린터 전원과 네트워크 연결을 확인하고, 인쇄 대기열을 비운 뒤 다시 출력해 보세요."
}
],
"reply": "1. T-1002 처리 상태 알려줘\n → [자동 답변] T-1002 티켓은 현재 \"처리 중\" 상태이며, VPN 인증서 발급 승인 대기 중입니다. 10월 20일에 완료될 예정입니다. 추가 문의가 필요하면 알려주세요.\n2. 첨부한 회의록에서 할 일 정리\n → [자동 답변] 10월 16일 주간 회의에서 신규 고객 문의 응답 템플릿 정리, VPN 장애 보고서 작성, 서버 점검 일정 공지, 회의실 예약 규칙 개선 담당자 선정에 대해 논의함. 할 일: 이준호 - 신규 고객 문의 응답 템플릿 정리 (금요일); 박서연 - VPN 장애 보고서 작성 (다음 주 월요일); 김민지 - 서버 점검 일정 공지 (오늘); 미정 - 회의실 예약 규칙 개선 담당자 선정 (10월 23일)\n3. 프린터 출력이 안 돼요\n → [자동 답변] 프린터 전원과 네트워크 연결을 확인하고, 인쇄 대기열을 비운 뒤 다시 출력해 보세요."
}
},
{
"case": "기타만",
"webhook": "my-assistant",
"run": 1,
"passed": true,
"problems": [],
"seconds": 1.0,
"status": 200,
"request": {
"message": "다음 주 회식 장소 추천해 주세요",
"user": "최유진"
},
"response": {
"count": 1,
"results": [
{
"index": 1,
"type": "other",
"text": "다음 주 회식 장소 추천해 주세요",
"agent": "담당자 연결",
"route": "담당자 연결",
"answer": "IT 문의와 회의록 정리 말고는 도와드릴 수 없어 담당자에게 전달했습니다."
}
],
"reply": "1. 다음 주 회식 장소 추천해 주세요\n → [담당자 연결] IT 문의와 회의록 정리 말고는 도와드릴 수 없어 담당자에게 전달했습니다."
}
},
{
"case": "빈 요청",
"webhook": "my-assistant",
"run": 1,
"passed": true,
"problems": [],
"seconds": 0.0,
"status": 400,
"request": {
"message": "",
"user": "이준호"
},
"response": {
"error": "message is required"
}
}
]
}
+145
View File
@@ -0,0 +1,145 @@
POST http://localhost:5678/webhook/my-assistant · 5 case(s) × 1
✔ 회의록 없는 회의 요청 · 2.6s
→ request POST /webhook/my-assistant
{
"message": "이번 회의록 할 일 정리 부탁해요",
"user": "김민지"
}
← response HTTP 200
{
"count": 1,
"results": [
{
"index": 1,
"type": "meeting",
"text": "이번 회의록 할 일 정리 부탁해요",
"agent": "meeting-agent",
"route": "입력 필요",
"answer": "회의록 정리를 하려면 회의록 내용(notes)을 함께 보내 주세요."
}
],
"reply": "1. 이번 회의록 할 일 정리 부탁해요\n → [입력 필요] 회의록 정리를 하려면 회의록 내용(notes)을 함께 보내 주세요."
}
✔ IT 둘 · 둘 다 답 · 3.9s
→ request POST /webhook/my-assistant
{
"message": "비밀번호를 잊어버렸어요. 그리고 메일함 용량이 꽉 찼다고 나와요.",
"user": "이준호"
}
← response HTTP 200
{
"count": 2,
"results": [
{
"index": 1,
"type": "it",
"text": "비밀번호를 잊어버렸어요.",
"agent": "it-agent",
"route": "자동 답변",
"answer": "사내 포털 로그인 화면의 '비밀번호 찾기'에서 휴대폰 인증 후 새 비밀번호를 설정하시면 됩니다."
},
{
"index": 2,
"type": "it",
"text": "메일함 용량이 꽉 찼다고 나와요.",
"agent": "it-agent",
"route": "자동 답변",
"answer": "메일함 용량이 꽉 찼을 때는 오래된 메일과 큰 첨부 파일을 보관함으로 옮기거나 삭제하여 용량을 확보하시면 됩니다."
}
],
"reply": "1. 비밀번호를 잊어버렸어요.\n → [자동 답변] 사내 포털 로그인 화면의 '비밀번호 찾기'에서 휴대폰 인증 후 새 비밀번호를 설정하시면 됩니다.\n2. 메일함 용량이 꽉 찼다고 나와요.\n → [자동 답변] 메일함 용량이 꽉 찼을 때는 오래된 메일과 큰 첨부 파일을 보관함으로 옮기거나 삭제하여 용량을 확보하시면 됩니다."
}
✔ 복합 요청 · 오류 없음 · 8.2s
→ request POST /webhook/my-assistant
{
"message": "T-1002 처리 상태 알려주고, 첨부한 회의록에서 할 일도 정리해줘. 그리고 프린터 출력이 안 돼요.",
"user": "박서연",
"title": "10월 16일 주간 회의",
"notes": "참석: 김민지, 이준호, 박서연. 1) 신규 고객 문의 응답 템플릿을 이준호가 금요일까지 정리한다. 2) 박서연은 다음 주 월요일까지 VPN 장애 보고서를 작성한다. 3) 서버 점검 일정은 김민지가 오늘 중 공지한다. 4) 회의실 예약 규칙 개선은 담당자를 다음 회의에서 정한다. 다음 회의는 10월 23일."
}
← response HTTP 200
{
"count": 3,
"results": [
{
"index": 1,
"type": "it",
"text": "T-1002 처리 상태 알려줘",
"agent": "it-agent",
"route": "자동 답변",
"answer": "T-1002 티켓은 현재 \"처리 중\" 상태이며, VPN 인증서 발급 승인 대기 중입니다. 10월 20일에 완료될 예정입니다. 추가 문의가 필요하면 알려주세요."
},
{
"index": 2,
"type": "meeting",
"text": "첨부한 회의록에서 할 일 정리",
"agent": "meeting-agent",
"route": "자동 답변",
"answer": "10월 16일 주간 회의에서 신규 고객 문의 응답 템플릿 정리, VPN 장애 보고서 작성, 서버 점검 일정 공지, 회의실 예약 규칙 개선 담당자 선정에 대해 논의함. 할 일: 이준호 - 신규 고객 문의 응답 템플릿 정리 (금요일); 박서연 - VPN 장애 보고서 작성 (다음 주 월요일); 김민지 - 서버 점검 일정 공지 (오늘); 미정 - 회의실 예약 규칙 개선 담당자 선정 (10월 23일)",
"actions": [
{
"owner": "이준호",
"task": "신규 고객 문의 응답 템플릿 정리",
"due": "금요일"
},
{
"owner": "박서연",
"task": "VPN 장애 보고서 작성",
"due": "다음 주 월요일"
},
{
"owner": "김민지",
"task": "서버 점검 일정 공지",
"due": "오늘"
},
{
"owner": "미정",
"task": "회의실 예약 규칙 개선 담당자 선정",
"due": "10월 23일"
}
]
},
{
"index": 3,
"type": "it",
"text": "프린터 출력이 안 돼요",
"agent": "it-agent",
"route": "자동 답변",
"answer": "프린터 전원과 네트워크 연결을 확인하고, 인쇄 대기열을 비운 뒤 다시 출력해 보세요."
}
],
"reply": "1. T-1002 처리 상태 알려줘\n → [자동 답변] T-1002 티켓은 현재 \"처리 중\" 상태이며, VPN 인증서 발급 승인 대기 중입니다. 10월 20일에 완료될 예정입니다. 추가 문의가 필요하면 알려주세요.\n2. 첨부한 회의록에서 할 일 정리\n → [자동 답변] 10월 16일 주간 회의에서 신규 고객 문의 응답 템플릿 정리, VPN 장애 보고서 작성, 서버 점검 일정 공지, 회의실 예약 규칙 개선 담당자 선정에 대해 논의함. 할 일: 이준호 - 신규 고객 문의 응답 템플릿 정리 (금요일); 박서연 - VPN 장애 보고서 작성 (다음 주 월요일); 김민지 - 서버 점검 일정 공지 (오늘); 미정 - 회의실 예약 규칙 개선 담당자 선정 (10월 23일)\n3. 프린터 출력이 안 돼요\n → [자동 답변] 프린터 전원과 네트워크 연결을 확인하고, 인쇄 대기열을 비운 뒤 다시 출력해 보세요."
}
✔ 기타만 · 1.0s
→ request POST /webhook/my-assistant
{
"message": "다음 주 회식 장소 추천해 주세요",
"user": "최유진"
}
← response HTTP 200
{
"count": 1,
"results": [
{
"index": 1,
"type": "other",
"text": "다음 주 회식 장소 추천해 주세요",
"agent": "담당자 연결",
"route": "담당자 연결",
"answer": "IT 문의와 회의록 정리 말고는 도와드릴 수 없어 담당자에게 전달했습니다."
}
],
"reply": "1. 다음 주 회식 장소 추천해 주세요\n → [담당자 연결] IT 문의와 회의록 정리 말고는 도와드릴 수 없어 담당자에게 전달했습니다."
}
✔ 빈 요청 · 0.0s
→ request POST /webhook/my-assistant
{
"message": "",
"user": "이준호"
}
← response HTTP 400
{
"error": "message is required"
}
Passed 5/5
report: runs/lab03-20261020-231011.json
@@ -0,0 +1,111 @@
{
"cases": "lab03-down.json",
"webhook": "my-assistant",
"passed": 3,
"total": 3,
"results": [
{
"case": "회의록 Agent 꺼짐 · 복합 요청",
"webhook": "my-assistant",
"run": 1,
"passed": true,
"problems": [],
"seconds": 5.6,
"status": 200,
"request": {
"message": "T-1002 처리 상태 알려주고, 첨부한 회의록에서 할 일도 정리해줘. 그리고 프린터 출력이 안 돼요.",
"user": "박서연",
"title": "10월 16일 주간 회의",
"notes": "참석: 김민지, 이준호, 박서연. 1) 신규 고객 문의 응답 템플릿을 이준호가 금요일까지 정리한다. 2) 박서연은 다음 주 월요일까지 VPN 장애 보고서를 작성한다. 3) 서버 점검 일정은 김민지가 오늘 중 공지한다. 4) 회의실 예약 규칙 개선은 담당자를 다음 회의에서 정한다. 다음 회의는 10월 23일."
},
"response": {
"count": 3,
"results": [
{
"index": 1,
"type": "it",
"text": "T-1002 처리 상태 알려줘",
"agent": "it-agent",
"route": "자동 답변",
"answer": "T-1002 티켓은 현재 \"처리 중\" 상태이며, VPN 인증서 발급 승인 대기 중입니다. 10월 20일에 완료될 예정입니다."
},
{
"index": 2,
"type": "meeting",
"text": "첨부한 회의록에서 할 일 정리",
"agent": "meeting-agent",
"route": "담당자 연결",
"answer": "담당 Agent가 응답하지 않아 담당자에게 전달했습니다.",
"actions": []
},
{
"index": 3,
"type": "it",
"text": "프린터 출력이 안 돼요",
"agent": "it-agent",
"route": "자동 답변",
"answer": "프린터 전원과 네트워크 연결을 확인하고, 인쇄 대기열을 비운 뒤 다시 출력해 보세요."
}
],
"reply": "1. T-1002 처리 상태 알려줘\n → [자동 답변] T-1002 티켓은 현재 \"처리 중\" 상태이며, VPN 인증서 발급 승인 대기 중입니다. 10월 20일에 완료될 예정입니다.\n2. 첨부한 회의록에서 할 일 정리\n → [담당자 연결] 담당 Agent가 응답하지 않아 담당자에게 전달했습니다.\n3. 프린터 출력이 안 돼요\n → [자동 답변] 프린터 전원과 네트워크 연결을 확인하고, 인쇄 대기열을 비운 뒤 다시 출력해 보세요."
}
},
{
"case": "회의록 Agent 꺼짐 · 회의록만",
"webhook": "my-assistant",
"run": 1,
"passed": true,
"problems": [],
"seconds": 1.1,
"status": 200,
"request": {
"message": "이번 회의록 할 일 정리 부탁해요",
"user": "김민지",
"title": "10월 16일 주간 회의",
"notes": "참석: 김민지, 이준호, 박서연. 1) 신규 고객 문의 응답 템플릿을 이준호가 금요일까지 정리한다. 2) 박서연은 다음 주 월요일까지 VPN 장애 보고서를 작성한다. 3) 서버 점검 일정은 김민지가 오늘 중 공지한다. 4) 회의실 예약 규칙 개선은 담당자를 다음 회의에서 정한다. 다음 회의는 10월 23일."
},
"response": {
"count": 1,
"results": [
{
"index": 1,
"type": "meeting",
"text": "이번 회의록 할 일 정리 부탁해요",
"agent": "meeting-agent",
"route": "담당자 연결",
"answer": "담당 Agent가 응답하지 않아 담당자에게 전달했습니다.",
"actions": []
}
],
"reply": "1. 이번 회의록 할 일 정리 부탁해요\n → [담당자 연결] 담당 Agent가 응답하지 않아 담당자에게 전달했습니다."
}
},
{
"case": "회의록 Agent 꺼짐 · IT는 그대로",
"webhook": "my-assistant",
"run": 1,
"passed": true,
"problems": [],
"seconds": 3.2,
"status": 200,
"request": {
"message": "VPN이 계속 끊겨요. 어떻게 해야 하나요?",
"user": "이준호"
},
"response": {
"count": 1,
"results": [
{
"index": 1,
"type": "it",
"text": "VPN이 계속 끊겨요. 어떻게 해야 하나요?",
"agent": "it-agent",
"route": "자동 답변",
"answer": "VPN이 계속 끊길 경우, VPN 클라이언트를 최신 버전으로 업데이트하고 인증서 만료 여부를 확인한 뒤 다시 접속해 보시기 바랍니다."
}
],
"reply": "1. VPN이 계속 끊겨요. 어떻게 해야 하나요?\n → [자동 답변] VPN이 계속 끊길 경우, VPN 클라이언트를 최신 버전으로 업데이트하고 인증서 만료 여부를 확인한 뒤 다시 접속해 보시기 바랍니다."
}
}
]
}
@@ -0,0 +1,88 @@
POST http://localhost:5678/webhook/my-assistant · 3 case(s) × 1
✔ 회의록 Agent 꺼짐 · 복합 요청 · 5.6s
→ request POST /webhook/my-assistant
{
"message": "T-1002 처리 상태 알려주고, 첨부한 회의록에서 할 일도 정리해줘. 그리고 프린터 출력이 안 돼요.",
"user": "박서연",
"title": "10월 16일 주간 회의",
"notes": "참석: 김민지, 이준호, 박서연. 1) 신규 고객 문의 응답 템플릿을 이준호가 금요일까지 정리한다. 2) 박서연은 다음 주 월요일까지 VPN 장애 보고서를 작성한다. 3) 서버 점검 일정은 김민지가 오늘 중 공지한다. 4) 회의실 예약 규칙 개선은 담당자를 다음 회의에서 정한다. 다음 회의는 10월 23일."
}
← response HTTP 200
{
"count": 3,
"results": [
{
"index": 1,
"type": "it",
"text": "T-1002 처리 상태 알려줘",
"agent": "it-agent",
"route": "자동 답변",
"answer": "T-1002 티켓은 현재 \"처리 중\" 상태이며, VPN 인증서 발급 승인 대기 중입니다. 10월 20일에 완료될 예정입니다."
},
{
"index": 2,
"type": "meeting",
"text": "첨부한 회의록에서 할 일 정리",
"agent": "meeting-agent",
"route": "담당자 연결",
"answer": "담당 Agent가 응답하지 않아 담당자에게 전달했습니다.",
"actions": []
},
{
"index": 3,
"type": "it",
"text": "프린터 출력이 안 돼요",
"agent": "it-agent",
"route": "자동 답변",
"answer": "프린터 전원과 네트워크 연결을 확인하고, 인쇄 대기열을 비운 뒤 다시 출력해 보세요."
}
],
"reply": "1. T-1002 처리 상태 알려줘\n → [자동 답변] T-1002 티켓은 현재 \"처리 중\" 상태이며, VPN 인증서 발급 승인 대기 중입니다. 10월 20일에 완료될 예정입니다.\n2. 첨부한 회의록에서 할 일 정리\n → [담당자 연결] 담당 Agent가 응답하지 않아 담당자에게 전달했습니다.\n3. 프린터 출력이 안 돼요\n → [자동 답변] 프린터 전원과 네트워크 연결을 확인하고, 인쇄 대기열을 비운 뒤 다시 출력해 보세요."
}
✔ 회의록 Agent 꺼짐 · 회의록만 · 1.1s
→ request POST /webhook/my-assistant
{
"message": "이번 회의록 할 일 정리 부탁해요",
"user": "김민지",
"title": "10월 16일 주간 회의",
"notes": "참석: 김민지, 이준호, 박서연. 1) 신규 고객 문의 응답 템플릿을 이준호가 금요일까지 정리한다. 2) 박서연은 다음 주 월요일까지 VPN 장애 보고서를 작성한다. 3) 서버 점검 일정은 김민지가 오늘 중 공지한다. 4) 회의실 예약 규칙 개선은 담당자를 다음 회의에서 정한다. 다음 회의는 10월 23일."
}
← response HTTP 200
{
"count": 1,
"results": [
{
"index": 1,
"type": "meeting",
"text": "이번 회의록 할 일 정리 부탁해요",
"agent": "meeting-agent",
"route": "담당자 연결",
"answer": "담당 Agent가 응답하지 않아 담당자에게 전달했습니다.",
"actions": []
}
],
"reply": "1. 이번 회의록 할 일 정리 부탁해요\n → [담당자 연결] 담당 Agent가 응답하지 않아 담당자에게 전달했습니다."
}
✔ 회의록 Agent 꺼짐 · IT는 그대로 · 3.2s
→ request POST /webhook/my-assistant
{
"message": "VPN이 계속 끊겨요. 어떻게 해야 하나요?",
"user": "이준호"
}
← response HTTP 200
{
"count": 1,
"results": [
{
"index": 1,
"type": "it",
"text": "VPN이 계속 끊겨요. 어떻게 해야 하나요?",
"agent": "it-agent",
"route": "자동 답변",
"answer": "VPN이 계속 끊길 경우, VPN 클라이언트를 최신 버전으로 업데이트하고 인증서 만료 여부를 확인한 뒤 다시 접속해 보시기 바랍니다."
}
],
"reply": "1. VPN이 계속 끊겨요. 어떻게 해야 하나요?\n → [자동 답변] VPN이 계속 끊길 경우, VPN 클라이언트를 최신 버전으로 업데이트하고 인증서 만료 여부를 확인한 뒤 다시 접속해 보시기 바랍니다."
}
Passed 3/3
report: runs/lab03-down-20261020-231029.json
+231
View File
@@ -0,0 +1,231 @@
{
"cases": "lab02.json",
"webhook": "my-assistant",
"passed": 6,
"total": 6,
"results": [
{
"case": "복합 요청 · 3개 모두 답",
"webhook": "my-assistant",
"run": 1,
"passed": true,
"problems": [],
"seconds": 8.0,
"status": 200,
"request": {
"message": "T-1002 처리 상태 알려주고, 첨부한 회의록에서 할 일도 정리해줘. 그리고 프린터 출력이 안 돼요.",
"user": "박서연",
"title": "10월 16일 주간 회의",
"notes": "참석: 김민지, 이준호, 박서연. 1) 신규 고객 문의 응답 템플릿을 이준호가 금요일까지 정리한다. 2) 박서연은 다음 주 월요일까지 VPN 장애 보고서를 작성한다. 3) 서버 점검 일정은 김민지가 오늘 중 공지한다. 4) 회의실 예약 규칙 개선은 담당자를 다음 회의에서 정한다. 다음 회의는 10월 23일."
},
"response": {
"count": 3,
"results": [
{
"index": 1,
"type": "it",
"text": "T-1002 처리 상태 알려줘",
"agent": "it-agent",
"route": "자동 답변",
"answer": "T-1002 티켓은 현재 \"처리 중\" 상태이며, VPN 인증서 발급 승인 대기 중입니다. 10월 20일에 완료될 예정입니다. 추가 문의가 필요하면 알려주세요."
},
{
"index": 2,
"type": "meeting",
"text": "첨부한 회의록에서 할 일 정리",
"agent": "meeting-agent",
"route": "자동 답변",
"answer": "10월 16일 주간 회의에서 신규 고객 문의 응답 템플릿 정리, VPN 장애 보고서 작성, 서버 점검 일정 공지, 회의실 예약 규칙 개선 담당자 선정에 대해 논의함. 할 일: 이준호 - 신규 고객 문의 응답 템플릿 정리 (금요일까지); 박서연 - VPN 장애 보고서 작성 (다음 주 월요일까지); 김민지 - 서버 점검 일정 공지 (오늘 중); 미정 - 회의실 예약 규칙 개선 담당자 선정 (10월 23일 다음 회의)",
"actions": [
{
"owner": "이준호",
"task": "신규 고객 문의 응답 템플릿 정리",
"due": "금요일까지"
},
{
"owner": "박서연",
"task": "VPN 장애 보고서 작성",
"due": "다음 주 월요일까지"
},
{
"owner": "김민지",
"task": "서버 점검 일정 공지",
"due": "오늘 중"
},
{
"owner": "미정",
"task": "회의실 예약 규칙 개선 담당자 선정",
"due": "10월 23일 다음 회의"
}
]
},
{
"index": 3,
"type": "it",
"text": "프린터 출력이 안 돼요",
"agent": "it-agent",
"route": "자동 답변",
"answer": "프린터 출력이 안 될 때는 프린터 전원과 네트워크 연결을 확인하고, 인쇄 대기열을 비운 뒤 다시 출력해 보세요."
}
],
"reply": "1. T-1002 처리 상태 알려줘\n → [자동 답변] T-1002 티켓은 현재 \"처리 중\" 상태이며, VPN 인증서 발급 승인 대기 중입니다. 10월 20일에 완료될 예정입니다. 추가 문의가 필요하면 알려주세요.\n2. 첨부한 회의록에서 할 일 정리\n → [자동 답변] 10월 16일 주간 회의에서 신규 고객 문의 응답 템플릿 정리, VPN 장애 보고서 작성, 서버 점검 일정 공지, 회의실 예약 규칙 개선 담당자 선정에 대해 논의함. 할 일: 이준호 - 신규 고객 문의 응답 템플릿 정리 (금요일까지); 박서연 - VPN 장애 보고서 작성 (다음 주 월요일까지); 김민지 - 서버 점검 일정 공지 (오늘 중); 미정 - 회의실 예약 규칙 개선 담당자 선정 (10월 23일 다음 회의)\n3. 프린터 출력이 안 돼요\n → [자동 답변] 프린터 출력이 안 될 때는 프린터 전원과 네트워크 연결을 확인하고, 인쇄 대기열을 비운 뒤 다시 출력해 보세요."
}
},
{
"case": "IT 하나",
"webhook": "my-assistant",
"run": 1,
"passed": true,
"problems": [],
"seconds": 3.5,
"status": 200,
"request": {
"message": "VPN이 계속 끊겨요. 어떻게 해야 하나요?",
"user": "이준호"
},
"response": {
"count": 1,
"results": [
{
"index": 1,
"type": "it",
"text": "VPN이 계속 끊겨요. 어떻게 해야 하나요?",
"agent": "it-agent",
"route": "자동 답변",
"answer": "VPN이 계속 끊길 경우, VPN 클라이언트를 최신 버전으로 업데이트하고 인증서 만료 여부를 확인한 뒤 다시 접속해 보시기 바랍니다."
}
],
"reply": "1. VPN이 계속 끊겨요. 어떻게 해야 하나요?\n → [자동 답변] VPN이 계속 끊길 경우, VPN 클라이언트를 최신 버전으로 업데이트하고 인증서 만료 여부를 확인한 뒤 다시 접속해 보시기 바랍니다."
}
},
{
"case": "회의록 정리",
"webhook": "my-assistant",
"run": 1,
"passed": true,
"problems": [],
"seconds": 4.2,
"status": 200,
"request": {
"message": "이번 회의록 할 일 정리 부탁해요",
"user": "김민지",
"title": "10월 16일 주간 회의",
"notes": "참석: 김민지, 이준호, 박서연. 1) 신규 고객 문의 응답 템플릿을 이준호가 금요일까지 정리한다. 2) 박서연은 다음 주 월요일까지 VPN 장애 보고서를 작성한다. 3) 서버 점검 일정은 김민지가 오늘 중 공지한다. 4) 회의실 예약 규칙 개선은 담당자를 다음 회의에서 정한다. 다음 회의는 10월 23일."
},
"response": {
"count": 1,
"results": [
{
"index": 1,
"type": "meeting",
"text": "이번 회의록 할 일 정리 부탁해요",
"agent": "meeting-agent",
"route": "자동 답변",
"answer": "10월 16일 주간 회의에서 신규 고객 문의 응답 템플릿 정리, VPN 장애 보고서 작성, 서버 점검 일정 공지, 회의실 예약 규칙 개선 담당자 선정에 대해 논의함. 할 일: 이준호 - 신규 고객 문의 응답 템플릿 정리 (금요일); 박서연 - VPN 장애 보고서 작성 (다음 주 월요일); 김민지 - 서버 점검 일정 공지 (오늘); 미정 - 회의실 예약 규칙 개선 담당자 선정 (10월 23일)",
"actions": [
{
"owner": "이준호",
"task": "신규 고객 문의 응답 템플릿 정리",
"due": "금요일"
},
{
"owner": "박서연",
"task": "VPN 장애 보고서 작성",
"due": "다음 주 월요일"
},
{
"owner": "김민지",
"task": "서버 점검 일정 공지",
"due": "오늘"
},
{
"owner": "미정",
"task": "회의실 예약 규칙 개선 담당자 선정",
"due": "10월 23일"
}
]
}
],
"reply": "1. 이번 회의록 할 일 정리 부탁해요\n → [자동 답변] 10월 16일 주간 회의에서 신규 고객 문의 응답 템플릿 정리, VPN 장애 보고서 작성, 서버 점검 일정 공지, 회의실 예약 규칙 개선 담당자 선정에 대해 논의함. 할 일: 이준호 - 신규 고객 문의 응답 템플릿 정리 (금요일); 박서연 - VPN 장애 보고서 작성 (다음 주 월요일); 김민지 - 서버 점검 일정 공지 (오늘); 미정 - 회의실 예약 규칙 개선 담당자 선정 (10월 23일)"
}
},
{
"case": "IT와 기타",
"webhook": "my-assistant",
"run": 1,
"passed": true,
"problems": [],
"seconds": 3.7,
"status": 200,
"request": {
"message": "프린터 출력이 안 돼요. 그리고 다음 주 회식 장소도 추천해 주세요.",
"user": "최유진"
},
"response": {
"count": 2,
"results": [
{
"index": 1,
"type": "it",
"text": "프린터 출력이 안 돼요.",
"agent": "it-agent",
"route": "자동 답변",
"answer": "프린터 전원과 네트워크 연결을 확인하고, 인쇄 대기열을 비운 뒤 다시 출력해 보세요."
},
{
"index": 2,
"type": "other",
"text": "다음 주 회식 장소도 추천해 주세요.",
"agent": "담당자 연결",
"route": "담당자 연결",
"answer": "IT 문의와 회의록 정리 말고는 도와드릴 수 없어 담당자에게 전달했습니다."
}
],
"reply": "1. 프린터 출력이 안 돼요.\n → [자동 답변] 프린터 전원과 네트워크 연결을 확인하고, 인쇄 대기열을 비운 뒤 다시 출력해 보세요.\n2. 다음 주 회식 장소도 추천해 주세요.\n → [담당자 연결] IT 문의와 회의록 정리 말고는 도와드릴 수 없어 담당자에게 전달했습니다."
}
},
{
"case": "기타만 · Agent 안 부름",
"webhook": "my-assistant",
"run": 1,
"passed": true,
"problems": [],
"seconds": 1.0,
"status": 200,
"request": {
"message": "다음 주 회식 장소 추천해 주세요",
"user": "최유진"
},
"response": {
"count": 1,
"results": [
{
"index": 1,
"type": "other",
"text": "다음 주 회식 장소 추천해 주세요",
"agent": "담당자 연결",
"route": "담당자 연결",
"answer": "IT 문의와 회의록 정리 말고는 도와드릴 수 없어 담당자에게 전달했습니다."
}
],
"reply": "1. 다음 주 회식 장소 추천해 주세요\n → [담당자 연결] IT 문의와 회의록 정리 말고는 도와드릴 수 없어 담당자에게 전달했습니다."
}
},
{
"case": "빈 요청",
"webhook": "my-assistant",
"run": 1,
"passed": true,
"problems": [],
"seconds": 0.0,
"status": 400,
"request": {
"message": "",
"user": "이준호"
},
"response": {
"error": "message is required"
}
}
]
}
+190
View File
@@ -0,0 +1,190 @@
POST http://localhost:5678/webhook/my-assistant · 6 case(s) × 1
✔ 복합 요청 · 3개 모두 답 · 8.0s
→ request POST /webhook/my-assistant
{
"message": "T-1002 처리 상태 알려주고, 첨부한 회의록에서 할 일도 정리해줘. 그리고 프린터 출력이 안 돼요.",
"user": "박서연",
"title": "10월 16일 주간 회의",
"notes": "참석: 김민지, 이준호, 박서연. 1) 신규 고객 문의 응답 템플릿을 이준호가 금요일까지 정리한다. 2) 박서연은 다음 주 월요일까지 VPN 장애 보고서를 작성한다. 3) 서버 점검 일정은 김민지가 오늘 중 공지한다. 4) 회의실 예약 규칙 개선은 담당자를 다음 회의에서 정한다. 다음 회의는 10월 23일."
}
← response HTTP 200
{
"count": 3,
"results": [
{
"index": 1,
"type": "it",
"text": "T-1002 처리 상태 알려줘",
"agent": "it-agent",
"route": "자동 답변",
"answer": "T-1002 티켓은 현재 \"처리 중\" 상태이며, VPN 인증서 발급 승인 대기 중입니다. 10월 20일에 완료될 예정입니다. 추가 문의가 필요하면 알려주세요."
},
{
"index": 2,
"type": "meeting",
"text": "첨부한 회의록에서 할 일 정리",
"agent": "meeting-agent",
"route": "자동 답변",
"answer": "10월 16일 주간 회의에서 신규 고객 문의 응답 템플릿 정리, VPN 장애 보고서 작성, 서버 점검 일정 공지, 회의실 예약 규칙 개선 담당자 선정에 대해 논의함. 할 일: 이준호 - 신규 고객 문의 응답 템플릿 정리 (금요일까지); 박서연 - VPN 장애 보고서 작성 (다음 주 월요일까지); 김민지 - 서버 점검 일정 공지 (오늘 중); 미정 - 회의실 예약 규칙 개선 담당자 선정 (10월 23일 다음 회의)",
"actions": [
{
"owner": "이준호",
"task": "신규 고객 문의 응답 템플릿 정리",
"due": "금요일까지"
},
{
"owner": "박서연",
"task": "VPN 장애 보고서 작성",
"due": "다음 주 월요일까지"
},
{
"owner": "김민지",
"task": "서버 점검 일정 공지",
"due": "오늘 중"
},
{
"owner": "미정",
"task": "회의실 예약 규칙 개선 담당자 선정",
"due": "10월 23일 다음 회의"
}
]
},
{
"index": 3,
"type": "it",
"text": "프린터 출력이 안 돼요",
"agent": "it-agent",
"route": "자동 답변",
"answer": "프린터 출력이 안 될 때는 프린터 전원과 네트워크 연결을 확인하고, 인쇄 대기열을 비운 뒤 다시 출력해 보세요."
}
],
"reply": "1. T-1002 처리 상태 알려줘\n → [자동 답변] T-1002 티켓은 현재 \"처리 중\" 상태이며, VPN 인증서 발급 승인 대기 중입니다. 10월 20일에 완료될 예정입니다. 추가 문의가 필요하면 알려주세요.\n2. 첨부한 회의록에서 할 일 정리\n → [자동 답변] 10월 16일 주간 회의에서 신규 고객 문의 응답 템플릿 정리, VPN 장애 보고서 작성, 서버 점검 일정 공지, 회의실 예약 규칙 개선 담당자 선정에 대해 논의함. 할 일: 이준호 - 신규 고객 문의 응답 템플릿 정리 (금요일까지); 박서연 - VPN 장애 보고서 작성 (다음 주 월요일까지); 김민지 - 서버 점검 일정 공지 (오늘 중); 미정 - 회의실 예약 규칙 개선 담당자 선정 (10월 23일 다음 회의)\n3. 프린터 출력이 안 돼요\n → [자동 답변] 프린터 출력이 안 될 때는 프린터 전원과 네트워크 연결을 확인하고, 인쇄 대기열을 비운 뒤 다시 출력해 보세요."
}
✔ IT 하나 · 3.5s
→ request POST /webhook/my-assistant
{
"message": "VPN이 계속 끊겨요. 어떻게 해야 하나요?",
"user": "이준호"
}
← response HTTP 200
{
"count": 1,
"results": [
{
"index": 1,
"type": "it",
"text": "VPN이 계속 끊겨요. 어떻게 해야 하나요?",
"agent": "it-agent",
"route": "자동 답변",
"answer": "VPN이 계속 끊길 경우, VPN 클라이언트를 최신 버전으로 업데이트하고 인증서 만료 여부를 확인한 뒤 다시 접속해 보시기 바랍니다."
}
],
"reply": "1. VPN이 계속 끊겨요. 어떻게 해야 하나요?\n → [자동 답변] VPN이 계속 끊길 경우, VPN 클라이언트를 최신 버전으로 업데이트하고 인증서 만료 여부를 확인한 뒤 다시 접속해 보시기 바랍니다."
}
✔ 회의록 정리 · 4.2s
→ request POST /webhook/my-assistant
{
"message": "이번 회의록 할 일 정리 부탁해요",
"user": "김민지",
"title": "10월 16일 주간 회의",
"notes": "참석: 김민지, 이준호, 박서연. 1) 신규 고객 문의 응답 템플릿을 이준호가 금요일까지 정리한다. 2) 박서연은 다음 주 월요일까지 VPN 장애 보고서를 작성한다. 3) 서버 점검 일정은 김민지가 오늘 중 공지한다. 4) 회의실 예약 규칙 개선은 담당자를 다음 회의에서 정한다. 다음 회의는 10월 23일."
}
← response HTTP 200
{
"count": 1,
"results": [
{
"index": 1,
"type": "meeting",
"text": "이번 회의록 할 일 정리 부탁해요",
"agent": "meeting-agent",
"route": "자동 답변",
"answer": "10월 16일 주간 회의에서 신규 고객 문의 응답 템플릿 정리, VPN 장애 보고서 작성, 서버 점검 일정 공지, 회의실 예약 규칙 개선 담당자 선정에 대해 논의함. 할 일: 이준호 - 신규 고객 문의 응답 템플릿 정리 (금요일); 박서연 - VPN 장애 보고서 작성 (다음 주 월요일); 김민지 - 서버 점검 일정 공지 (오늘); 미정 - 회의실 예약 규칙 개선 담당자 선정 (10월 23일)",
"actions": [
{
"owner": "이준호",
"task": "신규 고객 문의 응답 템플릿 정리",
"due": "금요일"
},
{
"owner": "박서연",
"task": "VPN 장애 보고서 작성",
"due": "다음 주 월요일"
},
{
"owner": "김민지",
"task": "서버 점검 일정 공지",
"due": "오늘"
},
{
"owner": "미정",
"task": "회의실 예약 규칙 개선 담당자 선정",
"due": "10월 23일"
}
]
}
],
"reply": "1. 이번 회의록 할 일 정리 부탁해요\n → [자동 답변] 10월 16일 주간 회의에서 신규 고객 문의 응답 템플릿 정리, VPN 장애 보고서 작성, 서버 점검 일정 공지, 회의실 예약 규칙 개선 담당자 선정에 대해 논의함. 할 일: 이준호 - 신규 고객 문의 응답 템플릿 정리 (금요일); 박서연 - VPN 장애 보고서 작성 (다음 주 월요일); 김민지 - 서버 점검 일정 공지 (오늘); 미정 - 회의실 예약 규칙 개선 담당자 선정 (10월 23일)"
}
✔ IT와 기타 · 3.7s
→ request POST /webhook/my-assistant
{
"message": "프린터 출력이 안 돼요. 그리고 다음 주 회식 장소도 추천해 주세요.",
"user": "최유진"
}
← response HTTP 200
{
"count": 2,
"results": [
{
"index": 1,
"type": "it",
"text": "프린터 출력이 안 돼요.",
"agent": "it-agent",
"route": "자동 답변",
"answer": "프린터 전원과 네트워크 연결을 확인하고, 인쇄 대기열을 비운 뒤 다시 출력해 보세요."
},
{
"index": 2,
"type": "other",
"text": "다음 주 회식 장소도 추천해 주세요.",
"agent": "담당자 연결",
"route": "담당자 연결",
"answer": "IT 문의와 회의록 정리 말고는 도와드릴 수 없어 담당자에게 전달했습니다."
}
],
"reply": "1. 프린터 출력이 안 돼요.\n → [자동 답변] 프린터 전원과 네트워크 연결을 확인하고, 인쇄 대기열을 비운 뒤 다시 출력해 보세요.\n2. 다음 주 회식 장소도 추천해 주세요.\n → [담당자 연결] IT 문의와 회의록 정리 말고는 도와드릴 수 없어 담당자에게 전달했습니다."
}
✔ 기타만 · Agent 안 부름 · 1.0s
→ request POST /webhook/my-assistant
{
"message": "다음 주 회식 장소 추천해 주세요",
"user": "최유진"
}
← response HTTP 200
{
"count": 1,
"results": [
{
"index": 1,
"type": "other",
"text": "다음 주 회식 장소 추천해 주세요",
"agent": "담당자 연결",
"route": "담당자 연결",
"answer": "IT 문의와 회의록 정리 말고는 도와드릴 수 없어 담당자에게 전달했습니다."
}
],
"reply": "1. 다음 주 회식 장소 추천해 주세요\n → [담당자 연결] IT 문의와 회의록 정리 말고는 도와드릴 수 없어 담당자에게 전달했습니다."
}
✔ 빈 요청 · 0.0s
→ request POST /webhook/my-assistant
{
"message": "",
"user": "이준호"
}
← response HTTP 400
{
"error": "message is required"
}
Passed 6/6
report: runs/lab02-20261020-231101.json
@@ -0,0 +1,245 @@
{
"cases": "68-lab03-challenge-cases.json",
"webhook": "my-assistant",
"passed": 5,
"total": 7,
"results": [
{
"case": "user 없이 IT 질문",
"webhook": "my-assistant",
"run": 1,
"passed": false,
"problems": [
"results.0.route = 담당자 연결 (expected 입력 필요)"
],
"seconds": 1.3,
"status": 200,
"request": {
"message": "VPN이 계속 끊겨요"
},
"response": {
"count": 1,
"results": [
{
"index": 1,
"type": "it",
"text": "VPN이 계속 끊겨요",
"agent": "it-agent",
"route": "담당자 연결",
"answer": "담당 Agent가 응답하지 않아 담당자에게 전달했습니다."
}
],
"reply": "1. VPN이 계속 끊겨요\n → [담당자 연결] 담당 Agent가 응답하지 않아 담당자에게 전달했습니다."
}
},
{
"case": "남의 접수 건이 섞인 복합 요청",
"webhook": "my-assistant",
"run": 1,
"passed": true,
"problems": [],
"seconds": 4.9,
"status": 200,
"request": {
"message": "T-1002 처리 상태 알려주고 프린터도 안 돼요",
"user": "이준호"
},
"response": {
"count": 2,
"results": [
{
"index": 1,
"type": "it",
"text": "T-1002 처리 상태 알려주고",
"agent": "it-agent",
"route": "담당자 연결",
"answer": "정확한 답을 찾지 못해 IT 담당자에게 문의를 전달했습니다."
},
{
"index": 2,
"type": "it",
"text": "프린터도 안 돼요",
"agent": "it-agent",
"route": "자동 답변",
"answer": "프린터 전원과 네트워크 연결을 확인하고, 인쇄 대기열을 비운 뒤 다시 출력해 보세요. 그래도 문제가 지속되면 IT 문의 창구로 연락해 주세요."
}
],
"reply": "1. T-1002 처리 상태 알려주고\n → [담당자 연결] 정확한 답을 찾지 못해 IT 담당자에게 문의를 전달했습니다.\n2. 프린터도 안 돼요\n → [자동 답변] 프린터 전원과 네트워크 연결을 확인하고, 인쇄 대기열을 비운 뒤 다시 출력해 보세요. 그래도 문제가 지속되면 IT 문의 창구로 연락해 주세요."
}
},
{
"case": "회의록은 붙였지만 IT 질문만",
"webhook": "my-assistant",
"run": 1,
"passed": true,
"problems": [],
"seconds": 3.6,
"status": 200,
"request": {
"message": "VPN이 계속 끊겨요",
"user": "이준호",
"title": "주간 회의",
"notes": "참석: 김민지, 이준호, 박서연. 1) 신규 고객 문의 응답 템플릿을 이준호가 금요일까지 정리한다. 2) 박서연은 다음 주 월요일까지 VPN 장애 보고서를 작성한다. 3) 서버 점검 일정은 김민지가 오늘 중 공지한다. 4) 회의실 예약 규칙 개선은 담당자를 다음 회의에서 정한다. 다음 회의는 10월 23일."
},
"response": {
"count": 1,
"results": [
{
"index": 1,
"type": "it",
"text": "VPN이 계속 끊겨요",
"agent": "it-agent",
"route": "자동 답변",
"answer": "VPN이 계속 끊길 경우, VPN 클라이언트를 최신 버전으로 업데이트하고 인증서 만료 여부를 확인한 뒤 다시 접속해 보시기 바랍니다."
}
],
"reply": "1. VPN이 계속 끊겨요\n → [자동 답변] VPN이 계속 끊길 경우, VPN 클라이언트를 최신 버전으로 업데이트하고 인증서 만료 여부를 확인한 뒤 다시 접속해 보시기 바랍니다."
}
},
{
"case": "업무 4개",
"webhook": "my-assistant",
"run": 1,
"passed": true,
"problems": [],
"seconds": 6.7,
"status": 200,
"request": {
"message": "VPN이 끊겨요. 프린터도 안 돼요. 회의록 할 일 정리해 주세요. 회식 장소도 추천해 주세요.",
"user": "이준호",
"title": "주간 회의",
"notes": "참석: 김민지, 이준호, 박서연. 1) 신규 고객 문의 응답 템플릿을 이준호가 금요일까지 정리한다. 2) 박서연은 다음 주 월요일까지 VPN 장애 보고서를 작성한다. 3) 서버 점검 일정은 김민지가 오늘 중 공지한다. 4) 회의실 예약 규칙 개선은 담당자를 다음 회의에서 정한다. 다음 회의는 10월 23일."
},
"response": {
"count": 4,
"results": [
{
"index": 1,
"type": "it",
"text": "VPN이 끊겨요.",
"agent": "it-agent",
"route": "자동 답변",
"answer": "VPN이 끊길 경우, VPN 클라이언트를 최신 버전으로 업데이트하고 인증서 만료 여부를 확인한 뒤 다시 접속해 보시기 바랍니다."
},
{
"index": 2,
"type": "it",
"text": "프린터도 안 돼요.",
"agent": "it-agent",
"route": "자동 답변",
"answer": "프린터 전원과 네트워크 연결을 확인하고, 인쇄 대기열을 비운 뒤 다시 출력해 보세요."
},
{
"index": 3,
"type": "meeting",
"text": "회의록 할 일 정리해 주세요.",
"agent": "meeting-agent",
"route": "자동 답변",
"answer": "신규 고객 문의 응답 템플릿 정리, VPN 장애 보고서 작성, 서버 점검 일정 공지, 회의실 예약 규칙 담당자 선정 논의가 필요하다. 할 일: 이준호 - 신규 고객 문의 응답 템플릿 정리 (금요일); 박서연 - VPN 장애 보고서 작성 (다음 주 월요일); 김민지 - 서버 점검 일정 공지 (오늘); 미정 - 회의실 예약 규칙 개선 담당자 선정 (10월 23일)",
"actions": [
{
"owner": "이준호",
"task": "신규 고객 문의 응답 템플릿 정리",
"due": "금요일"
},
{
"owner": "박서연",
"task": "VPN 장애 보고서 작성",
"due": "다음 주 월요일"
},
{
"owner": "김민지",
"task": "서버 점검 일정 공지",
"due": "오늘"
},
{
"owner": "미정",
"task": "회의실 예약 규칙 개선 담당자 선정",
"due": "10월 23일"
}
]
},
{
"index": 4,
"type": "other",
"text": "회식 장소도 추천해 주세요.",
"agent": "담당자 연결",
"route": "담당자 연결",
"answer": "IT 문의와 회의록 정리 말고는 도와드릴 수 없어 담당자에게 전달했습니다."
}
],
"reply": "1. VPN이 끊겨요.\n → [자동 답변] VPN이 끊길 경우, VPN 클라이언트를 최신 버전으로 업데이트하고 인증서 만료 여부를 확인한 뒤 다시 접속해 보시기 바랍니다.\n2. 프린터도 안 돼요.\n → [자동 답변] 프린터 전원과 네트워크 연결을 확인하고, 인쇄 대기열을 비운 뒤 다시 출력해 보세요.\n3. 회의록 할 일 정리해 주세요.\n → [자동 답변] 신규 고객 문의 응답 템플릿 정리, VPN 장애 보고서 작성, 서버 점검 일정 공지, 회의실 예약 규칙 담당자 선정 논의가 필요하다. 할 일: 이준호 - 신규 고객 문의 응답 템플릿 정리 (금요일); 박서연 - VPN 장애 보고서 작성 (다음 주 월요일); 김민지 - 서버 점검 일정 공지 (오늘); 미정 - 회의실 예약 규칙 개선 담당자 선정 (10월 23일)\n4. 회식 장소도 추천해 주세요.\n → [담당자 연결] IT 문의와 회의록 정리 말고는 도와드릴 수 없어 담당자에게 전달했습니다."
}
},
{
"case": "소문자 접수 번호",
"webhook": "my-assistant",
"run": 1,
"passed": true,
"problems": [],
"seconds": 3.5,
"status": 200,
"request": {
"message": "t1002 어떻게 되고 있나요?",
"user": "박서연"
},
"response": {
"count": 1,
"results": [
{
"index": 1,
"type": "it",
"text": "t1002 어떻게 되고 있나요?",
"agent": "it-agent",
"route": "자동 답변",
"answer": "T-1002 티켓은 현재 \"처리 중\" 상태이며, VPN 인증서 발급 승인 대기 중입니다. 10월 20일에 완료될 예정입니다. 추가 문의가 필요하면 알려주세요."
}
],
"reply": "1. t1002 어떻게 되고 있나요?\n → [자동 답변] T-1002 티켓은 현재 \"처리 중\" 상태이며, VPN 인증서 발급 승인 대기 중입니다. 10월 20일에 완료될 예정입니다. 추가 문의가 필요하면 알려주세요."
}
},
{
"case": "공백만 보냄",
"webhook": "my-assistant",
"run": 1,
"passed": false,
"problems": [
"status 200 (expected 400)"
],
"seconds": 0.9,
"status": 200,
"request": {
"message": " ",
"user": "이준호"
},
"response": ""
},
{
"case": "영어로 질문",
"webhook": "my-assistant",
"run": 1,
"passed": true,
"problems": [],
"seconds": 3.5,
"status": 200,
"request": {
"message": "My VPN keeps disconnecting. What should I do?",
"user": "이준호"
},
"response": {
"count": 1,
"results": [
{
"index": 1,
"type": "it",
"text": "My VPN keeps disconnecting. What should I do?",
"agent": "it-agent",
"route": "자동 답변",
"answer": "VPN 연결이 자주 끊길 경우, VPN 클라이언트를 최신 버전으로 업데이트하고 인증서 만료 여부를 확인한 후 다시 접속해 보시기 바랍니다."
}
],
"reply": "1. My VPN keeps disconnecting. What should I do?\n → [자동 답변] VPN 연결이 자주 끊길 경우, VPN 클라이언트를 최신 버전으로 업데이트하고 인증서 만료 여부를 확인한 후 다시 접속해 보시기 바랍니다."
}
}
]
}
@@ -0,0 +1,193 @@
POST http://localhost:5678/webhook/my-assistant · 7 case(s) × 1
✘ user 없이 IT 질문 · 1.3s · results.0.route = 담당자 연결 (expected 입력 필요)
→ request POST /webhook/my-assistant
{
"message": "VPN이 계속 끊겨요"
}
← response HTTP 200
{
"count": 1,
"results": [
{
"index": 1,
"type": "it",
"text": "VPN이 계속 끊겨요",
"agent": "it-agent",
"route": "담당자 연결",
"answer": "담당 Agent가 응답하지 않아 담당자에게 전달했습니다."
}
],
"reply": "1. VPN이 계속 끊겨요\n → [담당자 연결] 담당 Agent가 응답하지 않아 담당자에게 전달했습니다."
}
✔ 남의 접수 건이 섞인 복합 요청 · 4.9s
→ request POST /webhook/my-assistant
{
"message": "T-1002 처리 상태 알려주고 프린터도 안 돼요",
"user": "이준호"
}
← response HTTP 200
{
"count": 2,
"results": [
{
"index": 1,
"type": "it",
"text": "T-1002 처리 상태 알려주고",
"agent": "it-agent",
"route": "담당자 연결",
"answer": "정확한 답을 찾지 못해 IT 담당자에게 문의를 전달했습니다."
},
{
"index": 2,
"type": "it",
"text": "프린터도 안 돼요",
"agent": "it-agent",
"route": "자동 답변",
"answer": "프린터 전원과 네트워크 연결을 확인하고, 인쇄 대기열을 비운 뒤 다시 출력해 보세요. 그래도 문제가 지속되면 IT 문의 창구로 연락해 주세요."
}
],
"reply": "1. T-1002 처리 상태 알려주고\n → [담당자 연결] 정확한 답을 찾지 못해 IT 담당자에게 문의를 전달했습니다.\n2. 프린터도 안 돼요\n → [자동 답변] 프린터 전원과 네트워크 연결을 확인하고, 인쇄 대기열을 비운 뒤 다시 출력해 보세요. 그래도 문제가 지속되면 IT 문의 창구로 연락해 주세요."
}
✔ 회의록은 붙였지만 IT 질문만 · 3.6s
→ request POST /webhook/my-assistant
{
"message": "VPN이 계속 끊겨요",
"user": "이준호",
"title": "주간 회의",
"notes": "참석: 김민지, 이준호, 박서연. 1) 신규 고객 문의 응답 템플릿을 이준호가 금요일까지 정리한다. 2) 박서연은 다음 주 월요일까지 VPN 장애 보고서를 작성한다. 3) 서버 점검 일정은 김민지가 오늘 중 공지한다. 4) 회의실 예약 규칙 개선은 담당자를 다음 회의에서 정한다. 다음 회의는 10월 23일."
}
← response HTTP 200
{
"count": 1,
"results": [
{
"index": 1,
"type": "it",
"text": "VPN이 계속 끊겨요",
"agent": "it-agent",
"route": "자동 답변",
"answer": "VPN이 계속 끊길 경우, VPN 클라이언트를 최신 버전으로 업데이트하고 인증서 만료 여부를 확인한 뒤 다시 접속해 보시기 바랍니다."
}
],
"reply": "1. VPN이 계속 끊겨요\n → [자동 답변] VPN이 계속 끊길 경우, VPN 클라이언트를 최신 버전으로 업데이트하고 인증서 만료 여부를 확인한 뒤 다시 접속해 보시기 바랍니다."
}
✔ 업무 4개 · 6.7s
→ request POST /webhook/my-assistant
{
"message": "VPN이 끊겨요. 프린터도 안 돼요. 회의록 할 일 정리해 주세요. 회식 장소도 추천해 주세요.",
"user": "이준호",
"title": "주간 회의",
"notes": "참석: 김민지, 이준호, 박서연. 1) 신규 고객 문의 응답 템플릿을 이준호가 금요일까지 정리한다. 2) 박서연은 다음 주 월요일까지 VPN 장애 보고서를 작성한다. 3) 서버 점검 일정은 김민지가 오늘 중 공지한다. 4) 회의실 예약 규칙 개선은 담당자를 다음 회의에서 정한다. 다음 회의는 10월 23일."
}
← response HTTP 200
{
"count": 4,
"results": [
{
"index": 1,
"type": "it",
"text": "VPN이 끊겨요.",
"agent": "it-agent",
"route": "자동 답변",
"answer": "VPN이 끊길 경우, VPN 클라이언트를 최신 버전으로 업데이트하고 인증서 만료 여부를 확인한 뒤 다시 접속해 보시기 바랍니다."
},
{
"index": 2,
"type": "it",
"text": "프린터도 안 돼요.",
"agent": "it-agent",
"route": "자동 답변",
"answer": "프린터 전원과 네트워크 연결을 확인하고, 인쇄 대기열을 비운 뒤 다시 출력해 보세요."
},
{
"index": 3,
"type": "meeting",
"text": "회의록 할 일 정리해 주세요.",
"agent": "meeting-agent",
"route": "자동 답변",
"answer": "신규 고객 문의 응답 템플릿 정리, VPN 장애 보고서 작성, 서버 점검 일정 공지, 회의실 예약 규칙 담당자 선정 논의가 필요하다. 할 일: 이준호 - 신규 고객 문의 응답 템플릿 정리 (금요일); 박서연 - VPN 장애 보고서 작성 (다음 주 월요일); 김민지 - 서버 점검 일정 공지 (오늘); 미정 - 회의실 예약 규칙 개선 담당자 선정 (10월 23일)",
"actions": [
{
"owner": "이준호",
"task": "신규 고객 문의 응답 템플릿 정리",
"due": "금요일"
},
{
"owner": "박서연",
"task": "VPN 장애 보고서 작성",
"due": "다음 주 월요일"
},
{
"owner": "김민지",
"task": "서버 점검 일정 공지",
"due": "오늘"
},
{
"owner": "미정",
"task": "회의실 예약 규칙 개선 담당자 선정",
"due": "10월 23일"
}
]
},
{
"index": 4,
"type": "other",
"text": "회식 장소도 추천해 주세요.",
"agent": "담당자 연결",
"route": "담당자 연결",
"answer": "IT 문의와 회의록 정리 말고는 도와드릴 수 없어 담당자에게 전달했습니다."
}
],
"reply": "1. VPN이 끊겨요.\n → [자동 답변] VPN이 끊길 경우, VPN 클라이언트를 최신 버전으로 업데이트하고 인증서 만료 여부를 확인한 뒤 다시 접속해 보시기 바랍니다.\n2. 프린터도 안 돼요.\n → [자동 답변] 프린터 전원과 네트워크 연결을 확인하고, 인쇄 대기열을 비운 뒤 다시 출력해 보세요.\n3. 회의록 할 일 정리해 주세요.\n → [자동 답변] 신규 고객 문의 응답 템플릿 정리, VPN 장애 보고서 작성, 서버 점검 일정 공지, 회의실 예약 규칙 담당자 선정 논의가 필요하다. 할 일: 이준호 - 신규 고객 문의 응답 템플릿 정리 (금요일); 박서연 - VPN 장애 보고서 작성 (다음 주 월요일); 김민지 - 서버 점검 일정 공지 (오늘); 미정 - 회의실 예약 규칙 개선 담당자 선정 (10월 23일)\n4. 회식 장소도 추천해 주세요.\n → [담당자 연결] IT 문의와 회의록 정리 말고는 도와드릴 수 없어 담당자에게 전달했습니다."
}
✔ 소문자 접수 번호 · 3.5s
→ request POST /webhook/my-assistant
{
"message": "t1002 어떻게 되고 있나요?",
"user": "박서연"
}
← response HTTP 200
{
"count": 1,
"results": [
{
"index": 1,
"type": "it",
"text": "t1002 어떻게 되고 있나요?",
"agent": "it-agent",
"route": "자동 답변",
"answer": "T-1002 티켓은 현재 \"처리 중\" 상태이며, VPN 인증서 발급 승인 대기 중입니다. 10월 20일에 완료될 예정입니다. 추가 문의가 필요하면 알려주세요."
}
],
"reply": "1. t1002 어떻게 되고 있나요?\n → [자동 답변] T-1002 티켓은 현재 \"처리 중\" 상태이며, VPN 인증서 발급 승인 대기 중입니다. 10월 20일에 완료될 예정입니다. 추가 문의가 필요하면 알려주세요."
}
✘ 공백만 보냄 · 0.9s · status 200 (expected 400)
→ request POST /webhook/my-assistant
{
"message": " ",
"user": "이준호"
}
← response HTTP 200
✔ 영어로 질문 · 3.5s
→ request POST /webhook/my-assistant
{
"message": "My VPN keeps disconnecting. What should I do?",
"user": "이준호"
}
← response HTTP 200
{
"count": 1,
"results": [
{
"index": 1,
"type": "it",
"text": "My VPN keeps disconnecting. What should I do?",
"agent": "it-agent",
"route": "자동 답변",
"answer": "VPN 연결이 자주 끊길 경우, VPN 클라이언트를 최신 버전으로 업데이트하고 인증서 만료 여부를 확인한 후 다시 접속해 보시기 바랍니다."
}
],
"reply": "1. My VPN keeps disconnecting. What should I do?\n → [자동 답변] VPN 연결이 자주 끊길 경우, VPN 클라이언트를 최신 버전으로 업데이트하고 인증서 만료 여부를 확인한 후 다시 접속해 보시기 바랍니다."
}
Passed 5/7
report: runs/68-lab03-challenge-cases-20261020-231126.json
@@ -0,0 +1,243 @@
{
"cases": "68-lab03-challenge-cases.json",
"webhook": "my-assistant",
"passed": 7,
"total": 7,
"results": [
{
"case": "user 없이 IT 질문",
"webhook": "my-assistant",
"run": 1,
"passed": true,
"problems": [],
"seconds": 2.6,
"status": 200,
"request": {
"message": "VPN이 계속 끊겨요"
},
"response": {
"count": 1,
"results": [
{
"index": 1,
"type": "it",
"text": "VPN이 계속 끊겨요",
"agent": "it-agent",
"route": "입력 필요",
"answer": "누가 요청했는지(user)를 함께 보내 주세요."
}
],
"reply": "1. VPN이 계속 끊겨요\n → [입력 필요] 누가 요청했는지(user)를 함께 보내 주세요."
}
},
{
"case": "남의 접수 건이 섞인 복합 요청",
"webhook": "my-assistant",
"run": 1,
"passed": true,
"problems": [],
"seconds": 3.7,
"status": 200,
"request": {
"message": "T-1002 처리 상태 알려주고 프린터도 안 돼요",
"user": "이준호"
},
"response": {
"count": 2,
"results": [
{
"index": 1,
"type": "it",
"text": "T-1002 처리 상태 알려주고",
"agent": "it-agent",
"route": "담당자 연결",
"answer": "정확한 답을 찾지 못해 IT 담당자에게 문의를 전달했습니다."
},
{
"index": 2,
"type": "it",
"text": "프린터도 안 돼요",
"agent": "it-agent",
"route": "자동 답변",
"answer": "프린터 전원과 네트워크 연결을 확인하고, 인쇄 대기열을 비운 뒤 다시 출력해 보세요."
}
],
"reply": "1. T-1002 처리 상태 알려주고\n → [담당자 연결] 정확한 답을 찾지 못해 IT 담당자에게 문의를 전달했습니다.\n2. 프린터도 안 돼요\n → [자동 답변] 프린터 전원과 네트워크 연결을 확인하고, 인쇄 대기열을 비운 뒤 다시 출력해 보세요."
}
},
{
"case": "회의록은 붙였지만 IT 질문만",
"webhook": "my-assistant",
"run": 1,
"passed": true,
"problems": [],
"seconds": 3.1,
"status": 200,
"request": {
"message": "VPN이 계속 끊겨요",
"user": "이준호",
"title": "주간 회의",
"notes": "참석: 김민지, 이준호, 박서연. 1) 신규 고객 문의 응답 템플릿을 이준호가 금요일까지 정리한다. 2) 박서연은 다음 주 월요일까지 VPN 장애 보고서를 작성한다. 3) 서버 점검 일정은 김민지가 오늘 중 공지한다. 4) 회의실 예약 규칙 개선은 담당자를 다음 회의에서 정한다. 다음 회의는 10월 23일."
},
"response": {
"count": 1,
"results": [
{
"index": 1,
"type": "it",
"text": "VPN이 계속 끊겨요",
"agent": "it-agent",
"route": "자동 답변",
"answer": "VPN이 계속 끊길 경우, VPN 클라이언트를 최신 버전으로 업데이트하고 인증서 만료 여부를 확인한 뒤 다시 접속해 보시기 바랍니다."
}
],
"reply": "1. VPN이 계속 끊겨요\n → [자동 답변] VPN이 계속 끊길 경우, VPN 클라이언트를 최신 버전으로 업데이트하고 인증서 만료 여부를 확인한 뒤 다시 접속해 보시기 바랍니다."
}
},
{
"case": "업무 4개",
"webhook": "my-assistant",
"run": 1,
"passed": true,
"problems": [],
"seconds": 6.4,
"status": 200,
"request": {
"message": "VPN이 끊겨요. 프린터도 안 돼요. 회의록 할 일 정리해 주세요. 회식 장소도 추천해 주세요.",
"user": "이준호",
"title": "주간 회의",
"notes": "참석: 김민지, 이준호, 박서연. 1) 신규 고객 문의 응답 템플릿을 이준호가 금요일까지 정리한다. 2) 박서연은 다음 주 월요일까지 VPN 장애 보고서를 작성한다. 3) 서버 점검 일정은 김민지가 오늘 중 공지한다. 4) 회의실 예약 규칙 개선은 담당자를 다음 회의에서 정한다. 다음 회의는 10월 23일."
},
"response": {
"count": 4,
"results": [
{
"index": 1,
"type": "it",
"text": "VPN이 끊겨요.",
"agent": "it-agent",
"route": "자동 답변",
"answer": "VPN이 끊길 경우, VPN 클라이언트를 최신 버전으로 업데이트하고 인증서 만료 여부를 확인한 뒤 다시 접속해 보시기 바랍니다."
},
{
"index": 2,
"type": "it",
"text": "프린터도 안 돼요.",
"agent": "it-agent",
"route": "자동 답변",
"answer": "프린터가 안 될 때는 프린터 전원과 네트워크 연결을 확인하고, 인쇄 대기열을 비운 뒤 다시 출력해 보시기 바랍니다."
},
{
"index": 3,
"type": "meeting",
"text": "회의록 할 일 정리해 주세요.",
"agent": "meeting-agent",
"route": "자동 답변",
"answer": "신규 고객 문의 응답 템플릿 정리, VPN 장애 보고서 작성, 서버 점검 일정 공지, 회의실 예약 규칙 담당자 선정 논의가 필요하다. 할 일: 이준호 - 신규 고객 문의 응답 템플릿 정리 (금요일); 박서연 - VPN 장애 보고서 작성 (다음 주 월요일); 김민지 - 서버 점검 일정 공지 (오늘); 미정 - 회의실 예약 규칙 개선 담당자 선정 (다음 회의)",
"actions": [
{
"owner": "이준호",
"task": "신규 고객 문의 응답 템플릿 정리",
"due": "금요일"
},
{
"owner": "박서연",
"task": "VPN 장애 보고서 작성",
"due": "다음 주 월요일"
},
{
"owner": "김민지",
"task": "서버 점검 일정 공지",
"due": "오늘"
},
{
"owner": "미정",
"task": "회의실 예약 규칙 개선 담당자 선정",
"due": "다음 회의"
}
]
},
{
"index": 4,
"type": "other",
"text": "회식 장소도 추천해 주세요.",
"agent": "담당자 연결",
"route": "담당자 연결",
"answer": "IT 문의와 회의록 정리 말고는 도와드릴 수 없어 담당자에게 전달했습니다."
}
],
"reply": "1. VPN이 끊겨요.\n → [자동 답변] VPN이 끊길 경우, VPN 클라이언트를 최신 버전으로 업데이트하고 인증서 만료 여부를 확인한 뒤 다시 접속해 보시기 바랍니다.\n2. 프린터도 안 돼요.\n → [자동 답변] 프린터가 안 될 때는 프린터 전원과 네트워크 연결을 확인하고, 인쇄 대기열을 비운 뒤 다시 출력해 보시기 바랍니다.\n3. 회의록 할 일 정리해 주세요.\n → [자동 답변] 신규 고객 문의 응답 템플릿 정리, VPN 장애 보고서 작성, 서버 점검 일정 공지, 회의실 예약 규칙 담당자 선정 논의가 필요하다. 할 일: 이준호 - 신규 고객 문의 응답 템플릿 정리 (금요일); 박서연 - VPN 장애 보고서 작성 (다음 주 월요일); 김민지 - 서버 점검 일정 공지 (오늘); 미정 - 회의실 예약 규칙 개선 담당자 선정 (다음 회의)\n4. 회식 장소도 추천해 주세요.\n → [담당자 연결] IT 문의와 회의록 정리 말고는 도와드릴 수 없어 담당자에게 전달했습니다."
}
},
{
"case": "소문자 접수 번호",
"webhook": "my-assistant",
"run": 1,
"passed": true,
"problems": [],
"seconds": 3.8,
"status": 200,
"request": {
"message": "t1002 어떻게 되고 있나요?",
"user": "박서연"
},
"response": {
"count": 1,
"results": [
{
"index": 1,
"type": "it",
"text": "t1002 어떻게 되고 있나요?",
"agent": "it-agent",
"route": "자동 답변",
"answer": "T-1002 티켓은 현재 \"처리 중\" 상태이며, VPN 인증서 발급 승인 대기 중입니다. 10월 20일에 완료될 예정입니다. 추가 문의가 필요하면 알려주세요."
}
],
"reply": "1. t1002 어떻게 되고 있나요?\n → [자동 답변] T-1002 티켓은 현재 \"처리 중\" 상태이며, VPN 인증서 발급 승인 대기 중입니다. 10월 20일에 완료될 예정입니다. 추가 문의가 필요하면 알려주세요."
}
},
{
"case": "공백만 보냄",
"webhook": "my-assistant",
"run": 1,
"passed": true,
"problems": [],
"seconds": 0.0,
"status": 400,
"request": {
"message": " ",
"user": "이준호"
},
"response": {
"error": "message is required"
}
},
{
"case": "영어로 질문",
"webhook": "my-assistant",
"run": 1,
"passed": true,
"problems": [],
"seconds": 3.4,
"status": 200,
"request": {
"message": "My VPN keeps disconnecting. What should I do?",
"user": "이준호"
},
"response": {
"count": 1,
"results": [
{
"index": 1,
"type": "it",
"text": "My VPN keeps disconnecting. What should I do?",
"agent": "it-agent",
"route": "자동 답변",
"answer": "VPN 연결이 자주 끊길 경우, VPN 클라이언트를 최신 버전으로 업데이트하고 인증서 만료 여부를 확인한 후 다시 접속해 보시기 바랍니다."
}
],
"reply": "1. My VPN keeps disconnecting. What should I do?\n → [자동 답변] VPN 연결이 자주 끊길 경우, VPN 클라이언트를 최신 버전으로 업데이트하고 인증서 만료 여부를 확인한 후 다시 접속해 보시기 바랍니다."
}
}
]
}
@@ -0,0 +1,196 @@
POST http://localhost:5678/webhook/my-assistant · 7 case(s) × 1
✔ user 없이 IT 질문 · 2.6s
→ request POST /webhook/my-assistant
{
"message": "VPN이 계속 끊겨요"
}
← response HTTP 200
{
"count": 1,
"results": [
{
"index": 1,
"type": "it",
"text": "VPN이 계속 끊겨요",
"agent": "it-agent",
"route": "입력 필요",
"answer": "누가 요청했는지(user)를 함께 보내 주세요."
}
],
"reply": "1. VPN이 계속 끊겨요\n → [입력 필요] 누가 요청했는지(user)를 함께 보내 주세요."
}
✔ 남의 접수 건이 섞인 복합 요청 · 3.7s
→ request POST /webhook/my-assistant
{
"message": "T-1002 처리 상태 알려주고 프린터도 안 돼요",
"user": "이준호"
}
← response HTTP 200
{
"count": 2,
"results": [
{
"index": 1,
"type": "it",
"text": "T-1002 처리 상태 알려주고",
"agent": "it-agent",
"route": "담당자 연결",
"answer": "정확한 답을 찾지 못해 IT 담당자에게 문의를 전달했습니다."
},
{
"index": 2,
"type": "it",
"text": "프린터도 안 돼요",
"agent": "it-agent",
"route": "자동 답변",
"answer": "프린터 전원과 네트워크 연결을 확인하고, 인쇄 대기열을 비운 뒤 다시 출력해 보세요."
}
],
"reply": "1. T-1002 처리 상태 알려주고\n → [담당자 연결] 정확한 답을 찾지 못해 IT 담당자에게 문의를 전달했습니다.\n2. 프린터도 안 돼요\n → [자동 답변] 프린터 전원과 네트워크 연결을 확인하고, 인쇄 대기열을 비운 뒤 다시 출력해 보세요."
}
✔ 회의록은 붙였지만 IT 질문만 · 3.1s
→ request POST /webhook/my-assistant
{
"message": "VPN이 계속 끊겨요",
"user": "이준호",
"title": "주간 회의",
"notes": "참석: 김민지, 이준호, 박서연. 1) 신규 고객 문의 응답 템플릿을 이준호가 금요일까지 정리한다. 2) 박서연은 다음 주 월요일까지 VPN 장애 보고서를 작성한다. 3) 서버 점검 일정은 김민지가 오늘 중 공지한다. 4) 회의실 예약 규칙 개선은 담당자를 다음 회의에서 정한다. 다음 회의는 10월 23일."
}
← response HTTP 200
{
"count": 1,
"results": [
{
"index": 1,
"type": "it",
"text": "VPN이 계속 끊겨요",
"agent": "it-agent",
"route": "자동 답변",
"answer": "VPN이 계속 끊길 경우, VPN 클라이언트를 최신 버전으로 업데이트하고 인증서 만료 여부를 확인한 뒤 다시 접속해 보시기 바랍니다."
}
],
"reply": "1. VPN이 계속 끊겨요\n → [자동 답변] VPN이 계속 끊길 경우, VPN 클라이언트를 최신 버전으로 업데이트하고 인증서 만료 여부를 확인한 뒤 다시 접속해 보시기 바랍니다."
}
✔ 업무 4개 · 6.4s
→ request POST /webhook/my-assistant
{
"message": "VPN이 끊겨요. 프린터도 안 돼요. 회의록 할 일 정리해 주세요. 회식 장소도 추천해 주세요.",
"user": "이준호",
"title": "주간 회의",
"notes": "참석: 김민지, 이준호, 박서연. 1) 신규 고객 문의 응답 템플릿을 이준호가 금요일까지 정리한다. 2) 박서연은 다음 주 월요일까지 VPN 장애 보고서를 작성한다. 3) 서버 점검 일정은 김민지가 오늘 중 공지한다. 4) 회의실 예약 규칙 개선은 담당자를 다음 회의에서 정한다. 다음 회의는 10월 23일."
}
← response HTTP 200
{
"count": 4,
"results": [
{
"index": 1,
"type": "it",
"text": "VPN이 끊겨요.",
"agent": "it-agent",
"route": "자동 답변",
"answer": "VPN이 끊길 경우, VPN 클라이언트를 최신 버전으로 업데이트하고 인증서 만료 여부를 확인한 뒤 다시 접속해 보시기 바랍니다."
},
{
"index": 2,
"type": "it",
"text": "프린터도 안 돼요.",
"agent": "it-agent",
"route": "자동 답변",
"answer": "프린터가 안 될 때는 프린터 전원과 네트워크 연결을 확인하고, 인쇄 대기열을 비운 뒤 다시 출력해 보시기 바랍니다."
},
{
"index": 3,
"type": "meeting",
"text": "회의록 할 일 정리해 주세요.",
"agent": "meeting-agent",
"route": "자동 답변",
"answer": "신규 고객 문의 응답 템플릿 정리, VPN 장애 보고서 작성, 서버 점검 일정 공지, 회의실 예약 규칙 담당자 선정 논의가 필요하다. 할 일: 이준호 - 신규 고객 문의 응답 템플릿 정리 (금요일); 박서연 - VPN 장애 보고서 작성 (다음 주 월요일); 김민지 - 서버 점검 일정 공지 (오늘); 미정 - 회의실 예약 규칙 개선 담당자 선정 (다음 회의)",
"actions": [
{
"owner": "이준호",
"task": "신규 고객 문의 응답 템플릿 정리",
"due": "금요일"
},
{
"owner": "박서연",
"task": "VPN 장애 보고서 작성",
"due": "다음 주 월요일"
},
{
"owner": "김민지",
"task": "서버 점검 일정 공지",
"due": "오늘"
},
{
"owner": "미정",
"task": "회의실 예약 규칙 개선 담당자 선정",
"due": "다음 회의"
}
]
},
{
"index": 4,
"type": "other",
"text": "회식 장소도 추천해 주세요.",
"agent": "담당자 연결",
"route": "담당자 연결",
"answer": "IT 문의와 회의록 정리 말고는 도와드릴 수 없어 담당자에게 전달했습니다."
}
],
"reply": "1. VPN이 끊겨요.\n → [자동 답변] VPN이 끊길 경우, VPN 클라이언트를 최신 버전으로 업데이트하고 인증서 만료 여부를 확인한 뒤 다시 접속해 보시기 바랍니다.\n2. 프린터도 안 돼요.\n → [자동 답변] 프린터가 안 될 때는 프린터 전원과 네트워크 연결을 확인하고, 인쇄 대기열을 비운 뒤 다시 출력해 보시기 바랍니다.\n3. 회의록 할 일 정리해 주세요.\n → [자동 답변] 신규 고객 문의 응답 템플릿 정리, VPN 장애 보고서 작성, 서버 점검 일정 공지, 회의실 예약 규칙 담당자 선정 논의가 필요하다. 할 일: 이준호 - 신규 고객 문의 응답 템플릿 정리 (금요일); 박서연 - VPN 장애 보고서 작성 (다음 주 월요일); 김민지 - 서버 점검 일정 공지 (오늘); 미정 - 회의실 예약 규칙 개선 담당자 선정 (다음 회의)\n4. 회식 장소도 추천해 주세요.\n → [담당자 연결] IT 문의와 회의록 정리 말고는 도와드릴 수 없어 담당자에게 전달했습니다."
}
✔ 소문자 접수 번호 · 3.8s
→ request POST /webhook/my-assistant
{
"message": "t1002 어떻게 되고 있나요?",
"user": "박서연"
}
← response HTTP 200
{
"count": 1,
"results": [
{
"index": 1,
"type": "it",
"text": "t1002 어떻게 되고 있나요?",
"agent": "it-agent",
"route": "자동 답변",
"answer": "T-1002 티켓은 현재 \"처리 중\" 상태이며, VPN 인증서 발급 승인 대기 중입니다. 10월 20일에 완료될 예정입니다. 추가 문의가 필요하면 알려주세요."
}
],
"reply": "1. t1002 어떻게 되고 있나요?\n → [자동 답변] T-1002 티켓은 현재 \"처리 중\" 상태이며, VPN 인증서 발급 승인 대기 중입니다. 10월 20일에 완료될 예정입니다. 추가 문의가 필요하면 알려주세요."
}
✔ 공백만 보냄 · 0.0s
→ request POST /webhook/my-assistant
{
"message": " ",
"user": "이준호"
}
← response HTTP 400
{
"error": "message is required"
}
✔ 영어로 질문 · 3.4s
→ request POST /webhook/my-assistant
{
"message": "My VPN keeps disconnecting. What should I do?",
"user": "이준호"
}
← response HTTP 200
{
"count": 1,
"results": [
{
"index": 1,
"type": "it",
"text": "My VPN keeps disconnecting. What should I do?",
"agent": "it-agent",
"route": "자동 답변",
"answer": "VPN 연결이 자주 끊길 경우, VPN 클라이언트를 최신 버전으로 업데이트하고 인증서 만료 여부를 확인한 후 다시 접속해 보시기 바랍니다."
}
],
"reply": "1. My VPN keeps disconnecting. What should I do?\n → [자동 답변] VPN 연결이 자주 끊길 경우, VPN 클라이언트를 최신 버전으로 업데이트하고 인증서 만료 여부를 확인한 후 다시 접속해 보시기 바랍니다."
}
Passed 7/7
report: runs/68-lab03-challenge-cases-20261020-231202.json
+231
View File
@@ -0,0 +1,231 @@
{
"cases": "lab02.json",
"webhook": "my-assistant",
"passed": 6,
"total": 6,
"results": [
{
"case": "복합 요청 · 3개 모두 답",
"webhook": "my-assistant",
"run": 1,
"passed": true,
"problems": [],
"seconds": 6.7,
"status": 200,
"request": {
"message": "T-1002 처리 상태 알려주고, 첨부한 회의록에서 할 일도 정리해줘. 그리고 프린터 출력이 안 돼요.",
"user": "박서연",
"title": "10월 16일 주간 회의",
"notes": "참석: 김민지, 이준호, 박서연. 1) 신규 고객 문의 응답 템플릿을 이준호가 금요일까지 정리한다. 2) 박서연은 다음 주 월요일까지 VPN 장애 보고서를 작성한다. 3) 서버 점검 일정은 김민지가 오늘 중 공지한다. 4) 회의실 예약 규칙 개선은 담당자를 다음 회의에서 정한다. 다음 회의는 10월 23일."
},
"response": {
"count": 3,
"results": [
{
"index": 1,
"type": "it",
"text": "T-1002 처리 상태 알려줘",
"agent": "it-agent",
"route": "자동 답변",
"answer": "T-1002 티켓은 현재 \"처리 중\" 상태이며, VPN 인증서 발급 승인 대기 중입니다. 10월 20일에 완료될 예정입니다."
},
{
"index": 2,
"type": "meeting",
"text": "첨부한 회의록에서 할 일 정리",
"agent": "meeting-agent",
"route": "자동 답변",
"answer": "10월 16일 주간 회의에서 신규 고객 문의 응답 템플릿 정리, VPN 장애 보고서 작성, 서버 점검 일정 공지, 회의실 예약 규칙 개선 담당자 선정에 대해 논의함. 할 일: 이준호 - 신규 고객 문의 응답 템플릿 정리 (금요일); 박서연 - VPN 장애 보고서 작성 (다음 주 월요일); 김민지 - 서버 점검 일정 공지 (오늘); 미정 - 회의실 예약 규칙 개선 담당자 선정 (10월 23일)",
"actions": [
{
"owner": "이준호",
"task": "신규 고객 문의 응답 템플릿 정리",
"due": "금요일"
},
{
"owner": "박서연",
"task": "VPN 장애 보고서 작성",
"due": "다음 주 월요일"
},
{
"owner": "김민지",
"task": "서버 점검 일정 공지",
"due": "오늘"
},
{
"owner": "미정",
"task": "회의실 예약 규칙 개선 담당자 선정",
"due": "10월 23일"
}
]
},
{
"index": 3,
"type": "it",
"text": "프린터 출력이 안 돼요",
"agent": "it-agent",
"route": "자동 답변",
"answer": "프린터 전원과 네트워크 연결을 확인하고, 인쇄 대기열을 비운 뒤 다시 출력해 보세요."
}
],
"reply": "1. T-1002 처리 상태 알려줘\n → [자동 답변] T-1002 티켓은 현재 \"처리 중\" 상태이며, VPN 인증서 발급 승인 대기 중입니다. 10월 20일에 완료될 예정입니다.\n2. 첨부한 회의록에서 할 일 정리\n → [자동 답변] 10월 16일 주간 회의에서 신규 고객 문의 응답 템플릿 정리, VPN 장애 보고서 작성, 서버 점검 일정 공지, 회의실 예약 규칙 개선 담당자 선정에 대해 논의함. 할 일: 이준호 - 신규 고객 문의 응답 템플릿 정리 (금요일); 박서연 - VPN 장애 보고서 작성 (다음 주 월요일); 김민지 - 서버 점검 일정 공지 (오늘); 미정 - 회의실 예약 규칙 개선 담당자 선정 (10월 23일)\n3. 프린터 출력이 안 돼요\n → [자동 답변] 프린터 전원과 네트워크 연결을 확인하고, 인쇄 대기열을 비운 뒤 다시 출력해 보세요."
}
},
{
"case": "IT 하나",
"webhook": "my-assistant",
"run": 1,
"passed": true,
"problems": [],
"seconds": 3.7,
"status": 200,
"request": {
"message": "VPN이 계속 끊겨요. 어떻게 해야 하나요?",
"user": "이준호"
},
"response": {
"count": 1,
"results": [
{
"index": 1,
"type": "it",
"text": "VPN이 계속 끊겨요. 어떻게 해야 하나요?",
"agent": "it-agent",
"route": "자동 답변",
"answer": "VPN이 계속 끊길 경우, VPN 클라이언트를 최신 버전으로 업데이트하고 인증서 만료 여부를 확인한 뒤 다시 접속해 보시기 바랍니다."
}
],
"reply": "1. VPN이 계속 끊겨요. 어떻게 해야 하나요?\n → [자동 답변] VPN이 계속 끊길 경우, VPN 클라이언트를 최신 버전으로 업데이트하고 인증서 만료 여부를 확인한 뒤 다시 접속해 보시기 바랍니다."
}
},
{
"case": "회의록 정리",
"webhook": "my-assistant",
"run": 1,
"passed": true,
"problems": [],
"seconds": 3.9,
"status": 200,
"request": {
"message": "이번 회의록 할 일 정리 부탁해요",
"user": "김민지",
"title": "10월 16일 주간 회의",
"notes": "참석: 김민지, 이준호, 박서연. 1) 신규 고객 문의 응답 템플릿을 이준호가 금요일까지 정리한다. 2) 박서연은 다음 주 월요일까지 VPN 장애 보고서를 작성한다. 3) 서버 점검 일정은 김민지가 오늘 중 공지한다. 4) 회의실 예약 규칙 개선은 담당자를 다음 회의에서 정한다. 다음 회의는 10월 23일."
},
"response": {
"count": 1,
"results": [
{
"index": 1,
"type": "meeting",
"text": "이번 회의록 할 일 정리 부탁해요",
"agent": "meeting-agent",
"route": "자동 답변",
"answer": "10월 16일 주간 회의에서 신규 고객 문의 응답 템플릿 정리, VPN 장애 보고서 작성, 서버 점검 일정 공지, 회의실 예약 규칙 개선 담당자 선정에 대해 논의함. 할 일: 이준호 - 신규 고객 문의 응답 템플릿 정리 (금요일까지); 박서연 - VPN 장애 보고서 작성 (다음 주 월요일까지); 김민지 - 서버 점검 일정 공지 (오늘 중); 미정 - 회의실 예약 규칙 개선 담당자 선정 (10월 23일 다음 회의)",
"actions": [
{
"owner": "이준호",
"task": "신규 고객 문의 응답 템플릿 정리",
"due": "금요일까지"
},
{
"owner": "박서연",
"task": "VPN 장애 보고서 작성",
"due": "다음 주 월요일까지"
},
{
"owner": "김민지",
"task": "서버 점검 일정 공지",
"due": "오늘 중"
},
{
"owner": "미정",
"task": "회의실 예약 규칙 개선 담당자 선정",
"due": "10월 23일 다음 회의"
}
]
}
],
"reply": "1. 이번 회의록 할 일 정리 부탁해요\n → [자동 답변] 10월 16일 주간 회의에서 신규 고객 문의 응답 템플릿 정리, VPN 장애 보고서 작성, 서버 점검 일정 공지, 회의실 예약 규칙 개선 담당자 선정에 대해 논의함. 할 일: 이준호 - 신규 고객 문의 응답 템플릿 정리 (금요일까지); 박서연 - VPN 장애 보고서 작성 (다음 주 월요일까지); 김민지 - 서버 점검 일정 공지 (오늘 중); 미정 - 회의실 예약 규칙 개선 담당자 선정 (10월 23일 다음 회의)"
}
},
{
"case": "IT와 기타",
"webhook": "my-assistant",
"run": 1,
"passed": true,
"problems": [],
"seconds": 3.9,
"status": 200,
"request": {
"message": "프린터 출력이 안 돼요. 그리고 다음 주 회식 장소도 추천해 주세요.",
"user": "최유진"
},
"response": {
"count": 2,
"results": [
{
"index": 1,
"type": "it",
"text": "프린터 출력이 안 돼요.",
"agent": "it-agent",
"route": "자동 답변",
"answer": "프린터 전원과 네트워크 연결을 확인하고, 인쇄 대기열을 비운 뒤 다시 출력해 보세요."
},
{
"index": 2,
"type": "other",
"text": "다음 주 회식 장소도 추천해 주세요.",
"agent": "담당자 연결",
"route": "담당자 연결",
"answer": "IT 문의와 회의록 정리 말고는 도와드릴 수 없어 담당자에게 전달했습니다."
}
],
"reply": "1. 프린터 출력이 안 돼요.\n → [자동 답변] 프린터 전원과 네트워크 연결을 확인하고, 인쇄 대기열을 비운 뒤 다시 출력해 보세요.\n2. 다음 주 회식 장소도 추천해 주세요.\n → [담당자 연결] IT 문의와 회의록 정리 말고는 도와드릴 수 없어 담당자에게 전달했습니다."
}
},
{
"case": "기타만 · Agent 안 부름",
"webhook": "my-assistant",
"run": 1,
"passed": true,
"problems": [],
"seconds": 1.1,
"status": 200,
"request": {
"message": "다음 주 회식 장소 추천해 주세요",
"user": "최유진"
},
"response": {
"count": 1,
"results": [
{
"index": 1,
"type": "other",
"text": "다음 주 회식 장소 추천해 주세요",
"agent": "담당자 연결",
"route": "담당자 연결",
"answer": "IT 문의와 회의록 정리 말고는 도와드릴 수 없어 담당자에게 전달했습니다."
}
],
"reply": "1. 다음 주 회식 장소 추천해 주세요\n → [담당자 연결] IT 문의와 회의록 정리 말고는 도와드릴 수 없어 담당자에게 전달했습니다."
}
},
{
"case": "빈 요청",
"webhook": "my-assistant",
"run": 1,
"passed": true,
"problems": [],
"seconds": 0.0,
"status": 400,
"request": {
"message": "",
"user": "이준호"
},
"response": {
"error": "message is required"
}
}
]
}
+190
View File
@@ -0,0 +1,190 @@
POST http://localhost:5678/webhook/my-assistant · 6 case(s) × 1
✔ 복합 요청 · 3개 모두 답 · 6.7s
→ request POST /webhook/my-assistant
{
"message": "T-1002 처리 상태 알려주고, 첨부한 회의록에서 할 일도 정리해줘. 그리고 프린터 출력이 안 돼요.",
"user": "박서연",
"title": "10월 16일 주간 회의",
"notes": "참석: 김민지, 이준호, 박서연. 1) 신규 고객 문의 응답 템플릿을 이준호가 금요일까지 정리한다. 2) 박서연은 다음 주 월요일까지 VPN 장애 보고서를 작성한다. 3) 서버 점검 일정은 김민지가 오늘 중 공지한다. 4) 회의실 예약 규칙 개선은 담당자를 다음 회의에서 정한다. 다음 회의는 10월 23일."
}
← response HTTP 200
{
"count": 3,
"results": [
{
"index": 1,
"type": "it",
"text": "T-1002 처리 상태 알려줘",
"agent": "it-agent",
"route": "자동 답변",
"answer": "T-1002 티켓은 현재 \"처리 중\" 상태이며, VPN 인증서 발급 승인 대기 중입니다. 10월 20일에 완료될 예정입니다."
},
{
"index": 2,
"type": "meeting",
"text": "첨부한 회의록에서 할 일 정리",
"agent": "meeting-agent",
"route": "자동 답변",
"answer": "10월 16일 주간 회의에서 신규 고객 문의 응답 템플릿 정리, VPN 장애 보고서 작성, 서버 점검 일정 공지, 회의실 예약 규칙 개선 담당자 선정에 대해 논의함. 할 일: 이준호 - 신규 고객 문의 응답 템플릿 정리 (금요일); 박서연 - VPN 장애 보고서 작성 (다음 주 월요일); 김민지 - 서버 점검 일정 공지 (오늘); 미정 - 회의실 예약 규칙 개선 담당자 선정 (10월 23일)",
"actions": [
{
"owner": "이준호",
"task": "신규 고객 문의 응답 템플릿 정리",
"due": "금요일"
},
{
"owner": "박서연",
"task": "VPN 장애 보고서 작성",
"due": "다음 주 월요일"
},
{
"owner": "김민지",
"task": "서버 점검 일정 공지",
"due": "오늘"
},
{
"owner": "미정",
"task": "회의실 예약 규칙 개선 담당자 선정",
"due": "10월 23일"
}
]
},
{
"index": 3,
"type": "it",
"text": "프린터 출력이 안 돼요",
"agent": "it-agent",
"route": "자동 답변",
"answer": "프린터 전원과 네트워크 연결을 확인하고, 인쇄 대기열을 비운 뒤 다시 출력해 보세요."
}
],
"reply": "1. T-1002 처리 상태 알려줘\n → [자동 답변] T-1002 티켓은 현재 \"처리 중\" 상태이며, VPN 인증서 발급 승인 대기 중입니다. 10월 20일에 완료될 예정입니다.\n2. 첨부한 회의록에서 할 일 정리\n → [자동 답변] 10월 16일 주간 회의에서 신규 고객 문의 응답 템플릿 정리, VPN 장애 보고서 작성, 서버 점검 일정 공지, 회의실 예약 규칙 개선 담당자 선정에 대해 논의함. 할 일: 이준호 - 신규 고객 문의 응답 템플릿 정리 (금요일); 박서연 - VPN 장애 보고서 작성 (다음 주 월요일); 김민지 - 서버 점검 일정 공지 (오늘); 미정 - 회의실 예약 규칙 개선 담당자 선정 (10월 23일)\n3. 프린터 출력이 안 돼요\n → [자동 답변] 프린터 전원과 네트워크 연결을 확인하고, 인쇄 대기열을 비운 뒤 다시 출력해 보세요."
}
✔ IT 하나 · 3.7s
→ request POST /webhook/my-assistant
{
"message": "VPN이 계속 끊겨요. 어떻게 해야 하나요?",
"user": "이준호"
}
← response HTTP 200
{
"count": 1,
"results": [
{
"index": 1,
"type": "it",
"text": "VPN이 계속 끊겨요. 어떻게 해야 하나요?",
"agent": "it-agent",
"route": "자동 답변",
"answer": "VPN이 계속 끊길 경우, VPN 클라이언트를 최신 버전으로 업데이트하고 인증서 만료 여부를 확인한 뒤 다시 접속해 보시기 바랍니다."
}
],
"reply": "1. VPN이 계속 끊겨요. 어떻게 해야 하나요?\n → [자동 답변] VPN이 계속 끊길 경우, VPN 클라이언트를 최신 버전으로 업데이트하고 인증서 만료 여부를 확인한 뒤 다시 접속해 보시기 바랍니다."
}
✔ 회의록 정리 · 3.9s
→ request POST /webhook/my-assistant
{
"message": "이번 회의록 할 일 정리 부탁해요",
"user": "김민지",
"title": "10월 16일 주간 회의",
"notes": "참석: 김민지, 이준호, 박서연. 1) 신규 고객 문의 응답 템플릿을 이준호가 금요일까지 정리한다. 2) 박서연은 다음 주 월요일까지 VPN 장애 보고서를 작성한다. 3) 서버 점검 일정은 김민지가 오늘 중 공지한다. 4) 회의실 예약 규칙 개선은 담당자를 다음 회의에서 정한다. 다음 회의는 10월 23일."
}
← response HTTP 200
{
"count": 1,
"results": [
{
"index": 1,
"type": "meeting",
"text": "이번 회의록 할 일 정리 부탁해요",
"agent": "meeting-agent",
"route": "자동 답변",
"answer": "10월 16일 주간 회의에서 신규 고객 문의 응답 템플릿 정리, VPN 장애 보고서 작성, 서버 점검 일정 공지, 회의실 예약 규칙 개선 담당자 선정에 대해 논의함. 할 일: 이준호 - 신규 고객 문의 응답 템플릿 정리 (금요일까지); 박서연 - VPN 장애 보고서 작성 (다음 주 월요일까지); 김민지 - 서버 점검 일정 공지 (오늘 중); 미정 - 회의실 예약 규칙 개선 담당자 선정 (10월 23일 다음 회의)",
"actions": [
{
"owner": "이준호",
"task": "신규 고객 문의 응답 템플릿 정리",
"due": "금요일까지"
},
{
"owner": "박서연",
"task": "VPN 장애 보고서 작성",
"due": "다음 주 월요일까지"
},
{
"owner": "김민지",
"task": "서버 점검 일정 공지",
"due": "오늘 중"
},
{
"owner": "미정",
"task": "회의실 예약 규칙 개선 담당자 선정",
"due": "10월 23일 다음 회의"
}
]
}
],
"reply": "1. 이번 회의록 할 일 정리 부탁해요\n → [자동 답변] 10월 16일 주간 회의에서 신규 고객 문의 응답 템플릿 정리, VPN 장애 보고서 작성, 서버 점검 일정 공지, 회의실 예약 규칙 개선 담당자 선정에 대해 논의함. 할 일: 이준호 - 신규 고객 문의 응답 템플릿 정리 (금요일까지); 박서연 - VPN 장애 보고서 작성 (다음 주 월요일까지); 김민지 - 서버 점검 일정 공지 (오늘 중); 미정 - 회의실 예약 규칙 개선 담당자 선정 (10월 23일 다음 회의)"
}
✔ IT와 기타 · 3.9s
→ request POST /webhook/my-assistant
{
"message": "프린터 출력이 안 돼요. 그리고 다음 주 회식 장소도 추천해 주세요.",
"user": "최유진"
}
← response HTTP 200
{
"count": 2,
"results": [
{
"index": 1,
"type": "it",
"text": "프린터 출력이 안 돼요.",
"agent": "it-agent",
"route": "자동 답변",
"answer": "프린터 전원과 네트워크 연결을 확인하고, 인쇄 대기열을 비운 뒤 다시 출력해 보세요."
},
{
"index": 2,
"type": "other",
"text": "다음 주 회식 장소도 추천해 주세요.",
"agent": "담당자 연결",
"route": "담당자 연결",
"answer": "IT 문의와 회의록 정리 말고는 도와드릴 수 없어 담당자에게 전달했습니다."
}
],
"reply": "1. 프린터 출력이 안 돼요.\n → [자동 답변] 프린터 전원과 네트워크 연결을 확인하고, 인쇄 대기열을 비운 뒤 다시 출력해 보세요.\n2. 다음 주 회식 장소도 추천해 주세요.\n → [담당자 연결] IT 문의와 회의록 정리 말고는 도와드릴 수 없어 담당자에게 전달했습니다."
}
✔ 기타만 · Agent 안 부름 · 1.1s
→ request POST /webhook/my-assistant
{
"message": "다음 주 회식 장소 추천해 주세요",
"user": "최유진"
}
← response HTTP 200
{
"count": 1,
"results": [
{
"index": 1,
"type": "other",
"text": "다음 주 회식 장소 추천해 주세요",
"agent": "담당자 연결",
"route": "담당자 연결",
"answer": "IT 문의와 회의록 정리 말고는 도와드릴 수 없어 담당자에게 전달했습니다."
}
],
"reply": "1. 다음 주 회식 장소 추천해 주세요\n → [담당자 연결] IT 문의와 회의록 정리 말고는 도와드릴 수 없어 담당자에게 전달했습니다."
}
✔ 빈 요청 · 0.0s
→ request POST /webhook/my-assistant
{
"message": "",
"user": "이준호"
}
← response HTTP 400
{
"error": "message is required"
}
Passed 6/6
report: runs/lab02-20261020-231222.json
+180
View File
@@ -0,0 +1,180 @@
{
"cases": "lab03.json",
"webhook": "my-assistant",
"passed": 5,
"total": 5,
"results": [
{
"case": "회의록 없는 회의 요청",
"webhook": "my-assistant",
"run": 1,
"passed": true,
"problems": [],
"seconds": 1.1,
"status": 200,
"request": {
"message": "이번 회의록 할 일 정리 부탁해요",
"user": "김민지"
},
"response": {
"count": 1,
"results": [
{
"index": 1,
"type": "meeting",
"text": "이번 회의록 할 일 정리 부탁해요",
"agent": "meeting-agent",
"route": "입력 필요",
"answer": "회의록 정리를 하려면 회의록 내용(notes)을 함께 보내 주세요."
}
],
"reply": "1. 이번 회의록 할 일 정리 부탁해요\n → [입력 필요] 회의록 정리를 하려면 회의록 내용(notes)을 함께 보내 주세요."
}
},
{
"case": "IT 둘 · 둘 다 답",
"webhook": "my-assistant",
"run": 1,
"passed": true,
"problems": [],
"seconds": 3.8,
"status": 200,
"request": {
"message": "비밀번호를 잊어버렸어요. 그리고 메일함 용량이 꽉 찼다고 나와요.",
"user": "이준호"
},
"response": {
"count": 2,
"results": [
{
"index": 1,
"type": "it",
"text": "비밀번호를 잊어버렸어요.",
"agent": "it-agent",
"route": "자동 답변",
"answer": "사내 포털 로그인 화면의 '비밀번호 찾기'에서 휴대폰 인증 후 새 비밀번호를 설정하시면 됩니다."
},
{
"index": 2,
"type": "it",
"text": "메일함 용량이 꽉 찼다고 나와요.",
"agent": "it-agent",
"route": "자동 답변",
"answer": "메일함 용량이 꽉 찼을 때는 오래된 메일과 큰 첨부 파일을 보관함으로 옮기거나 삭제하여 용량을 확보하시면 됩니다."
}
],
"reply": "1. 비밀번호를 잊어버렸어요.\n → [자동 답변] 사내 포털 로그인 화면의 '비밀번호 찾기'에서 휴대폰 인증 후 새 비밀번호를 설정하시면 됩니다.\n2. 메일함 용량이 꽉 찼다고 나와요.\n → [자동 답변] 메일함 용량이 꽉 찼을 때는 오래된 메일과 큰 첨부 파일을 보관함으로 옮기거나 삭제하여 용량을 확보하시면 됩니다."
}
},
{
"case": "복합 요청 · 오류 없음",
"webhook": "my-assistant",
"run": 1,
"passed": true,
"problems": [],
"seconds": 6.4,
"status": 200,
"request": {
"message": "T-1002 처리 상태 알려주고, 첨부한 회의록에서 할 일도 정리해줘. 그리고 프린터 출력이 안 돼요.",
"user": "박서연",
"title": "10월 16일 주간 회의",
"notes": "참석: 김민지, 이준호, 박서연. 1) 신규 고객 문의 응답 템플릿을 이준호가 금요일까지 정리한다. 2) 박서연은 다음 주 월요일까지 VPN 장애 보고서를 작성한다. 3) 서버 점검 일정은 김민지가 오늘 중 공지한다. 4) 회의실 예약 규칙 개선은 담당자를 다음 회의에서 정한다. 다음 회의는 10월 23일."
},
"response": {
"count": 3,
"results": [
{
"index": 1,
"type": "it",
"text": "T-1002 처리 상태 알려줘",
"agent": "it-agent",
"route": "자동 답변",
"answer": "T-1002 티켓은 현재 \"처리 중\" 상태이며, VPN 인증서 발급 승인 대기 중입니다. 10월 20일에 완료될 예정입니다. 추가 문의가 필요하면 알려주세요."
},
{
"index": 2,
"type": "meeting",
"text": "첨부한 회의록에서 할 일 정리",
"agent": "meeting-agent",
"route": "자동 답변",
"answer": "10월 16일 주간 회의에서 신규 고객 문의 응답 템플릿 정리, VPN 장애 보고서 작성, 서버 점검 일정 공지, 회의실 예약 규칙 개선 담당자 선정에 대해 논의함. 할 일: 이준호 - 신규 고객 문의 응답 템플릿 정리 (금요일); 박서연 - VPN 장애 보고서 작성 (다음 주 월요일); 김민지 - 서버 점검 일정 공지 (오늘 중); 미정 - 회의실 예약 규칙 개선 담당자 선정 (10월 23일)",
"actions": [
{
"owner": "이준호",
"task": "신규 고객 문의 응답 템플릿 정리",
"due": "금요일"
},
{
"owner": "박서연",
"task": "VPN 장애 보고서 작성",
"due": "다음 주 월요일"
},
{
"owner": "김민지",
"task": "서버 점검 일정 공지",
"due": "오늘 중"
},
{
"owner": "미정",
"task": "회의실 예약 규칙 개선 담당자 선정",
"due": "10월 23일"
}
]
},
{
"index": 3,
"type": "it",
"text": "프린터 출력이 안 돼요",
"agent": "it-agent",
"route": "자동 답변",
"answer": "프린터 전원과 네트워크 연결을 확인하고, 인쇄 대기열을 비운 뒤 다시 출력해 보세요."
}
],
"reply": "1. T-1002 처리 상태 알려줘\n → [자동 답변] T-1002 티켓은 현재 \"처리 중\" 상태이며, VPN 인증서 발급 승인 대기 중입니다. 10월 20일에 완료될 예정입니다. 추가 문의가 필요하면 알려주세요.\n2. 첨부한 회의록에서 할 일 정리\n → [자동 답변] 10월 16일 주간 회의에서 신규 고객 문의 응답 템플릿 정리, VPN 장애 보고서 작성, 서버 점검 일정 공지, 회의실 예약 규칙 개선 담당자 선정에 대해 논의함. 할 일: 이준호 - 신규 고객 문의 응답 템플릿 정리 (금요일); 박서연 - VPN 장애 보고서 작성 (다음 주 월요일); 김민지 - 서버 점검 일정 공지 (오늘 중); 미정 - 회의실 예약 규칙 개선 담당자 선정 (10월 23일)\n3. 프린터 출력이 안 돼요\n → [자동 답변] 프린터 전원과 네트워크 연결을 확인하고, 인쇄 대기열을 비운 뒤 다시 출력해 보세요."
}
},
{
"case": "기타만",
"webhook": "my-assistant",
"run": 1,
"passed": true,
"problems": [],
"seconds": 1.2,
"status": 200,
"request": {
"message": "다음 주 회식 장소 추천해 주세요",
"user": "최유진"
},
"response": {
"count": 1,
"results": [
{
"index": 1,
"type": "other",
"text": "다음 주 회식 장소 추천해 주세요",
"agent": "담당자 연결",
"route": "담당자 연결",
"answer": "IT 문의와 회의록 정리 말고는 도와드릴 수 없어 담당자에게 전달했습니다."
}
],
"reply": "1. 다음 주 회식 장소 추천해 주세요\n → [담당자 연결] IT 문의와 회의록 정리 말고는 도와드릴 수 없어 담당자에게 전달했습니다."
}
},
{
"case": "빈 요청",
"webhook": "my-assistant",
"run": 1,
"passed": true,
"problems": [],
"seconds": 0.0,
"status": 400,
"request": {
"message": "",
"user": "이준호"
},
"response": {
"error": "message is required"
}
}
]
}
+145
View File
@@ -0,0 +1,145 @@
POST http://localhost:5678/webhook/my-assistant · 5 case(s) × 1
✔ 회의록 없는 회의 요청 · 1.1s
→ request POST /webhook/my-assistant
{
"message": "이번 회의록 할 일 정리 부탁해요",
"user": "김민지"
}
← response HTTP 200
{
"count": 1,
"results": [
{
"index": 1,
"type": "meeting",
"text": "이번 회의록 할 일 정리 부탁해요",
"agent": "meeting-agent",
"route": "입력 필요",
"answer": "회의록 정리를 하려면 회의록 내용(notes)을 함께 보내 주세요."
}
],
"reply": "1. 이번 회의록 할 일 정리 부탁해요\n → [입력 필요] 회의록 정리를 하려면 회의록 내용(notes)을 함께 보내 주세요."
}
✔ IT 둘 · 둘 다 답 · 3.8s
→ request POST /webhook/my-assistant
{
"message": "비밀번호를 잊어버렸어요. 그리고 메일함 용량이 꽉 찼다고 나와요.",
"user": "이준호"
}
← response HTTP 200
{
"count": 2,
"results": [
{
"index": 1,
"type": "it",
"text": "비밀번호를 잊어버렸어요.",
"agent": "it-agent",
"route": "자동 답변",
"answer": "사내 포털 로그인 화면의 '비밀번호 찾기'에서 휴대폰 인증 후 새 비밀번호를 설정하시면 됩니다."
},
{
"index": 2,
"type": "it",
"text": "메일함 용량이 꽉 찼다고 나와요.",
"agent": "it-agent",
"route": "자동 답변",
"answer": "메일함 용량이 꽉 찼을 때는 오래된 메일과 큰 첨부 파일을 보관함으로 옮기거나 삭제하여 용량을 확보하시면 됩니다."
}
],
"reply": "1. 비밀번호를 잊어버렸어요.\n → [자동 답변] 사내 포털 로그인 화면의 '비밀번호 찾기'에서 휴대폰 인증 후 새 비밀번호를 설정하시면 됩니다.\n2. 메일함 용량이 꽉 찼다고 나와요.\n → [자동 답변] 메일함 용량이 꽉 찼을 때는 오래된 메일과 큰 첨부 파일을 보관함으로 옮기거나 삭제하여 용량을 확보하시면 됩니다."
}
✔ 복합 요청 · 오류 없음 · 6.4s
→ request POST /webhook/my-assistant
{
"message": "T-1002 처리 상태 알려주고, 첨부한 회의록에서 할 일도 정리해줘. 그리고 프린터 출력이 안 돼요.",
"user": "박서연",
"title": "10월 16일 주간 회의",
"notes": "참석: 김민지, 이준호, 박서연. 1) 신규 고객 문의 응답 템플릿을 이준호가 금요일까지 정리한다. 2) 박서연은 다음 주 월요일까지 VPN 장애 보고서를 작성한다. 3) 서버 점검 일정은 김민지가 오늘 중 공지한다. 4) 회의실 예약 규칙 개선은 담당자를 다음 회의에서 정한다. 다음 회의는 10월 23일."
}
← response HTTP 200
{
"count": 3,
"results": [
{
"index": 1,
"type": "it",
"text": "T-1002 처리 상태 알려줘",
"agent": "it-agent",
"route": "자동 답변",
"answer": "T-1002 티켓은 현재 \"처리 중\" 상태이며, VPN 인증서 발급 승인 대기 중입니다. 10월 20일에 완료될 예정입니다. 추가 문의가 필요하면 알려주세요."
},
{
"index": 2,
"type": "meeting",
"text": "첨부한 회의록에서 할 일 정리",
"agent": "meeting-agent",
"route": "자동 답변",
"answer": "10월 16일 주간 회의에서 신규 고객 문의 응답 템플릿 정리, VPN 장애 보고서 작성, 서버 점검 일정 공지, 회의실 예약 규칙 개선 담당자 선정에 대해 논의함. 할 일: 이준호 - 신규 고객 문의 응답 템플릿 정리 (금요일); 박서연 - VPN 장애 보고서 작성 (다음 주 월요일); 김민지 - 서버 점검 일정 공지 (오늘 중); 미정 - 회의실 예약 규칙 개선 담당자 선정 (10월 23일)",
"actions": [
{
"owner": "이준호",
"task": "신규 고객 문의 응답 템플릿 정리",
"due": "금요일"
},
{
"owner": "박서연",
"task": "VPN 장애 보고서 작성",
"due": "다음 주 월요일"
},
{
"owner": "김민지",
"task": "서버 점검 일정 공지",
"due": "오늘 중"
},
{
"owner": "미정",
"task": "회의실 예약 규칙 개선 담당자 선정",
"due": "10월 23일"
}
]
},
{
"index": 3,
"type": "it",
"text": "프린터 출력이 안 돼요",
"agent": "it-agent",
"route": "자동 답변",
"answer": "프린터 전원과 네트워크 연결을 확인하고, 인쇄 대기열을 비운 뒤 다시 출력해 보세요."
}
],
"reply": "1. T-1002 처리 상태 알려줘\n → [자동 답변] T-1002 티켓은 현재 \"처리 중\" 상태이며, VPN 인증서 발급 승인 대기 중입니다. 10월 20일에 완료될 예정입니다. 추가 문의가 필요하면 알려주세요.\n2. 첨부한 회의록에서 할 일 정리\n → [자동 답변] 10월 16일 주간 회의에서 신규 고객 문의 응답 템플릿 정리, VPN 장애 보고서 작성, 서버 점검 일정 공지, 회의실 예약 규칙 개선 담당자 선정에 대해 논의함. 할 일: 이준호 - 신규 고객 문의 응답 템플릿 정리 (금요일); 박서연 - VPN 장애 보고서 작성 (다음 주 월요일); 김민지 - 서버 점검 일정 공지 (오늘 중); 미정 - 회의실 예약 규칙 개선 담당자 선정 (10월 23일)\n3. 프린터 출력이 안 돼요\n → [자동 답변] 프린터 전원과 네트워크 연결을 확인하고, 인쇄 대기열을 비운 뒤 다시 출력해 보세요."
}
✔ 기타만 · 1.2s
→ request POST /webhook/my-assistant
{
"message": "다음 주 회식 장소 추천해 주세요",
"user": "최유진"
}
← response HTTP 200
{
"count": 1,
"results": [
{
"index": 1,
"type": "other",
"text": "다음 주 회식 장소 추천해 주세요",
"agent": "담당자 연결",
"route": "담당자 연결",
"answer": "IT 문의와 회의록 정리 말고는 도와드릴 수 없어 담당자에게 전달했습니다."
}
],
"reply": "1. 다음 주 회식 장소 추천해 주세요\n → [담당자 연결] IT 문의와 회의록 정리 말고는 도와드릴 수 없어 담당자에게 전달했습니다."
}
✔ 빈 요청 · 0.0s
→ request POST /webhook/my-assistant
{
"message": "",
"user": "이준호"
}
← response HTTP 400
{
"error": "message is required"
}
Passed 5/5
report: runs/lab03-20261020-231235.json
@@ -0,0 +1,111 @@
{
"cases": "lab03-down.json",
"webhook": "my-assistant",
"passed": 3,
"total": 3,
"results": [
{
"case": "회의록 Agent 꺼짐 · 복합 요청",
"webhook": "my-assistant",
"run": 1,
"passed": true,
"problems": [],
"seconds": 5.6,
"status": 200,
"request": {
"message": "T-1002 처리 상태 알려주고, 첨부한 회의록에서 할 일도 정리해줘. 그리고 프린터 출력이 안 돼요.",
"user": "박서연",
"title": "10월 16일 주간 회의",
"notes": "참석: 김민지, 이준호, 박서연. 1) 신규 고객 문의 응답 템플릿을 이준호가 금요일까지 정리한다. 2) 박서연은 다음 주 월요일까지 VPN 장애 보고서를 작성한다. 3) 서버 점검 일정은 김민지가 오늘 중 공지한다. 4) 회의실 예약 규칙 개선은 담당자를 다음 회의에서 정한다. 다음 회의는 10월 23일."
},
"response": {
"count": 3,
"results": [
{
"index": 1,
"type": "it",
"text": "T-1002 처리 상태 알려줘",
"agent": "it-agent",
"route": "자동 답변",
"answer": "T-1002 티켓은 현재 \"처리 중\" 상태이며, VPN 인증서 발급 승인 대기 중입니다. 10월 20일에 완료될 예정입니다."
},
{
"index": 2,
"type": "meeting",
"text": "첨부한 회의록에서 할 일 정리",
"agent": "meeting-agent",
"route": "담당자 연결",
"answer": "담당 Agent가 응답하지 않아 담당자에게 전달했습니다.",
"actions": []
},
{
"index": 3,
"type": "it",
"text": "프린터 출력이 안 돼요",
"agent": "it-agent",
"route": "자동 답변",
"answer": "프린터 출력이 안 될 때는 프린터 전원과 네트워크 연결을 확인하고, 인쇄 대기열을 비운 뒤 다시 출력해 보세요."
}
],
"reply": "1. T-1002 처리 상태 알려줘\n → [자동 답변] T-1002 티켓은 현재 \"처리 중\" 상태이며, VPN 인증서 발급 승인 대기 중입니다. 10월 20일에 완료될 예정입니다.\n2. 첨부한 회의록에서 할 일 정리\n → [담당자 연결] 담당 Agent가 응답하지 않아 담당자에게 전달했습니다.\n3. 프린터 출력이 안 돼요\n → [자동 답변] 프린터 출력이 안 될 때는 프린터 전원과 네트워크 연결을 확인하고, 인쇄 대기열을 비운 뒤 다시 출력해 보세요."
}
},
{
"case": "회의록 Agent 꺼짐 · 회의록만",
"webhook": "my-assistant",
"run": 1,
"passed": true,
"problems": [],
"seconds": 1.2,
"status": 200,
"request": {
"message": "이번 회의록 할 일 정리 부탁해요",
"user": "김민지",
"title": "10월 16일 주간 회의",
"notes": "참석: 김민지, 이준호, 박서연. 1) 신규 고객 문의 응답 템플릿을 이준호가 금요일까지 정리한다. 2) 박서연은 다음 주 월요일까지 VPN 장애 보고서를 작성한다. 3) 서버 점검 일정은 김민지가 오늘 중 공지한다. 4) 회의실 예약 규칙 개선은 담당자를 다음 회의에서 정한다. 다음 회의는 10월 23일."
},
"response": {
"count": 1,
"results": [
{
"index": 1,
"type": "meeting",
"text": "이번 회의록 할 일 정리 부탁해요",
"agent": "meeting-agent",
"route": "담당자 연결",
"answer": "담당 Agent가 응답하지 않아 담당자에게 전달했습니다.",
"actions": []
}
],
"reply": "1. 이번 회의록 할 일 정리 부탁해요\n → [담당자 연결] 담당 Agent가 응답하지 않아 담당자에게 전달했습니다."
}
},
{
"case": "회의록 Agent 꺼짐 · IT는 그대로",
"webhook": "my-assistant",
"run": 1,
"passed": true,
"problems": [],
"seconds": 3.2,
"status": 200,
"request": {
"message": "VPN이 계속 끊겨요. 어떻게 해야 하나요?",
"user": "이준호"
},
"response": {
"count": 1,
"results": [
{
"index": 1,
"type": "it",
"text": "VPN이 계속 끊겨요. 어떻게 해야 하나요?",
"agent": "it-agent",
"route": "자동 답변",
"answer": "VPN이 계속 끊길 경우, VPN 클라이언트를 최신 버전으로 업데이트하고 인증서 만료 여부를 확인한 뒤 다시 접속해 보시기 바랍니다."
}
],
"reply": "1. VPN이 계속 끊겨요. 어떻게 해야 하나요?\n → [자동 답변] VPN이 계속 끊길 경우, VPN 클라이언트를 최신 버전으로 업데이트하고 인증서 만료 여부를 확인한 뒤 다시 접속해 보시기 바랍니다."
}
}
]
}
@@ -0,0 +1,88 @@
POST http://localhost:5678/webhook/my-assistant · 3 case(s) × 1
✔ 회의록 Agent 꺼짐 · 복합 요청 · 5.6s
→ request POST /webhook/my-assistant
{
"message": "T-1002 처리 상태 알려주고, 첨부한 회의록에서 할 일도 정리해줘. 그리고 프린터 출력이 안 돼요.",
"user": "박서연",
"title": "10월 16일 주간 회의",
"notes": "참석: 김민지, 이준호, 박서연. 1) 신규 고객 문의 응답 템플릿을 이준호가 금요일까지 정리한다. 2) 박서연은 다음 주 월요일까지 VPN 장애 보고서를 작성한다. 3) 서버 점검 일정은 김민지가 오늘 중 공지한다. 4) 회의실 예약 규칙 개선은 담당자를 다음 회의에서 정한다. 다음 회의는 10월 23일."
}
← response HTTP 200
{
"count": 3,
"results": [
{
"index": 1,
"type": "it",
"text": "T-1002 처리 상태 알려줘",
"agent": "it-agent",
"route": "자동 답변",
"answer": "T-1002 티켓은 현재 \"처리 중\" 상태이며, VPN 인증서 발급 승인 대기 중입니다. 10월 20일에 완료될 예정입니다."
},
{
"index": 2,
"type": "meeting",
"text": "첨부한 회의록에서 할 일 정리",
"agent": "meeting-agent",
"route": "담당자 연결",
"answer": "담당 Agent가 응답하지 않아 담당자에게 전달했습니다.",
"actions": []
},
{
"index": 3,
"type": "it",
"text": "프린터 출력이 안 돼요",
"agent": "it-agent",
"route": "자동 답변",
"answer": "프린터 출력이 안 될 때는 프린터 전원과 네트워크 연결을 확인하고, 인쇄 대기열을 비운 뒤 다시 출력해 보세요."
}
],
"reply": "1. T-1002 처리 상태 알려줘\n → [자동 답변] T-1002 티켓은 현재 \"처리 중\" 상태이며, VPN 인증서 발급 승인 대기 중입니다. 10월 20일에 완료될 예정입니다.\n2. 첨부한 회의록에서 할 일 정리\n → [담당자 연결] 담당 Agent가 응답하지 않아 담당자에게 전달했습니다.\n3. 프린터 출력이 안 돼요\n → [자동 답변] 프린터 출력이 안 될 때는 프린터 전원과 네트워크 연결을 확인하고, 인쇄 대기열을 비운 뒤 다시 출력해 보세요."
}
✔ 회의록 Agent 꺼짐 · 회의록만 · 1.2s
→ request POST /webhook/my-assistant
{
"message": "이번 회의록 할 일 정리 부탁해요",
"user": "김민지",
"title": "10월 16일 주간 회의",
"notes": "참석: 김민지, 이준호, 박서연. 1) 신규 고객 문의 응답 템플릿을 이준호가 금요일까지 정리한다. 2) 박서연은 다음 주 월요일까지 VPN 장애 보고서를 작성한다. 3) 서버 점검 일정은 김민지가 오늘 중 공지한다. 4) 회의실 예약 규칙 개선은 담당자를 다음 회의에서 정한다. 다음 회의는 10월 23일."
}
← response HTTP 200
{
"count": 1,
"results": [
{
"index": 1,
"type": "meeting",
"text": "이번 회의록 할 일 정리 부탁해요",
"agent": "meeting-agent",
"route": "담당자 연결",
"answer": "담당 Agent가 응답하지 않아 담당자에게 전달했습니다.",
"actions": []
}
],
"reply": "1. 이번 회의록 할 일 정리 부탁해요\n → [담당자 연결] 담당 Agent가 응답하지 않아 담당자에게 전달했습니다."
}
✔ 회의록 Agent 꺼짐 · IT는 그대로 · 3.2s
→ request POST /webhook/my-assistant
{
"message": "VPN이 계속 끊겨요. 어떻게 해야 하나요?",
"user": "이준호"
}
← response HTTP 200
{
"count": 1,
"results": [
{
"index": 1,
"type": "it",
"text": "VPN이 계속 끊겨요. 어떻게 해야 하나요?",
"agent": "it-agent",
"route": "자동 답변",
"answer": "VPN이 계속 끊길 경우, VPN 클라이언트를 최신 버전으로 업데이트하고 인증서 만료 여부를 확인한 뒤 다시 접속해 보시기 바랍니다."
}
],
"reply": "1. VPN이 계속 끊겨요. 어떻게 해야 하나요?\n → [자동 답변] VPN이 계속 끊길 경우, VPN 클라이언트를 최신 버전으로 업데이트하고 인증서 만료 여부를 확인한 뒤 다시 접속해 보시기 바랍니다."
}
Passed 3/3
report: runs/lab03-down-20261020-231253.json
File diff suppressed because it is too large. Load diff
+13 -1
View File
@@ -9,7 +9,7 @@
uv run tools/flow.py push agents/*.json my-work/assistant.json # import + publish (one n8n restart)
uv run tools/flow.py off agents/meeting-agent.json # unpublish (simulate an agent that is down)
uv run tools/flow.py call my-assistant requests/composite.json
uv run tools/flow.py test cases/lab02.json [--repeat 3]
uv run tools/flow.py test cases/lab02.json -v [--repeat 3] # -v: show each request and response JSON
Run it from the day folder (Last3Mon/68). n8n is the day 65 install (~/day65-n8n, Docker project
day65-n8n), started from Last3Mon/65/n8n. Environment overrides:
@@ -484,6 +484,14 @@ def judge(expect: dict, status: int, payload: object) -> list[str]:
return problems
def show_json(label: str, value: object) -> None:
"""Print one JSON value under a label, indented below the case line (test -v)."""
text = json.dumps(value, ensure_ascii=False, indent=2) if not isinstance(value, str) else value
print(f" {label}")
for row in text.splitlines():
print(f" {row}")
def cmd_test(args: argparse.Namespace) -> int:
path = resolve(args.cases)
suite = load_json(path)
@@ -503,6 +511,9 @@ def cmd_test(args: argparse.Namespace) -> int:
mark = OK if not problems else BAD
suffix = f" #{run}" if args.repeat > 1 else ""
print(f"{mark} {case.get('name', '?')}{suffix} · {seconds:.1f}s" + ("" if not problems else " · " + "; ".join(problems)))
if args.verbose:
show_json(f"→ request POST /webhook/{case_hook}", body)
show_json(f"← response HTTP {status}", payload)
results.append({"case": case.get("name"), "webhook": case_hook, "run": run, "passed": not problems, "problems": problems,
"seconds": round(seconds, 1), "status": status, "request": body, "response": payload})
total = len(results)
@@ -583,6 +594,7 @@ def main() -> int:
item.add_argument("cases")
item.add_argument("--repeat", type=int, default=1, help="run every case N times")
item.add_argument("--webhook", help="override the webhook path in the case file")
item.add_argument("-v", "--verbose", action="store_true", help="print the request and response JSON of every run")
item.set_defaults(run=cmd_test)
args = parser.parse_args()
return args.run(args)