feat(onboarding): 新增重置新手引导端点 /api/v1/user/onboarding/reset
- user.py:新增 reset_onboarding 端点(需登录),删当前账号+该设备的引导完成标记, 与 /onboarding/complete 互逆;幂等(无记录也返回 ok),只删自己不影响他人 - repositories/onboarding.py:新增 delete_completion(user_id, device_id), device_id 为空忽略,返回删除行数 - tests:补 test_onboarding_reset_makes_relogin_reonboard,覆盖 完成 → 重置 → 再登录变未完成 + 重复重置幂等 配合客户端「开发设置 → 重置新手引导」:先删后端行再退登录重开,复现全新用户。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -69,6 +69,18 @@ def complete_onboarding(
|
||||
return OkResponse()
|
||||
|
||||
|
||||
@router.post("/onboarding/reset", response_model=OkResponse, summary="重置新手引导(删该 设备+账号 完成标记,下次登录重走)")
|
||||
def reset_onboarding(
|
||||
req: OnboardingCompleteRequest, user: CurrentUser, db: DbSession
|
||||
) -> OkResponse:
|
||||
"""删该 (当前账号, device_id) 的引导完成标记 → 下次登录 onboarding_completed=false,客户端重走。
|
||||
与 /onboarding/complete 互逆。device_id 取客户端硬件级 ANDROID_ID(与登录/complete 一致)。
|
||||
幂等:无记录也返回 ok。仅删自己(当前 JWT 用户)这台设备的记录,不影响别的账号/设备。"""
|
||||
deleted = onboarding_repo.delete_completion(db, user_id=user.id, device_id=req.device_id)
|
||||
logger.info("onboarding reset user_id=%d device_len=%d deleted=%d", user.id, len(req.device_id), deleted)
|
||||
return OkResponse()
|
||||
|
||||
|
||||
@router.get(
|
||||
"/onboarding/status",
|
||||
response_model=OnboardingStatusResponse,
|
||||
|
||||
Reference in New Issue
Block a user