$ uv run tools/flow.py test cases/lab03-after.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-brief · 5 case(s) × 1 ✔ 아침 그대로 · 1.4s → request POST /webhook/my-ops-brief {} ← response HTTP 200 { "overall": "red", "red": [ "runs", "dlq", "release" ], "yellow": [ "alerts", "quality", "cost" ], "actions": [ { "area": "runs", "status": "red", "action": "오류 묶음 1위 확인 · 고치기 (77일차)" }, { "area": "dlq", "status": "red", "action": "parked 건 원인 확인 뒤 런북대로 재처리 (76일차)" }, { "area": "release", "status": "red", "action": "카나리 끄기 · 되돌리기 검토 (74일차)" } ], "markdown": "# 운영 브리핑 (2026-10-26 ~ 2026-10-30 실행 기록 + 지금 상태)\n\n전체: 🔴 red\n\n| 영역 | 상태 | 숫자 |\n| --- | --- | --- |\n| 실행 | 🔴 | 오류율 5.88% · p95 2598ms · 답 못 함 4.76% |\n| 알림 | 🟡 | 6건 (높음 3) |\n| DLQ | 🔴 | 3건 (parked 2) |\n| 데이터 품질 | 🟡 | 평균 0.6583 · 마지막 1 · 격리 1 |\n| 비용 | 🟡 | $0.073604 / $0.08 (92.01%) |\n| 릴리스 | 🔴 | 1.1.0 · 카나리 1.2.0 20% (다시 묻기 62.5%) |\n\n## 먼저 볼 것\n\n1. 🔴 실행: 오류 묶음 1위 확인 · 고치기 (77일차)\n2. 🔴 DLQ: parked 건 원인 확인 뒤 런북대로 재처리 (76일차)\n3. 🔴 릴리스: 카나리 끄기 · 되돌리기 검토 (74일차)\n\n## 요약\n\n전체 시스템 상태는 빨간색으로, 오류율은 5.88%이며, DLQ 크기는 3으로 심각한 문제를 나타냅니다. 가장 긴급한 문제는 \"Search FAQ\" 노드에서 발생하는 1000ms 타임아웃 오류로, 총 16건이 보고되었습니다. 우선 이 타임아웃 문제를 해결하는 데 집중하여 시스템 안정성을 확보해야 합니다.", "summary": "전체 시스템 상태는 빨간색으로, 오류율은 5.88%이며, DLQ 크기는 3으로 심각한 문제를 나타냅니다. 가장 긴급한 문제는 \"Search FAQ\" 노드에서 발생하는 1000ms 타임아웃 오류로, 총 16건이 보고되었습니다. 우선 이 타임아웃 문제를 해결하는 데 집중하여 시스템 안정성을 확보해야 합니다.", "numbers_ok": true, "unknown_numbers": [] } ✔ before: POST http://localhost:8800/dlq/update · HTTP 200 · 0.0s · {"removed": true, "size": 2} → request POST http://localhost:8800/dlq/update { "dlq_id": 1, "remove": true } ← response HTTP 200 { "removed": true, "size": 2 } ✔ before: POST http://localhost:8800/dlq/update · HTTP 200 · 0.0s · {"removed": true, "size": 1} → request POST http://localhost:8800/dlq/update { "dlq_id": 2, "remove": true } ← response HTTP 200 { "removed": true, "size": 1 } ✔ parked 둘을 처리하면 → DLQ는 노랑, 먼저 볼 것에 알림 · 1.0s → request POST /webhook/my-ops-brief {} ← response HTTP 200 { "overall": "red", "red": [ "runs", "release" ], "yellow": [ "alerts", "dlq", "quality", "cost" ], "actions": [ { "area": "runs", "status": "red", "action": "오류 묶음 1위 확인 · 고치기 (77일차)" }, { "area": "release", "status": "red", "action": "카나리 끄기 · 되돌리기 검토 (74일차)" }, { "area": "alerts", "status": "yellow", "action": "높은 알림부터 확인하고 닫기 (76일차)" } ], "markdown": "# 운영 브리핑 (2026-10-26 ~ 2026-10-30 실행 기록 + 지금 상태)\n\n전체: 🔴 red\n\n| 영역 | 상태 | 숫자 |\n| --- | --- | --- |\n| 실행 | 🔴 | 오류율 5.88% · p95 2598ms · 답 못 함 4.76% |\n| 알림 | 🟡 | 6건 (높음 3) |\n| DLQ | 🟡 | 1건 (parked 0) |\n| 데이터 품질 | 🟡 | 평균 0.6583 · 마지막 1 · 격리 1 |\n| 비용 | 🟡 | $0.073604 / $0.08 (92.01%) |\n| 릴리스 | 🔴 | 1.1.0 · 카나리 1.2.0 20% (다시 묻기 62.5%) |\n\n## 먼저 볼 것\n\n1. 🔴 실행: 오류 묶음 1위 확인 · 고치기 (77일차)\n2. 🔴 릴리스: 카나리 끄기 · 되돌리기 검토 (74일차)\n3. 🟡 알림: 높은 알림부터 확인하고 닫기 (76일차)\n\n## 요약\n\n전체 시스템 상태는 빨간색으로, 오류율은 5.88%로 나타났습니다. 가장 긴급한 문제는 'Search FAQ' 노드에서 발생한 16건의 타임아웃 오류입니다. 우선 이 타임아웃 문제를 해결하는 데 집중해야 합니다.", "summary": "전체 시스템 상태는 빨간색으로, 오류율은 5.88%로 나타났습니다. 가장 긴급한 문제는 'Search FAQ' 노드에서 발생한 16건의 타임아웃 오류입니다. 우선 이 타임아웃 문제를 해결하는 데 집중해야 합니다.", "numbers_ok": true, "unknown_numbers": [] } ✔ before: POST http://localhost:8800/releases/helpdesk · HTTP 200 · 0.0s · {"name": "helpdesk", "active": "1.1.0", "canary": null, "require_gate": false, "releases": {"1.0.0": {"prompt_version": → request POST http://localhost:8800/releases/helpdesk { "canary": null } ← response HTTP 200 { "name": "helpdesk", "active": "1.1.0", "canary": null, "require_gate": false, "releases": { "1.0.0": { "prompt_version": "p1", "model": "gpt-4.1-mini", "note": "첫 릴리스" }, "1.1.0": { "prompt_version": "p2", "model": "gpt-4.1-mini", "note": "FAQ 답 끝에 출처 번호" }, "1.2.0": { "prompt_version": "p3", "model": "gpt-4.1-mini", "note": "답을 한 문장으로 짧게" }, "2.0.0": { "prompt_version": "p2", "model": "gpt-5.4-nano", "note": "더 작은 모델 (비용)" }, "2.1.0": { "prompt_version": "p9", "model": "gpt-4.1-mini", "note": "출처 번호 · 존댓말 다듬기 (지시문 이름 확인 필요)" } } } ✔ 카나리를 끄면 → 릴리스는 초록 · 1.1s → request POST /webhook/my-ops-brief {} ← response HTTP 200 { "overall": "red", "red": [ "runs" ], "yellow": [ "alerts", "dlq", "quality", "cost" ], "actions": [ { "area": "runs", "status": "red", "action": "오류 묶음 1위 확인 · 고치기 (77일차)" }, { "area": "alerts", "status": "yellow", "action": "높은 알림부터 확인하고 닫기 (76일차)" }, { "area": "dlq", "status": "yellow", "action": "parked 건 원인 확인 뒤 런북대로 재처리 (76일차)" } ], "markdown": "# 운영 브리핑 (2026-10-26 ~ 2026-10-30 실행 기록 + 지금 상태)\n\n전체: 🔴 red\n\n| 영역 | 상태 | 숫자 |\n| --- | --- | --- |\n| 실행 | 🔴 | 오류율 5.88% · p95 2598ms · 답 못 함 4.76% |\n| 알림 | 🟡 | 6건 (높음 3) |\n| DLQ | 🟡 | 1건 (parked 0) |\n| 데이터 품질 | 🟡 | 평균 0.6583 · 마지막 1 · 격리 1 |\n| 비용 | 🟡 | $0.073604 / $0.08 (92.01%) |\n| 릴리스 | 🟢 | 1.1.0 |\n\n## 먼저 볼 것\n\n1. 🔴 실행: 오류 묶음 1위 확인 · 고치기 (77일차)\n2. 🟡 알림: 높은 알림부터 확인하고 닫기 (76일차)\n3. 🟡 DLQ: parked 건 원인 확인 뒤 런북대로 재처리 (76일차)\n\n## 요약\n\n전체 시스템 상태는 빨간색으로, 오류율은 5.88%로 나타났습니다. 가장 긴급한 문제는 'Search FAQ' 노드에서 발생한 16건의 타임아웃 오류입니다. 우선 이 타임아웃 문제를 해결하는 데 집중해야 합니다.", "summary": "전체 시스템 상태는 빨간색으로, 오류율은 5.88%로 나타났습니다. 가장 긴급한 문제는 'Search FAQ' 노드에서 발생한 16건의 타임아웃 오류입니다. 우선 이 타임아웃 문제를 해결하는 데 집중해야 합니다.", "numbers_ok": true, "unknown_numbers": [] } ✔ before: POST http://localhost:8800/budget · HTTP 200 · 0.0s · {"daily_usd": 0.2, "user_limit_per_min": 20, "max_question_chars": 500, "used_usd": 0.073604, "remaining_usd": 0.126396, → request POST http://localhost:8800/budget { "daily_usd": 0.2 } ← response HTTP 200 { "daily_usd": 0.2, "user_limit_per_min": 20, "max_question_chars": 500, "used_usd": 0.073604, "remaining_usd": 0.126396, "over": false } ✔ 예산을 올리면 → 비용도 초록 · 1.1s → request POST /webhook/my-ops-brief {} ← response HTTP 200 { "overall": "red", "red": [ "runs" ], "yellow": [ "alerts", "dlq", "quality" ], "actions": [ { "area": "runs", "status": "red", "action": "오류 묶음 1위 확인 · 고치기 (77일차)" }, { "area": "alerts", "status": "yellow", "action": "높은 알림부터 확인하고 닫기 (76일차)" }, { "area": "dlq", "status": "yellow", "action": "parked 건 원인 확인 뒤 런북대로 재처리 (76일차)" } ], "markdown": "# 운영 브리핑 (2026-10-26 ~ 2026-10-30 실행 기록 + 지금 상태)\n\n전체: 🔴 red\n\n| 영역 | 상태 | 숫자 |\n| --- | --- | --- |\n| 실행 | 🔴 | 오류율 5.88% · p95 2598ms · 답 못 함 4.76% |\n| 알림 | 🟡 | 6건 (높음 3) |\n| DLQ | 🟡 | 1건 (parked 0) |\n| 데이터 품질 | 🟡 | 평균 0.6583 · 마지막 1 · 격리 1 |\n| 비용 | 🟢 | $0.073604 / $0.2 (36.8%) |\n| 릴리스 | 🟢 | 1.1.0 |\n\n## 먼저 볼 것\n\n1. 🔴 실행: 오류 묶음 1위 확인 · 고치기 (77일차)\n2. 🟡 알림: 높은 알림부터 확인하고 닫기 (76일차)\n3. 🟡 DLQ: parked 건 원인 확인 뒤 런북대로 재처리 (76일차)\n\n## 요약\n\n전체 시스템 상태는 빨간색으로, 오류율은 5.88%이며 응답하지 않은 비율은 4.76%입니다. 가장 긴급한 문제는 \"Search FAQ\" 노드에서 1000ms 타임아웃 초과가 16건 발생한 것입니다. 우선 이 타임아웃 문제를 해결하는 데 집중해야 합니다.", "summary": "전체 시스템 상태는 빨간색으로, 오류율은 5.88%이며 응답하지 않은 비율은 4.76%입니다. 가장 긴급한 문제는 \"Search FAQ\" 노드에서 1000ms 타임아웃 초과가 16건 발생한 것입니다. 우선 이 타임아웃 문제를 해결하는 데 집중해야 합니다.", "numbers_ok": true, "unknown_numbers": [] } ✔ 남은 빨강은 실행 하나 (사람이 고칠 일) · 1.2s → request POST /webhook/my-ops-brief {} ← response HTTP 200 { "overall": "red", "red": [ "runs" ], "yellow": [ "alerts", "dlq", "quality" ], "actions": [ { "area": "runs", "status": "red", "action": "오류 묶음 1위 확인 · 고치기 (77일차)" }, { "area": "alerts", "status": "yellow", "action": "높은 알림부터 확인하고 닫기 (76일차)" }, { "area": "dlq", "status": "yellow", "action": "parked 건 원인 확인 뒤 런북대로 재처리 (76일차)" } ], "markdown": "# 운영 브리핑 (2026-10-26 ~ 2026-10-30 실행 기록 + 지금 상태)\n\n전체: 🔴 red\n\n| 영역 | 상태 | 숫자 |\n| --- | --- | --- |\n| 실행 | 🔴 | 오류율 5.88% · p95 2598ms · 답 못 함 4.76% |\n| 알림 | 🟡 | 6건 (높음 3) |\n| DLQ | 🟡 | 1건 (parked 0) |\n| 데이터 품질 | 🟡 | 평균 0.6583 · 마지막 1 · 격리 1 |\n| 비용 | 🟢 | $0.073604 / $0.2 (36.8%) |\n| 릴리스 | 🟢 | 1.1.0 |\n\n## 먼저 볼 것\n\n1. 🔴 실행: 오류 묶음 1위 확인 · 고치기 (77일차)\n2. 🟡 알림: 높은 알림부터 확인하고 닫기 (76일차)\n3. 🟡 DLQ: parked 건 원인 확인 뒤 런북대로 재처리 (76일차)\n\n## 요약\n\n전체 시스템 상태는 빨간색으로, 오류율은 5.88%로 나타났습니다. 가장 긴급한 문제는 'Search FAQ' 노드에서 발생한 16건의 타임아웃 오류입니다. 우선 이 타임아웃 문제를 해결하는 데 집중해야 합니다.", "summary": "전체 시스템 상태는 빨간색으로, 오류율은 5.88%로 나타났습니다. 가장 긴급한 문제는 'Search FAQ' 노드에서 발생한 16건의 타임아웃 오류입니다. 우선 이 타임아웃 문제를 해결하는 데 집중해야 합니다.", "numbers_ok": true, "unknown_numbers": [] } Passed 5/5 report: runs/lab03-after-20261101-185505.json