手动补 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 列显示
- 不影响站点实际运行