Files
aio-01d4-stu/Last3Mon/76/answers/04-lab01-faults.txt
T

376 lines
11 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
$ uv run tools/flow.py test cases/lab01-faults.json -v
✔ before: POST http://localhost:8800/tickets-reset · HTTP 200 · 0.0s · {"cleared": 7}
→ request POST http://localhost:8800/tickets-reset
{}
← response HTTP 200
{
"cleared": 7
}
✔ before: POST http://localhost:8800/dlq-clear · HTTP 200 · 0.0s · {"cleared": 0}
→ request POST http://localhost:8800/dlq-clear
{}
← response HTTP 200
{
"cleared": 0
}
✔ before: POST http://localhost:8800/alerts-clear · HTTP 200 · 0.0s · {"cleared": 0}
→ request POST http://localhost:8800/alerts-clear
{}
← response HTTP 200
{
"cleared": 0
}
✔ before: POST http://localhost:8800/admin/fault · HTTP 200 · 0.0s · {"faq": "ok", "tickets": "ok", "prompts": "ok", "usage": "ok", "dlq": "ok", "slow_seconds": 8}
→ request POST http://localhost:8800/admin/fault
{
"faq": "ok",
"tickets": "ok",
"prompts": "ok",
"usage": "ok",
"dlq": "ok"
}
← response HTTP 200
{
"faq": "ok",
"tickets": "ok",
"prompts": "ok",
"usage": "ok",
"dlq": "ok",
"slow_seconds": 8
}
POST http://localhost:5678/webhook/my-intake · 5 case(s) × 1
✔ before: POST http://localhost:8800/admin/fault · HTTP 200 · 0.0s · {"faq": "ok", "tickets": "flaky", "prompts": "ok", "usage": "ok", "dlq": "ok", "slow_seconds": 8}
→ request POST http://localhost:8800/admin/fault
{
"tickets": "flaky"
}
← response HTTP 200
{
"faq": "ok",
"tickets": "flaky",
"prompts": "ok",
"usage": "ok",
"dlq": "ok",
"slow_seconds": 8
}
✔ flaky · 다시 해 보면 됨 · 2.4s
→ request POST /webhook/my-intake
{
"requests": [
{
"id": "R-301",
"user": "정우성",
"text": "사내 위키 로그인이 안 돼요"
},
{
"id": "R-302",
"user": "이준호",
"text": "노트북 배터리가 금방 닳아요"
}
]
}
← response HTTP 200
{
"total": 2,
"created": 2,
"failed": 0,
"rejected": 0,
"duplicates": 0,
"unclassified": 0,
"results": [
{
"id": "R-301",
"status": "created",
"ticket_id": "T-2001",
"duplicate": false,
"category": "계정",
"priority": "높음"
},
{
"id": "R-302",
"status": "created",
"ticket_id": "T-2002",
"duplicate": false,
"category": "장비",
"priority": "보통"
}
]
}
✔ before: POST http://localhost:8800/admin/fault · HTTP 200 · 0.0s · {"faq": "ok", "tickets": "error", "prompts": "ok", "usage": "ok", "dlq": "ok", "slow_seconds": 8}
→ request POST http://localhost:8800/admin/fault
{
"tickets": "error"
}
← response HTTP 200
{
"faq": "ok",
"tickets": "error",
"prompts": "ok",
"usage": "ok",
"dlq": "ok",
"slow_seconds": 8
}
✔ error · 세 번 해도 실패 · 3.4s
→ request POST /webhook/my-intake
{
"requests": [
{
"id": "R-101",
"user": "이준호",
"text": "VPN이 아침부터 계속 끊겨서 고객 미팅을 못 하고 있어요"
},
{
"id": "R-102",
"user": "박서연",
"text": "새 모니터를 하나 더 받을 수 있을까요?"
},
{
"id": "R-103",
"user": "최유진",
"text": "엑셀 라이선스가 만료됐다고 나와요"
}
]
}
← response HTTP 200
{
"total": 3,
"created": 0,
"failed": 3,
"rejected": 0,
"duplicates": 0,
"unclassified": 0,
"results": [
{
"id": "R-101",
"status": "failed",
"reason": "500 - \"{\\\"error\\\": \\\"tickets service is failing (fault switch)\\\"}\""
},
{
"id": "R-102",
"status": "failed",
"reason": "500 - \"{\\\"error\\\": \\\"tickets service is failing (fault switch)\\\"}\""
},
{
"id": "R-103",
"status": "failed",
"reason": "500 - \"{\\\"error\\\": \\\"tickets service is failing (fault switch)\\\"}\""
}
]
}
✔ before: POST http://localhost:8800/admin/fault · HTTP 200 · 0.0s · {"faq": "ok", "tickets": "slow", "prompts": "ok", "usage": "ok", "dlq": "ok", "slow_seconds": 8}
→ request POST http://localhost:8800/admin/fault
{
"tickets": "slow"
}
← response HTTP 200
{
"faq": "ok",
"tickets": "slow",
"prompts": "ok",
"usage": "ok",
"dlq": "ok",
"slow_seconds": 8
}
✔ slow · 3초씩 세 번 기다리다 실패 · 12.4s
→ request POST /webhook/my-intake
{
"requests": [
{
"id": "R-101",
"user": "이준호",
"text": "VPN이 아침부터 계속 끊겨서 고객 미팅을 못 하고 있어요"
},
{
"id": "R-102",
"user": "박서연",
"text": "새 모니터를 하나 더 받을 수 있을까요?"
},
{
"id": "R-103",
"user": "최유진",
"text": "엑셀 라이선스가 만료됐다고 나와요"
}
]
}
← response HTTP 200
{
"total": 3,
"created": 0,
"failed": 3,
"rejected": 0,
"duplicates": 0,
"unclassified": 0,
"results": [
{
"id": "R-101",
"status": "failed",
"reason": "timeout of 3000ms exceeded"
},
{
"id": "R-102",
"status": "failed",
"reason": "timeout of 3000ms exceeded"
},
{
"id": "R-103",
"status": "failed",
"reason": "timeout of 3000ms exceeded"
}
]
}
… before: wait 8s
✔ before: POST http://localhost:8800/admin/fault · HTTP 200 · 0.0s · {"faq": "ok", "tickets": "ok", "prompts": "ok", "usage": "ok", "dlq": "ok", "slow_seconds": 8}
→ request POST http://localhost:8800/admin/fault
{
"faq": "ok",
"tickets": "ok",
"prompts": "ok",
"usage": "ok",
"dlq": "ok"
}
← response HTTP 200
{
"faq": "ok",
"tickets": "ok",
"prompts": "ok",
"usage": "ok",
"dlq": "ok",
"slow_seconds": 8
}
✔ 실패라던 3건이 늦게 만들어짐 (2 + 3) · 0.0s
→ request POST http://localhost:8800/tickets-created/list
{}
← response HTTP 200
{
"count": 5,
"tickets": [
{
"ticket_id": "T-2001",
"key": "R-301",
"title": "사내 위키 로그인이 안 돼요",
"requester": "정우성",
"category": "계정",
"priority": "높음"
},
{
"ticket_id": "T-2002",
"key": "R-302",
"title": "노트북 배터리가 금방 닳아요",
"requester": "이준호",
"category": "장비",
"priority": "보통"
},
{
"ticket_id": "T-2003",
"key": "R-103",
"title": "엑셀 라이선스가 만료됐다고 나와요",
"requester": "최유진",
"category": "소프트웨어",
"priority": "높음"
},
{
"ticket_id": "T-2004",
"key": "R-102",
"title": "새 모니터를 하나 더 받을 수 있을까요?",
"requester": "박서연",
"category": "장비",
"priority": "낮음"
},
{
"ticket_id": "T-2005",
"key": "R-101",
"title": "VPN이 아침부터 계속 끊겨서 고객 미팅을 못 하고 있어요",
"requester": "이준호",
"category": "네트워크",
"priority": "높음"
}
]
}
✔ 같은 요청을 다시 · 멱등 키로 중복 없음 · 2.9s
→ request POST /webhook/my-intake
{
"requests": [
{
"id": "R-101",
"user": "이준호",
"text": "VPN이 아침부터 계속 끊겨서 고객 미팅을 못 하고 있어요"
},
{
"id": "R-102",
"user": "박서연",
"text": "새 모니터를 하나 더 받을 수 있을까요?"
},
{
"id": "R-103",
"user": "최유진",
"text": "엑셀 라이선스가 만료됐다고 나와요"
}
]
}
← response HTTP 200
{
"total": 3,
"created": 3,
"failed": 0,
"rejected": 0,
"duplicates": 3,
"unclassified": 0,
"results": [
{
"id": "R-101",
"status": "created",
"ticket_id": "T-2005",
"duplicate": true,
"category": "네트워크",
"priority": "높음"
},
{
"id": "R-102",
"status": "created",
"ticket_id": "T-2004",
"duplicate": true,
"category": "장비",
"priority": "낮음"
},
{
"id": "R-103",
"status": "created",
"ticket_id": "T-2003",
"duplicate": true,
"category": "소프트웨어",
"priority": "높음"
}
]
}
Passed 5/5
report: runs/lab01-faults-20261029-141237.json
✔ after: POST http://localhost:8800/admin/fault · HTTP 200 · 0.0s · {"faq": "ok", "tickets": "ok", "prompts": "ok", "usage": "ok", "dlq": "ok", "slow_seconds": 8}
→ request POST http://localhost:8800/admin/fault
{
"faq": "ok",
"tickets": "ok",
"prompts": "ok",
"usage": "ok",
"dlq": "ok"
}
← response HTTP 200
{
"faq": "ok",
"tickets": "ok",
"prompts": "ok",
"usage": "ok",
"dlq": "ok",
"slow_seconds": 8
}
$ uv run tools/flow.py ops
fault switch: all ok
created tickets: 5
T-2001 key R-301 계정/높음 사내 위키 로그인이 안 돼요
T-2002 key R-302 장비/보통 노트북 배터리가 금방 닳아요
T-2003 key R-103 소프트웨어/높음 엑셀 라이선스가 만료됐다고 나와요
T-2004 key R-102 장비/낮음 새 모니터를 하나 더 받을 수 있을까요?
T-2005 key R-101 네트워크/높음 VPN이 아침부터 계속 끊겨서 고객 미팅을 못 하고 있
DLQ: 0 (parked 0)
alerts: 0