Skip to content

[portal] record detail URL scheme + share-link 协议(GAP-7 of #1294) #1337

@xuyushun441-sys

Description

@xuyushun441-sys

现象

#1294 spec 的 navigation[] 只列出 list view 入口,没声明用户点开一条记录的 detail URL 长什么样

复现

  1. 客户在 My Tickets 列表点开一行
  2. 期望 URL 类似 /portal/helpdesk/ticket/<id>
  3. 实际:spec 没规定。
    • /portal/helpdesk/_object/helpdesk_ticket/<id>(暴露内部对象名)?
    • /portal/helpdesk/view/<view_id>/<record_id>(不直观)?
    • /portal/helpdesk/ticket/<id>(漂亮但谁定义"ticket"这个 segment)?

也影响 share-link:客户想把工单链接发给同事,没有 URL 协议就没有可分享 link。

Workaround

模板作者只能等框架定,或写 plugin layout 自己路由。

分阶段建议

M2(用户体验必须):portal 级 URL 模板。

PortalSchema 新增:
recordUrlScheme?: {
  // 选项 1:约定俗成
  style?: 'object-slug' | 'view-id';
  // 选项 2:模板作者完全自定义
  pattern?: string;   // e.g. '/ticket/{record.id}',{record.<field>} 占位符

  // 哪些对象在该 portal 暴露 detail view
  objects?: Array<{
    objectName: string;
    slug?: string;                            // URL segment, e.g. 'ticket' for helpdesk_ticket
    detailViewRef: string;                    // 渲染哪个 view
    shareableByPortalUsers?: boolean;         // 用户能否生成 share-link
    shareTokenTtl?: string;                   // share-link 有效期,默认 '7d'
  }>;
};

运行时:

  • 列表行点击 → 按 scheme 生成 URL → 路由到 detailViewRef
  • share-link:/portal/helpdesk/ticket/<id>?share_token=<JWT>,token 由 record sharing 校验

验收

  • 模板声明 slug: 'ticket' → 客户访问 /portal/helpdesk/ticket/123 看到详情
  • 客户点「分享」生成短链,未注册同事打开能看(受 share_token TTL 限制)

关联

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions