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
No description provided
Readme 4.8 MiB
Languages
Vue 62%
Python 23.4%
TypeScript 6.9%
JavaScript 4.3%
Go 1.9%
Other 1.4%