目标
设计并落地实现符合 ObjectStack Config Resolution 协议的 User Preferences Service。
- 支持所有用户个性化配置,包括通用 scalar、结构型数据(如 favorites, recent_items)
- 能安全替换现有 MVP 方案 (localStorage)
- 长期架构可持续、盲升为 config 系统第2层实现
方案概要
-
规范 Schema(Spec 层):
- 创建
packages/spec/src/identity/user-preference.zod.ts,定义 UserPreferenceEntry、FavoriteEntry、FavoritesValueSchema 等规范。
- key 支持 well-known (
theme, locale, favorites 等) 及插件自定义。
-
服务接口定义:
- 创建
packages/spec/src/contracts/user-preferences.ts,声明 IUserPreferencesService 统一交互接口,提供 get/set/delete/getAll/setMany 等方法。
-
服务插件实现:
-
内核注册与暴露:
- 插件 init 时
ctx.registerService('user-preferences', impl)。
- 其他插件通过
ctx.getService('user-preferences') 消费。
-
HTTP 路由对外暴露统一接口:
/api/v1/user/preferences 支持 get, set, batch, delete, prefix 查询
/api/v1/user/preferences/favorites 专门支持收藏功能的 get/set
-
前端与 Studio 集成:
- Studio/Launcher 调用与本地缓存完全解耦。
目标
设计并落地实现符合 ObjectStack Config Resolution 协议的 User Preferences Service。
方案概要
规范 Schema(Spec 层):
packages/spec/src/identity/user-preference.zod.ts,定义 UserPreferenceEntry、FavoriteEntry、FavoritesValueSchema 等规范。theme, locale, favorites等) 及插件自定义。服务接口定义:
packages/spec/src/contracts/user-preferences.ts,声明IUserPreferencesService统一交互接口,提供 get/set/delete/getAll/setMany 等方法。服务插件实现:
内核注册与暴露:
ctx.registerService('user-preferences', impl)。ctx.getService('user-preferences')消费。HTTP 路由对外暴露统一接口:
/api/v1/user/preferences支持 get, set, batch, delete, prefix 查询/api/v1/user/preferences/favorites专门支持收藏功能的 get/set前端与 Studio 集成: