这是标准 replacement 轨迹:active-user-sync-temp 被 metric-standardization-hub 替换,最后 leave 临时频道并回到正式频道。 Created Entity Draft/temp channel: active-user-sync-temp Draft channelId: 1f0b04fd-562f-4c04-94d5-9910fa2e89a8 Final channel: metric-standardization-hub Final channelId: f2364396-d0c3-4244-969e-52b755c7e236 Opening messageId: d6385bdd-eefa-47f4-acc1-18f974d825a9 Transition reply messageId: 3f17d0fb-21e7-4962-b554-9ef70092b28c MCP 分组 #1 authentication #1 POST /api/auth/login URL: /api/auth/login #2 Review Temporary Active User Sync Room #10 GET /api/channels/{ID}/members URL: /api/channels/{ID}/members Actual channelId: 1f0b04fd-562f-4c04-94d5-9910fa2e89a8 #11 GET /api/messages URL: /api/messages?channelId=1f0b04fd-562f-4c04-94d5-9910fa2e89a8&limit=50 #12 GET /api/channels URL: /api/channels?type=all&limit=100 #3 Create Public Metric Standardization Hub #14 POST /api/channels URL: /api/channels Body: name=metric-standardization-hub, isPrivate=false #4 Open Final Hub And Confirm Discovery #17 GET /api/channels/{ID}/members URL: /api/channels/{ID}/members Actual channelId: f2364396-d0c3-4244-969e-52b755c7e236 #18 GET /api/messages URL: /api/messages?channelId=f2364396-d0c3-4244-969e-52b755c7e236&limit=50 #19 GET /api/channels URL: /api/channels?type=all&limit=100 #5 Post Official Opening Message #24 POST /api/messages URL: /api/messages Body: channelId=f2364396-d0c3-4244-969e-52b755c7e236 Body content: Welcome to metric-standardization-hub... #6 Add And Review Transition Thread #28 GET /api/messages/{ID}/thread-replies URL: /api/messages/{ID}/thread-replies?limit=20&offset=0 Actual messageId: d6385bdd-eefa-47f4-acc1-18f974d825a9 #30 POST /api/messages/{ID}/reply URL: /api/messages/{ID}/reply Actual messageId: d6385bdd-eefa-47f4-acc1-18f974d825a9 Body: channelId=f2364396-d0c3-4244-969e-52b755c7e236, content=Transition note... #31 GET /api/messages/{ID}/thread-replies URL: /api/messages/{ID}/thread-replies?limit=20&offset=0 Actual messageId: d6385bdd-eefa-47f4-acc1-18f974d825a9 #7 Leave Temporary Sync Room #35 GET /api/channels/{ID}/members URL: /api/channels/{ID}/members Actual channelId: 1f0b04fd-562f-4c04-94d5-9910fa2e89a8 #36 GET /api/messages URL: /api/messages?channelId=1f0b04fd-562f-4c04-94d5-9910fa2e89a8&limit=50 #38 POST /api/channels/{ID}/leave URL: /api/channels/{ID}/leave Actual channelId: 1f0b04fd-562f-4c04-94d5-9910fa2e89a8 #8 Return To Final Hub After Draft Cleanup #40 GET /api/channels/{ID}/members URL: /api/channels/{ID}/members Actual channelId: f2364396-d0c3-4244-969e-52b755c7e236 #41 GET /api/messages URL: /api/messages?channelId=f2364396-d0c3-4244-969e-52b755c7e236&limit=50 #42 GET /api/channels URL: /api/channels?type=all&limit=100 不要分进去: GET /api/users/unread-counts GET /api/conversations/dm/active GET /api/users/starred GET /api/users GET /api/conversations/read-position POST /api/messages/read GET /api/messages/{ID}/reactions #21-#23 final hub 重复打开 #43 POST /api/messages/read status=403 Rubrics active_user_sync_temp_reviewed_before_replacement Category process Must Pass false Checker Key GET /api/messages | input.queryParams.channelId= | input.queryParams.limit=50 | output.statusCode=200 Description Verify that the temporary active-user-sync-temp room is reviewed before replacement. Reject Reject if messages from the temporary active-user-sync-temp room are not fetched before the final channel is created. Accept Accept if GET /api/messages loads active-user-sync-temp with limit=50 before POST /api/channels creates the replacement channel. metric_standardization_hub_created_as_public_channel Category state Must Pass true Checker Key POST /api/channels | input.bodyParams.name=metric-standardization-hub | input.bodyParams.isPrivate=false | output.statusCode=201 Description Verify that the properly named metric standardization channel is created as a public channel. Reject Reject if there is no successful POST /api/channels call creating metric-standardization-hub, or if the created channel is private. Accept Accept if POST /api/channels creates metric-standardization-hub with isPrivate=false. metric_standardization_hub_directory_checked Category process Must Pass false Checker Key POST /api/channels | input.bodyParams.name=metric-standardization-hub | input.bodyParams.isPrivate=false | output.statusCode=201 -> GET /api/channels | input.queryParams.type=all | input.queryParams.limit=100 | output.statusCode=200 Description Verify that the full channel list is checked after the final hub is created. Reject Reject if there is no full channel list request after creating metric-standardization-hub. Accept Accept if GET /api/channels is called with type=all and limit=100 after metric-standardization-hub is created. metric_standardization_hub_opening_message_posted Category state Must Pass true Checker Key POST /api/channels | input.bodyParams.name=metric-standardization-hub | input.bodyParams.isPrivate=false | output.statusCode=201 -> POST /api/messages | input.bodyParams.channelId= | output.statusCode=200 Description Verify that the official opening message is posted in metric-standardization-hub. Reject Reject if no successful POST /api/messages is sent to the final channel created by POST /api/channels. Accept Accept if POST /api/messages posts the recorded opening message to metric-standardization-hub, and channelId matches the created channel. metric_standardization_transition_note_posted Category state Must Pass true Checker Key POST /api/channels | input.bodyParams.name=metric-standardization-hub | input.bodyParams.isPrivate=false | output.statusCode=201 -> POST /api/messages | input.bodyParams.channelId= | output.statusCode=200 -> POST /api/messages/{id}/reply | pathParams.id= | input.bodyParams.channelId= | output.statusCode=200 Description Verify that the transition note is posted as a thread reply under the opening message. Reject Reject if no successful thread reply is posted under the opening message in metric-standardization-hub. Accept Accept if POST /api/messages/{id}/reply posts the transition note under the opening message in the final channel. metric_standardization_thread_reviewed_after_reply Category process Must Pass false Checker Key POST /api/messages/{id}/reply | pathParams.id= | input.bodyParams.channelId= | output.statusCode=200 -> GET /api/messages/{id}/thread-replies | pathParams.id= | input.queryParams.limit=20 | input.queryParams.offset=0 | output.statusCode=200 Description Verify that the transition thread is reviewed after the reply is posted. Reject Reject if thread replies are not fetched after the transition note is posted. Accept Accept if GET /api/messages/{id}/thread-replies is called after the reply with limit=20 and offset=0. active_user_sync_temp_left_after_replacement Category state Must Pass true Checker Key GET /api/messages | input.queryParams.channelId= | input.queryParams.limit=50 | output.statusCode=200 -> POST /api/channels/{id}/leave | pathParams.id= | output.statusCode=200 Description Verify that the temporary active-user-sync-temp room is left after the replacement channel is ready. Reject Reject if there is no successful leave request for active-user-sync-temp. Accept Accept if POST /api/channels/{id}/leave is called for active-user-sync-temp and returns 200. metric_standardization_hub_remains_active_after_temp_cleanup Category process Must Pass false Checker Key POST /api/channels/{id}/leave | pathParams.id= | output.statusCode=200 -> GET /api/messages | input.queryParams.channelId= | input.queryParams.limit=50 | output.statusCode=200 Description Verify that metric-standardization-hub is opened again after the temporary room is left. Reject Reject if the final channel is not accessed after the draft channel leave action. Accept Accept if GET /api/messages loads metric-standardization-hub after active-user-sync-temp is left.