Helpdesk 对外服务最容易被低估的,是“客户到底能看到什么”。很多人以为给个 portal 链接就完了,但企业版其实把团队可见性、关注者关系、access token 和客户关单动作拆成了好几层。
参考入口:
enterprise/helpdesk/controllers/portal.pyenterprise/helpdesk/tests/test_helpdesk_team_privacy_visibility.pyenterprise/helpdesk/tests/test_helpdesk_mail_features.py
一、team 的 privacy_visibility 先决定大边界
测试清楚区分了三种语义:
internal:内部帮助台用户可见,portal 用户即使关注也不自动有权限;invited_internal:只有被邀请/关注的内部用户能看,普通 helpdesk user 也可能看不到;portal:portal 用户只有在成为团队或工单 follower 后才可见。
所以 visibility 不是“门户开没开”,而是“什么身份 + 什么关注关系”才有访问资格。
二、portal share 的本质不是发邮件,而是加 follower
test_ticket_portal_share_adds_followers 说明 portal 分享向导真正改变的是 message_partner_ids。邮件只是通知手段;真正决定后续能否看到工单的,是接收方是否被纳入 follower 集合。
三、门户关单也不是万能动作
ticket_close() 先检查 allow_portal_ticket_closing,再把工单推进到团队 closing stage,并写 closed_by_partner=True。同时系统还会发一条 note 记录“客户关闭了工单”。
也就是说,客户关单不是随便改状态,而是走了受团队配置约束、带审计日志的路径。
四、搜索/列表页权限仍回到 domain
门户 /my/tickets 的搜索、过滤、分组都建立在 _prepare_helpdesk_tickets_domain() 和 _document_check_access() 之上。URL 存在,不等于你能越权搜到别人的单。
五、实战建议
- 对外支持中心要先定 visibility 策略,再发分享链接。
- 不要把“收到了邮件”误当“已经有 portal 权限”。
- 如果允许客户自助关单,要同步设计 closing stage、复开策略和消息留痕。
六、结论
Helpdesk 门户真正开放的是一套受 visibility、followers 和 team policy 约束的客户协作面,而不是一条裸链接。谁能看、谁能关、谁只是被通知,必须分清。
DISCUSSION
评论区