用途
Odoo Upgrade Advisor 是一个面向 Odoo 大版本升级的顾问型技能。Odoo 在主要版本之间(例如 v15 → v16 → v17)升级需要充分的准备、测试与验证,本技能提供结构化的升级前检查清单,引导使用升级工具(Odoo Upgrade Service 与 OpenUpgrade),并给出升级后的验证协议。
适用时机
- 规划 Odoo 大版本升级时。
- 识别哪些自定义模块需要迁移时。
- 在生产环境之前,先在预发布(staging)环境运行升级时。
- 升级完成后验证系统时。
使用方式
- 激活:提及 @odoo-upgrade-advisor,并说明当前版本与目标版本。
- 规划:获得完整的升级路线图与风险评估。
- 执行:获得分步的升级命令序列。
升级路径
| 从 | 到 | 是否支持 | 工具 |
|---|---|---|---|
| v16 | v17 | ✅ 直接升级 | Odoo Upgrade Service / OpenUpgrade |
| v15 | v16 | ✅ 直接升级 | Odoo Upgrade Service / OpenUpgrade |
| v14 | v15 | ✅ 直接升级 | Odoo Upgrade Service / OpenUpgrade |
| v14 | v17 | ⚠️ 多跳升级 | v14→v15→v16→v17(不能跳过) |
| v13 或更早 | 任意 | ❌ 不支持 | 需要手动迁移 |
主要能力与示例
升级前检查清单
开始之前:
- 列出所有已安装模块(设置 → 技术 → 模块),导出为 CSV,检查自定义/OCA 模块。
- 对照 OCA 兼容性矩阵检查每个社区模块:https://github.com/OCA/maintainer-tools/wiki/Migration-Status
- 做完整备份(数据库 + filestore),作为恢复点。
- 将生产环境克隆到预发布环境。
- 运行 Odoo Upgrade 预分析:https://upgrade.odoo.com/ → 上传数据库 → 查看破坏性变更报告。
- 对照迁移说明检查自定义模块(可使用 @odoo-migration-helper 做逐模块分析)。
- 在预发布环境升级并测试 → 修复所有错误 → 重新测试。
- 安排生产环境维护窗口。
- 通知用户计划停机时间。
- 执行生产升级 → 验证 → 做出 Go/No-Go 决策。
使用 OpenUpgrade 进行社区版升级
# Clone OpenUpgrade for the TARGET version (e.g., upgrading to v17)
git clone https://github.com/OCA/OpenUpgrade.git \
--branch 17.0 \
--single-branch \
/opt/openupgrade
# Run the migration against your staging database
python3 /opt/openupgrade/odoo-bin \
--update all \
--database odoo_staging \
--config /etc/odoo/odoo.conf \
--stop-after-init \
--load openupgrade_framework
# Review the log for errors before touching production
tail -200 /var/log/odoo/odoo.log | grep -E "ERROR|WARNING|Traceback"
升级后验证清单
升级后,在正式上线前验证以下关键领域:
会计:
- 试算平衡表合计与升级前快照一致。
- 未结发票、账单和付款可访问。
- 可对测试对账单执行银行对账。
库存:
- 库存估值报告与升级前一致(运行 Inventory Valuation)。
- 未结采购订单和销售订单可见。
HR / 薪酬:
- 所有员工记录完整。
- 最近 3 个月的工资单可访问且正确。
自定义模块:
- 每个自定义模块加载时无 ImportError 或 XML 错误。
- 端到端运行关键业务流程:创建销售订单 → 确认 → 发货 → 开票 → 付款。
用户与安全:
- 用户登录正常。
- 访问权限保留(抽查 3–5 个用户)。
最佳实践
- ✅ 始终先在生产的副本(预发布环境)上升级,绝不在实时实例上直接操作。
- ✅ 在新版本完全验证并签署确认之前,保持旧版本继续运行。
- ✅ 查看 OCA 迁移状态页面:OCA Migration Status。
- ✅ 在编写任何代码之前,使用 Odoo Upgrade Service 预分析报告获取破坏性变更列表。
- ❌ 不要跳过中间版本——Odoo 要求顺序升级(v14→v15→v16→v17)。
- ❌ 不要同时升级自定义模块和 Odoo 核心——先适配 Odoo 核心,再修复自定义模块。
- ❌ 不要直接对生产环境运行 OpenUpgrade——始终先在预发布副本上测试。
限制
- 仅覆盖 v14–v17。v13 及更早版本的模块结构有根本差异,需要手动迁移。
- 企业版专属模块变更(例如 sign、account_accountant)可能存在 OpenUpgrade 未包含的未记录破坏性变更。
- Odoo.sh 自动升级路径有单独的工作流(从 Odoo.sh 仪表板管理),本技能不覆盖。
- OWL JavaScript 组件迁移(旧版 widget → OWL v16+)属于复杂的前端主题,超出本技能范围。