用途:该技能用于配置 Frappe/ERPNext 应用的 hooks.py,让自定义应用扩展框架功能,涵盖文档事件、定时任务、启动数据注入、fixtures、权限、控制器覆盖与网站路由等场景。
主要能力:doc_events 可挂钩其他应用的 DocType 生命周期(validate、on_update、after_insert、on_submit、on_cancel、on_trash 等),支持通配符 * 与多处理器;scheduler_events 支持 hourly、daily、weekly、monthly、hourly_long、daily_long 及 cron 表达式;extend_bootinfo 向客户端 frappe.boot 注入数据;override_doctype_class 与 override_whitelisted_methods 覆盖控制器和 API;permission_query_conditions 与 has_permission 定制权限;fixtures 导出配置;app_include_js/css、web_include_js/css、doctype_js 引入资源;after_install、after_migrate 处理安装迁移。
使用方式:在 hooks.py 中按字典或列表注册处理函数,函数定义在对应模块中。修改 scheduler 后必须执行 bench --site sitename migrate;导出 fixtures 用 bench --site sitename export-fixtures。
限制与规则:doc_events 中不要调用 frappe.db.commit();on_update 后修改字段应使用 frappe.db.set_value;耗时任务放入 _long 队列;任务函数不接收参数;覆盖控制器必须调用 super();permission_query_conditions 仅对 get_list 生效,不适用于 get_all;fixtures 应加过滤条件;bootinfo 不应放敏感数据。extend_doctype_class 仅 Frappe v16+ 支持,v14/v15 使用 override_doctype_class。多个应用覆盖同一 DocType 时最后安装者生效。