feat(compare/coupon): trace_id 统一由后端签发,前端不再本地生成 #210
Reference in New Issue
Block a user
Delete Branch "feat-unify-trace-id-backend-issued"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
一次比价/领券的 trace_id 改由后端签发,让前端 SLS 运行日志(trace_id 索引列)、
app-server 比价记录与领券流水、pricebot trace 目录/run.log/trace_url 全链共用同一个
id 查到底(此前前端各业务自己 randomUUID,虽同链但非后端签发、也无单一签发点)。
请求 trace_id 改可选,缺省时服务端签发 uuid;响应新增 trace_id 字段返回(签发的或
回显客户端带来的)。客户端带值则沿用——老客户端兼容 + 同 trace 重试幂等。
写库成功);非 started 帧缺 trace_id 不签发、不写库(收尾没有 id 只能是异常调用,
签发新 id 只会造出查不到发起信息的孤儿行)。新增 CouponSessionOut 响应模型——原
dict[str,bool] 注解无法承载字符串 trace_id,FastAPI 响应校验会炸。
coupon started 签发/回显、终尾缺 id 跳过写库 3 个用例。全量 30 passed + ruff clean。
配合 shaguabijia-app-android 同名分支 feat-unify-trace-id-backend-issued 的前端换源改动。
Co-Authored-By: Claude Fable 5 noreply@anthropic.com
🤖 review-pr 深审结论
🟢 可合并 · 置信度 0.9 —— trace_id 后端签发设计周到(兼容/幂等/孤儿防护),测试通过。须配套 android#380。
改动:compare/start + coupon/session 的 trace_id 改后端签发,前端不再本地 randomUUID。
正确性核对(合并后)
trace_id = payload.trace_id or uuid4()——缺省签发、客户端带值沿用(老客户端兼容 +reserve_daily_start按 trace_id 去重=重试幂等)、响应返回 trace_id。if trace_id:守卫merge_session_platform_success。dict[str,bool]注解装不下 trace_id 字符串会让 FastAPI 响应校验炸,新增模型正确。构建/测试(实跑 .venv 合并后):✅
test_compare_daily_limit+test_coupon_session_issue7 passed(compare 签发 + coupon started 签发/回显/终尾跳过写库)。⚠️ 配套 android#380:响应新增
trace_id字段供前端换源(前端改用后端签发的、不再本地生成)。审 #380 时核对前端消费。风险 🟢。
— 🤖 review-pr 自动深审 @marco
guke referenced this pull request2026-08-01 10:13:35 +08:00