Skip to content

[跨仓库] Protocol 层 $expand 参数解析与 spec engine 对齐验证 #409

@hotlong

Description

@hotlong

任务背景

核心 expand(关系字段展开)能力由 @objectstack/spec 的 Engine reference 实现提供。objectstack-ai/objectql 作为可选加载的增强项目,需要确保其 Protocol 层(OData/GraphQL/JSON-RPC)正确解析 $expand 参数并传递给 Engine。

当前状态

  • OData V4 plugin 已有完整的 expandNavigationProperties() 实现(在 Protocol 层二次查询)
  • JSON-RPC plugin 的 findData() 透传 expand 给 Engine
  • GraphQL plugin 通过 DataLoader 解决 N+1,但未显式支持 expand 参数

任务目标

  1. 对齐验证:确保 objectql 的三个 Protocol adapter 都能正确将 $expand 参数传递给 spec engine
  2. OData 去重:评估是否可以将 OData plugin 的 expandNavigationProperties 委托给 spec engine 层(避免重复实现),保留 OData-specific 语法解析
  3. JSON-RPC 增强:确保 findData() 中 expand 参数被正确解析为 DataEngineQueryOptions.populate
  4. Protocol TCK 测试:在 protocol-tck 中增加 expand 相关的一致性测试用例
  5. 文档更新:更新 OData/JSON-RPC/GraphQL 协议文档,说明 $expand 的完整支持状态

实现理由

  • objectql 的 Protocol layer 是连接 HTTP 请求与 Engine 的桥梁,必须正确传递 expand
  • 与 spec engine 的 reference 实现保持行为一致,避免碎片化
  • OData 已有实现可作为参照,但长期应统一到 Engine 层

关联任务

  • Spec: [协议层] 完善 $expand/lookup/关系字段展开的规范及 Engine Reference 实现
  • ObjectUI: [跨仓库] 支持自动注入 $expand

实现完成后运行 tests、更新相关 issues,并补充 ROADMAP.md。

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions