Nexora ERPNext 迁移战略
2026-04-18 确定:5 个 PHP 老 ERP 系统(pyerp / xipu / xylferp / hxerp / hjhs)合并迁移到 ERPNext + nexora_jewelry Custom App 统一平台;妈祖/莱雅保留 CRMEB;Casdoor 做统一 SSO。
背景 — 2026-04-18 全面体检
各项目代理按四部分结构出具深度分析报告(可用性 / 模块清单 / 技术栈 / 重做可行性),结论一致:5 套 PHP ERP 不值得继续维护。
| 系统 | 代码质量 | 数据量 | 诊断 |
|---|---|---|---|
| 超级 ERP (pyerp) | 3/10 | 9.45 MB / 147 表 | 点可云 V7 二开,PHP 7.4 EOL,贵金属子系统完成度 <30%,登录路由崩溃,沉没成本接近零 |
| 囍铺 ERP (xipu) | 4/10 | ~291 MB / 110 表 | ThinkPHP 6 自研,巨型 Controller(ApiMy.php 3302 行),Kotlin 移动端服务停止 |
| 妈祖商城 (mazugift) | 3/10 | ~60 MB / 386 表 | 点大商城 V2 魔改,80% 是餐饮/课程/论坛等无关模块 |
| 莱雅商城 (laiya) | 4/10 | 303.6 MB / 199 表 | ShopXo 二开,近 30 天仅 11 单,囍铺耦合严重(金价/金属联系人表) |
| 小系统(xylferp/hxerp/hjhs) | 3-5/10 | 极小 | xylferp 与超级 ERP 同源;hjhs 黄金回收业务仅 5 张表却背了 CRMEB 整套电商 |
冒烟测试结果全部 🟡 半可用:域名+容器健康,但业务流程因密码/路由/缓存问题实际跑不通。Admin 密码统一为 Nx@ERP2026!(记录在 Outline Wiki → 账号与访问信息)。
技术选型(2026-04-18 定稿)
| 系统角色 | 选型 | 语言 | 说明 |
|---|---|---|---|
| 统一 ERP | ERPNext + Frappe v16 | Python | 采购/销售/库存/财务/POS 一站式 |
| 珠宝行业扩展 | nexora_jewelry Custom App | Python/Frappe | 贵金属业务(金价/克重/成色/存金/提纯) |
| 电商商城 | CRMEB PHP 标准版 × 2 实例 | PHP | 妈祖/莱雅独立实例(Java 多商户版闭源已放弃) |
| 统一 SSO | Casdoor | Go | OIDC Provider,替代各系统独立账号 |
| 小程序前端 | uni-app x | TypeScript | 未来重做 C 端 |
迁移工作量(8-10 周 / 主项)
| 阶段 | 周期 | 主要工作 |
|---|---|---|
| Week 1-2 | 环境与主数据 | ERPNext 生产环境、客户/供应商/商品导入脚本 |
| Week 3-6 | nexora_jewelry Custom App | Gold Price / Material Buyback / Customer Metal Account / Purity Order / Factory Settlement 等 DocType |
| Week 7 | 进销存定制 | Sales/Purchase Invoice Item 加珠宝 Custom Field,Server Script 自动算价 |
| Week 8 | UAT + 迁移演练 | 至少一次完整数据迁移 dry run |
| Week 9 | 正式上线 | Big Bang 一次性切换(避免双系统数据不一致) |
| Week 10 | 上线后支持 | 迭代与培训 |
数据迁移策略:
- 主数据 ETL(客户/供应商/商品)
- 期初余额导入(库存 / 应收应付 / 客户存金)
- 历史订单放弃迁移,旧系统封存备查(结构差异大、ROI 低)
nexora_jewelry Custom App 核心 DocType
2026-04-18 下午由 nexora-pyerp 在 ERPNext 测试环境完成可演示骨架:
| DocType | 作用 |
|---|---|
| Gold Price Daily | 金价日牌(purity_999/purity_990/purity_916/craft_fee_per_gram) |
| Jewelry Item Detail | 子表(gold_weight/purity/day_price/craft_fee/subtotal) |
| Customer Metal Account | 客户存金 / 欠金 / 存石(核心中的核心) |
| Material Buyback | 旧料回收单 |
| Purity Order | 提纯单(含融损 wastage 计算) |
| Factory Settlement | 工厂结算单 |
Sales Invoice Item 增加 Custom Fields:gold_weight / purity / day_gold_price / craft_fee。Server Script “Jewelry Auto Price Calculator”:填完克重+成色 → 自动拉当日金价 × 克重 + 工费 → 写入 rate/amount。示范 Sales Invoice ACC-SINV-2026-00008 金额 (680+80)×5.32 = ¥4,043.20 自动算出 ✅。
部署坑:ERPNext 生产 Docker 是多容器(backend/frontend/scheduler/worker…)共享 image 但 apps 目录是本地文件系统(非 volume mount),bench new-app 只在 backend 容器生效,其他 worker 加载不到 Python 模块导致全站 ModuleNotFoundError。解决方案:放弃独立 Python app,改用 Custom DocType + Custom Field + Server Script 方式(功能等价,不需自建镜像)。
生产部署现状
| 服务 | 地址 | 凭据 | 状态 |
|---|---|---|---|
| ERPNext | https://erpnext.nexora.restry.cn | Administrator / Nexora@2026 | ✅ v16.14.0,9 个容器 ~717 MB |
| Casdoor SSO | https://sso.nexora.restry.cn | admin / Nexora@2026 | ✅ 已集成 ERPNext 登录 |
| CRMEB 妈祖 | https://crmeb-mazu.nexora.restry.cn | admin / Nexora@2026 | ✅ v6.0.0(CRMEB-KY),~101 MB |
| CRMEB 莱雅 | 暂缓 | — | 等 ERP 业务梳理完再做 |
Casdoor ↔ ERPNext OIDC 集成要点:
- Application
app-erpnext,ERPNext 登录页已出现”通过 Casdoor 登录”按钮 - 需在 ERPNext
site_config.json设host_name才能生成正确 authorize URL - 需在 Social Login Key 勾选
custom_base_url=1 - Frappe 通过 REST API 创建 Social Login Key 时
client_secret加密异常 → 改用bench console命令行创建 - Casdoor 默认密码通过
update-userAPI 无法修改 → 直接 UPDATE 数据库 bcrypt hash
发现的新账号问题
系统里用户名是 resley@qq.ccom(多了一个 c),Daddy 给的 resley@qq.com 登不上。当前统一用 Administrator / Nexora@2026。
后续策略调整(2026-04-20)
Resley 决定:迁移工作不打断老系统维护,改由专职代理推进——
- 新建
nexora-migration(建议命名,另一候选nexora-newarch)子代理,唯一职责:规划并推进 5 套老 PHP ERP → ERPNext + nexora_jewelry + CRMEB + Casdoor 的迁移工程;由 🦞 nexora (main) 创建并编排 - 模型沿用
github-copilot/claude-opus-4.6,与现有业务线代理一致 - 长期记录区:Outline 独立集合(不能忘) + workspace 里
MIGRATION-ROADMAP.md - 当前阶段两件最重要的事:
- 把老系统(5 套 PHP ERP + 妈祖/莱雅商城)的业务逻辑彻底梳理清楚——表结构、字段含义、业务流程、隐含规则、各种魔改的”为什么”
- 然后在新架构(ERPNext + nexora_jewelry + CRMEB + Casdoor)上重新设计并逐步实现
- 当前重心仍是维护好老系统(pyerp 容器排查、妈祖 302 + SSH 阻塞优先)
- 9 个 Nexora agent 健康检查(
POST /api/chat)04-20 全员在线,4/17-4/20 期间 Nexora channel 静默无新动作 - 04-20 同步广播:
git.xipugold.com废弃,gitlab.nexora.restry.cn成为唯一代码来源,全体代理切换 origin 并写入长期记忆(详见 nexora-gitlab-sync)
整体方案不变(ERPNext + nexora_jewelry + CRMEB + Casdoor),只是节奏放缓、责任明确。
相关页面
- nexora-platform — 平台服务全景
- nexora-ops — 部署执行方
- nexora-pyerp — Custom App 开发方
- nexora-vendor-mirror — 开源项目内部镜像
- casdoor — SSO Provider
- nexora-putian-transformation — 上一轮平台迁移