Jingrow Local - 本地版 Jingrow 框架
🎯 项目简介
Jingrow Local 是基于 FastAPI + Vue 3 开发的本地版 Jingrow 框架,提供与 SaaS 版完全一致的开发体验。开发者可以在本地开发 PageType 和 App,然后直接打包发布到 SaaS 版应用市场。
🏗️ 目录结构
jingrow_local/
├── backend/
│ ├── apps/ # 应用目录(平级结构)
│ │ └── jingrow/ # Jingrow 核心应用
│ │ ├── jingrow/ # 核心模块
│ │ │ ├── __init__.py # SDK 入口
│ │ │ ├── model/ # 数据模型
│ │ │ │ ├── document.py
│ │ │ │ ├── meta.py
│ │ │ │ └── db_query.py
│ │ │ ├── adapters/ # 适配器
│ │ │ │ ├── hybrid_adapter.py
│ │ │ │ ├── saas_adapter.py
│ │ │ │ └── local_adapter.py
│ │ │ ├── utils/ # 工具函数
│ │ │ ├── core/ # 核心功能
│ │ │ │ └── pagetype/
│ │ │ │ └── customer/
│ │ │ │ └── customer.py
│ │ │ ├── ai/ # AI 功能
│ │ │ │ └── pagetype/
│ │ │ │ └── local_ai_agent/
│ │ │ │ └── local_ai_agent.py
│ │ │ └── exceptions.py # 异常定义
│ │ ├── hooks.py # 应用钩子
│ │ └── setup.py # 应用配置
│ ├── app/ # FastAPI 应用
│ │ ├── main.py
│ │ └── routes/ # API 路由
│ │ └── dynamic_router.py # 动态路由处理
│ └── requirements.txt
└── frontend/ # Vue 3 前端
├── src/
└── package.json
🚀 核心特性
1. 完全兼容的 API 接口
# 与 SaaS 版完全一致的开发方式
import jingrow
from jingrow.model.page import Page
class Customer(Page):
def validate(self):
if not self.customer_name:
jingrow.throw("验证错误", "客户名称不能为空")
def on_update(self):
# 更新时的业务逻辑
pass
2. 双模式支持
- API 模式: 通过 API 操作 Jingrow SaaS 版数据
- 本地模式: 直接操作本地安装的 MariaDB/PostgreSQL 数据库
- 灵活切换: 可以根据需要切换不同的数据源
3. Jingrow 风格路由
/api/action/jingrow.core.pagetype.system_settings.system_settings.load
3. 应用市场兼容
- ✅ 本地开发的 App 和 PageType 可以直接打包发布到 SaaS 版应用市场
- ✅ 目录结构完全一致
- ✅ 代码实现完全一致
📦 安装和使用
1. 安装依赖
cd backend
pip install -r requirements.txt
3. 配置环境
# 复制环境配置文件
cp env.example .env
# 编辑数据库配置
vim .env
4. 启动服务
# 启动后端
cd backend
python -m uvicorn app.main:app --reload --host 0.0.0.0 --port 8000
# 启动前端
cd frontend
npm install
npm run dev
🔧 开发指南
1. 创建自定义 PageType
# backend/apps/jingrow/jingrow/core/pagetype/my_pagetype/my_pagetype.py
import jingrow
from jingrow.model.page import Page
class MyPageType(Page):
def validate(self):
# 验证逻辑
pass
def on_update(self):
# 更新逻辑
pass
2. 创建自定义应用
# backend/apps/my_app/my_app/pagetype/my_pagetype/my_pagetype.py
import jingrow
from jingrow.model.page import Page
class MyPageType(Page):
def validate(self):
# 验证逻辑
pass
3. 配置适配器
# 在应用启动时配置
import jingrow
# API 模式(通过 API 操作 SaaS 版数据)
jingrow.configure(mode="api",
api_url="https://api.jingrow.com",
api_key="your_api_key",
api_secret="your_api_secret")
# 本地模式(直接操作本地数据库)
jingrow.configure(mode="local",
db_host="localhost",
db_port="3306",
db_name="jingrow_local",
db_user="root",
db_password="your_password")
🎯 与 SaaS 版的兼容性
完全一致的开发体验
- ✅ 相同的
import jingrow方式 - ✅ 相同的
from jingrow.model.page import Page方式 - ✅ 相同的 PageType 开发模式
- ✅ 相同的应用目录结构
- ✅ 相同的钩子函数
直接发布到应用市场
本地开发的 App 和 PageType 可以直接打包发布到 SaaS 版应用市场,无需任何修改。
📝 许可证
Copyright (c) 2025, JINGROW and contributors For license information, please see license.txt
Description
Languages
Vue
62%
Python
23.4%
TypeScript
6.9%
JavaScript
4.3%
Go
1.9%
Other
1.4%