手动补 plan 字段

手动给 tabSite 表的 plan 字段填入 “Frappe Team”,修复 Press 列表页 Plan 列显示空白的问题。


1. 归属

问题答案
属于哪个仓库?不涉及源码。操作的是 Press DB 里的 tabSite
在容器内路径?无。通过 bench execute 直接改 DB
在构建链的哪一步?不是构建问题。是手动迁移后 Press DB 记录不完整

2. 功能解释

plan 字段是什么?

每个 Site 记录关联一个 Plan(计费计划)。Press 是多租户 SaaS 平台,不同 Plan 有不同配额(站点数、存储、app 数)。创建站点时必须选 Plan。

为什么自建 Press 的 plan 为空?

site.insert() 时未指定 plan 字段。Frappe Cloud 在 UI 创建站点时强制选 Plan,自建实例手动调用 API 时漏掉了。


3. 为什么会出现这个问题

同根源:绕过了官方的 restore() API,手动 site.insert() 创建记录。site.insert() 时只填了 subdomain、server、bench 等核心字段,没填 plan。官方 API 创建或恢复站点时不会漏这个字段。


4. 补丁/修改做了什么

frappe.db.set_value('Site', 'gottenergy.getgrowth.app', 'plan', 'Frappe Team')

Frappe Team 是 Press 内置的免费 Plan(demo1/demo2 用的也是这个)。


5. 性质判断

轻度 workaround。改的是业务字段而非状态机字段,比 Agent Job手动标Success 和 creation_failed手动清 轻得多。但仍然是绕过正常流程的 DB 直接修改。


6. 正确做法

部署完 Press-B 后,先在 Press 中创建好 Plan,再创建站点。或者 site.insert() 时直接指定 plan 字段。走正常流程根本不会碰到这个问题。


7. 影响范围

  • 仅影响 Press UI 列表页的 Plan 列显示
  • 不影响站点实际运行