{"record":{"id":"ac26667341fcdefa","repo":"bytedance/deer-flow","slug":"rating-must-be-1-or-1","errorCode":null,"errorMessage":"rating must be +1 or -1","messagePattern":"rating must be \\+1 or -1","errorType":"http","errorClass":"HTTPException","httpStatus":400,"severity":"error","filePath":"backend/app/gateway/routers/feedback.py","lineNumber":72,"sourceCode":"    negative: int = 0\n\n\n# ---------------------------------------------------------------------------\n# Endpoints\n# ---------------------------------------------------------------------------\n\n\n@router.put(\"/{thread_id}/runs/{run_id}/feedback\", response_model=FeedbackResponse)\n@require_permission(\"threads\", \"write\", owner_check=True, require_existing=True)\nasync def upsert_feedback(\n    thread_id: ThreadId,\n    run_id: str,\n    body: FeedbackUpsertRequest,\n    request: Request,\n) -> dict[str, Any]:\n    \"\"\"Create or update feedback for a run (idempotent).\"\"\"\n    if body.rating not in (1, -1):\n        raise HTTPException(status_code=400, detail=\"rating must be +1 or -1\")\n\n    user_id = await get_current_user(request)\n\n    run_store = get_run_store(request)\n    run = await run_store.get(run_id)\n    if run is None:\n        raise HTTPException(status_code=404, detail=f\"Run {run_id} not found\")\n    if run.get(\"thread_id\") != thread_id:\n        raise HTTPException(status_code=404, detail=f\"Run {run_id} not found in thread {thread_id}\")\n\n    feedback_repo = get_feedback_repo(request)\n    return await feedback_repo.upsert(\n        run_id=run_id,\n        thread_id=thread_id,\n        rating=body.rating,\n        user_id=user_id,\n        comment=body.comment,\n    )","sourceCodeStart":54,"sourceCodeEnd":90,"githubUrl":"https://github.com/bytedance/deer-flow/blob/1dd6ba1acb03700589994b0366c5d1c7d05e2eff/backend/app/gateway/routers/feedback.py#L54-L90","documentation":"Error \"rating must be +1 or -1\" thrown in bytedance/deer-flow.","triggerScenarios":"Thrown at backend/app/gateway/routers/feedback.py:72 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Send rating as exactly +1 (thumbs up) or -1 (thumbs down) in the request body.","Check the client code mapping UI actions to rating values."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"1dd6ba1acb03700589994b0366c5d1c7d05e2eff","analyzedAt":"2026-08-14T21:20:34.804Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}