现象
#1294 spec 的 navigation[] 只列出 list view 入口,没声明用户点开一条记录的 detail URL 长什么样。
复现
- 客户在 My Tickets 列表点开一行
- 期望 URL 类似
/portal/helpdesk/ticket/<id>
- 实际: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 限制)
关联
现象
#1294 spec 的
navigation[]只列出 list view 入口,没声明用户点开一条记录的 detail URL 长什么样。复现
/portal/helpdesk/ticket/<id>/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 模板。
运行时:
/portal/helpdesk/ticket/<id>?share_token=<JWT>,token 由 record sharing 校验验收
slug: 'ticket'→ 客户访问/portal/helpdesk/ticket/123看到详情关联