1095 lines
29 KiB
Plaintext
1095 lines
29 KiB
Plaintext
$ uv run tools/flow.py test cases/lab01-edges.json -v
|
||||
|
|
POST http://localhost:5678/webhook/my-faq-check · 6 case(s) × 1
|
|||
|
|
✔ 제목 40자는 통과, 41자는 너무 김 · 0.1s
|
|||
|
|
→ request POST /webhook/my-faq-check
|
|||
|
|
{
|
|||
|
|
"batch": "E-1",
|
|||
|
|
"items": [
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-401",
|
|||
|
|
"title": "사내 메신저 알림이 오지 않을 때 확인할 것과 다시 설정하는 법가가가가가",
|
|||
|
|
"keywords": [
|
|||
|
|
"메신저",
|
|||
|
|
"알림"
|
|||
|
|
],
|
|||
|
|
"answer": "메신저 설정의 '알림' 탭에서 알림을 다시 켭니다."
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-402",
|
|||
|
|
"title": "사내 메신저 알림이 오지 않을 때 확인할 것과 다시 설정하는 법가가가가가요",
|
|||
|
|
"keywords": [
|
|||
|
|
"메신저"
|
|||
|
|
],
|
|||
|
|
"answer": "메신저 설정의 '알림' 탭에서 알림을 다시 켭니다."
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-403",
|
|||
|
|
"title": " ",
|
|||
|
|
"keywords": [
|
|||
|
|
"사원증"
|
|||
|
|
],
|
|||
|
|
"answer": "사원증 사진은 인사 포털에서 바꿉니다."
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-404",
|
|||
|
|
"title": "장비 신청",
|
|||
|
|
"keywords": [
|
|||
|
|
"장비"
|
|||
|
|
],
|
|||
|
|
"answer": "IT 포털에서 신청"
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-405",
|
|||
|
|
"title": "장비 반납",
|
|||
|
|
"keywords": [
|
|||
|
|
"반납"
|
|||
|
|
],
|
|||
|
|
"answer": "IT포털에서 신청"
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-406",
|
|||
|
|
"title": "야간 장애 연락",
|
|||
|
|
"keywords": [
|
|||
|
|
"야간",
|
|||
|
|
"장애"
|
|||
|
|
],
|
|||
|
|
"answer": "야간 장애는 당직자 01012345678 로 전화합니다."
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-407",
|
|||
|
|
"title": "IT 문의 창구",
|
|||
|
|
"keywords": [
|
|||
|
|
"문의",
|
|||
|
|
"창구"
|
|||
|
|
],
|
|||
|
|
"answer": "IT 문의 창구 번호는 02-123-4567 (평일 9~18시) 입니다."
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-408",
|
|||
|
|
"title": "도움말 모음",
|
|||
|
|
"keywords": [
|
|||
|
|
"도움말"
|
|||
|
|
],
|
|||
|
|
"answer": "도움말은 https://intra.example.com/help 에 모여 있습니다."
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-409",
|
|||
|
|
"title": "보안 교육 자료",
|
|||
|
|
"keywords": [
|
|||
|
|
"보안 교육"
|
|||
|
|
],
|
|||
|
|
"answer": "보안 교육 자료는 http://intra.example.com.evil.io/edu 에서 받습니다."
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "faq-410",
|
|||
|
|
"title": "출장 노트북",
|
|||
|
|
"keywords": [
|
|||
|
|
"출장"
|
|||
|
|
],
|
|||
|
|
"answer": "출장용 노트북은 IT팀에 사흘 전까지 신청합니다."
|
|||
|
|
}
|
|||
|
|
]
|
|||
|
|
}
|
|||
|
|
← response HTTP 200
|
|||
|
|
{
|
|||
|
|
"batch": "E-1",
|
|||
|
|
"total": 10,
|
|||
|
|
"valid": 4,
|
|||
|
|
"invalid": 6,
|
|||
|
|
"with_warnings": 0,
|
|||
|
|
"rows": [
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-401",
|
|||
|
|
"ok": true,
|
|||
|
|
"errors": [],
|
|||
|
|
"warnings": []
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-402",
|
|||
|
|
"ok": false,
|
|||
|
|
"errors": [
|
|||
|
|
"title_too_long"
|
|||
|
|
],
|
|||
|
|
"warnings": []
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-403",
|
|||
|
|
"ok": false,
|
|||
|
|
"errors": [
|
|||
|
|
"title_missing"
|
|||
|
|
],
|
|||
|
|
"warnings": []
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-404",
|
|||
|
|
"ok": true,
|
|||
|
|
"errors": [],
|
|||
|
|
"warnings": []
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-405",
|
|||
|
|
"ok": false,
|
|||
|
|
"errors": [
|
|||
|
|
"answer_too_short"
|
|||
|
|
],
|
|||
|
|
"warnings": []
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-406",
|
|||
|
|
"ok": false,
|
|||
|
|
"errors": [
|
|||
|
|
"pii"
|
|||
|
|
],
|
|||
|
|
"warnings": []
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-407",
|
|||
|
|
"ok": true,
|
|||
|
|
"errors": [],
|
|||
|
|
"warnings": []
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-408",
|
|||
|
|
"ok": true,
|
|||
|
|
"errors": [],
|
|||
|
|
"warnings": []
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-409",
|
|||
|
|
"ok": false,
|
|||
|
|
"errors": [
|
|||
|
|
"external_link"
|
|||
|
|
],
|
|||
|
|
"warnings": []
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "faq-410",
|
|||
|
|
"ok": false,
|
|||
|
|
"errors": [
|
|||
|
|
"id_format"
|
|||
|
|
],
|
|||
|
|
"warnings": []
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"codes": {
|
|||
|
|
"title_too_long": 1,
|
|||
|
|
"title_missing": 1,
|
|||
|
|
"answer_too_short": 1,
|
|||
|
|
"pii": 1,
|
|||
|
|
"external_link": 1,
|
|||
|
|
"id_format": 1
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
✔ 공백만 있는 제목은 빈 값 · 0.1s
|
|||
|
|
→ request POST /webhook/my-faq-check
|
|||
|
|
{
|
|||
|
|
"batch": "E-1",
|
|||
|
|
"items": [
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-401",
|
|||
|
|
"title": "사내 메신저 알림이 오지 않을 때 확인할 것과 다시 설정하는 법가가가가가",
|
|||
|
|
"keywords": [
|
|||
|
|
"메신저",
|
|||
|
|
"알림"
|
|||
|
|
],
|
|||
|
|
"answer": "메신저 설정의 '알림' 탭에서 알림을 다시 켭니다."
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-402",
|
|||
|
|
"title": "사내 메신저 알림이 오지 않을 때 확인할 것과 다시 설정하는 법가가가가가요",
|
|||
|
|
"keywords": [
|
|||
|
|
"메신저"
|
|||
|
|
],
|
|||
|
|
"answer": "메신저 설정의 '알림' 탭에서 알림을 다시 켭니다."
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-403",
|
|||
|
|
"title": " ",
|
|||
|
|
"keywords": [
|
|||
|
|
"사원증"
|
|||
|
|
],
|
|||
|
|
"answer": "사원증 사진은 인사 포털에서 바꿉니다."
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-404",
|
|||
|
|
"title": "장비 신청",
|
|||
|
|
"keywords": [
|
|||
|
|
"장비"
|
|||
|
|
],
|
|||
|
|
"answer": "IT 포털에서 신청"
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-405",
|
|||
|
|
"title": "장비 반납",
|
|||
|
|
"keywords": [
|
|||
|
|
"반납"
|
|||
|
|
],
|
|||
|
|
"answer": "IT포털에서 신청"
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-406",
|
|||
|
|
"title": "야간 장애 연락",
|
|||
|
|
"keywords": [
|
|||
|
|
"야간",
|
|||
|
|
"장애"
|
|||
|
|
],
|
|||
|
|
"answer": "야간 장애는 당직자 01012345678 로 전화합니다."
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-407",
|
|||
|
|
"title": "IT 문의 창구",
|
|||
|
|
"keywords": [
|
|||
|
|
"문의",
|
|||
|
|
"창구"
|
|||
|
|
],
|
|||
|
|
"answer": "IT 문의 창구 번호는 02-123-4567 (평일 9~18시) 입니다."
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-408",
|
|||
|
|
"title": "도움말 모음",
|
|||
|
|
"keywords": [
|
|||
|
|
"도움말"
|
|||
|
|
],
|
|||
|
|
"answer": "도움말은 https://intra.example.com/help 에 모여 있습니다."
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-409",
|
|||
|
|
"title": "보안 교육 자료",
|
|||
|
|
"keywords": [
|
|||
|
|
"보안 교육"
|
|||
|
|
],
|
|||
|
|
"answer": "보안 교육 자료는 http://intra.example.com.evil.io/edu 에서 받습니다."
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "faq-410",
|
|||
|
|
"title": "출장 노트북",
|
|||
|
|
"keywords": [
|
|||
|
|
"출장"
|
|||
|
|
],
|
|||
|
|
"answer": "출장용 노트북은 IT팀에 사흘 전까지 신청합니다."
|
|||
|
|
}
|
|||
|
|
]
|
|||
|
|
}
|
|||
|
|
← response HTTP 200
|
|||
|
|
{
|
|||
|
|
"batch": "E-1",
|
|||
|
|
"total": 10,
|
|||
|
|
"valid": 4,
|
|||
|
|
"invalid": 6,
|
|||
|
|
"with_warnings": 0,
|
|||
|
|
"rows": [
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-401",
|
|||
|
|
"ok": true,
|
|||
|
|
"errors": [],
|
|||
|
|
"warnings": []
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-402",
|
|||
|
|
"ok": false,
|
|||
|
|
"errors": [
|
|||
|
|
"title_too_long"
|
|||
|
|
],
|
|||
|
|
"warnings": []
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-403",
|
|||
|
|
"ok": false,
|
|||
|
|
"errors": [
|
|||
|
|
"title_missing"
|
|||
|
|
],
|
|||
|
|
"warnings": []
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-404",
|
|||
|
|
"ok": true,
|
|||
|
|
"errors": [],
|
|||
|
|
"warnings": []
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-405",
|
|||
|
|
"ok": false,
|
|||
|
|
"errors": [
|
|||
|
|
"answer_too_short"
|
|||
|
|
],
|
|||
|
|
"warnings": []
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-406",
|
|||
|
|
"ok": false,
|
|||
|
|
"errors": [
|
|||
|
|
"pii"
|
|||
|
|
],
|
|||
|
|
"warnings": []
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-407",
|
|||
|
|
"ok": true,
|
|||
|
|
"errors": [],
|
|||
|
|
"warnings": []
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-408",
|
|||
|
|
"ok": true,
|
|||
|
|
"errors": [],
|
|||
|
|
"warnings": []
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-409",
|
|||
|
|
"ok": false,
|
|||
|
|
"errors": [
|
|||
|
|
"external_link"
|
|||
|
|
],
|
|||
|
|
"warnings": []
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "faq-410",
|
|||
|
|
"ok": false,
|
|||
|
|
"errors": [
|
|||
|
|
"id_format"
|
|||
|
|
],
|
|||
|
|
"warnings": []
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"codes": {
|
|||
|
|
"title_too_long": 1,
|
|||
|
|
"title_missing": 1,
|
|||
|
|
"answer_too_short": 1,
|
|||
|
|
"pii": 1,
|
|||
|
|
"external_link": 1,
|
|||
|
|
"id_format": 1
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
✔ 답 10자는 통과, 9자는 너무 짧음 · 0.0s
|
|||
|
|
→ request POST /webhook/my-faq-check
|
|||
|
|
{
|
|||
|
|
"batch": "E-1",
|
|||
|
|
"items": [
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-401",
|
|||
|
|
"title": "사내 메신저 알림이 오지 않을 때 확인할 것과 다시 설정하는 법가가가가가",
|
|||
|
|
"keywords": [
|
|||
|
|
"메신저",
|
|||
|
|
"알림"
|
|||
|
|
],
|
|||
|
|
"answer": "메신저 설정의 '알림' 탭에서 알림을 다시 켭니다."
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-402",
|
|||
|
|
"title": "사내 메신저 알림이 오지 않을 때 확인할 것과 다시 설정하는 법가가가가가요",
|
|||
|
|
"keywords": [
|
|||
|
|
"메신저"
|
|||
|
|
],
|
|||
|
|
"answer": "메신저 설정의 '알림' 탭에서 알림을 다시 켭니다."
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-403",
|
|||
|
|
"title": " ",
|
|||
|
|
"keywords": [
|
|||
|
|
"사원증"
|
|||
|
|
],
|
|||
|
|
"answer": "사원증 사진은 인사 포털에서 바꿉니다."
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-404",
|
|||
|
|
"title": "장비 신청",
|
|||
|
|
"keywords": [
|
|||
|
|
"장비"
|
|||
|
|
],
|
|||
|
|
"answer": "IT 포털에서 신청"
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-405",
|
|||
|
|
"title": "장비 반납",
|
|||
|
|
"keywords": [
|
|||
|
|
"반납"
|
|||
|
|
],
|
|||
|
|
"answer": "IT포털에서 신청"
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-406",
|
|||
|
|
"title": "야간 장애 연락",
|
|||
|
|
"keywords": [
|
|||
|
|
"야간",
|
|||
|
|
"장애"
|
|||
|
|
],
|
|||
|
|
"answer": "야간 장애는 당직자 01012345678 로 전화합니다."
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-407",
|
|||
|
|
"title": "IT 문의 창구",
|
|||
|
|
"keywords": [
|
|||
|
|
"문의",
|
|||
|
|
"창구"
|
|||
|
|
],
|
|||
|
|
"answer": "IT 문의 창구 번호는 02-123-4567 (평일 9~18시) 입니다."
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-408",
|
|||
|
|
"title": "도움말 모음",
|
|||
|
|
"keywords": [
|
|||
|
|
"도움말"
|
|||
|
|
],
|
|||
|
|
"answer": "도움말은 https://intra.example.com/help 에 모여 있습니다."
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-409",
|
|||
|
|
"title": "보안 교육 자료",
|
|||
|
|
"keywords": [
|
|||
|
|
"보안 교육"
|
|||
|
|
],
|
|||
|
|
"answer": "보안 교육 자료는 http://intra.example.com.evil.io/edu 에서 받습니다."
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "faq-410",
|
|||
|
|
"title": "출장 노트북",
|
|||
|
|
"keywords": [
|
|||
|
|
"출장"
|
|||
|
|
],
|
|||
|
|
"answer": "출장용 노트북은 IT팀에 사흘 전까지 신청합니다."
|
|||
|
|
}
|
|||
|
|
]
|
|||
|
|
}
|
|||
|
|
← response HTTP 200
|
|||
|
|
{
|
|||
|
|
"batch": "E-1",
|
|||
|
|
"total": 10,
|
|||
|
|
"valid": 4,
|
|||
|
|
"invalid": 6,
|
|||
|
|
"with_warnings": 0,
|
|||
|
|
"rows": [
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-401",
|
|||
|
|
"ok": true,
|
|||
|
|
"errors": [],
|
|||
|
|
"warnings": []
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-402",
|
|||
|
|
"ok": false,
|
|||
|
|
"errors": [
|
|||
|
|
"title_too_long"
|
|||
|
|
],
|
|||
|
|
"warnings": []
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-403",
|
|||
|
|
"ok": false,
|
|||
|
|
"errors": [
|
|||
|
|
"title_missing"
|
|||
|
|
],
|
|||
|
|
"warnings": []
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-404",
|
|||
|
|
"ok": true,
|
|||
|
|
"errors": [],
|
|||
|
|
"warnings": []
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-405",
|
|||
|
|
"ok": false,
|
|||
|
|
"errors": [
|
|||
|
|
"answer_too_short"
|
|||
|
|
],
|
|||
|
|
"warnings": []
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-406",
|
|||
|
|
"ok": false,
|
|||
|
|
"errors": [
|
|||
|
|
"pii"
|
|||
|
|
],
|
|||
|
|
"warnings": []
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-407",
|
|||
|
|
"ok": true,
|
|||
|
|
"errors": [],
|
|||
|
|
"warnings": []
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-408",
|
|||
|
|
"ok": true,
|
|||
|
|
"errors": [],
|
|||
|
|
"warnings": []
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-409",
|
|||
|
|
"ok": false,
|
|||
|
|
"errors": [
|
|||
|
|
"external_link"
|
|||
|
|
],
|
|||
|
|
"warnings": []
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "faq-410",
|
|||
|
|
"ok": false,
|
|||
|
|
"errors": [
|
|||
|
|
"id_format"
|
|||
|
|
],
|
|||
|
|
"warnings": []
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"codes": {
|
|||
|
|
"title_too_long": 1,
|
|||
|
|
"title_missing": 1,
|
|||
|
|
"answer_too_short": 1,
|
|||
|
|
"pii": 1,
|
|||
|
|
"external_link": 1,
|
|||
|
|
"id_format": 1
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
✔ 하이픈 없는 휴대전화도 개인정보, 사무실 번호는 통과 · 0.1s
|
|||
|
|
→ request POST /webhook/my-faq-check
|
|||
|
|
{
|
|||
|
|
"batch": "E-1",
|
|||
|
|
"items": [
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-401",
|
|||
|
|
"title": "사내 메신저 알림이 오지 않을 때 확인할 것과 다시 설정하는 법가가가가가",
|
|||
|
|
"keywords": [
|
|||
|
|
"메신저",
|
|||
|
|
"알림"
|
|||
|
|
],
|
|||
|
|
"answer": "메신저 설정의 '알림' 탭에서 알림을 다시 켭니다."
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-402",
|
|||
|
|
"title": "사내 메신저 알림이 오지 않을 때 확인할 것과 다시 설정하는 법가가가가가요",
|
|||
|
|
"keywords": [
|
|||
|
|
"메신저"
|
|||
|
|
],
|
|||
|
|
"answer": "메신저 설정의 '알림' 탭에서 알림을 다시 켭니다."
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-403",
|
|||
|
|
"title": " ",
|
|||
|
|
"keywords": [
|
|||
|
|
"사원증"
|
|||
|
|
],
|
|||
|
|
"answer": "사원증 사진은 인사 포털에서 바꿉니다."
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-404",
|
|||
|
|
"title": "장비 신청",
|
|||
|
|
"keywords": [
|
|||
|
|
"장비"
|
|||
|
|
],
|
|||
|
|
"answer": "IT 포털에서 신청"
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-405",
|
|||
|
|
"title": "장비 반납",
|
|||
|
|
"keywords": [
|
|||
|
|
"반납"
|
|||
|
|
],
|
|||
|
|
"answer": "IT포털에서 신청"
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-406",
|
|||
|
|
"title": "야간 장애 연락",
|
|||
|
|
"keywords": [
|
|||
|
|
"야간",
|
|||
|
|
"장애"
|
|||
|
|
],
|
|||
|
|
"answer": "야간 장애는 당직자 01012345678 로 전화합니다."
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-407",
|
|||
|
|
"title": "IT 문의 창구",
|
|||
|
|
"keywords": [
|
|||
|
|
"문의",
|
|||
|
|
"창구"
|
|||
|
|
],
|
|||
|
|
"answer": "IT 문의 창구 번호는 02-123-4567 (평일 9~18시) 입니다."
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-408",
|
|||
|
|
"title": "도움말 모음",
|
|||
|
|
"keywords": [
|
|||
|
|
"도움말"
|
|||
|
|
],
|
|||
|
|
"answer": "도움말은 https://intra.example.com/help 에 모여 있습니다."
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-409",
|
|||
|
|
"title": "보안 교육 자료",
|
|||
|
|
"keywords": [
|
|||
|
|
"보안 교육"
|
|||
|
|
],
|
|||
|
|
"answer": "보안 교육 자료는 http://intra.example.com.evil.io/edu 에서 받습니다."
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "faq-410",
|
|||
|
|
"title": "출장 노트북",
|
|||
|
|
"keywords": [
|
|||
|
|
"출장"
|
|||
|
|
],
|
|||
|
|
"answer": "출장용 노트북은 IT팀에 사흘 전까지 신청합니다."
|
|||
|
|
}
|
|||
|
|
]
|
|||
|
|
}
|
|||
|
|
← response HTTP 200
|
|||
|
|
{
|
|||
|
|
"batch": "E-1",
|
|||
|
|
"total": 10,
|
|||
|
|
"valid": 4,
|
|||
|
|
"invalid": 6,
|
|||
|
|
"with_warnings": 0,
|
|||
|
|
"rows": [
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-401",
|
|||
|
|
"ok": true,
|
|||
|
|
"errors": [],
|
|||
|
|
"warnings": []
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-402",
|
|||
|
|
"ok": false,
|
|||
|
|
"errors": [
|
|||
|
|
"title_too_long"
|
|||
|
|
],
|
|||
|
|
"warnings": []
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-403",
|
|||
|
|
"ok": false,
|
|||
|
|
"errors": [
|
|||
|
|
"title_missing"
|
|||
|
|
],
|
|||
|
|
"warnings": []
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-404",
|
|||
|
|
"ok": true,
|
|||
|
|
"errors": [],
|
|||
|
|
"warnings": []
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-405",
|
|||
|
|
"ok": false,
|
|||
|
|
"errors": [
|
|||
|
|
"answer_too_short"
|
|||
|
|
],
|
|||
|
|
"warnings": []
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-406",
|
|||
|
|
"ok": false,
|
|||
|
|
"errors": [
|
|||
|
|
"pii"
|
|||
|
|
],
|
|||
|
|
"warnings": []
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-407",
|
|||
|
|
"ok": true,
|
|||
|
|
"errors": [],
|
|||
|
|
"warnings": []
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-408",
|
|||
|
|
"ok": true,
|
|||
|
|
"errors": [],
|
|||
|
|
"warnings": []
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-409",
|
|||
|
|
"ok": false,
|
|||
|
|
"errors": [
|
|||
|
|
"external_link"
|
|||
|
|
],
|
|||
|
|
"warnings": []
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "faq-410",
|
|||
|
|
"ok": false,
|
|||
|
|
"errors": [
|
|||
|
|
"id_format"
|
|||
|
|
],
|
|||
|
|
"warnings": []
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"codes": {
|
|||
|
|
"title_too_long": 1,
|
|||
|
|
"title_missing": 1,
|
|||
|
|
"answer_too_short": 1,
|
|||
|
|
"pii": 1,
|
|||
|
|
"external_link": 1,
|
|||
|
|
"id_format": 1
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
✔ 사내 주소는 통과, 사내 주소처럼 보이는 바깥 링크는 막음 · 0.0s
|
|||
|
|
→ request POST /webhook/my-faq-check
|
|||
|
|
{
|
|||
|
|
"batch": "E-1",
|
|||
|
|
"items": [
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-401",
|
|||
|
|
"title": "사내 메신저 알림이 오지 않을 때 확인할 것과 다시 설정하는 법가가가가가",
|
|||
|
|
"keywords": [
|
|||
|
|
"메신저",
|
|||
|
|
"알림"
|
|||
|
|
],
|
|||
|
|
"answer": "메신저 설정의 '알림' 탭에서 알림을 다시 켭니다."
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-402",
|
|||
|
|
"title": "사내 메신저 알림이 오지 않을 때 확인할 것과 다시 설정하는 법가가가가가요",
|
|||
|
|
"keywords": [
|
|||
|
|
"메신저"
|
|||
|
|
],
|
|||
|
|
"answer": "메신저 설정의 '알림' 탭에서 알림을 다시 켭니다."
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-403",
|
|||
|
|
"title": " ",
|
|||
|
|
"keywords": [
|
|||
|
|
"사원증"
|
|||
|
|
],
|
|||
|
|
"answer": "사원증 사진은 인사 포털에서 바꿉니다."
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-404",
|
|||
|
|
"title": "장비 신청",
|
|||
|
|
"keywords": [
|
|||
|
|
"장비"
|
|||
|
|
],
|
|||
|
|
"answer": "IT 포털에서 신청"
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-405",
|
|||
|
|
"title": "장비 반납",
|
|||
|
|
"keywords": [
|
|||
|
|
"반납"
|
|||
|
|
],
|
|||
|
|
"answer": "IT포털에서 신청"
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-406",
|
|||
|
|
"title": "야간 장애 연락",
|
|||
|
|
"keywords": [
|
|||
|
|
"야간",
|
|||
|
|
"장애"
|
|||
|
|
],
|
|||
|
|
"answer": "야간 장애는 당직자 01012345678 로 전화합니다."
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-407",
|
|||
|
|
"title": "IT 문의 창구",
|
|||
|
|
"keywords": [
|
|||
|
|
"문의",
|
|||
|
|
"창구"
|
|||
|
|
],
|
|||
|
|
"answer": "IT 문의 창구 번호는 02-123-4567 (평일 9~18시) 입니다."
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-408",
|
|||
|
|
"title": "도움말 모음",
|
|||
|
|
"keywords": [
|
|||
|
|
"도움말"
|
|||
|
|
],
|
|||
|
|
"answer": "도움말은 https://intra.example.com/help 에 모여 있습니다."
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-409",
|
|||
|
|
"title": "보안 교육 자료",
|
|||
|
|
"keywords": [
|
|||
|
|
"보안 교육"
|
|||
|
|
],
|
|||
|
|
"answer": "보안 교육 자료는 http://intra.example.com.evil.io/edu 에서 받습니다."
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "faq-410",
|
|||
|
|
"title": "출장 노트북",
|
|||
|
|
"keywords": [
|
|||
|
|
"출장"
|
|||
|
|
],
|
|||
|
|
"answer": "출장용 노트북은 IT팀에 사흘 전까지 신청합니다."
|
|||
|
|
}
|
|||
|
|
]
|
|||
|
|
}
|
|||
|
|
← response HTTP 200
|
|||
|
|
{
|
|||
|
|
"batch": "E-1",
|
|||
|
|
"total": 10,
|
|||
|
|
"valid": 4,
|
|||
|
|
"invalid": 6,
|
|||
|
|
"with_warnings": 0,
|
|||
|
|
"rows": [
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-401",
|
|||
|
|
"ok": true,
|
|||
|
|
"errors": [],
|
|||
|
|
"warnings": []
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-402",
|
|||
|
|
"ok": false,
|
|||
|
|
"errors": [
|
|||
|
|
"title_too_long"
|
|||
|
|
],
|
|||
|
|
"warnings": []
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-403",
|
|||
|
|
"ok": false,
|
|||
|
|
"errors": [
|
|||
|
|
"title_missing"
|
|||
|
|
],
|
|||
|
|
"warnings": []
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-404",
|
|||
|
|
"ok": true,
|
|||
|
|
"errors": [],
|
|||
|
|
"warnings": []
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-405",
|
|||
|
|
"ok": false,
|
|||
|
|
"errors": [
|
|||
|
|
"answer_too_short"
|
|||
|
|
],
|
|||
|
|
"warnings": []
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-406",
|
|||
|
|
"ok": false,
|
|||
|
|
"errors": [
|
|||
|
|
"pii"
|
|||
|
|
],
|
|||
|
|
"warnings": []
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-407",
|
|||
|
|
"ok": true,
|
|||
|
|
"errors": [],
|
|||
|
|
"warnings": []
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-408",
|
|||
|
|
"ok": true,
|
|||
|
|
"errors": [],
|
|||
|
|
"warnings": []
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-409",
|
|||
|
|
"ok": false,
|
|||
|
|
"errors": [
|
|||
|
|
"external_link"
|
|||
|
|
],
|
|||
|
|
"warnings": []
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "faq-410",
|
|||
|
|
"ok": false,
|
|||
|
|
"errors": [
|
|||
|
|
"id_format"
|
|||
|
|
],
|
|||
|
|
"warnings": []
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"codes": {
|
|||
|
|
"title_too_long": 1,
|
|||
|
|
"title_missing": 1,
|
|||
|
|
"answer_too_short": 1,
|
|||
|
|
"pii": 1,
|
|||
|
|
"external_link": 1,
|
|||
|
|
"id_format": 1
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
✔ 소문자 id · 합계 10줄 중 4줄 통과 · 0.1s
|
|||
|
|
→ request POST /webhook/my-faq-check
|
|||
|
|
{
|
|||
|
|
"batch": "E-1",
|
|||
|
|
"items": [
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-401",
|
|||
|
|
"title": "사내 메신저 알림이 오지 않을 때 확인할 것과 다시 설정하는 법가가가가가",
|
|||
|
|
"keywords": [
|
|||
|
|
"메신저",
|
|||
|
|
"알림"
|
|||
|
|
],
|
|||
|
|
"answer": "메신저 설정의 '알림' 탭에서 알림을 다시 켭니다."
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-402",
|
|||
|
|
"title": "사내 메신저 알림이 오지 않을 때 확인할 것과 다시 설정하는 법가가가가가요",
|
|||
|
|
"keywords": [
|
|||
|
|
"메신저"
|
|||
|
|
],
|
|||
|
|
"answer": "메신저 설정의 '알림' 탭에서 알림을 다시 켭니다."
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-403",
|
|||
|
|
"title": " ",
|
|||
|
|
"keywords": [
|
|||
|
|
"사원증"
|
|||
|
|
],
|
|||
|
|
"answer": "사원증 사진은 인사 포털에서 바꿉니다."
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-404",
|
|||
|
|
"title": "장비 신청",
|
|||
|
|
"keywords": [
|
|||
|
|
"장비"
|
|||
|
|
],
|
|||
|
|
"answer": "IT 포털에서 신청"
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-405",
|
|||
|
|
"title": "장비 반납",
|
|||
|
|
"keywords": [
|
|||
|
|
"반납"
|
|||
|
|
],
|
|||
|
|
"answer": "IT포털에서 신청"
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-406",
|
|||
|
|
"title": "야간 장애 연락",
|
|||
|
|
"keywords": [
|
|||
|
|
"야간",
|
|||
|
|
"장애"
|
|||
|
|
],
|
|||
|
|
"answer": "야간 장애는 당직자 01012345678 로 전화합니다."
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-407",
|
|||
|
|
"title": "IT 문의 창구",
|
|||
|
|
"keywords": [
|
|||
|
|
"문의",
|
|||
|
|
"창구"
|
|||
|
|
],
|
|||
|
|
"answer": "IT 문의 창구 번호는 02-123-4567 (평일 9~18시) 입니다."
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-408",
|
|||
|
|
"title": "도움말 모음",
|
|||
|
|
"keywords": [
|
|||
|
|
"도움말"
|
|||
|
|
],
|
|||
|
|
"answer": "도움말은 https://intra.example.com/help 에 모여 있습니다."
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-409",
|
|||
|
|
"title": "보안 교육 자료",
|
|||
|
|
"keywords": [
|
|||
|
|
"보안 교육"
|
|||
|
|
],
|
|||
|
|
"answer": "보안 교육 자료는 http://intra.example.com.evil.io/edu 에서 받습니다."
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "faq-410",
|
|||
|
|
"title": "출장 노트북",
|
|||
|
|
"keywords": [
|
|||
|
|
"출장"
|
|||
|
|
],
|
|||
|
|
"answer": "출장용 노트북은 IT팀에 사흘 전까지 신청합니다."
|
|||
|
|
}
|
|||
|
|
]
|
|||
|
|
}
|
|||
|
|
← response HTTP 200
|
|||
|
|
{
|
|||
|
|
"batch": "E-1",
|
|||
|
|
"total": 10,
|
|||
|
|
"valid": 4,
|
|||
|
|
"invalid": 6,
|
|||
|
|
"with_warnings": 0,
|
|||
|
|
"rows": [
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-401",
|
|||
|
|
"ok": true,
|
|||
|
|
"errors": [],
|
|||
|
|
"warnings": []
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-402",
|
|||
|
|
"ok": false,
|
|||
|
|
"errors": [
|
|||
|
|
"title_too_long"
|
|||
|
|
],
|
|||
|
|
"warnings": []
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-403",
|
|||
|
|
"ok": false,
|
|||
|
|
"errors": [
|
|||
|
|
"title_missing"
|
|||
|
|
],
|
|||
|
|
"warnings": []
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-404",
|
|||
|
|
"ok": true,
|
|||
|
|
"errors": [],
|
|||
|
|
"warnings": []
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-405",
|
|||
|
|
"ok": false,
|
|||
|
|
"errors": [
|
|||
|
|
"answer_too_short"
|
|||
|
|
],
|
|||
|
|
"warnings": []
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-406",
|
|||
|
|
"ok": false,
|
|||
|
|
"errors": [
|
|||
|
|
"pii"
|
|||
|
|
],
|
|||
|
|
"warnings": []
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-407",
|
|||
|
|
"ok": true,
|
|||
|
|
"errors": [],
|
|||
|
|
"warnings": []
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-408",
|
|||
|
|
"ok": true,
|
|||
|
|
"errors": [],
|
|||
|
|
"warnings": []
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "FAQ-409",
|
|||
|
|
"ok": false,
|
|||
|
|
"errors": [
|
|||
|
|
"external_link"
|
|||
|
|
],
|
|||
|
|
"warnings": []
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "faq-410",
|
|||
|
|
"ok": false,
|
|||
|
|
"errors": [
|
|||
|
|
"id_format"
|
|||
|
|
],
|
|||
|
|
"warnings": []
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"codes": {
|
|||
|
|
"title_too_long": 1,
|
|||
|
|
"title_missing": 1,
|
|||
|
|
"answer_too_short": 1,
|
|||
|
|
"pii": 1,
|
|||
|
|
"external_link": 1,
|
|||
|
|
"id_format": 1
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
Passed 6/6
|
|||
|
|
report: runs/lab01-edges-20261101-180518.json
|
|||
|
|
|
|||
|
|
$ uv run tools/flow.py test cases/lab01-edges.json --webhook base-faq-check
|
|||
|
|
POST http://localhost:5678/webhook/base-faq-check · 6 case(s) × 1
|
|||
|
|
✘ 제목 40자는 통과, 41자는 너무 김 · 0.0s · rows.1.ok = true (expected false); rows.1.errors has none of ['title_too_long']
|
|||
|
|
✘ 공백만 있는 제목은 빈 값 · 0.1s · rows.2.errors has none of ['title_missing']
|
|||
|
|
✘ 답 10자는 통과, 9자는 너무 짧음 · 0.0s · rows.4.errors has none of ['answer_too_short']
|
|||
|
|
✘ 하이픈 없는 휴대전화도 개인정보, 사무실 번호는 통과 · 0.1s · rows.5.errors has none of ['pii']
|
|||
|
|
✘ 사내 주소는 통과, 사내 주소처럼 보이는 바깥 링크는 막음 · 0.0s · rows.8.errors has none of ['external_link']
|
|||
|
|
✘ 소문자 id · 합계 10줄 중 4줄 통과 · 0.1s · valid = 10 (expected 4); rows.9.errors has none of ['id_format']
|
|||
|
|
Passed 0/6
|
|||
|
|
report: runs/lab01-edges-20261101-180519.json
|