{ "webhook": "my-faq-import", "before": [ { "url": "http://localhost:8800/faq-reset", "body": {} }, { "url": "http://localhost:8800/quarantine-clear", "body": {} }, { "url": "http://localhost:8800/quality-log-clear", "body": {} }, { "url": "http://localhost:8800/alerts-clear", "body": {} } ], "after": [ { "url": "http://localhost:8800/faq-reset", "body": {} } ], "cases": [ { "name": "나쁜 배치는 통째로 거절 (422)", "request": "requests/faq-batch-1.json", "expect": { "status": 422, "equals": { "batch": "B-1" }, "range": { "invalid_ratio": [ 0.3, 1 ] } } }, { "name": "배치 2 · 통과한 줄만 넣고 나쁜 줄은 격리", "request": "requests/faq-batch-2.json", "expect": { "equals": { "rejected": false, "total": 10 }, "contains": { "imported_ids": "FAQ-201", "quarantined_ids": "FAQ-209" } } }, { "name": "FAQ에 들어갔고 메일 주소는 안 들어감", "url": "http://localhost:8800/faq/list", "body": {}, "expect": { "contains": { "faqs": "FAQ-208" }, "not_contains": { "faqs": "security.desk" } } }, { "name": "격리함에 이유와 함께", "url": "http://localhost:8800/quarantine/list", "body": {}, "expect": { "contains": { "items": "\"pii\"" } } }, { "name": "LLM · 제목과 답이 다른 줄 (FAQ-210)", "before": [ { "url": "http://localhost:8800/faq-reset", "body": {} }, { "url": "http://localhost:8800/quarantine-clear", "body": {} } ], "request": "requests/faq-batch-2.json", "expect": { "equals": { "imported": 8, "quarantined": 2, "codes.llm_mismatch": 1 }, "contains": { "quarantined_ids": "FAQ-210" } } }, { "name": "LLM · 규칙에 걸린 줄은 그대로 (FAQ-305)", "request": "requests/faq-batch-3.json", "expect": { "equals": { "imported": 5 }, "contains": { "quarantined_ids": "FAQ-305" } } } ] }