$ uv run tools/flow.py test cases/lab01-edges.json -v
✔ before: POST http://localhost:8800/logs-reset · HTTP 200 · 0.0s · {"cleared": 0}
    → request  POST http://localhost:8800/logs-reset
      {}
    ← response HTTP 200
      {
        "cleared": 0
      }
POST http://localhost:5678/webhook/my-log-report · 6 case(s) × 1
✔ 하루 · from = to (포함) · 0.0s
    → request  POST /webhook/my-log-report
      {
        "from": "2026-10-26",
        "to": "2026-10-26"
      }
    ← response HTTP 200
      {
        "total": 70,
        "errors": 16,
        "error_rate": 0.2286,
        "p50_ms": 1082,
        "p95_ms": 2468,
        "by_route": {
          "오류": 16,
          "자동 답변": 50,
          "담당자 연결": 4
        }
      }
✔ 빈 기간 · 0건이어도 200 · 0.1s
    → request  POST /webhook/my-log-report
      {
        "from": "2026-11-02",
        "to": "2026-11-06"
      }
    ← response HTTP 200
      {
        "total": 0,
        "errors": 0,
        "error_rate": 0,
        "p50_ms": 0,
        "p95_ms": 0,
        "by_route": {}
      }
✔ 주말 · 실행이 없는 날 · 0.0s
    → request  POST /webhook/my-log-report
      {
        "from": "2026-10-24",
        "to": "2026-10-25"
      }
    ← response HTTP 200
      {
        "total": 0,
        "errors": 0,
        "error_rate": 0,
        "p50_ms": 0,
        "p95_ms": 0,
        "by_route": {}
      }
✔ 기간을 비우면 전체 · 0.1s
    → request  POST /webhook/my-log-report
      {}
    ← response HTTP 200
      {
        "total": 666,
        "errors": 21,
        "error_rate": 0.0315,
        "p50_ms": 1205,
        "p95_ms": 2537,
        "by_route": {
          "자동 답변": 591,
          "담당자 연결": 34,
          "오류": 21,
          "잠시 후": 20
        }
      }
✔ source seed · 두 주 기록만 · 0.0s
    → request  POST /webhook/my-log-report
      {
        "from": "2026-10-19",
        "to": "2026-10-30",
        "source": "seed"
      }
    ← response HTTP 200
      {
        "total": 666,
        "errors": 21,
        "error_rate": 0.0315,
        "p50_ms": 1205,
        "p95_ms": 2537,
        "by_route": {
          "자동 답변": 591,
          "담당자 연결": 34,
          "오류": 21,
          "잠시 후": 20
        }
      }
✔ source live · 오늘 실습 기록 (아직 없음) · 0.0s
    → request  POST /webhook/my-log-report
      {
        "source": "live"
      }
    ← response HTTP 200
      {
        "total": 0,
        "errors": 0,
        "error_rate": 0,
        "p50_ms": 0,
        "p95_ms": 0,
        "by_route": {}
      }
Passed 6/6
report: runs/lab01-edges-20261031-074913.json

$ uv run tools/flow.py test cases/lab01-edges.json --webhook base-report
✔ before: POST http://localhost:8800/logs-reset · HTTP 200 · 0.0s · {"cleared": 0}
POST http://localhost:5678/webhook/base-report · 6 case(s) × 1
✘ 하루 · from = to (포함) · 0.1s · total = 0 (expected 70); errors = 0 (expected 16)
✘ 빈 기간 · 0건이어도 200 · 0.1s · error_rate = null (expected 0); p95_ms = null (expected 0)
✔ 주말 · 실행이 없는 날 · 0.1s
✔ 기간을 비우면 전체 · 0.0s
✘ source seed · 두 주 기록만 · 0.1s · total = 602 (expected 666)
✘ source live · 오늘 실습 기록 (아직 없음) · 0.1s · total = 666 (expected 0); error_rate = 3.153153153153153 (expected 0)
Passed 2/6
report: runs/lab01-edges-20261031-074913.json
