问题
当前在ObjectStack Cloud与其他基于ObjectQL的环境下,用户通过API/控制台新增自定义对象(object/schema),调用协议层(protocol.saveMetaItem)时,能成功将元数据写入sys_metadata表,但内核冷启动时不会自动从数据库恢复这些对象元数据,导致kernel重启或冷启动后,用户自定义对象消失,仅有默认sample objects。此问题影响所有runtime(单租户/多租户/Microkernel Cloud),属于框架级严重持久化缺陷。
复现步骤
- 在控制台或API添加自定义object schema(如leads、invoice等),保存后在UI可见。
- 等待kernel冷启动或重新部署(云环境如Vercel休眠/TSX dev热点重启等)。
- 再次访问,同租户下自定义对象schema消失,仅有默认sample objects。
- 查看数据库数据,sys_metadata表中实际对象元数据仍在,说明协议层保存正常,只是启动未自动加载。
期望行为
- 内核每次启动时(ObjectQLPlugin.start/Kernel bootstrap),自动从sys_metadata表批量恢复所有type=object/view/app等元数据,注册到SchemaRegistry,实现持久化→内存的完整闭环,无需业务/宿主项目手动干预。
- 恢复后能自动触发schema sync,确保所有动态注册对象具备表结构。
- 避免sample objects覆盖租户实际对象。
修改需求清单
- ❗在ObjectQLPlugin.start()生命周期中:
- driver.init()后、syncRegisteredSchemas()前,显式调用protocol.loadMetaFromDb()(已实现于protocol.ts,需通过ctx.getService('protocol')调用)。
- 成功后根据loaded数量可log统计,并对新注册object自动schema sync(调用现有syncRegisteredSchemas)。
- 保持兼容:如无数据库(内存模式)不抛异常,降级为只使用内存样例对象。
- 更新CHANGELOG,标记为修复元数据持久化的严重bug。
影响评估
- 影响所有使用ObjectQL的多租户/云/本地环境。
- 用户新增object长期丢失,严重影响可信度与低代码使用体验。
相关代码片段与关键调用链
protocol.saveMetaItem() → 正确写入sys_metadata
protocol.loadMetaFromDb() → 已实现但未自动调用
ObjectQLPlugin.start() → 缺失调用
问题
当前在ObjectStack Cloud与其他基于ObjectQL的环境下,用户通过API/控制台新增自定义对象(object/schema),调用协议层(protocol.saveMetaItem)时,能成功将元数据写入sys_metadata表,但内核冷启动时不会自动从数据库恢复这些对象元数据,导致kernel重启或冷启动后,用户自定义对象消失,仅有默认sample objects。此问题影响所有runtime(单租户/多租户/Microkernel Cloud),属于框架级严重持久化缺陷。
复现步骤
期望行为
修改需求清单
影响评估
相关代码片段与关键调用链
protocol.saveMetaItem()→ 正确写入sys_metadataprotocol.loadMetaFromDb()→ 已实现但未自动调用ObjectQLPlugin.start()→ 缺失调用