Skip to content

feed api #756

Closed
Closed

Description

@hotlong

🎯 目标

打通 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 中新增 feed namespace,包含 14 个方法
  • 在 getRoute() 中新增 feed 路由类型(使用 /api/data 子路径模式)
  • 新增 client.feed.* 的类型导出
  • 编写 MSW 测试验证 Client ↔ Server 集成

3. Discovery 增强

  • 在 getDiscovery() 返回的 services 中新增 feed service 状态
  • 在 capabilities 中新增 feed: true 和 comments: true

4. 测试

  • Route handler 单元测试
  • Client SDK MSW 集成测试
  • 验证 FeedApiContracts 的 input/output schema 与实际请求/响应一致

🔗 关联

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

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