feat(ECR-012–016): 合规、题库、时辰刷新、头像、MBTI OEJTS 与埋点
落地输入合规、探索题库、报告日/时辰刷新、账号头像、OEJTS 量表,并补齐 H5 埋点与 Admin 漏斗;同步 ESS 工件、切至自建 Git、清理 GitHub Actions。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -84,14 +84,16 @@ Device 绑定到账号 User
|
||||
| R5 | 登出作废 session;设备可再登录其他账号 |
|
||||
| R6 | 正式环境恢复校验前须改回本 Spec |
|
||||
| R7 | 新账号未填昵称时,服务端用「意象词+场景词」词库(100×100)随机生成,如心语岛、微光谷 |
|
||||
| R8 | 账号昵称可在个人档案页修改(PATCH `/auth/me`);首页展示昵称而非「自己」 |
|
||||
| R8 | 账号昵称可在个人档案页修改(PATCH `/auth/me`);首页与各页「自己」展示位统一用昵称(合盘/问答/星座/档案卡) |
|
||||
| R9 | 账号头像可在「我的」页更换:相册或拍照上传;服务端持久化;GET `/auth/me` 返回 `avatar_url`;未设置时 UI 用愈心小人正面默认头像(`public/default-avatar.png`,源图 `public/logo/愈心小人1.png`) |
|
||||
|
||||
---
|
||||
|
||||
## 8. 数据模型影响
|
||||
|
||||
- `users.phone` UNIQUE · `users.password_hash` · `users.nickname`
|
||||
- `users.phone` UNIQUE · `users.password_hash` · `users.nickname` · `users.avatar_url`
|
||||
- `user_sessions(token, user_id, expires_at)`
|
||||
- 本地文件:`data/avatars/{user_id}.{jpg|png|webp}`(进程相对路径)
|
||||
|
||||
---
|
||||
|
||||
@@ -102,8 +104,10 @@ Device 绑定到账号 User
|
||||
| POST | `/api/v1/auth/register` | 注册(可带 nickname) |
|
||||
| POST | `/api/v1/auth/login` | 登录 |
|
||||
| POST | `/api/v1/auth/logout` | 登出 |
|
||||
| GET | `/api/v1/auth/me` | 当前账号 |
|
||||
| GET | `/api/v1/auth/me` | 当前账号(含 avatar_url) |
|
||||
| PATCH | `/api/v1/auth/me` | 更新昵称 `{ nickname }` |
|
||||
| POST | `/api/v1/auth/me/avatar` | multipart `file`;jpeg/png/webp;≤2MB → 更新 avatar_url |
|
||||
| GET | `/api/v1/media/avatars/:file` | 公开读头像文件 |
|
||||
|
||||
---
|
||||
|
||||
@@ -113,12 +117,30 @@ Device 绑定到账号 User
|
||||
|---|---|---|
|
||||
| register/login | ✓ | ✓ |
|
||||
| profiles / reports 写读 | ✗ | ✓ |
|
||||
| 上传头像 | ✗ | ✓ |
|
||||
| 读头像媒体 | ✓ | ✓ |
|
||||
|
||||
---
|
||||
|
||||
## 11. 埋点
|
||||
|
||||
`auth_register` · `auth_login` · `auth_logout`
|
||||
经统一 `track()`(见 [analytics.md](analytics.md) · [ops-analytics.md](ops-analytics.md))。
|
||||
**非** P1 核心漏斗 5 事件;接入后走自有 `POST /analytics/events`(及可选 GA)。
|
||||
禁止参数含手机号、明文密码、头像绝对 URL / `user_id`。
|
||||
|
||||
| Event | 触发 | 可选 params |
|
||||
|---|---|---|
|
||||
| `auth_register` | 账号新建成功(含 OpenLogin 自动建号,`is_new=true`) | `source`: login_page |
|
||||
| `auth_login` | 已有账号登录成功(`is_new=false`) | `source`: login_page |
|
||||
| `auth_logout` | 用户在「我的」点退出且本地 session 已清 | `surface`: mine |
|
||||
| `avatar_sheet_opened` | 「我的」打开更换头像 sheet | `surface`: mine |
|
||||
| `avatar_upload_succeeded` | 头像上传 API 成功且 UI 刷新为新图 | `source`: album \| camera |
|
||||
| `avatar_upload_failed` | 头像上传失败(校验/网络/服务端) | `source`: album \| camera · `reason`: too_large \| bad_type \| network \| server \| unknown |
|
||||
| `nickname_updated` | PATCH 昵称成功 | `surface`: profile |
|
||||
|
||||
`page_view` 对 `/login` · `/mine` 由路由自动采集,本 Spec 不重复定义。
|
||||
|
||||
**实现状态:** 事件名以本表为准;H5 已挂 Login / Mine / Profile(`track` → 自有 ingest + 可选 GA)。
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user