Files
TakeoutSaaS.Prototypes/personal-center-prd.md

139 lines
5.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# TenantUI 个人中心(第一版)需求草案
> 更新时间2026-02-09
> 结论来源:当前 Swagger + 数据库表结构与抽样数据(不改代码)
## 1. 背景与目标
当前租户端右上角已新增“个人中心”入口,但页面还是占位。
目标是先定义一版可落地的“个人中心可查询内容”,明确:
1. 哪些内容数据库已有且有数据。
2. 哪些内容前端可直接复用现有接口。
3. 哪些内容需要后端补接口。
## 2. 当前接口现状Swagger
已按规范拉取最新 Swagger`https://api-tenant-dev.laosankeji.com/swagger/v1/swagger.json`
当前仅 7 个路径:
- `/api/tenant/v1/auth/login`
- `/api/tenant/v1/auth/menu`
- `/api/tenant/v1/auth/permissions`
- `/api/tenant/v1/auth/profile`
- `/api/tenant/v1/auth/refresh`
- `/api/tenant/v1/Health`
- `/api/tenant/v1/merchant/info`
结论:个人中心能直接用的接口主要是 `/auth/profile``/auth/permissions``/merchant/info`
## 3. 数据源盘点(按库)
### 3.1 账号与权限takeout_identity
- `identity_users`:账号、昵称、头像、手机号、邮箱、最后登录、失败次数、锁定时间、是否强制改密、状态、门户。
- `user_roles` + `roles`:用户角色关系、角色名称与角色编码。
- `permissions` + `role_permissions`:权限项和角色权限关系。
### 3.2 商户与租户takeout_app
- `merchants`:品牌名、联系方式、经营模式、状态、是否冻结、加入/审核时间等。
- `merchant_documents`:资质类型、状态、证号、有效期。
- `tenant_subscriptions` + `tenant_packages`:套餐名、生效/到期、续费、计费日期。
- `tenant_quota_usages`:额度上限与已用量。
- `tenant_billing_statements` + `tenant_payments`:账单与支付记录。
- `tenants`:租户基础信息(名称、联系人、状态、有效期等)。
### 3.3 日志与记录takeout_logs
- `operation_logs`:操作类型、操作对象、操作者、成功与否、时间。
- `merchant_audit_logs`:商户审核动作历史。
- `merchant_change_logs`:商户字段变更历史。
- `tenant_audit_logs`:租户审核动作历史。
## 4. 个人中心可查询内容建议(优先级)
## P0先做首版上线
1. **我的账号**
- 账号、昵称、头像、手机号、邮箱、注册时间。
- 数据源:`identity_users`
2. **账号安全**
- 最近登录时间、登录失败次数、锁定状态、是否强制改密。
- 数据源:`identity_users`
3. **我的角色与权限概览**
- 角色名称/编码、权限数量。
- 数据源:`user_roles``roles``role_permissions`
4. **我的归属信息**
- 租户名称、商户名称、商户状态、套餐名称、到期时间。
- 数据源:`identity_users` + `tenants` + `merchants` + `tenant_subscriptions` + `tenant_packages`
## P1增强
1. **套餐与配额**
- 门店数、账号数、存储、短信、订单额度(上限/已用)。
- 数据源:`tenant_packages` + `tenant_quota_usages`
2. **账单与支付**
- 最近账单、应付/实付、支付状态、支付方式、支付时间。
- 数据源:`tenant_billing_statements` + `tenant_payments`
3. **资质状态摘要**
- 资质类型、审核状态、到期提醒。
- 数据源:`merchant_documents`
## P2后续
1. **消息中心**:通知、公告、已读状态。
2. **我的操作日志**:只看当前用户自身操作。
3. **变更与审核轨迹**:用于追溯关键操作。
## 5. 页面信息架构建议(前端)
个人中心建议拆 4 个标签页:
1. `基础信息`
2. `账号安全`
3. `套餐与配额`
4. `账单与记录`
> 首版可先渲染前两页,后两页按接口进度逐步放开。
## 6. 接口落地建议(给后端)
建议补 1 个聚合接口 + 若干分页子接口,减少前端拼装成本。
### 6.1 聚合接口(建议优先)
- `GET /api/tenant/v1/personal/overview`
- 返回:账号信息 + 安全信息 + 归属信息 + 套餐摘要 + 配额摘要。
### 6.2 子接口(按需)
- `GET /api/tenant/v1/personal/roles`
- `GET /api/tenant/v1/personal/billing/statements`
- `GET /api/tenant/v1/personal/billing/payments`
- `GET /api/tenant/v1/personal/operations`
- `GET /api/tenant/v1/personal/notifications`
## 7. 安全与展示口径
1. 手机号、邮箱建议脱敏展示(如 `135****5407`)。
2. 严禁返回密码哈希、完整敏感审计参数。
3. 日志类接口默认仅返回“当前登录用户可见范围”。
4. 所有 ID 在前端按字符串处理,避免 long 精度问题。
## 8. 推荐实施顺序
1. 后端先给 `personal/overview`
2. 前端完成“基础信息 + 账号安全”可用页。
3. 再接“套餐配额”和“账单记录”分页。
4. 最后补“消息与操作轨迹”。
---
如确认本草案,可继续输出:
- 字段级 DTO 草案(请求/响应)。
- 页面原型字段清单(每个卡片显示哪些字段)。
- 前后端任务拆分(按 P0/P1/P2