Repository navigation
Closed
Description
🎯 目标
打通 Feed/Chatter API 从协议到 Client SDK 的"最后一公里"。Schema、Contract、Service 均已完成,缺少 Route Handler 和 Client SDK 接入。
📊 当前状态
| 层级 | 文件 | 状态 |
|---|---|---|
| Schema | spec/src/data/feed.zod.ts |
✅ |
| API Protocol | spec/src/api/feed-api.zod.ts (14 个端点) |
✅ |
| Contract | spec/src/contracts/feed-service.ts (IFeedService) |
✅ |
| Service Impl | services/service-feed/InMemoryFeedAdapter (40+ tests) |
✅ |
| Route Handler | objectql/protocol.ts → Feed 方法 |
🔴 缺失 |
| Client SDK | client.feed.* namespace |
🔴 缺失 |
📋 Tasks
1. Route Handler (packages/objectql)
在 ObjectStackProtocolImplementation 中新增 14 个 Feed 方法,对应 FeedApiContracts:
-
listFeed→GET /api/data/:object/:recordId/feed -
createFeedItem→POST /api/data/:object/:recordId/feed -
updateFeedItem→PUT /api/data/:object/:recordId/feed/:feedId -
deleteFeedItem→DELETE /api/data/:object/:recordId/feed/:feedId -
addReaction→POST /api/data/:object/:recordId/feed/:feedId/reactions -
removeReaction→DELETE /api/data/:object/:recordId/feed/:feedId/reactions/:emoji -
pinFeedItem/unpinFeedItem→ Pin/Unpin endpoints -
starFeedItem/unstarFeedItem→ Star/Unstar endpoints -
searchFeed→GET /api/data/:object/:recordId/feed/search -
getChangelog→GET /api/data/:object/:recordId/changelog -
subscribe/unsubscribe→ Record subscription endpoints
2. Client SDK (packages/client)
- 在
ObjectStackClient中新增feednamespace,包含 14 个方法 - 在
getRoute()中新增feed路由类型(使用/api/data子路径模式) - 新增
client.feed.*的类型导出 - 编写 MSW 测试验证 Client ↔ Server 集成
3. Discovery 增强
- 在
getDiscovery()返回的services中新增feedservice 状态 - 在
capabilities中新增feed: true和comments: true
4. 测试
- Route handler 单元测试
- Client SDK MSW 集成测试
- 验证
FeedApiContracts的 input/output schema 与实际请求/响应一致
🔗 关联
- 阻塞 ObjectUI Roadmap P1.5(Comments & Collaboration)
- 参考:
FeedApiContractsinpackages/spec/src/api/feed-api.zod.ts - 参考:
InMemoryFeedAdapterinpackages/services/service-feed/ - Parent: 更新 Spec 项目的优先 Roadmap(2026.02) #753
Reacted by Copilot
Activity