-
Notifications
You must be signed in to change notification settings - Fork 1
Open
Labels
Description
背景
目前平台运行时在访问 sys_presence 时出现 no such table: sys_presence 错误。根据系统架构原则,所有以 sys_ 开头的系统对象都应以业务/协议领域归属到对应的软件包中。例如,sys_user 归属于 plugin-auth,sys_audit_log 归属于 plugin-audit。
问题
当前 sys_presence 系统对象未正确注册,且归属和实现尚未标准化,影响 presence 相关的实时能力。
归属分析
- Presence(在线状态)为实时协作核心概念,不宜放在 plugin-auth。
- 参考
PresenceStateSchema、PresenceUpdateSchema等协议定义,Presence 的全部协议均来源于 websocket/realtime 领域。 service-realtime包名下应纳入sys_presence对象,作为其核心领域对象,负责 presence 的 schema 与运行时状态管理。
方案建议
- 在
packages/services/service-realtime下创建/注册sys_presence对象- 新建
src/objects/sys-presence.object.ts,字段应覆盖 PresenceState 协议定义(userId,sessionId,status,lastSeen,currentLocation,device,customStatus,metadata)。 - 用标准
ObjectSchema注册,注意复用协议字段定义,确保 schema 与前端 presence 协议兼容。
- 新建
- 在 plugin 启动时注册该对象
- 在 RealtimeServicePlugin 启动逻辑中
ctx.registerService()时纳入sys_presence。
- 在 RealtimeServicePlugin 启动逻辑中
- 在
SystemObjectName中维护常量- 给出
PRESENCE: 'sys_presence'常量,文档、API、权限、DSL 查询等均采用该 protocol name。
- 给出
- ROADMAP.md/CHANGELOG.md 补充记录对象归属和接口清单
验证
- 完成后运行全量测试以确保 runtime 对 presence 的查询、订阅、变更不会异常
- ROADMAP.md/CHANGELOG.md 记录此次架构梳理行为
如需协助,可直接 @xuyushun441-sys。
Reactions are currently unavailable