Skip to content

[portal] 匿名提交后缺少 onSuccess 跳转 + 短期 token 协议(GAP-1 of #1294) #1331

Description

@xuyushun441-sys

现象

匿名访客通过 /portal/<id>/submit 提交工单后,没有"提交成功 → 跳到工单状态页"的协议字段。当前只有 bindIdentityFromField 把邮箱绑定到 magic-link,但 magic-link 是异步的(用户要先去查邮件)。

复现(按 #1294 spec 走完整流程)

  1. 匿名访客填表 → action helpdesk_ticket.create 成功 → ticket 🔗 Broken links detected in documentation #123 创建
  2. 用户期望:立刻在浏览器看到「工单 🔗 Broken links detected in documentation #123 已创建,状态:处理中」
  3. 实际:spec 没说跳哪。落到空白页/原表单?

Workaround

模板作者在 action 的 success handler 里硬编码 redirect — 但这违反「零业务代码」原则。

分阶段建议

M2(生产可用前必须补):

  • PortalAnonymousRouteSchema 新增 onSuccess:
    onSuccess?: {
      showView?: string;                       // viewRef,detail 或 list
      showRecordCreated?: boolean;             // 自动跳到新创建记录的 detail
      ephemeralToken?: { ttl: string };        // 颁发短期 token 让匿名用户在 ttl 内回访
      message?: I18nLabel;                     // 「已提交,请查收邮件」
    }
  • ephemeralToken 写入 cookie/URL,data API 校验时把它视为 system.anonymous 的临时 elevated 身份

验收

  • helpdesk 模板里声明 onSuccess.showRecordCreated: true 后,匿名提单 → 自动跳 /portal/helpdesk/ticket/<id>?t=<ephemeral_token> → 看到工单详情,刷新 24h 内仍有效

关联

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestpriority:p0Critical: blocker, must ship before MVP

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions