企业帮助中心要解决的不是“给客户一个知识库链接”,而是确保某个支持团队看到的是正确文章树、正确搜索结果,以及不会被运营误操作下线。
核心链路
- 在
models/helpdesk.py中,team 上的website_article_id是整个帮助中心的锚点。_compute_show_knowledge_base_article()先确认站上至少有可发布文章,再决定帮助页是否展示“Articles”入口。 _compute_latest_articles()并不是按创建时间简单取最新,而是按favorite_count desc, write_date desc取前 5。换句话说,帮助中心首页默认更偏向“高频被收藏的有效答案”,而不是最新编辑的内容。- 控制器
controllers/main.py的access_helpdesk_knowledge_home()会把/helpdesk/<team>/knowledge/home重定向到 team 绑定文章的website_url。因此一个 helpdesk team 对外公开的知识库入口,实际是“某篇文章及其子树”。 - 真正的搜索裁剪发生在
knowledge_article._search_get_detail():当 options 里带上 helpdesk team 时,base_domain 会被重写成“当前锚点文章本身或其 root_article_id 等于锚点”。这一步把全站知识库搜索收窄成一棵树。 knowledge_article.write()还加了防线:若某篇文章正被 helpdesk team 用作website_article_id,你不能直接取消发布、归档或改成子文章。企业版是用模型约束保护帮助中心入口稳定,而不是靠运营自觉。
关键源码位置
/home/ubuntu/odoo-temp/enterprise/website_helpdesk_knowledge/models/helpdesk.py/home/ubuntu/odoo-temp/enterprise/website_helpdesk_knowledge/controllers/main.py/home/ubuntu/odoo-temp/enterprise/website_helpdesk_knowledge/models/knowledge_article.py
容易误解的地方
- 误区一:帮助中心知识库搜索的是全站所有文章。实际上开启 helpdesk 语境后会被限定到锚点文章树。
- 误区二:最新文章就是按时间倒序。这里优先级是 favorite_count,其次才是 write_date。
- 误区三:换个父文章结构不会影响帮助中心。源码明确把“改 parent”视为破坏入口稳定性的动作。
实战注意事项
- 不要把
website_article_id指向一篇临时运营文章,应该指向稳定的根节点或总览页。 - 如果需要重组知识树,先给 team 换新的根文章,再调整旧树结构。
- 分析帮助中心搜索命中不准时,优先检查 helpdesk 请求里的
options[helpdesk]是否把搜索域裁窄了。
结语
企业版这些代码共同说明一件事:真正可上线的业务流程,靠的不是“页面上看起来能点通”,而是权限、状态、时机、对账口径和跨模块回写都被收紧。理解这些边界,实施和二开时就不容易走进“功能演示能跑、真实业务一用就散”的坑。
DISCUSSION
评论区