wenhongquan před 7 měsíci
rodič
revize
036067fcc5
4 změnil soubory, kde provedl 212 přidání a 42 odebrání
  1. 175 0
      ERPNext_v15_INSTALLATION_GUIDE.md
  2. 17 7
      INSTALLATION_FIX_GUIDE.md
  3. 3 29
      uperp/config/uperp.py
  4. 17 6
      uperp/install.py

+ 175 - 0
ERPNext_v15_INSTALLATION_GUIDE.md

@@ -0,0 +1,175 @@
+# ERPNext v15 Uperp 应用安装指南
+
+## 针对 ERPNext v15 的特殊处理
+
+ERPNext v15 对桌面和菜单系统进行了重构,之前版本的一些命令已经不再适用。
+
+### 📋 ERPNext v15 安装步骤
+
+```bash
+# 1. 进入 bench 目录
+cd /path/to/your/bench
+
+# 2. 卸载现有应用(如果已安装)
+bench uninstall-app uperp
+
+# 3. 重新安装应用
+bench install-app uperp
+
+# 4. 重启服务
+bench restart
+
+# 5. 清除缓存 (ERPNext v15 推荐方法)
+bench clear-cache
+bench clear-website-cache
+
+# 6. 重新构建静态资源
+bench build
+
+# 7. 手动清除桌面相关缓存
+bench execute "frappe.cache().delete_key('desktop_icons')"
+bench execute "frappe.cache().delete_key('bootinfo')"
+bench execute "frappe.clear_cache()"
+```
+
+### 🔍 ERPNext v15 故障排除
+
+#### 问题1: 主页菜单不显示 Uperp 模块
+
+**可能原因:**
+- 桌面缓存没有清除
+- 浏览器缓存问题
+- 应用配置有误
+
+**解决方案:**
+
+```bash
+# 步骤1: 清除服务器端缓存
+bench execute "frappe.clear_cache()"
+bench execute "frappe.cache().delete_key('desktop_icons')"
+bench execute "frappe.cache().delete_key('bootinfo')"
+
+# 步骤2: 重启服务
+bench restart
+
+# 步骤3: 强制清除浏览器缓存
+# Chrome/Edge: Ctrl+Shift+R (Windows) 或 Cmd+Shift+R (Mac)
+# Firefox: Ctrl+F5 (Windows) 或 Cmd+Shift+R (Mac)
+
+# 步骤4: 检查应用是否正确安装
+bench execute "import frappe; print('uperp' in frappe.get_installed_apps())"
+```
+
+#### 问题2: 页面无法访问 (/test)
+
+**检查步骤:**
+
+```bash
+# 检查页面模板是否存在
+ls -la apps/uperp/uperp/templates/pages/
+
+# 检查路由配置
+bench execute "import frappe; print(frappe.get_hooks('page_js'))"
+
+# 检查权限函数
+bench execute "from uperp.uperp.api import has_app_permission; print(has_app_permission())"
+```
+
+#### 问题3: 静态资源404错误
+
+```bash
+# 重新构建静态资源
+bench build
+
+# 检查静态文件是否存在
+ls -la sites/assets/uperp/
+
+# 如果不存在,手动链接
+bench setup requirements
+bench build
+```
+
+### 🎯 ERPNext v15 特有功能
+
+#### 工作区(Workspace)集成
+
+ERPNext v15 引入了工作区概念,如果需要更好的集成,可以创建工作区配置:
+
+```python
+# 在 uperp/config/ 目录下创建 workspace.py
+def get_data():
+    return [
+        {
+            "module_name": "Uperp",
+            "category": "Modules",
+            "label": "Uperp",
+            "color": "#667eea",
+            "icon": "octicon octicon-gear",
+            "type": "module",
+            "description": "Uperp 应用管理"
+        }
+    ]
+```
+
+#### 新的缓存清除方法
+
+ERPNext v15 推荐使用以下方法清除缓存:
+
+```bash
+# 清除所有缓存
+bench execute "frappe.clear_cache()"
+
+# 清除特定缓存键
+bench execute "frappe.cache().delete_key('desktop_icons')"
+bench execute "frappe.cache().delete_key('bootinfo')"
+
+# 清除工作区缓存
+bench execute "frappe.cache().delete_key('workspace_sidebar_items')"
+```
+
+### 📱 验证安装成功
+
+完成安装后,按以下顺序验证:
+
+1. **检查应用列表**
+   ```bash
+   bench execute "print(frappe.get_installed_apps())"
+   ```
+
+2. **检查页面访问**
+   - 访问: `http://your-site/test`
+   - 确认页面正常加载
+
+3. **检查API功能**
+   - 在测试页面点击"测试连接"按钮
+   - 确认数据正常加载
+
+4. **检查菜单显示**
+   - 登录 ERPNext
+   - 在主页左侧菜单查找 "Uperp" 模块
+   - 或在应用页面查找 "Uperp" 应用
+
+### ⚠️ 常见注意事项
+
+1. **浏览器缓存**: ERPNext v15 大量使用前端缓存,务必强制刷新浏览器
+2. **权限检查**: 确保当前用户有足够权限访问新模块
+3. **静态资源**: 修改CSS/JS后必须运行 `bench build`
+4. **开发模式**: 如果处于开发模式,某些缓存可能不会自动清除
+
+### 🔧 开发模式设置
+
+如果你在开发环境中,建议启用开发模式:
+
+```bash
+# 启用开发模式
+bench set-config developer_mode 1
+
+# 重启服务
+bench restart
+```
+
+开发模式下,静态资源会自动重新构建,缓存策略也会有所不同。
+
+---
+
+完成这些步骤后,你应该能在 ERPNext v15 中成功看到和使用 Uperp 应用了。

+ 17 - 7
INSTALLATION_FIX_GUIDE.md

@@ -20,7 +20,7 @@
 - 创建了 `install.py` 文件
 - 在安装后自动刷新桌面和缓存
 
-## 重新安装步骤
+## 重新安装步骤 (ERPNext v15)
 
 为了让所有配置生效,请按以下步骤重新安装应用:
 
@@ -37,15 +37,17 @@ bench install-app uperp
 # 4. 重启所有服务
 bench restart
 
-# 5. 清除所有缓存
+# 5. 清除所有缓存 (ERPNext v15)
 bench clear-cache
 bench clear-website-cache
 
 # 6. 重新构建资源
 bench build
 
-# 7. 重新生成桌面
-bench execute frappe.desk.desktop.sync_desktop
+# 7. 手动清除桌面缓存 (ERPNext v15 方法)
+bench execute "frappe.cache().delete_key('desktop_icons')"
+bench execute "frappe.cache().delete_key('bootinfo')"
+bench execute "frappe.clear_cache()"
 ```
 
 ## 验证步骤
@@ -70,12 +72,20 @@ bench execute frappe.desk.desktop.sync_desktop
 
 ## 可能的问题和解决方案
 
-### 问题1: 菜单仍然不显示
+### 问题1: 菜单仍然不显示 (ERPNext v15)
 解决方案:
 ```bash
-bench execute frappe.clear_cache
-bench execute frappe.desk.desktop.sync_desktop
+# 方法1: 清除缓存
+bench execute "frappe.clear_cache()"
+bench execute "frappe.cache().delete_key('desktop_icons')"
+bench execute "frappe.cache().delete_key('bootinfo')"
 bench restart
+
+# 方法2: 强制刷新浏览器 (Ctrl+F5 或 Cmd+Shift+R)
+# 并清除浏览器缓存
+
+# 方法3: 检查模块是否正确注册
+bench execute "import frappe; print(frappe.get_installed_apps())"
 ```
 
 ### 问题2: 权限错误

+ 3 - 29
uperp/config/uperp.py

@@ -7,39 +7,13 @@ def get_data():
     """
     return [
         {
-            "label": _("测试功能"),
+            "label": _("Uperp 功能"),
             "items": [
                 {
                     "type": "page",
                     "name": "test",
-                    "label": _("测试页面"),
-                    "description": _("演示页面,展示数据请求和显示功能"),
-                    "route": "/test"
-                },
-                {
-                    "type": "report",
-                    "name": "Test Report",
-                    "label": _("测试报表"),
-                    "description": _("测试报表功能"),
-                    "is_query_report": True,
-                    "reference_doctype": "User"
-                }
-            ]
-        },
-        {
-            "label": _("系统管理"),
-            "items": [
-                {
-                    "type": "doctype",
-                    "name": "User",
-                    "label": _("用户管理"),
-                    "description": _("系统用户管理")
-                },
-                {
-                    "type": "page",
-                    "name": "test",
-                    "label": _("API测试"),
-                    "description": _("API接口测试页面"),
+                    "label": _("Uperp 测试页面"),
+                    "description": _("Uperp 演示页面,展示数据请求和显示功能"),
                     "route": "/test"
                 }
             ]

+ 17 - 6
uperp/install.py

@@ -4,18 +4,29 @@ from frappe import _
 
 def after_install():
     """
-    应用安装后的处理
+    应用安装后的处理 - 适配 ERPNext v15
     """
     try:
-        # 清除缓存,重新生成桌面
+        # 清除缓存
         frappe.clear_cache()
 
-        # 重新构建桌面
-        from frappe.desk.desktop import sync_desktop
-        sync_desktop()
+        # ERPNext v15 中重新加载桌面的方法
+        # 重建桌面图标
+        from frappe.desk.desktop import get_desktop_page
+
+        # 清除桌面缓存
+        frappe.cache().delete_key('desktop_icons')
+        frappe.cache().delete_key('bootinfo')
+
+        # 重新生成工作区(ERPNext v15 的新特性)
+        try:
+            from frappe.desk.workspace import get_workspace_sidebar_items
+            frappe.cache().delete_key('workspace_sidebar_items')
+        except ImportError:
+            pass
 
         # 显示成功消息
-        frappe.msgprint(_("Uperp 应用安装成功!请刷新页面查看新的菜单。"))
+        frappe.msgprint(_("Uperp 应用安装成功!请刷新浏览器页面查看新的菜单。"))
 
     except Exception as e:
         frappe.log_error(f"Uperp 安装后处理失败: {str(e)}")