Skip to content

Frontend: Team Automations scoped AgentKey API 接入(blocked on backend contract) #2743

Description

@potter-sun

当前治理 ownership 边界

#2743 保留最终 member-scoped frontend writer 角色;#2676 仅作 umbrella 与 acceptance tracking,二者不认领同一 writer surface。

本项保持 crnd:phase:blocked dependency wait;不丢弃任何 product work。

背景

Parent / umbrella: #2676

本 issue 承接 #2676真实后端 API 接入的部分。当前必须保持 blocked,直到后端完成 Team Automation dedicated AgentKey contract。不能用 generic /api/schedules、Account raw-key 管理页、一次性 full_key 展示或 senderNyxId schedule auth 替代。

Blocked by

等待的后端 contract

前端以 #2739 最终 contract 为准,预期至少需要 scoped endpoints:

GET /api/scopes/{scopeId}/teams/{teamId}/members/{memberId}/automations
POST /api/scopes/{scopeId}/teams/{teamId}/members/{memberId}/automations:preflight
POST /api/scopes/{scopeId}/teams/{teamId}/members/{memberId}/automations
GET /api/scopes/{scopeId}/teams/{teamId}/members/{memberId}/automations/{scheduleId}
PATCH /api/scopes/{scopeId}/teams/{teamId}/members/{memberId}/automations/{scheduleId}
DELETE /api/scopes/{scopeId}/teams/{teamId}/members/{memberId}/automations/{scheduleId}
POST /api/scopes/{scopeId}/teams/{teamId}/members/{memberId}/automations/{scheduleId}:reauthorize
POST /api/scopes/{scopeId}/teams/{teamId}/members/{memberId}/automations/{scheduleId}:pause
POST /api/scopes/{scopeId}/teams/{teamId}/members/{memberId}/automations/{scheduleId}:resume
POST /api/scopes/{scopeId}/teams/{teamId}/members/{memberId}/automations/{scheduleId}:run-now

Read model / DTO 至少需要:

  • typed owner (scopeId, memberId)teamId 仅作为当前 containment 验证路径;
  • authorizationStatus
  • credentialSourceKind
  • keyExpiresAt
  • lastAuthorizationErrorCode
  • permissionDigest
  • policyVersion
  • typed invocationTarget
  • typed nyxIdServiceGrantsnyxIdNodeGrants
  • typed disclosure facts/codes。

前端接入范围

  • TeamAutomationsTab 从 generic scheduledDispatchApi.listAll/create/update/delete/enable/disable/runNow 迁移到 scoped teamAutomationApi
  • Team UI 不再全局 list schedules 后按 serviceKey / publishedServiceId 过滤。
  • preflight 后展示后端 typed authorization plan,不在前端推导 service/node grants。
  • create/update/reauthorize 只提交 schedule config、typed authorization intent、permissionDigestpolicyVersion、idempotency/operation key;不提交 secret 或 credential IDs。
  • 根据 readmodel 显示 Authorizing / Active / Needs authorization / Revocation pending / Failed 等状态。
  • pause/resume/run-now/delete 全部走 scoped API,并验证错误状态不会泄漏跨 scope/team/member 资源存在性。

明确不做

  • 不调用 generic /api/schedules 访问 Team-owned automation;后端 generic route 会排除/拒绝 Team records。
  • 不调用 NyxID create-key。
  • 不展示、缓存、提交或测试快照保存 fullKey、OAuth token、SecretReferenceapiKeyId
  • 不把 accepted ACK 当 provisioning committed;UI 必须等待 readmodel/operation 状态。

验收

  • Team automation list/detail/create/update/delete/pause/resume/run-now 全部使用 scoped Team/member API。
  • 前端创建只发一个 Team/member scoped application command。
  • authorization_plan_changed 会刷新 plan 并要求重新 consent。
  • Needs authorization 可原地 reauthorize 且表单内容不丢失。
  • Revocation pending 不被显示成凭证已删除。
  • 所有测试 fixture 使用不同身份:m-alpha / wf-alpha / svc-alpha / sch-alpha / ak-alpha
  • 测试断言不会调用 /api/schedules 访问 Team-owned records。
  • 测试断言 payload/cache/snapshot 无 fullKey、OAuth token、SecretReferenceapiKeyId

⟦AI:AUTO-LOOP⟧

Metadata

Metadata

Assignees

Labels

crnd:human:autoController may continue without maintainer intervention.crnd:lifecycle:managedItem is managed by consensus-loop.crnd:milestone:currentMilestone-priority item.crnd:phase:mergedWork has landed.enhancementNew feature or requestfkst-class:standardservice-class-standard-display-onlyfkst-dev:enabledintake-approved-for-autonomous-developmentfkst:generatedcreated or managed by the Aevatar Frontend FKST devloop

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions