背景
目前平台运行时在访问 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。
- 在
SystemObjectName 中维护常量
- 给出
PRESENCE: 'sys_presence' 常量,文档、API、权限、DSL 查询等均采用该 protocol name。
- ROADMAP.md/CHANGELOG.md 补充记录对象归属和接口清单
验证
- 完成后运行全量测试以确保 runtime 对 presence 的查询、订阅、变更不会异常
- ROADMAP.md/CHANGELOG.md 记录此次架构梳理行为
如需协助,可直接 @xuyushun441-sys。
背景
目前平台运行时在访问
sys_presence时出现no such table: sys_presence错误。根据系统架构原则,所有以sys_开头的系统对象都应以业务/协议领域归属到对应的软件包中。例如,sys_user归属于plugin-auth,sys_audit_log归属于plugin-audit。问题
当前
sys_presence系统对象未正确注册,且归属和实现尚未标准化,影响 presence 相关的实时能力。归属分析
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 协议兼容。ctx.registerService()时纳入sys_presence。SystemObjectName中维护常量PRESENCE: 'sys_presence'常量,文档、API、权限、DSL 查询等均采用该 protocol name。验证
如需协助,可直接 @xuyushun441-sys。