---
title: "/user/me 接口加载优化方案"
description: "说明首页进入卡顿场景下，当前用户数据的加载分层、功能准入和一致性边界。"
---

# 1. 方案定位

首页进入系统时，前端需要先拿到当前用户信息，用来初始化登录态、租户、权限、组织和可用功能。

如果这些数据全部由一次 `/user/me` 请求返回，请求会越来越重。用户侧看到的结果就是首页进入慢、页面长时间等待，尤其是在组织、权限和功能开关数据都比较多时更明显。

这个方案的目标不是减少当前用户信息的业务含义，而是把它拆成不同加载层级：

* 首页必须立即使用的数据优先返回
* 只影响特定功能入口的数据延后加载
* 数据变更后仍然保证当前用户上下文一致
* 缓存只服务于功能开关判断，不影响用户、权限和组织基础信息的新鲜度

---

# 2. 适用范围

本方案适用于所有依赖当前用户上下文的启动和导航场景。

当前重点覆盖：

* 首页首次进入
* `/chat` 默认入口选择
* ClawXpert 入口和直访控制
* 组织新增、删除、更新后的上下文刷新
* 用户切换租户后的功能状态刷新

不属于本方案重点：

* 页面内部业务数据加载
* 角色权限模型本身的调整
* 功能开关配置后台的交互设计

---

# 3. 核心原则

## 3.1 首页优先加载基础用户上下文

首页启动只等待基础用户上下文。

基础用户上下文包括：

* 当前用户
* 当前租户
* 角色和权限
* 员工信息
* 用户所属组织
* 当前作用域初始化需要的数据

这些数据是进入系统的基础条件，应该优先返回。

## 3.2 功能开关上下文按需补齐

功能开关上下文包括：

* 租户级功能开关
* 组织级功能开关
* 当前组织可用功能列表

这部分数据不应该阻塞普通页面打开。

只有当用户进入受功能开关控制的入口时，系统才需要确认对应功能是否可用。

## 3.3 不能确认时不放行受控功能

功能开关用于判断某个产品能力是否对当前租户或组织开放。

对于 ClawXpert 这类受控入口，不能只靠菜单隐藏。用户直接访问 URL 时，也必须做同一套判断。

如果功能状态确认失败或等待超过 3 秒，默认不放行该功能。

---

# 4. 用户可见流程

## 4.1 进入首页

用户进入系统时，页面先完成基础用户上下文加载。

只要当前页面不依赖某个功能开关，页面就可以先打开。功能开关数据可以在后台补齐。

这样可以减少首页等待时间，同时不改变用户进入系统后的权限和组织判断。

## 4.2 访问 `/chat`

访问 `/chat` 时，系统需要选择默认聊天入口。

如果已确认 ClawXpert 对当前用户可用，则进入 ClawXpert。

如果 ClawXpert 不可用、状态确认失败，或 3 秒内无法确认，则进入通用助手。

这保证聊天入口始终可用，但不会误进入被关闭的能力。

## 4.3 访问 ClawXpert

用户通过菜单或 URL 进入 ClawXpert 时，都必须确认 ClawXpert 当前可用。

判断结果如下：

* 可用：允许进入
* 不可用：返回聊天入口
* 判断失败：返回聊天入口
* 3 秒内无法确认：返回聊天入口

如果用户已经停留在 ClawXpert 页面，后续确认该功能不可用，也需要离开该页面。

---

# 5. 组织上下文一致性

组织变更会影响完整当前用户上下文，不能只刷新功能开关数据。

以下操作完成后，需要刷新完整当前用户上下文：

* 新增组织
* 删除组织
* 修改组织名称或基础信息
* 切换默认组织
* 修改组织启用状态

刷新后需要保证：

* 用户所属组织列表是最新的
* 默认组织状态是最新的
* 当前选中组织仍然有效
* 当前组织的功能开关列表与选中组织一致
* 组织详情页展示的数据与全局用户上下文一致

如果当前选中组织已经不存在，系统按以下顺序重新选择：

1. 默认组织
2. 第一个可用组织
3. 没有可用组织时清空当前组织

---

# 6. 缓存边界

当前用户接口可以对功能开关数据做缓存，但缓存边界必须清晰。

可以缓存：

* 租户级功能开关列表
* 当前用户所属组织的组织级功能开关列表

不应该缓存：

* 用户基础信息
* 员工信息
* 角色和权限
* 租户基础信息
* 组织名称、启用状态等基础信息
* 用户组织成员关系

缓存粒度至少区分：

* 租户
* 用户
* 请求的数据范围
* 功能开关配置版本
* 用户组织关系版本

这样可以保留功能开关数据的缓存收益，同时避免组织名、权限、员工信息等基础数据出现旧值。

---

# 7. 核对口径

后续评审时，可以按下面的口径判断功能是否偏离：

* 首页进入不应等待完整功能开关数据
* 普通页面不应因为功能开关数据未返回而卡住
* ClawXpert 关闭后，菜单入口和 URL 直访都不可进入
* `/chat` 在功能判断失败或超时时进入通用助手
* 组织新增、删除、更新后，当前用户组织列表立即更新
* 删除当前选中组织后，不保留旧组织状态
* 修改组织名称后，页面不继续显示旧名称
* 修改权限或员工信息后，不被功能开关缓存影响
* 同一个用户切换租户后，不复用上一个租户的功能状态
* 缓存只覆盖功能开关数据，不缓存完整当前用户上下文
