Skip to content

Commit 3dceefb

Browse files
committed
docs: 同步最近需求到项目文档-新增REQUIREMENTS.md系统需求文档(最近需求包RQ-AI/RQ-CAP/RQ-MK/RQ-KB/RQ-REDIS/RQ-FLOW/RQ-SKILL+验收要点),README中英双语v1.8更新日志追加12条(AI节点增强/模型参数/工具调用/知识库/数据提取/Redis/Skill/市场/发现/分享/能力绑定)+文档区链接,Architecture.md更新模块划分/数据表/21种节点类型/版本规划+新增十二AI能力与开放生态架构章节(回调注入/知识库检索/市场生态/Redis多实例),DesignDoc.md版本迭代计划v1.7/v1.8标记完成+新增十二v1.8模块详细设计(15张新表/API清单/工具调用与GitHub分享流程),DEPLOY.md新增十市场发现与分享配置(market目录持久化/GitHub PAT授权/常见问题),表结构文档更新为40张表+新增报表告警/AI知识库/集成市场生态模块
1 parent e78a532 commit 3dceefb

6 files changed

Lines changed: 422 additions & 9 deletions

File tree

‎Architecture.md‎

Lines changed: 95 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -215,6 +215,15 @@ console-ui/
215215
| 模板市场 | /market/template | 流程模板市场 |
216216
| Token 管理 | /system/token | 访问令牌管理 |
217217
| 数据源管理 | /system/datasource | MySQL 数据源配置 |
218+
| 市场 | /market | 五类条目市场(接口/流程/模型助手/Skill/报表)+ 发现/收藏/下载/分享 |
219+
| 模型助手 | /ai/assistant | 自定义模型助手管理 + 流程/接口/报表智能编排 |
220+
| 大模型设置 | /system/ai-provider | 模型供应商(多供应商/能力绑定/模型拉取测试) |
221+
| 知识库 | /knowledge | 知识库管理(文档解析切片/检索/清洗/匹配记录) |
222+
| Skill 管理 | /system/skill | 技能 CRUD / 导入导出 |
223+
| Redis 配置 | /system/redis | Redis 多实例配置与测试 |
224+
| 报表管理 | /report | 数据视图 + 报表设计器 + 报表查询 |
225+
226+
> 注:报表/知识库/市场/模型助手模块为 v1.8 新增,详见图 4.2 对应的菜单路由配置(`router/index.ts`)。
218227
219228
### 4.3 核心组件
220229

@@ -252,6 +261,16 @@ console-ui/
252261
| t_flow_version | 流程版本表 |
253262
| t_token | 访问令牌表 |
254263
| t_data_source | 数据源表 |
264+
| t_ai_provider | AI 模型供应商表(baseUrl/apiKey/models/capabilities 能力绑定) |
265+
| t_ai_assistant | AI 自定义助手表(系统提示词/入出参/快速提示词/图标) |
266+
| t_ai_conversation | AI 对话会话表(多轮消息/输出/历史) |
267+
| t_skill | 技能表(分组/内容/启停,AI 节点拼入提示词) |
268+
| t_kb / t_kb_document / t_kb_chunk / t_kb_match_log | 知识库 4 表(切片/向量/匹配记录) |
269+
| t_redis_config | Redis 多实例配置表 |
270+
| t_market_item | 市场条目表(平台级共享,含官方 ID/图标/作者/版本) |
271+
| t_market_favorite | 市场收藏表(租户级) |
272+
| t_data_view / t_report | 数据视图 / 报表表 |
273+
| t_alert_rule / t_alert_record | 告警规则 / 告警记录表 |
255274

256275
### 5.2 ER 关系
257276

@@ -338,6 +357,14 @@ t_flow_definition ──(部署)──> t_flow_info ──< t_flow_version
338357
| PARALLEL | 并行节点,多分支并发执行 |
339358
| NOTIFY | 通知节点,Webhook/邮件通知 |
340359
| TRANSFORM | 模板转换节点,${var|pipe} 语法替换占位符 |
360+
| AI | 大模型节点:供应商/模型/图片输入/模型参数(深度思考/温度/最大输出/随机种子)+ 函数调用工具(接口/流程,最多 4 轮) |
361+
| FILE_PARSE | 文件解析节点:json/csv/xml/text/图片(视觉模型识别) |
362+
| EXCEL_READ | Excel 读取节点 |
363+
| FILE_WRITE | 文件写入节点 |
364+
| REDIS_GET | Redis 查询节点(多实例/变量模板/JSON 解析) |
365+
| REDIS_SET | Redis 设置节点(过期秒数) |
366+
| KB_SEARCH | 知识库检索节点(RAG 上下文) |
367+
| DATA_EXTRACT | 数据提取节点(json/code/keyword/between/length 五种提取类型) |
341368

342369
### 6.3 变量机制
343370

@@ -543,4 +570,71 @@ JuggleNet6/
543570
| v1.2 | 流程调试 + 部署 + 触发 + 开放接口 | P0 |
544571
| v1.3 | Token 管理 + 数据源管理 | P1 |
545572
| v1.4 | 套件/模板市场(只读展示) | P2 |
546-
| v2.0 | 多租户支持、权限系统 | P3 |
573+
| v1.5-v1.7 | 子流程/监控/静态变量/WSDL/TRANSFORM/报表/AI 助手 | ✅ 已完成 |
574+
| v1.8 | AI 节点增强与工具调用、知识库、Redis 多实例、Skill 管理、市场生态(发现/收藏/分享 GitHub PR)、模型能力绑定 | ✅ 已完成(2026-09) |
575+
| v1.9 | 官方市场运营(GitHub 仓库 index.json 维护)、更多节点类型、AI 多模态扩展 | ⏳ 待规划 |
576+
577+
---
578+
579+
## 十二、AI 能力与开放生态架构(v1.8 新增)
580+
581+
### 12.1 AI 大模型能力架构
582+
583+
```
584+
┌──────────────────────────────────────────────────────────────────┐
585+
│ 前端 AI 模块(Vue3) │
586+
│ 大模型设置(供应商/模型/能力绑定) 模型助手管理 流程/接口/报表助手 │
587+
└──────────────┬───────────────────────────────────────────────────┘
588+
│ /api/ai/*(JWT)
589+
┌──────────────▼───────────────────────────────────────────────────┐
590+
│ AiService(Application 层) │
591+
│ ChatRequestAsync(统一入口: 图片/模型参数/tools/多轮历史) │
592+
│ ResolveConfigAsync(供应商解析) GenerateFlow/Apis/Report(编排生成) │
593+
│ Conversation(多轮会话) ExtractJson(代码块剥离) │
594+
└──────────────┬───────────────────────────────────────────────────┘
595+
│ Func 回调注入(引擎与配置解耦)
596+
┌──────────────▼───────────────────────────────────────────────────┐
597+
│ FlowEngine 回调注入体系 │
598+
│ aiChatFunc → AiChatRequest → AiChatResult(Text+ToolCalls) │
599+
│ toolsResolver → 接口/流程 → OpenAI tools 定义(含参数说明) │
600+
│ toolRunner → api:xxx HTTP 调用 / flow:xxx 递归子引擎执行 │
601+
│ skillResolver → 技能 ID → 提示词拼接 │
602+
│ kbSearchFunc → 知识库检索上下文 │
603+
│ redisConnStrs → Redis 多实例连接串(0=默认实例) │
604+
└───────────────────────────────────────────────────────────────────┘
605+
```
606+
607+
**关键设计**:
608+
1. **能力绑定(Capabilities)**:供应商存 `capabilities` JSON(skills/apis/flows/tools),前端按所选供应商过滤 AI 节点技能下拉。
609+
2. **函数调用(Tool Calling)**:AI 节点勾选接口/流程 → 执行时经 `toolsResolver` 生成 OpenAI 函数定义 → 模型返回 `tool_calls` → `toolRunner` 执行(接口走 HTTP,流程走递归 FlowEngine)→ 结果以 `role=tool` 消息回传,最多 4 轮;`AiChatRequest` 携带 `History`(多轮 tool_calls 消息)与 `ToolsJson`。
610+
3. **模型参数**:深度思考(enable_thinking)、温度、max_tokens、seed 经统一请求入口透传 OpenAI 兼容接口。
611+
612+
### 12.2 知识库检索架构
613+
614+
- **存储**:`t_kb`(库配置:切片大小/重叠/检索类型/向量模型)→ `t_kb_document`(文档)→ `t_kb_chunk`(切片,`vector_json` 存向量)。
615+
- **检索**:文本模式(SQLite LIKE 关键词打分)与向量模式(调用供应商 embeddings 接口 → 余弦相似度 TopK);`t_kb_match_log` 记录每次检索。
616+
- **流程接入**:`KB_SEARCH` 节点经 `kbSearchFunc` 回调获取 TopK 上下文文本,供 AI 节点 RAG 问答。
617+
618+
### 12.3 市场生态架构(发现 / 收藏 / 分享)
619+
620+
```
621+
GitHub 官方仓库 pythonHuang/APIWorkflowCanvasDesignNet
622+
└── market/
623+
├── index.json # 条目索引(id/type/name/author/version/file)
624+
├── flow/1.json ... # 各类型 {id}.json 条目文件
625+
626+
① 发现:GET /api/market/discover → 拉取 index.json + 各条目文件 → 本地 market/ 目录
627+
② 导入:POST /api/market/import-file → 按 (market_item_id, item_type) upsert t_market_item
628+
③ 应用:POST /api/market/import/{id} → 按类型创建业务实体(按名称/code 去重)
629+
④ 收藏:t_market_favorite(租户级)→ 列表过滤 favorite=1
630+
⑤ 分享:POST /api/market/generate-share-file → 本地生成 {id}.json + 更新 index.json
631+
(同名条目复用原 id)→ 前端 GitHub API:fork → 分支 → 写条目文件
632+
→ 合并官方最新 index.json → Pull Request(管理员审核合并)
633+
```
634+
635+
**多租户**:市场条目 `TenantId=null`(平台级共享,宽松隔离);收藏 `TenantId=当前租户`(严格隔离);导入产生的业务实体归属导入方租户。
636+
637+
### 12.4 Redis 多实例架构
638+
639+
- `t_redis_config` 存多实例(0=默认实例),`RedisConnectionPool` 按连接串缓存 `ConnectionMultiplexer`。
640+
- 引擎经 `redisConnStrs` 字典(实例 ID → 连接串)注入;节点 `redisId` 解析实例,未配置时抛明确错误。

‎DEPLOY.md‎

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -318,3 +318,40 @@ journalctl -u juggle -f
318318
# Docker
319319
docker logs -f juggle
320320
```
321+
322+
---
323+
324+
## 十、市场发现与分享配置(v1.8)
325+
326+
### 10.1 本地 market 目录
327+
328+
- 市场「发现」拉取官方市场时,条目文件落在后端运行目录下的 `market/` 目录(`market/{type}/{id}.json` + `market/index.json`)。
329+
- 分享时也会在该目录生成 `{id}.json` 并更新 `index.json`(同名条目复用原 id)。
330+
- Docker 部署建议将该目录挂载到卷以持久化:
331+
332+
```bash
333+
docker run -d --name juggle -p 9127:9127 \
334+
-v juggle_data:/data \
335+
-v juggle_market:/app/market \
336+
pythonhuang/juggle-net8:v1.0
337+
```
338+
339+
> 官方市场仓库:`https://github.com/pythonHuang/APIWorkflowCanvasDesignNet`(market 目录由管理员审核 PR 后维护)。
340+
341+
### 10.2 分享到官方市场(GitHub 授权)
342+
343+
1. 在 GitHub 创建 Personal Access Token(classic):
344+
`Settings → Developer settings → Personal access tokens → Tokens (classic) → Generate new token`,
345+
勾选 **repo** 权限(fork/写文件/创建 PR 所需)。
346+
2. 分享弹窗中粘贴 Token(仅保存在本机浏览器 localStorage,不落库、不上传服务器),填写作者与版本号。
347+
3. 系统自动完成:校验令牌 → 确保 fork → 创建分支 → 写入 `market/{type}/{id}.json` → 合并官方最新 `index.json` → 创建 Pull Request。
348+
4. 管理员审核合并 PR 后,条目进入官方市场;其他用户通过「市场 → 发现」拉取。
349+
350+
### 10.3 常见问题
351+
352+
| 问题 | 处理 |
353+
|------|------|
354+
| 发现提示 index.json 获取失败 404 | 官方仓库尚未建立 market 目录/网络受限,稍后重试 |
355+
| 分享提示 Fork 创建超时 | 登录 GitHub 手动 fork 一次后重试 |
356+
| PR 创建失败(token 无权限) | 确认 Token 勾选了 repo 权限且未过期 |
357+
| 大模型节点报"未配置 AI 大模型" | 系统设置 → 大模型设置 添加并启用供应商(支持 DeepSeek/通义千问/Kimi/OpenAI/GLM/Ollama) |

‎DesignDoc.md‎

Lines changed: 150 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1357,9 +1357,154 @@ VALUES ('sync_example', '示例流程', 'sync', '...JSON...', '', 0);
13571357
- [x] 监控仪表盘独立菜单,置于首位
13581358
- [x] 复制 URL 剪贴板兼容非 HTTPS 环境
13591359

1360-
### v1.7(待规划)
1361-
- [ ] 流程模板市场
1362-
- [ ] 执行日志统计图表增强
1363-
- [ ] 接口批量测试
1364-
- [ ] 属性选择器集成到方法节点入/出参
1360+
### v1.7(AI 助手与报表)✅ 已完成
1361+
- [x] 大模型设置(供应商/模型拉取测试/启停)
1362+
- [x] 模型助手管理(自定义助手 + 多轮对话 + 对话历史)
1363+
- [x] 流程/接口/报表智能编排助手
1364+
- [x] 报表模块(数据视图 + 报表设计器 + 公式引擎 + PDF/Excel 导出)
1365+
- [x] 数据库节点 SQL 辅助(表/视图/存储过程浏览 + 测试 SQL)
1366+
- [x] 条件/赋值节点表达式增强(算术/字符串/toString/&&||/子属性/数组)
1367+
1368+
### v1.8(AI 深化与开放生态)✅ 已完成(2026-09)
1369+
- [x] AI 节点增强:供应商/模型、图片输入(多模态)、输出目标三选
1370+
- [x] AI 节点模型参数:深度思考/温度/最大输出字数/随机种子
1371+
- [x] AI 节点工具调用:接口/流程函数调用(tools,最多 4 轮)
1372+
- [x] 知识库子系统(4 表 + 文档解析切片 + 文本/向量检索 + 清洗 + 匹配记录)+ KB_SEARCH 节点
1373+
- [x] 数据提取节点(json/code/keyword/between/length)
1374+
- [x] Redis 缓存查询/设置节点 + Redis 多实例配置
1375+
- [x] Skill 管理(CRUD/导入导出)+ AI 节点多技能拼接
1376+
- [x] 市场系统(5 类条目/发布/导入去重/收藏/下载/元信息)
1377+
- [x] 市场发现(GitHub index.json → 本地 market 目录 → 按 id 导入更新)
1378+
- [x] 市场分享(本地生成 id.json+index.json → GitHub fork/分支/PR)
1379+
- [x] 模型能力绑定(供应商 capabilities:skills/apis/flows/tools)
1380+
1381+
---
1382+
1383+
## 十二、v1.8 新增模块详细设计
1384+
1385+
### 12.1 新增数据表
1386+
1387+
#### t_ai_provider(AI 模型供应商表)
1388+
1389+
| 字段 | 类型 | 说明 |
1390+
|------|------|------|
1391+
| id | INTEGER | 主键 |
1392+
| provider_name | TEXT | 供应商名称 |
1393+
| base_url | TEXT | 接口地址(OpenAI 兼容 /v1 一级) |
1394+
| api_key | TEXT | API Key |
1395+
| model | TEXT | 默认模型 |
1396+
| models | TEXT | 可用模型(逗号分隔,对话中可切换) |
1397+
| capabilities | TEXT | 能力绑定 JSON:`{"skills":[..],"apis":["code",..],"flows":["key",..],"tools":["web_search"]}` |
1398+
| enabled | INTEGER | 1=启用 0=禁用 |
1399+
1400+
#### t_ai_assistant(AI 自定义助手表)
1401+
1402+
| 字段 | 类型 | 说明 |
1403+
|------|------|------|
1404+
| id | INTEGER | 主键 |
1405+
| assistant_name / description | TEXT | 名称 / 描述 |
1406+
| system_prompt | TEXT | 系统提示词(人设与任务) |
1407+
| input_params / output_params | TEXT | 入参/出参定义 JSON(含数据类型/是否必填) |
1408+
| quick_prompts | TEXT | 辅助提问词 JSON(按钮列表) |
1409+
| icon | TEXT | 图标(emoji/上传/模型生成) |
1410+
| enabled | INTEGER | 启用后自动加入模型助手菜单 |
1411+
1412+
#### t_ai_conversation(对话会话表)
1413+
1414+
| 字段 | 类型 | 说明 |
1415+
|------|------|------|
1416+
| assistant_id / assistant_name | INTEGER/TEXT | 关联助手 |
1417+
| messages | TEXT | 多轮消息 JSON(气泡历史) |
1418+
| outputs | TEXT | 最终输出 JSON(按输出参数生成) |
1419+
| provider_id / model | INTEGER/TEXT | 对话所用供应商/模型(支持切换) |
1420+
| status | INTEGER | 0=进行中 1=已结束 |
1421+
1422+
#### t_skill(技能表)
1423+
1424+
| 字段 | 类型 | 说明 |
1425+
|------|------|------|
1426+
| skill_name / group_name | TEXT | 名称 / 分组 |
1427+
| description / content | TEXT | 描述 / 技能内容(拼入系统提示词) |
1428+
| enabled | INTEGER | 启停 |
1429+
| market_skill_id | INTEGER | 市场导入来源标记 |
1430+
1431+
#### t_kb / t_kb_document / t_kb_chunk / t_kb_match_log(知识库 4 表)
1432+
1433+
| 表 | 关键字段 | 说明 |
1434+
|------|------|------|
1435+
| t_kb | chunk_size / chunk_overlap / retrieve_type(text\|vector) / vector_model / chunk_count | 库配置 |
1436+
| t_kb_document | kb_id / doc_name / doc_type / content / status | 文档(上传解析后原文) |
1437+
| t_kb_chunk | kb_id / doc_id / content / seq_no / vector_json | 切片(向量 JSON 数组) |
1438+
| t_kb_match_log | kb_id / query / results_json / score | 检索匹配记录 |
1439+
1440+
#### t_redis_config(Redis 多实例配置表)
1441+
1442+
| 字段 | 类型 | 说明 |
1443+
|------|------|------|
1444+
| config_name | TEXT | 实例名称 |
1445+
| host / port / password / db | TEXT | 连接参数 |
1446+
| is_default | INTEGER | 默认实例(全局唯一,0 号=默认) |
1447+
1448+
#### t_market_item(市场条目表)
1449+
1450+
| 字段 | 类型 | 说明 |
1451+
|------|------|------|
1452+
| item_type | TEXT | api / flow / assistant / skill / report |
1453+
| item_name / description / group_name | TEXT | 名称 / 描述 / 分组 |
1454+
| content_json | TEXT | 内容快照(按类型结构不同) |
1455+
| download_count | INTEGER | 导入次数 |
1456+
| market_item_id | INTEGER | 官方市场条目 ID(发现导入;本地发布为 null) |
1457+
| icon / author / version | TEXT | 图标 / 作者 / 版本号(7.5 元信息) |
1458+
| enabled | INTEGER | 上架/下架 |
1459+
1460+
#### t_market_favorite(市场收藏表)
1461+
1462+
| 字段 | 类型 | 说明 |
1463+
|------|------|------|
1464+
| market_item_id | INTEGER | 收藏的市场条目 ID |
1465+
| tenant_id | INTEGER | 收藏租户(严格隔离) |
1466+
1467+
### 12.2 新增后端 API
1468+
1469+
| 方法 | 路径 | 说明 |
1470+
|------|------|------|
1471+
| GET | /api/market/discover | 发现官方市场:拉取 GitHub index.json + 条目文件到本地 market 目录 |
1472+
| GET | /api/market/local-files | 本地 market 目录条目列表(含是否已导入) |
1473+
| POST | /api/market/import-file | 按 (type, marketId) 导入本地文件(id 相同更新否则新增) |
1474+
| POST | /api/market/favorite/{id} / unfavorite/{id} | 收藏 / 取消收藏(幂等) |
1475+
| GET | /api/market/list?favorite=1 | 列表(含元信息 + favorited 标记 + 收藏过滤) |
1476+
| POST | /api/market/generate-share-file | 生成分享文件:本地写 market/{type}/{id}.json + 更新 index.json(同名复用 id) |
1477+
| GET | /api/ai/providers · /api/ai/provider/save · /api/ai/fetch-models | 供应商 CRUD + 模型拉取/配置测试(capabilities 能力绑定) |
1478+
| GET/POST | /api/skill/list · save · delete · toggle · import · batch-import · export · batch-export | Skill 管理 |
1479+
| GET | /api/redis-config/configs · config · save · delete · config/test | Redis 多实例 |
1480+
| GET/POST | /api/knowledge/* | 知识库(kb/document/chunk/search/clean/revectorize/match-logs) |
1481+
1482+
### 12.3 AI 节点函数调用流程(工具调用)
1483+
1484+
```
1485+
1. 执行器解析 aiConfig:toolApis(接口 methodCode 列表)+ toolFlows(流程 flowKey 列表)
1486+
2. toolsResolver 回调 → 加载接口/流程定义(含参数说明)→ OpenAI tools JSON
1487+
3. _chat(new AiChatRequest(..., ToolsJson, History)) → AiChatResult{Text, ToolCalls}
1488+
4. ToolCalls 非空(且 <4 轮):
1489+
a. history 追加 assistant 消息(tool_calls)
1490+
b. toolRunner(name, args) 逐个执行:
1491+
- api:xxx → 按 RequestType 拼 query/body 直接 HTTP 调用(MockJson 优先),响应截断 8000 字符
1492+
- flow:xxx → flowContentLoader 加载 → 递归 BuildEngineAsync → ExecuteAsync(args) → 出参 JSON
1493+
c. history 追加 tool 消息(tool_call_id + 结果)
1494+
d. 回到步骤 3 携带 History 继续
1495+
5. 取最终文本(无文本时回退最近非空文本)写入输出目标
1496+
```
1497+
1498+
### 12.4 市场分享(GitHub PR)流程
1499+
1500+
```
1501+
1. 前端校验作者 → POST /api/market/generate-share-file:
1502+
后端本地落盘 market/{type}/{id}.json(同名复用 id)+ upsert market/index.json
1503+
2. 前端 GitHub API(api.github.com,Token 存 localStorage):
1504+
GET /user 校验 → GET/POST forks 确保 fork → POST git/refs 建分支
1505+
→ PUT contents/market/{type}/{id}.json(条目文件)
1506+
→ GET raw index.json(官方最新)合并本条索引 → PUT contents/market/index.json
1507+
→ POST pulls 创建 PR(head=用户名:分支, base=默认分支)→ 打开 PR 页面
1508+
3. 管理员审核合并 → 进入官方 market 目录 → 其他用户「发现」拉取
1509+
```
13651510

0 commit comments

Comments
 (0)