diff --git a/app/api/v1/coupon.py b/app/api/v1/coupon.py index f91327f..29ba79c 100644 --- a/app/api/v1/coupon.py +++ b/app/api/v1/coupon.py @@ -1,7 +1,9 @@ """领券业务透传端点。 把客户端的 POST /api/v1/coupon/step 请求原样转发给 pricebot-backend -的 /api/coupon/step,只在外层加 JWT 鉴权。 +的 /api/coupon/step。MVP 阶段**不鉴权**(见 docs/待办与技术债.md P1: +device_id 透传给 pricebot 区分设备,待补 JWT + device_id↔user_id 绑定后 +才能做用户级画像)。 pricebot 协议文档: pricebot-backend/docs/projects/领券-客户端对接协议.md @@ -14,7 +16,6 @@ from typing import Any import httpx from fastapi import APIRouter, HTTPException, Request, status -from app.api.deps import CurrentUser from app.core.config import settings logger = logging.getLogger("shagua.coupon") @@ -25,11 +26,10 @@ router = APIRouter(prefix="/api/v1/coupon", tags=["coupon"]) @router.post("/step", summary="领券任务步进 (透传到 pricebot)") async def coupon_step( request: Request, - user: CurrentUser, ) -> dict[str, Any]: """把请求体原样转发给 pricebot-backend 的 /api/coupon/step。 - - 鉴权: Bearer access_token (get_current_user 隐式校验) + - 鉴权: MVP 阶段不鉴权(待补 JWT,见 docs/待办与技术债.md P1) - 透传: 不做 schema 校验,pricebot 自己校验 - 失败: 网络不可达 / pricebot 5xx → 502 + 友好 message """ @@ -42,8 +42,8 @@ async def coupon_step( timeout = settings.PRICEBOT_REQUEST_TIMEOUT_SEC logger.info( - "coupon_step user_id=%d trace_id=%s step=%s", - user.id, + "coupon_step device_id=%s trace_id=%s step=%s", + body.get("device_id"), body.get("trace_id"), body.get("step"), ) diff --git a/docs/待办与技术债.md b/docs/待办与技术债.md index 4438abf..444554c 100644 --- a/docs/待办与技术债.md +++ b/docs/待办与技术债.md @@ -43,6 +43,14 @@ --- +## 阶段 1 领券落地后的遗留(待清理,不阻塞跑通) + +- **FloatingButton 死代码**:Running 面板已换成 ComposeView 承载 `CouponProgressPanel`(=复用 AgentFloat)。旧原生面板字段(`line1~4View`/`elapsedView`/`progressBarView`/`historyContainerView` 等)+ `updateStatus(StepStatus)` 里保留的那段更新逻辑 + `appendActionLine`/`markCurrentActionDone`/`markPlatformDone`/`addCancelButton` 全部 no-op,待删。 +- **ComparingScreen / CompResultScreen 弃用**:领券改走悬浮窗,不再走全屏假动画。`Routes.COMPARING` / `COMP_RESULT` 成死路由,连同两个 Screen 文件待删(`CouponPromptDialog` 已抽到 `ui/coupon/`,删 ComparingScreen 不影响它)。 +- **ApiClient 常量 unused**:`getBackendUrl()` 改用 `BuildConfig.BASE_URL` 后,`DEFAULT_BACKEND_URL`/`KEY_BACKEND_URL` 常量 unused,待清。 +- **权限引导是最简版**:缺权限时直接跳系统设置页(`ACTION_ACCESSIBILITY_SETTINGS` / overlay 设置)。搬来的仿腾讯引导(`AccessibilityGuideActivity`/`PermissionGuide*`)尚未接入,体验后续可升级。 +- **领券大数字语义**:悬浮窗左侧"已领券"大数字目前接 `progress.current`(正在领第几张),非"已成功数"。中间帧后端不回传已领明细,要精确需后端在 status.progress 加 `completed[]`(协议文档第四节已留扩展点)。 + ## 已解决 (暂无)