Files

229 lines
9.3 KiB
Plaintext
Raw Permalink 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 push answers/79-lab02-challenge-llm-router.json
! unpublished '79 Ops ask + refuse + number check (reference)' (w48289056bc6d55d): it used the same webhook path
✔ pushed '79 Ops ask + LLM router (answer)' (id wea68a09a2860083)
POST http://localhost:5678/webhook/my-ops-ask
$ uv run tools/flow.py test cases/lab02-challenge.json -v
✔ before: POST http://localhost:8800/ops-reset · HTTP 200 · 0.0s · {"seeded_at": "2026-11-04T08:30:00", "note": "79일차 운영 아침 상태 (연습 데이터, seed 79)", "counts": {"alerts": 6, "dlq": 3, "quali
→ request POST http://localhost:8800/ops-reset
{}
← response HTTP 200
{
"seeded_at": "2026-11-04T08:30:00",
"note": "79일차 운영 아침 상태 (연습 데이터, seed 79)",
"counts": {
"alerts": 6,
"dlq": 3,
"quality_log": 4,
"quarantine": 1,
"usage": 192
}
}
POST http://localhost:5678/webhook/my-ops-ask · 5 case(s) × 1
✔ 낱말이 없는 비용 질문 · 4.9s
→ request POST /webhook/my-ops-ask
{
"question": "이번 주에 AI 쓰는 데 얼마나 나갔어?"
}
← response HTTP 200
{
"question": "이번 주에 AI 쓰는 데 얼마나 나갔어?",
"area": "cost",
"router": "llm",
"refused": false,
"reason": null,
"answer": "이번 주 AI 사용 비용은 총 0.073604달러입니다. 일일 평균 비용은 약 0.08달러이며, 사용 비율은 92.01%입니다.",
"numbers_ok": true,
"unknown_numbers": []
}
✔ 낱말이 없는 DLQ 질문 · 1.7s
→ request POST /webhook/my-ops-ask
{
"question": "어젯밤에 접수 못 하고 남은 건 몇 건이야?"
}
← response HTTP 200
{
"question": "어젯밤에 접수 못 하고 남은 건 몇 건이야?",
"area": "dlq",
"router": "llm",
"refused": false,
"reason": null,
"answer": "어젯밤에 접수 못 하고 남은 건은 총 3건입니다. 이 중 2건은 대기 중이고 1건은 주차 상태입니다.",
"numbers_ok": true,
"unknown_numbers": []
}
✔ 낱말이 없는 릴리스 질문 · 1.8s
→ request POST /webhook/my-ops-ask
{
"question": "새 판을 일부 사용자에게 먼저 내보낸 거 어떻게 되고 있어?"
}
← response HTTP 200
{
"question": "새 판을 일부 사용자에게 먼저 내보낸 거 어떻게 되고 있어?",
"area": "release",
"router": "llm",
"refused": false,
"reason": null,
"answer": "새 판 1.2.0은 일부 사용자 20%에게 먼저 내보내졌으며, 이 버전의 재사용률은 62.5%로 나타났습니다. 현재 전체 시스템 상태는 빨간색(문제 있음)입니다.",
"numbers_ok": true,
"unknown_numbers": []
}
✔ LLM도 운영 밖이면 거절 · 0.9s
→ request POST /webhook/my-ops-ask
{
"question": "점심 메뉴 추천해 줘"
}
← response HTTP 200
{
"question": "점심 메뉴 추천해 줘",
"area": "unknown",
"router": "llm",
"refused": true,
"reason": "out_of_scope",
"answer": "운영 데이터(실행 · 알림 · DLQ · 품질 · 비용 · 릴리스)로 답할 수 있는 질문만 받습니다."
}
✔ 낱말이 있으면 LLM을 부르지 않음 · 1.0s
→ request POST /webhook/my-ops-ask
{
"question": "지난주 오류율이 얼마야?"
}
← response HTTP 200
{
"question": "지난주 오류율이 얼마야?",
"area": "runs",
"router": "keyword",
"refused": false,
"reason": null,
"answer": "지난주 오류율은 5.88%였습니다. 총 357회 실행 중 21회 오류가 발생했습니다.",
"numbers_ok": true,
"unknown_numbers": []
}
Passed 5/5
report: runs/lab02-challenge-20261101-185333.json
$ uv run tools/flow.py test cases/lab02.json
✔ before: POST http://localhost:8800/ops-reset · HTTP 200 · 0.0s · {"seeded_at": "2026-11-04T08:30:00", "note": "79일차 운영 아침 상태 (연습 데이터, seed 79)", "counts": {"alerts": 6, "dlq": 3, "quali
POST http://localhost:5678/webhook/my-ops-ask · 6 case(s) × 1
✔ 실행 · 오류율 · 1.0s
✔ DLQ · parked · 1.1s
✔ 운영과 상관없는 질문은 거절 · 0.9s
✔ 작업 요청은 거절 (읽기만) · 0.0s
✔ 비용 · 숫자 확인 · 1.0s
✔ 릴리스 · 숫자 확인 · 1.4s
Passed 6/6
report: runs/lab02-20261101-185339.json
$ uv run tools/flow.py test cases/lab02-phrasing.json -v
✔ before: POST http://localhost:8800/ops-reset · HTTP 200 · 0.0s · {"seeded_at": "2026-11-04T08:30:00", "note": "79일차 운영 아침 상태 (연습 데이터, seed 79)", "counts": {"alerts": 6, "dlq": 3, "quali
→ request POST http://localhost:8800/ops-reset
{}
← response HTTP 200
{
"seeded_at": "2026-11-04T08:30:00",
"note": "79일차 운영 아침 상태 (연습 데이터, seed 79)",
"counts": {
"alerts": 6,
"dlq": 3,
"quality_log": 4,
"quarantine": 1,
"usage": 192
}
}
POST http://localhost:5678/webhook/my-ops-ask · 6 case(s) × 1
✔ '에러' → 실행 · 1.1s
→ request POST /webhook/my-ops-ask
{
"question": "에러 많이 났어?"
}
← response HTTP 200
{
"question": "에러 많이 났어?",
"area": "runs",
"router": "keyword",
"refused": false,
"reason": null,
"answer": "2026년 10월 26일부터 30일까지 총 357회 실행 중 21회 에러가 발생하여 에러율은 5.88%입니다. 주요 실패 원인은 \"Search FAQ\" 노드에서 1000ms 타임아웃 초과로 16회 발생했습니다. 현재 시스템 상태는 빨간색(위험)입니다.",
"numbers_ok": true,
"unknown_numbers": []
}
✘ '장애' 는 낱말 목록에 없음 → 운영 밖으로 거절 · 2.2s · area = runs (expected unknown); refused = false (expected true); reason = null (expected out_of_scope)
→ request POST /webhook/my-ops-ask
{
"question": "장애 났어?"
}
← response HTTP 200
{
"question": "장애 났어?",
"area": "runs",
"router": "llm",
"refused": false,
"reason": null,
"answer": "네, 2026년 10월 26일부터 30일까지 장애가 발생했습니다. 전체 357건 중 21건(5.88%)에서 오류가 있었고, 주요 장애는 'Search FAQ' 노드에서 1000ms 타임아웃 초과로 16건 발생했습니다. 시스템 상태는 빨간색(위험)입니다.",
"numbers_ok": true,
"unknown_numbers": []
}
✔ 두 영역이 한 번씩 → 앞의 영역 (알림) · 1.0s
→ request POST /webhook/my-ops-ask
{
"question": "알림이랑 DLQ 둘 다 알려 줘"
}
← response HTTP 200
{
"question": "알림이랑 DLQ 둘 다 알려 줘",
"area": "alerts",
"router": "keyword",
"refused": false,
"reason": null,
"answer": "알림은 총 6건이며, 이 중 3건은 높은 심각도입니다. DLQ 관련 정보는 제공된 사실에 포함되어 있지 않습니다.",
"numbers_ok": true,
"unknown_numbers": []
}
✔ '꺼 줘' → 작업 요청으로 거절 · 0.1s
→ request POST /webhook/my-ops-ask
{
"question": "카나리 꺼 줘"
}
← response HTTP 200
{
"question": "카나리 꺼 줘",
"area": "action",
"router": "keyword",
"refused": true,
"reason": "read_only",
"answer": "운영 도우미는 읽기만 합니다. 재처리 · 삭제 · 배포 같은 작업은 런북에 따라 담당자가 직접 해 주세요."
}
✔ '배포'(1) 보다 '상태 · 요약'(2) → 전체 · 1.7s
→ request POST /webhook/my-ops-ask
{
"question": "배포 상태 요약해 줘"
}
← response HTTP 200
{
"question": "배포 상태 요약해 줘",
"area": "overview",
"router": "keyword",
"refused": false,
"reason": null,
"answer": "배포 상태 요약입니다. 10월 26일부터 30일까지 총 357회 실행 중 오류율은 5.88%이며, 주요 오류는 'Search FAQ' 노드에서 1000ms 타임아웃이 16회 발생했습니다. 전체 상태는 'red'로, 실행, DLQ, 릴리스가 심각한 문제를 보이고 있습니다.",
"numbers_ok": true,
"unknown_numbers": []
}
✘ 낱말 없는 비용 질문 → 거절 (과제 1에서 LLM 라우터로) · 1.9s · refused = false (expected true); reason = null (expected out_of_scope)
→ request POST /webhook/my-ops-ask
{
"question": "AI 쓰는 데 얼마나 나갔어?"
}
← response HTTP 200
{
"question": "AI 쓰는 데 얼마나 나갔어?",
"area": "cost",
"router": "llm",
"refused": false,
"reason": null,
"answer": "2026년 10월 26일부터 30일까지 AI 사용 비용은 총 0.0736달러였습니다. 하루 평균 비용은 약 0.08달러이며, 전체 사용량의 92.01%가 사용되었습니다.",
"numbers_ok": true,
"unknown_numbers": []
}
Passed 4/6
report: runs/lab02-phrasing-20261101-185347.json