def test_screening_pipeline(client, auth_headers): child = client.post( "/api/children", headers=auth_headers, json={"name": "小红", "birthday": "2017-05-01", "gender": "female"}, ).json()["data"] child_id = child["id"] token_resp = client.post( "/api/videos/upload-token", headers=auth_headers, json={ "childId": child_id, "fileName": "front.mp4", "contentType": "video/mp4", "size": 1024000, }, ) assert token_resp.status_code == 200 object_key = token_resp.json()["data"]["objectKey"] video_resp = client.post( "/api/videos", headers=auth_headers, json={ "childId": child_id, "objectKey": object_key, "scene": "front_posture", }, ) assert video_resp.status_code == 201 video_id = video_resp.json()["data"]["id"] task_resp = client.post( "/api/analysis/tasks", headers={**auth_headers, "Idempotency-Key": "screening-task-1"}, json={ "childId": child_id, "videoId": video_id, "taskType": "posture_screening", }, ) assert task_resp.status_code == 201 task = task_resp.json()["data"] assert task["status"] == "SUCCEEDED" assert task["reportId"] dup_resp = client.post( "/api/analysis/tasks", headers={**auth_headers, "Idempotency-Key": "screening-task-1"}, json={ "childId": child_id, "videoId": video_id, "taskType": "posture_screening", }, ) assert dup_resp.status_code == 409 report_resp = client.get( f"/api/reports/{task['reportId']}", headers=auth_headers, ) assert report_resp.status_code == 200 report = report_resp.json()["data"] assert report["riskLevel"] == "medium" assert len(report["metrics"]) >= 3 def test_movement_report_pipeline(client, auth_headers): child_id = client.post( "/api/children", headers=auth_headers, json={"name": "小刚", "birthday": "2015-08-12", "gender": "male"}, ).json()["data"]["id"] object_key = f"videos/{child_id}/live.mp4" video_id = client.post( "/api/videos", headers=auth_headers, json={"childId": child_id, "objectKey": object_key, "scene": "side_posture"}, ).json()["data"]["id"] task = client.post( "/api/analysis/tasks", headers=auth_headers, json={ "childId": child_id, "videoId": video_id, "taskType": "movement_scoring", }, ).json()["data"] report = client.get(f"/api/reports/{task['reportId']}", headers=auth_headers).json()["data"] assert report["score"] == 81