-
feat(埋点): user_activities —— 一张通用行为表(PV/UV + 漏斗 + 登录审计) · 1eddc1b6
主管工作台此前没有任何使用数据可查,而 plan_event_logs 的 plan_id 是 NOT NULL, 工作台没有「单」这个实体可挂 —— 这是「没有表可以落」的由来。 不为工作台单独建表,建一张通用的:后面再有页面要看数据,加两个枚举值即可,不用迁移。 【一张表回答三类问题】 ① 谁在用 —— 按 (day, surface) 聚合;PV=条数,UV=distinct user_id ② 卡在哪一步 —— 同 surface 下 action 逐级衰减(打开 → 点格子 → 出确认单 → 确认) ③ 登录审计 —— surface='auth' 的行。PAC 此前**不记录登录**(没有 session/login 表, role 只活在 JWT 里),「谁何时以什么角色进来的」事后无从查证,这次补上。 【几条纪律,都写进了 docs/design/user-activities.md】 -⛔ 身份不由客户端给:userId/role/orgScope 一律从 JWT 取。上报体是 strictObject, 前端多传一个 userId 被 Zod 直接拒(已实测:code=10002 unrecognized_keys)。 -⛔ 页面 PV 不许塞进 plan_event_logs:那是「单的归属账本」,放空 plan_id 会让所有 按 plan 聚合的查询悄悄多算,且不报错。 -⛔ surface/action 在库里是 text 不是 PG enum:加埋点不该要迁移,且改枚举不会让 历史行变非法。role 同理存快照文本 → 读取侧 roles 是 string[] 而非 UserRole[], 否则会出现「写得进读不出」。 -⚠ ️ 埋点是旁路:前端不 await 不抛(微批 400ms + pagehide 冲刷),后端写失败只落日志。 埋点挂了不能让主管点不了确认。 【已埋 6 个点】 auth/token_exchange 宿主后端换票(无 Origin —— 服务器间调用) auth/code_exchange 浏览器换 code(有 Origin = 从哪个宿主系统进来);只记首次 supervisor_workbench/open 权限判定之后 —— 被弹走的客服不算一次访问 supervisor_workbench/matrix_cell {treatment,temperature,count};⛔ 不记 rect(屏幕坐标换分辨率就没意义) supervisor_workbench/proposal_shown 按 requestId 去重,只在 active 记 supervisor_workbench/assign_confirm 服务端返回之后 —— 点了但失败不算确认 【本地实测(pac-service:3101 + pac-web:3100 + 真浏览器)】 - 正常上报 accepted=2;伪造 userId 被拒 10002;无 token 拦在 10106(库里无脏行) - 真走一次换票+换 code:两条 auth 行落库,Origin 只出现在 code_exchange 上(符合预期) - 浏览器打开工作台 + 点格子:open/matrix_cell 落库,payload 正确 - stats 端点:PV/UV 正确;leader 调被 platform:manage 拦下(10107) 【过程中修掉的三个自己的坑】 - track 路径漏了 /pac/v1 前缀(api-client 用 new URL(path,base) 不自动补)→ 请求打到 /activities,envelope 里其实是 404 但 HTTP 仍 200(项目约定),网络面板一看才发现 - open 记了两条:React 18 StrictMode 双挂载 + canDispatch 翻转 → 加 ref 守卫 - session_id 恒空:access token 没有 jti(只有 refresh token 有)→ 改用 sub:iat, 同一次登录内所有行为共享,漏斗能串起来 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>luoqi committed
| Name |
Last commit
|
Last update |
|---|---|---|
| .. | ||
| asr-sensevoice | Loading commit data... | |
| pac-docs | Loading commit data... | |
| pac-service | Loading commit data... | |
| pac-web | Loading commit data... |