Skip to content

Commit 7df1e45

Browse files
committed
feat(functions): 将边缘函数重构为云函数并实现函数认证提供商
- 将所有文档中的"边缘函数"术语替换为"云函数" - 替换 ScriptAuthProvider 为 FunctionAuthProvider,实现基于云函数的认证 - 更新函数相关注释和描述,统一使用云函数命名 - 修改前端界面,将脚本认证改为云函数认证选择器 - 更新国际化配置,添加云函数相关翻译项 - 调整函数端点显示格式,使用完整的运行时API路径 - 更新调度模块,将边缘函数执行任务改为云函数执行任务 - 修改类型定义,将认证提供商类型从script改为function
1 parent 73f84bc commit 7df1e45

21 files changed

Lines changed: 90 additions & 121 deletions

‎AGENTS.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ Flexmodel — 面向下一代应用的统一数据访问层,基于 Java 25 + Q
1010
| `flexmodel-server/` | 后端服务(Quarkus 3,REST/GraphQL/SSE/MCP,特性垂直分包) |
1111
| `flexmodel-ui/` | 前端 UI(React + TypeScript + Ant Design v6 + Vite) |
1212
| `flexmodel-website/` | 文档站(Docusaurus) |
13-
| `flexmodel-sidecar/` | 边缘函数运行时(Deno + Hono.js,Worker 隔离执行) |
13+
| `flexmodel-sidecar/` | 云函数运行时(Deno + Hono.js,Worker 隔离执行) |
1414

1515
## Startup Workflow
1616

‎README.md‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ Flexmodel 旨在为开发者提供一个开源、灵活且高度可定制的后
1818
- 📂 **对象存储 (Storage)** - 抽象化的对象存储接口,支持 S3、OSS 及本地存储。
1919
- 🔐 **身份认证 (Auth)** - 完整的 RBAC 权限体系、多租户支持及 JWT 安全验证。
2020
- 🤖 **AI 工具集成 (MCP)** - 基于 MCP 协议开放核心工具,让 AI 客户端直接管理数据。
21-
- ☁️ **边缘函数 (Functions)** - Deno Sidecar 隔离执行的边缘函数能力(实验性)。
21+
- ☁️ **云函数 (Functions)** - Deno Sidecar 隔离执行的云函数能力(实验性)。
2222

2323
## 🏗️ 项目结构
2424

@@ -28,13 +28,13 @@ Flexmodel 旨在为开发者提供一个开源、灵活且高度可定制的后
2828
- **[flexmodel-server](./flexmodel-server)**: 基于 Quarkus 的服务端实现。提供 REST/GraphQL/MCP API、流程编排及任务调度。
2929
- **[flexmodel-ui](./flexmodel-ui)**: 基于 React + Ant Design v6 的前端管理后台。负责模型可视化设计、数据管理及系统配置。
3030
- **[flexmodel-website](./flexmodel-website)**: 项目官方文档网站。基于 Docusaurus 构建,提供完整的技术文档和快速上手指南。
31-
- **[flexmodel-sidecar](./flexmodel-sidecar)**: 边缘函数运行时。基于 Deno + Hono.js,提供 Worker 隔离执行环境。
31+
- **[flexmodel-sidecar](./flexmodel-sidecar)**: 云函数运行时。基于 Deno + Hono.js,提供 Worker 隔离执行环境。
3232

3333
## 🛠️ 技术栈
3434

3535
- **后端**: Java 25, Quarkus 3, Maven, GraalVM JavaScript, HikariCP.
3636
- **前端**: React, TypeScript, Ant Design v6, Tailwind CSS, Vite, @xyflow/react, ECharts, Monaco Editor.
37-
- **边缘函数**: Deno, Hono.js.
37+
- **云函数**: Deno, Hono.js.
3838
- **协议**: REST API, GraphQL, MCP, WebSocket, SSE.
3939

4040
## 📖 快速开始

‎docs/Index.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,4 +18,4 @@
1818
| 对象存储 | S3/本地统一存储抽象 |
1919
| 身份认证 | RBAC + OIDC/LDAP/JWT |
2020
| AI 工具集成 | MCP 协议开放核心工具 |
21-
| 边缘函数 | Deno Sidecar 隔离执行(实验性) |
21+
| 云函数 | Deno Sidecar 隔离执行(实验性) |

‎docs/flexmodel-sidecar-plan.md‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
# Flexmodel Functions — 边缘函数 MVP 设计方案
1+
# Flexmodel Functions — 云函数 MVP 设计方案
22

33
## 一、背景与目标
44

5-
对标 Supabase Functions,实现 Flexmodel 的边缘函数能力。用户可编写 TypeScript 函数,部署后在服务端执行。函数可访问 Flexmodel 数据 API,实现自定义业务逻辑、Webhook 等场景。
5+
对标 Supabase Functions,实现 Flexmodel 的云函数能力。用户可编写 TypeScript 函数,部署后在服务端执行。函数可访问 Flexmodel 数据 API,实现自定义业务逻辑、Webhook 等场景。
66

77
**MVP 约定:**
88
- 入口文件固定为 `index.ts`,入口函数固定为 `export default`
@@ -126,7 +126,7 @@ model f_function {
126126
created_at? : DateTime @default(now()) @comment("创建时间"),
127127
updated_at? : DateTime @default(now()) @comment("更新时间"),
128128
@index(name: "IDX_FUNCTION_PROJECT_SLUG", unique: true, fields: [project_id, slug]),
129-
@comment("边缘函数(项目级资源)")
129+
@comment("云函数(项目级资源)")
130130
}
131131
```
132132

@@ -171,7 +171,7 @@ model f_function_template {
171171
icon? : String @comment("图标名称"),
172172
sort_order : Int @default("0") @comment("排序权重"),
173173
@index(name: "IDX_FUNCTION_TEMPLATE_SLUG", unique: true, fields: [slug]),
174-
@comment("边缘函数模板(平台级)")
174+
@comment("云函数模板(平台级)")
175175
}
176176
```
177177

‎feature_list.json‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,8 +74,8 @@
7474
},
7575
{
7676
"id": "feat-010",
77-
"name": "Functions - 边缘函数 (Flexmodel Functions)",
78-
"description": "对标 Supabase Functions 的边缘函数能力。Deno Sidecar (Hono.js) + Worker 隔离执行,file:// URL 加载 + 原生相对 import。Java 后端简化 CRUD (ACTIVE/FAILED),项目级资源无分支维度。多文件源文件直接存储 JSON,模板系统支持快速创建。",
77+
"name": "Functions - 云函数 (Flexmodel Functions)",
78+
"description": "对标 Supabase Functions 的云函数能力。Deno Sidecar (Hono.js) + Worker 隔离执行,file:// URL 加载 + 原生相对 import。Java 后端简化 CRUD (ACTIVE/FAILED),项目级资源无分支维度。多文件源文件直接存储 JSON,模板系统支持快速创建。",
7979
"dependencies": ["feat-001", "feat-002"],
8080
"status": "in-progress",
8181
"evidence": "重构完成: 数据模型简化 (去除 f_function_version 表/branch字段/TriggerType.HTTP),Java 后端简化 (14 files — 删除4个版本/内部资源文件,重写Service/Resource/Invoker/DTO),Deno Sidecar 重写 (file:// 部署模式替代 lazy load),前端重写 (Supabase-style 多文件编辑器+模板选择+简化API)。Java 424 files + TypeScript 0 errors 编译通过。待: 端到端集成测试 + Deno 运行时验证。"

‎flexmodel-server/README.md‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
- **主框架**: Quarkus 3 (REST, Jackson, Hibernate Validator, Scheduler, Cache)
1616
- **AI 能力**: MCP Server (Quarkus MCP 扩展,15 个 @Tool 注解工具)
17-
- **边缘函数**: Deno Sidecar (Hono.js, Worker 隔离执行)
17+
- **云函数**: Deno Sidecar (Hono.js, Worker 隔离执行)
1818
- **API 协议**: REST API, GraphQL, OpenAPI/Swagger UI
1919
- **持久化**: SQLite (默认演示) / 支持扩展多种关系型与 NoSQL 数据库
2020
- **其他**: Lombok, GraalVM JavaScript, Docker, Maven
@@ -31,7 +31,7 @@
3131
- **`scheduling/`**: 任务调度 — 触发器、作业执行
3232
- **`storage/`**: 对象存储 — 本地、S3
3333
- **`mcp/`**: MCP Server — AI 工具集成,15 个 MCP Tools
34-
- **`functions/`**: 边缘函数 — Deno Sidecar 隔离执行
34+
- **`functions/`**: 云函数 — Deno Sidecar 隔离执行
3535
- **`projectauth/`**: 身份提供商 — OIDC、LDAP、Script
3636
- **`settings/`**: 系统设置
3737
- **`metrics/`**: 监控指标

‎flexmodel-server/src/main/java/dev/flexmodel/common/config/web/json/jackson/mixin/AuthProviderMixIn.java‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,12 @@
33
import com.fasterxml.jackson.annotation.JsonSubTypes;
44
import com.fasterxml.jackson.annotation.JsonTypeInfo;
55
import dev.flexmodel.projectauth.provider.OidcAuthProvider;
6-
import dev.flexmodel.projectauth.provider.ScriptAuthProvider;
6+
import dev.flexmodel.projectauth.provider.FunctionAuthProvider;
77

88
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type")
99
@JsonSubTypes({
1010
@JsonSubTypes.Type(value = OidcAuthProvider.class, name = "oidc"),
11-
@JsonSubTypes.Type(value = ScriptAuthProvider.class, name = "script"),
11+
@JsonSubTypes.Type(value = FunctionAuthProvider.class, name = "function"),
1212
})
1313
public class AuthProviderMixIn {
1414
}

‎flexmodel-server/src/main/java/dev/flexmodel/functions/FunctionResource.java‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
import jakarta.ws.rs.core.MediaType;
1010

1111
/**
12-
* REST API for Edge Function management.
12+
* REST API for Cloud Function management.
1313
*
1414
* @author cjbi
1515
*/

‎flexmodel-server/src/main/java/dev/flexmodel/functions/RuntimeFunctionResource.java‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
import jakarta.ws.rs.core.Response;
1313

1414
/**
15-
* Runtime API for Edge Function invocation.
15+
* Runtime API for Cloud Function invocation.
1616
* <p>
1717
* The function's return value becomes the HTTP response body directly.
1818
* Execution metadata (execution time, logs) is available via the {@code X-Function-Meta} response header.

‎flexmodel-server/src/main/java/dev/flexmodel/functions/dto/FunctionDeployRequest.java‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
import java.util.Map;
88

99
/**
10-
* Deploy (upsert) request for Edge Functions.
10+
* Deploy (upsert) request for Cloud Functions.
1111
*
1212
* @author cjbi
1313
*/

0 commit comments

Comments
 (0)