diff --git a/.obsidian/workspace.json b/.obsidian/workspace.json index 9e3414b..dd3acf3 100644 --- a/.obsidian/workspace.json +++ b/.obsidian/workspace.json @@ -27,12 +27,12 @@ "state": { "type": "markdown", "state": { - "file": "docs/Obsidian笔记体系/Daily/2026-01-20.md", + "file": "docs/Obsidian笔记体系/Projects/知你-调测/数美文本风险拦截实施方案.md", "mode": "source", "source": false }, "icon": "lucide-file", - "title": "2026-01-20" + "title": "数美文本风险拦截实施方案" } } ], @@ -68,7 +68,7 @@ "state": { "type": "search", "state": { - "query": "签名", + "query": "节点对齐和自动布局", "matchingCase": false, "explainSearch": false, "collapseAll": false, @@ -200,33 +200,33 @@ }, "active": "25c9f7051aac05b3", "lastOpenFiles": [ - "docs/Obsidian笔记体系/Projects/saars开发/aiapply/未命名 7.md", + "docs/Obsidian/高频命令.md", + "docs/Obsidian笔记体系/Projects/知你-调测/数美文本风险拦截实施方案.md", + "docs/Obsidian笔记体系/Projects/saars开发/aiapply/查看日志的方法.md", + "docs/Obsidian笔记体系/Projects/saars开发/aiapply/聊天智能机器人(苏苏).md", + "docs/cursor/cursor.md", + "docs/Obsidian笔记体系/Projects/saars开发/aiapply/可新增节点类型建议.md", + "docs/Obsidian笔记体系/Projects/saars开发/aiapply/已实现工作流模板快速应用功能。功能总结如下.md", + "docs/Obsidian笔记体系/Projects/saars开发/aiapply/项目低代码智能体功能扩展.md", + "docs/Obsidian笔记体系/Projects/saars开发/aiapply/aiagent节点类型扩展说明.md", + "docs/Obsidian笔记体系/Projects/saars开发/aiapply/Agent和模板节点的区别.md", + "docs/Obsidian笔记体系/Projects/saars开发/aiapply/智能需求分析与解决方案生成器_使用说明.md", + "docs/Obsidian笔记体系/Projects/saars开发/aiapply/android应用agent.md", + "docs/Obsidian笔记体系/Projects/saars开发/aiapply/未命名.md", + "docs/Obsidian笔记体系/Projects/saars开发/aiapply/未命名 1.md", + "docs/Obsidian笔记体系/Projects/saars开发/aiapply/开发低代码智能体平台 - 完整开发提示词.md", + "docs/Obsidian笔记体系/Projects/saars开发/aiapply/下一步可选方向.md", + "docs/Obsidian笔记体系/Projects/saars开发/aiapply/个人简历.md", + "docs/Obsidian笔记体系/Projects/saars开发/aiapply/未命名 4.md", + "docs/Obsidian笔记体系/Projects/saars开发/aiapply/已完成的增强功能.md", + "docs/Obsidian笔记体系/Projects/saars开发/aiapply/# 创建Agent经验总结.md", "docs/Obsidian笔记体系/Daily/2026-01-20.md", "docs/Obsidian笔记体系/Projects/saars开发/aiapply/节点配置中的温度和最大Token数是什么意思?.md", "docs/Obsidian笔记体系/Projects/saars开发/aiapply/工作流和Agent平台提示词目录.md", "docs/Obsidian笔记体系/Projects/saars开发/aiapply/工作流测试工具.md", "docs/Obsidian笔记体系/Projects/saars开发/aiapply/工作流(Workflow)vs Agent(智能体)的区别.md", "docs/Obsidian笔记体系/Projects/saars开发/aiapply/电商系统用户订单处理流程设计方案.md", - "docs/Obsidian笔记体系/Projects/saars开发/aiapply/# 工作流和Agent平台架构方案分析.md", - "docs/cursor/cursor.md", - "docs/Obsidian笔记体系/Projects/知你-调测/知你--调测.md", "com.xiaomi.appstore.appclaim.signature.verification.apk", - "docs/Obsidian笔记体系/Areas/07-系统安全/权限管理框架.md", - "docs/Obsidian笔记体系/Areas/04-资源与包管理/动态加载与热修复原理.md", - "docs/Google开发文档体系/最佳实践/安全最佳实践.md", - "docs/Obsidian笔记体系/Daily/2026-01-13.md", - "docs/Obsidian笔记体系/Daily/2026-01-14.md", - "docs/Obsidian笔记体系/Daily/2026-01-15.md", - "docs/Obsidian笔记体系/Projects/saars开发/aiapply/未命名 2.md", - "docs/Obsidian笔记体系/Projects/saars开发/aiapply/android应用agent.md", - "docs/git/git设置用户名和邮箱.md", - "docs/Obsidian笔记体系/Projects/saars开发/aiapply/未命名 6.md", - "docs/Obsidian笔记体系/Projects/saars开发/aiapply/未命名 5.md", - "docs/Obsidian笔记体系/Projects/saars开发/aiapply/内容生成助手Agent.md", - "docs/Obsidian笔记体系/Projects/saars开发/aiapply/智能需求分析与解决方案生成器_使用说明.md", - "docs/Obsidian笔记体系/Projects/saars开发/aiapply/Agent和模板节点的区别.md", - "docs/Obsidian笔记体系/Projects/saars开发/aiapply/未命名.md", - "docs/Obsidian笔记体系/Projects/saars开发/aiapply/未命名 4.md", "docs/android面试/系统原理/DPMS常见面试题", "docs/DPMS常见面试题", "ams常见面试题.txt", diff --git a/docs/Obsidian笔记体系/Projects/saars开发/aiapply/未命名 7.md b/docs/Obsidian笔记体系/Projects/saars开发/aiapply/# 创建Agent经验总结.md similarity index 100% rename from docs/Obsidian笔记体系/Projects/saars开发/aiapply/未命名 7.md rename to docs/Obsidian笔记体系/Projects/saars开发/aiapply/# 创建Agent经验总结.md diff --git a/docs/Obsidian笔记体系/Projects/saars开发/aiapply/aiagent节点类型扩展说明.md b/docs/Obsidian笔记体系/Projects/saars开发/aiapply/aiagent节点类型扩展说明.md new file mode 100644 index 0000000..a1d0043 --- /dev/null +++ b/docs/Obsidian笔记体系/Projects/saars开发/aiapply/aiagent节点类型扩展说明.md @@ -0,0 +1,461 @@ + +## 已实现的节点类型 + +### 1. Switch节点(多分支路由) + +- 后端:根据字段值进行多分支路由,支持 cases 和 default + +- 前端:已添加到节点工具箱,使用 Operation 图标 + +- 执行:类似条件节点,根据 sourceHandle 过滤边 + +### 2. Merge节点(合并分支) + +- 后端:支持 merge_all、merge_first、merge_last 模式 + +- 策略:array、object、concat + +- 前端:已添加到节点工具箱 + +### 3. Wait节点(等待条件) + +- 后端:支持 condition、time 等待类型 + +- 功能:条件等待(轮询)、固定时间等待 + +- 前端:已添加到节点工具箱,使用 Timer 图标 + +### 4. JSON处理节点 + +- 后端:支持 parse、stringify、extract、validate 操作 + +- 功能:JSON解析、字符串化、路径提取、基本验证 + +- 前端:已添加到节点工具箱 + +### 5. 文本处理节点 + +- 后端:支持 split、join、extract、replace、format 操作 + +- 功能:文本拆分、合并、正则提取、替换、模板格式化 + +- 前端:已添加到节点工具箱,使用 Edit 图标 + +### 6. 缓存节点 + +- 后端:支持 get、set、delete、clear 操作 + +- 功能:内存缓存(单次执行会话内有效),支持 TTL + +- 前端:已添加到节点工具箱,使用 Box 图标 + +## 实现细节 + +### 后端实现 + +- 在 workflow_engine.py 的 execute_node 方法中添加了6个节点的执行逻辑 + +- Switch节点支持分支过滤(类似条件节点) + +- 缓存节点使用内存存储(_cache_store 和 _cache_timestamps) + +### 前端实现 + +- 在 WorkflowEditor.vue 中添加了节点类型定义 + +- 在 customNodeTypes 中注册了所有新节点(使用 DefaultNode) + +- 添加了默认配置和图标导入 + +### 验证器更新 + +- 在 workflow_validator.py 中添加了新节点类型到允许列表 + +## 使用方式 + +1. 在节点工具箱中找到新节点(Switch、Merge、等待、JSON处理、文本处理、缓存) + +2. 拖拽到画布创建节点 + +3. 点击节点配置参数(在右侧属性面板) + +4. 连接节点并执行工作流 + +所有节点已实现并通过 linter 检查。可以在工作流编辑器中测试这些新节点。 + +## 已实现的节点类型 + +### 1. 向量数据库节点(vector_db) + +- 后端:支持 search、upsert、delete 操作 + +- 功能: + +- 向量相似度搜索(余弦相似度) + +- 向量存储和更新 + +- 集合管理 + +- 实现:内存存储(生产环境建议使用 ChromaDB、Pinecone 等) + +- 前端:已添加到节点工具箱,使用 Connection 图标 + +### 2. 日志节点(log) + +- 后端:支持 debug、info、warning、error 级别 + +- 功能: + +- 记录日志消息 + +- 可选包含数据 + +- 集成系统日志记录器 + +- 前端:已添加到节点工具箱,使用 Document 图标 + +### 3. 错误处理节点(error_handler) + +- 后端:支持 notify、retry、stop 模式 + +- 功能: + +- 捕获上游节点错误 + +- 错误重试(可配置重试次数和延迟) + +- 错误通知(记录日志) + +- 注意:简化实现,主要用于错误检测和通知 + +- 前端:已添加到节点工具箱,使用 Warning 图标 + +### 4. CSV处理节点(csv) + +- 后端:支持 parse、generate、convert 操作 + +- 功能: + +- CSV解析(支持表头) + +- CSV生成(从字典列表或数组列表) + +- CSV格式转换(改变分隔符等) + +- 实现:使用 Python 内置 csv 模块 + +- 前端:已添加到节点工具箱,使用 Document 图标 + +### 5. 对象存储节点(object_storage) + +- 后端:支持 upload、download、delete、list 操作 + +- 功能: + +- 文件上传 + +- 文件下载 + +- 文件删除 + +- 文件列表 + +- 支持提供商:s3、oss、cos + +- 注意:当前为接口框架,实际使用需安装相应 SDK(如 boto3、oss2) + +- 前端:已添加到节点工具箱,使用 Box 图标 + +## 实现细节 + +### 后端实现 + +- 在 workflow_engine.py 的 execute_node 方法中添加了5个节点的执行逻辑 + +- 向量数据库使用内存存储(_vector_store),支持余弦相似度计算 + +- CSV处理使用 Python 内置 csv 模块 + +- 对象存储提供接口框架,便于后续集成实际 SDK + +### 前端实现 + +- 在 WorkflowEditor.vue 中添加了节点类型定义 + +- 在 customNodeTypes 中注册了所有新节点 + +- 添加了默认配置 + +### 验证器更新 + +- 在 workflow_validator.py 中添加了新节点类型到允许列表 + +## 使用说明 + +1. 向量数据库节点:用于 RAG 应用和语义搜索 + +- 先使用 upsert 存储向量 + +- 使用 search 进行相似度搜索 + +1. 日志节点:用于调试和监控 + +- 设置日志级别和消息模板 + +- 可选择是否包含数据 + +1. 错误处理节点:用于错误捕获和处理 + +- 配置重试次数和延迟 + +- 选择错误处理模式 + +1. CSV处理节点:用于数据处理 + +- parse:将 CSV 文本解析为数组 + +- generate:将数据生成为 CSV 文本 + +1. 对象存储节点:用于文件存储 + +- 当前为接口框架,实际使用需要: + +- AWS S3:安装 boto3 + +- 阿里云 OSS:安装 oss2 + +- 腾讯云 COS:安装 cos-python-sdk-v5 + +所有节点已实现并通过 linter 检查。可以在工作流编辑器中测试这些新节点。 + + +## 已实现的节点类型 + +### 1. Slack节点(slack) + +- 后端:支持 send_message、create_channel、get_messages 操作 + +- 功能: + +- 发送消息到频道 + +- 创建频道 + +- 获取频道消息 + +- 配置:需要配置 Slack Token + +- 前端:已添加到节点工具箱,使用 Message 图标 + +### 2. 钉钉节点(dingtalk/dingding) + +- 后端:支持 send_message、create_group 操作 + +- 功能: + +- 通过 Webhook 或 API 发送消息 + +- 创建群组 + +- 配置:需要配置 Webhook URL 或 Access Token + +- 前端:已添加到节点工具箱,使用 Message 图标 + +### 3. 企业微信节点(wechat_work/wecom) + +- 后端:支持 send_message、create_group 操作 + +- 功能: + +- 发送消息(需要先获取 access_token) + +- 创建群组 + +- 配置:需要配置 Corp ID、Corp Secret、Agent ID + +- 前端:已添加到节点工具箱,使用 Message 图标 + +### 4. 短信节点(sms) + +- 后端:支持 send、batch_send 操作 + +- 功能: + +- 发送短信 + +- 批量发送短信 + +- 支持提供商:aliyun、tencent、twilio + +- 注意:实际使用需要安装相应 SDK + +- 前端:已添加到节点工具箱,使用 Message 图标 + +### 5. PDF处理节点(pdf) + +- 后端:支持 extract_text、generate、merge、split 操作 + +- 功能: + +- 提取 PDF 文本 + +- 生成 PDF + +- 合并多个 PDF + +- 拆分 PDF + +- 注意:需要安装 PyPDF2 或 pdfplumber 库 + +- 前端:已添加到节点工具箱,使用 Document 图标 + +### 6. 图像处理节点(image) + +- 后端:支持 resize、crop、convert、ocr 操作 + +- 功能: + +- 图像缩放 + +- 图像裁剪 + +- 格式转换 + +- OCR 文字识别 + +- 注意:需要安装 Pillow 库,OCR 需要 pytesseract 和 tesseract-ocr + +- 前端:已添加到节点工具箱,使用 Picture 图标 + +### 7. Excel处理节点(excel) + +- 后端:支持 read、write、convert、formula 操作 + +- 功能: + +- 读取 Excel 文件 + +- 写入 Excel 文件 + +- 格式转换(Excel ↔ CSV/JSON) + +- 公式计算 + +- 注意:需要安装 openpyxl 或 pandas 库 + +- 前端:已添加到节点工具箱,使用 Document 图标 + +## 实现细节 + +### 后端实现 + +- 在 workflow_engine.py 的 execute_node 方法中添加了7个节点的执行逻辑 + +- 通信节点使用 HTTP API 调用(需要配置相应的 Token/Secret) + +- PDF/图像/Excel 处理节点提供接口框架,实际使用需要安装相应库 + +### 前端实现 + +- 在 WorkflowEditor.vue 中添加了节点类型定义 + +- 在 customNodeTypes 中注册了所有新节点 + +- 添加了默认配置和图标导入(包括 Picture 图标) + +### 验证器更新 + +- 在 workflow_validator.py 中添加了新节点类型到允许列表 + +## 依赖说明 + +### 通信节点 + +- Slack:需要有效的 Slack Token + +- 钉钉:需要 Webhook URL 或 Access Token + +- 企业微信:需要 Corp ID、Corp Secret、Agent ID + +- 短信:需要安装相应 SDK + +- 阿里云:pip install alibabacloud-dysmsapi20170525 + +- 腾讯云:pip install tencentcloud-sdk-python + +- Twilio:pip install twilio + +### 文件处理节点 + +- PDF:pip install PyPDF2 pdfplumber + +- 图像:pip install Pillow(OCR 需要 pip install pytesseract 并安装 tesseract-ocr) + +- Excel:pip install openpyxl pandas + +所有节点已实现并通过 linter 检查。可以在工作流编辑器中测试这些新节点。注意:部分节点需要安装相应的依赖库才能正常使用。 + +## 已实现节点 + +- 子工作流节点(subworkflow) + +- 功能:调用其他工作流;支持输入映射 + +- 说明:当前为占位实现,返回映射后的输入与目标 workflow_id,后续可集成真正的子工作流执行 + +- 代码执行节点(code) + +- 功能:执行简易 Python 代码(JS 执行为占位) + +- 安全:使用受限 exec,生产需更严格沙箱 + +- 默认:result = input_data + +- OAuth节点(oauth) + +- 功能:获取/刷新 Token(占位,返回模拟 token) + +- 默认:provider、client_id、client_secret、scopes + +- 数据验证节点(validator) + +- 功能:基础类型校验,支持 on_error(reject/continue/transform) + +- 默认 schema 空对象 + +- 批处理节点(batch) + +- 功能:按批次拆分/分组/聚合数据;可选择等待完成 + +- 默认:batch_size=100,mode=split + +## 后端 + +- backend/app/services/workflow_engine.py:新增上述节点的执行逻辑(占位或简化实现) + +- backend/app/services/workflow_validator.py:允许的新节点类型列表已更新 + +## 前端 + +- frontend/src/components/WorkflowEditor/WorkflowEditor.vue: + +- 节点类型已加入工具箱(icons:subworkflow/批处理用 Grid/Operation,code 用 Edit,validator/OAuth 用 Document) + +- customNodeTypes 已注册,默认配置已添加 + +- 图标导入已补充 Picture(之前图像节点用到) + +## 依赖说明 + +- 子工作流:需后续集成实际工作流调用 + +- 代码执行:当前仅受限 Python;JS 需集成运行时 + +- OAuth:占位返回 mock token,实际需对接各 provider + +- 数据验证:为简化版;复杂校验可接入 jsonschema + +- 批处理:基础分批逻辑;可按需扩展并行/异步处理 + +如需把子工作流执行接入真正的 WorkflowEngine、完善代码执行安全沙箱,或接入真实 OAuth provider,可继续迭代。 \ No newline at end of file diff --git a/docs/Obsidian笔记体系/Projects/saars开发/aiapply/未命名 3.md b/docs/Obsidian笔记体系/Projects/saars开发/aiapply/下一步可选方向.md similarity index 100% rename from docs/Obsidian笔记体系/Projects/saars开发/aiapply/未命名 3.md rename to docs/Obsidian笔记体系/Projects/saars开发/aiapply/下一步可选方向.md diff --git a/docs/Obsidian笔记体系/Projects/saars开发/aiapply/未命名 5.md b/docs/Obsidian笔记体系/Projects/saars开发/aiapply/个人简历.md similarity index 100% rename from docs/Obsidian笔记体系/Projects/saars开发/aiapply/未命名 5.md rename to docs/Obsidian笔记体系/Projects/saars开发/aiapply/个人简历.md diff --git a/docs/Obsidian笔记体系/Projects/saars开发/aiapply/可新增节点类型建议.md b/docs/Obsidian笔记体系/Projects/saars开发/aiapply/可新增节点类型建议.md new file mode 100644 index 0000000..8542238 --- /dev/null +++ b/docs/Obsidian笔记体系/Projects/saars开发/aiapply/可新增节点类型建议.md @@ -0,0 +1,2141 @@ +# 可新增节点类型建议 + + + + + +## 📊 当前已实现的节点类型 + + + + + +### 基础节点 + + + +- ✅ start(开始) + + + +- ✅ input(输入) + + + +- ✅ output(输出) + + + +- ✅ end(结束) + + + + + +### AI节点 + + + +- ✅ llm(LLM调用) + + + +- ✅ template(模板) + + + +- ✅ agent(Agent调用) + + + + + +### 逻辑节点 + + + +- ✅ condition(条件判断) + + + +- ✅ loop(循环) + + + + + +### 数据节点 + + + +- ✅ transform(数据转换) + + + +- ✅ database(数据库操作) + + + +- ✅ file(文件操作) + + + + + +### 网络节点 + + + +- ✅ http(HTTP请求) + + + +- ✅ webhook(Webhook) + + + + + +### 系统节点 + + + +- ✅ schedule(定时任务) + + + +- ✅ delay/timer(延迟/定时器) + + + + + +### 通信节点 + + + +- ✅ email(邮件) + + + +- ✅ message_queue(消息队列) + + + + + +--- + + + + + +## 🆕 建议新增的节点类型(按优先级排序) + + + + + +### 🔴 高优先级(核心功能增强) + + + + + +#### 1. **Switch节点(多分支路由)** + + + +- **类型**: `switch` + + + +- **分类**: 逻辑 + + + +- **功能**: 根据多个条件值进行多分支路由(类似编程语言的switch/case) + + + +- **配置**: + + + +  ```json + + + +  { + + + +    "field": "status", + + + +    "cases": { + + + +      "success": "success_handle", + + + +      "failed": "error_handle", + + + +      "pending": "wait_handle" + + + +    }, + + + +    "default": "default_handle" + + + +  } + + + +  ``` + + + +- **使用场景**: 多状态处理、多条件分支、路由分发 + + + +- **参考**: n8n的Switch节点 + + + + + +#### 2. **Merge节点(合并分支)** + + + +- **类型**: `merge` + + + +- **分类**: 逻辑 + + + +- **功能**: 合并多个分支的数据流 + + + +- **配置**: + + + +  ```json + + + +  { + + + +    "mode": "merge_all",  // merge_all, merge_first, merge_last + + + +    "strategy": "array"    // array, object, concat + + + +  } + + + +  ``` + + + +- **使用场景**: 并行处理后的结果合并、多数据源汇总 + + + +- **参考**: n8n的Merge节点 + + + + + +#### 3. **Wait节点(等待条件)** + + + +- **类型**: `wait` + + + +- **分类**: 逻辑 + + + +- **功能**: 等待特定条件满足后再继续执行 + + + +- **配置**: + + + +  ```json + + + +  { + + + +    "wait_type": "condition",  // condition, time, event + + + +    "condition": "{status} == 'ready'", + + + +    "timeout": 300, + + + +    "poll_interval": 5 + + + +  } + + + +  ``` + + + +- **使用场景**: 等待异步任务完成、等待外部事件、条件等待 + + + +- **参考**: Make.com的Wait节点 + + + + + +#### 4. **JSON处理节点** + + + +- **类型**: `json` + + + +- **分类**: 数据 + + + +- **功能**: JSON解析、构建、转换、验证 + + + +- **配置**: + + + +  ```json + + + +  { + + + +    "operation": "parse",  // parse, stringify, extract, validate + + + +    "path": "$.data.items[*]", + + + +    "schema": {} + + + +  } + + + +  ``` + + + +- **使用场景**: API响应处理、数据提取、JSON格式转换 + + + +- **参考**: n8n的JSON节点 + + + + + +#### 5. **文本处理节点** + + + +- **类型**: `text` + + + +- **分类**: 数据 + + + +- **功能**: 文本拆分、合并、提取、替换、格式化 + + + +- **配置**: + + + +  ```json + + + +  { + + + +    "operation": "split",  // split, join, extract, replace, format + + + +    "delimiter": "\n", + + + +    "regex": "\\d+", + + + +    "template": "Hello {name}" + + + +  } + + + +  ``` + + + +- **使用场景**: 文本清洗、格式化、提取关键信息 + + + +- **参考**: Zapier的Text Formatter + + + + + +#### 6. **缓存节点** + + + +- **类型**: `cache` + + + +- **分类**: 数据 + + + +- **功能**: 数据缓存、缓存读取、缓存更新 + + + +- **配置**: + + + +  ```json + + + +  { + + + +    "operation": "get",  // get, set, delete, clear + + + +    "key": "user_{user_id}", + + + +    "ttl": 3600, + + + +    "backend": "redis"  // redis, memory + + + +  } + + + +  ``` + + + +- **使用场景**: 减少重复计算、提高性能、临时数据存储 + + + +- **参考**: n8n的Cache节点 + + + + + +--- + + + + + +### 🟡 中优先级(功能扩展) + + + + + +#### 7. **向量数据库节点** + + + +- **类型**: `vector_db` + + + +- **分类**: AI + + + +- **功能**: 向量存储、相似度搜索、RAG检索 + + + +- **配置**: + + + +  ```json + + + +  { + + + +    "operation": "search",  // search, upsert, delete + + + +    "collection": "documents", + + + +    "query_vector": "{embedding}", + + + +    "top_k": 5 + + + +  } + + + +  ``` + + + +- **使用场景**: RAG应用、语义搜索、知识库检索 + + + +- **参考**: LangChain的VectorStore + + + + + +#### 8. **Slack/钉钉/企业微信节点** + + + +- **类型**: `slack` / `dingtalk` / `wechat_work` + + + +- **分类**: 通信 + + + +- **功能**: 发送消息、创建频道、获取消息 + + + +- **配置**: + + + +  ```json + + + +  { + + + +    "operation": "send_message", + + + +    "channel": "#general", + + + +    "message": "Hello {user}", + + + +    "attachments": [] + + + +  } + + + +  ``` + + + +- **使用场景**: 团队通知、工作流通知、协作沟通 + + + +- **参考**: Zapier的Slack集成 + + + + + +#### 9. **短信节点(SMS)** + + + +- **类型**: `sms` + + + +- **分类**: 通信 + + + +- **功能**: 发送短信、批量发送、短信模板 + + + +- **配置**: + + + +  ```json + + + +  { + + + +    "provider": "aliyun",  // aliyun, tencent, twilio + + + +    "phone": "{phone_number}", + + + +    "template": "验证码:{code}", + + + +    "sign": "公司名称" + + + +  } + + + +  ``` + + + +- **使用场景**: 验证码发送、通知提醒、营销短信 + + + +- **参考**: n8n的SMS节点 + + + + + +#### 10. **对象存储节点(S3/OSS)** + + + +- **类型**: `object_storage` + + + +- **分类**: 数据 + + + +- **功能**: 文件上传、下载、删除、列表 + + + +- **配置**: + + + +  ```json + + + +  { + + + +    "provider": "oss",  // oss, s3, cos + + + +    "operation": "upload", + + + +    "bucket": "my-bucket", + + + +    "key": "files/{filename}", + + + +    "file": "{file_data}" + + + +  } + + + +  ``` + + + +- **使用场景**: 文件存储、大文件处理、静态资源管理 + + + +- **参考**: n8n的S3节点 + + + + + +#### 11. **CSV处理节点** + + + +- **类型**: `csv` + + + +- **分类**: 数据 + + + +- **功能**: CSV解析、生成、转换 + + + +- **配置**: + + + +  ```json + + + +  { + + + +    "operation": "parse",  // parse, generate, convert + + + +    "delimiter": ",", + + + +    "headers": true, + + + +    "encoding": "utf-8" + + + +  } + + + +  ``` + + + +- **使用场景**: 数据导入导出、报表生成、批量处理 + + + +- **参考**: n8n的CSV节点 + + + + + +#### 12. **PDF处理节点** + + + +- **类型**: `pdf` + + + +- **分类**: 数据 + + + +- **功能**: PDF解析、生成、合并、拆分 + + + +- **配置**: + + + +  ```json + + + +  { + + + +    "operation": "extract_text",  // extract_text, generate, merge, split + + + +    "pages": "1-10", + + + +    "template": "report_template.html" + + + +  } + + + +  ``` + + + +- **使用场景**: 文档处理、报告生成、数据提取 + + + +- **参考**: Zapier的PDF工具 + + + + + +#### 13. **图像处理节点** + + + +- **类型**: `image` + + + +- **分类**: 数据 + + + +- **功能**: 图像缩放、裁剪、格式转换、OCR识别 + + + +- **配置**: + + + +  ```json + + + +  { + + + +    "operation": "resize",  // resize, crop, convert, ocr + + + +    "width": 800, + + + +    "height": 600, + + + +    "format": "png" + + + +  } + + + +  ``` + + + +- **使用场景**: 图片处理、OCR识别、图像分析 + + + +- **参考**: n8n的Image节点 + + + + + +#### 14. **错误处理节点(Try-Catch)** + + + +- **类型**: `error_handler` + + + +- **分类**: 逻辑 + + + +- **功能**: 捕获错误、错误重试、错误通知 + + + +- **配置**: + + + +  ```json + + + +  { + + + +    "retry_count": 3, + + + +    "retry_delay": 1000, + + + +    "on_error": "notify", + + + +    "error_handler_workflow": "error_workflow_id" + + + +  } + + + +  ``` + + + +- **使用场景**: 错误处理、重试机制、异常通知 + + + +- **参考**: Make.com的错误处理 + + + + + +#### 15. **日志节点** + + + +- **类型**: `log` + + + +- **分类**: 系统 + + + +- **功能**: 记录日志、调试输出、性能监控 + + + +- **配置**: + + + +  ```json + + + +  { + + + +    "level": "info",  // debug, info, warning, error + + + +    "message": "Processing: {data}", + + + +    "include_data": true + + + +  } + + + +  ``` + + + +- **使用场景**: 调试、监控、审计日志 + + + +- **参考**: n8n的Log节点 + + + + + +--- + + + + + +### 🟢 低优先级(高级功能) + + + + + +#### 16. **子工作流节点(Subworkflow)** + + + +- **类型**: `subworkflow` + + + +- **分类**: 逻辑 + + + +- **功能**: 调用其他工作流、工作流复用 + + + +- **配置**: + + + +  ```json + + + +  { + + + +    "workflow_id": "workflow_123", + + + +    "input_mapping": { + + + +      "param1": "{value1}", + + + +      "param2": "{value2}" + + + +    } + + + +  } + + + +  ``` + + + +- **使用场景**: 模块化设计、工作流复用、复杂任务拆分 + + + +- **参考**: n8n的Subworkflow节点 + + + + + +#### 17. **代码执行节点(Code/Function)** + + + +- **类型**: `code` + + + +- **分类**: 逻辑 + + + +- **功能**: 执行自定义代码(Python/JavaScript) + + + +- **配置**: + + + +  ```json + + + +  { + + + +    "language": "python",  // python, javascript + + + +    "code": "result = input_data['value'] * 2\nreturn {'output': result}", + + + +    "timeout": 30 + + + +  } + + + +  ``` + + + +- **使用场景**: 复杂计算、自定义逻辑、快速原型 + + + +- **参考**: n8n的Code节点 + + + + + +#### 18. **API认证节点(OAuth)** + + + +- **类型**: `oauth` + + + +- **分类**: 网络 + + + +- **功能**: OAuth认证、Token管理、自动刷新 + + + +- **配置**: + + + +  ```json + + + +  { + + + +    "provider": "google",  // google, github, custom + + + +    "client_id": "xxx", + + + +    "client_secret": "xxx", + + + +    "scopes": ["read", "write"] + + + +  } + + + +  ``` + + + +- **使用场景**: 第三方API集成、安全认证 + + + +- **参考**: Zapier的OAuth集成 + + + + + +#### 19. **数据验证节点** + + + +- **类型**: `validator` + + + +- **分类**: 数据 + + + +- **功能**: 数据格式验证、类型检查、规则验证 + + + +- **配置**: + + + +  ```json + + + +  { + + + +    "schema": { + + + +      "type": "object", + + + +      "properties": { + + + +        "email": {"type": "string", "format": "email"}, + + + +        "age": {"type": "number", "minimum": 0, "maximum": 150} + + + +      }, + + + +      "required": ["email"] + + + +    }, + + + +    "on_error": "reject"  // reject, continue, transform + + + +  } + + + +  ``` + + + +- **使用场景**: 数据质量保证、API输入验证、数据清洗 + + + +- **参考**: JSON Schema验证 + + + + + +#### 20. **Excel处理节点** + + + +- **类型**: `excel` + + + +- **分类**: 数据 + + + +- **功能**: Excel读取、写入、格式转换、公式计算 + + + +- **配置**: + + + +  ```json + + + +  { + + + +    "operation": "read",  // read, write, convert, formula + + + +    "sheet": "Sheet1", + + + +    "range": "A1:C10", + + + +    "format": "xlsx"  // xlsx, xls, csv + + + +  } + + + +  ``` + + + +- **使用场景**: 报表处理、数据分析、批量导入导出 + + + +- **参考**: n8n的Spreadsheet节点 + + + + + +#### 21. **XML处理节点** + + + +- **类型**: `xml` + + + +- **分类**: 数据 + + + +- **功能**: XML解析、生成、转换、XPath查询 + + + +- **配置**: + + + +  ```json + + + +  { + + + +    "operation": "parse",  // parse, generate, convert, xpath + + + +    "xpath": "/root/item[@id='1']", + + + +    "encoding": "utf-8" + + + +  } + + + +  ``` + + + +- **使用场景**: XML数据交换、配置文件处理、数据提取 + + + +- **参考**: n8n的XML节点 + + + + + +#### 22. **日期时间处理节点** + + + +- **类型**: `datetime` + + + +- **分类**: 数据 + + + +- **功能**: 日期格式化、时区转换、日期计算、解析 + + + +- **配置**: + + + +  ```json + + + +  { + + + +    "operation": "format",  // format, parse, add, subtract, convert_timezone + + + +    "format": "YYYY-MM-DD HH:mm:ss", + + + +    "timezone": "Asia/Shanghai", + + + +    "value": "{timestamp}" + + + +  } + + + +  ``` + + + +- **使用场景**: 时间戳转换、时区处理、日期计算 + + + +- **参考**: Moment.js / Day.js + + + + + +#### 23. **数学运算节点** + + + +- **类型**: `math` + + + +- **分类**: 数据 + + + +- **功能**: 数学计算、统计、聚合、公式求值 + + + +- **配置**: + + + +  ```json + + + +  { + + + +    "operation": "calculate",  // calculate, sum, average, max, min, formula + + + +    "formula": "{a} + {b} * {c}", + + + +    "precision": 2 + + + +  } + + + +  ``` + + + +- **使用场景**: 数值计算、统计分析、数据聚合 + + + +- **参考**: n8n的Math节点 + + + + + +#### 24. **变量设置节点** + + + +- **类型**: `set_variable` + + + +- **分类**: 逻辑 + + + +- **功能**: 设置工作流变量、变量作用域管理 + + + +- **配置**: + + + +  ```json + + + +  { + + + +    "variables": { + + + +      "user_name": "{input.name}", + + + +      "timestamp": "{now()}", + + + +      "counter": "{counter + 1}" + + + +    }, + + + +    "scope": "workflow"  // workflow, execution, global + + + +  } + + + +  ``` + + + +- **使用场景**: 状态管理、计数器、临时变量存储 + + + +- **参考**: Make.com的Set Variable节点 + + + + + +#### 25. **变量获取节点** + + + +- **类型**: `get_variable` + + + +- **分类**: 逻辑 + + + +- **功能**: 获取工作流变量、变量查询 + + + +- **配置**: + + + +  ```json + + + +  { + + + +    "variable_name": "user_name", + + + +    "default_value": "Unknown", + + + +    "scope": "workflow" + + + +  } + + + +  ``` + + + +- **使用场景**: 变量读取、状态查询、条件判断 + + + +- **参考**: Make.com的Get Variable节点 + + + + + +#### 26. **批处理节点** + + + +- **类型**: `batch` + + + +- **分类**: 逻辑 + + + +- **功能**: 数据分批处理、批量操作、批处理控制 + + + +- **配置**: + + + +  ```json + + + +  { + + + +    "batch_size": 100, + + + +    "mode": "split",  // split, group, aggregate + + + +    "wait_for_completion": true + + + +  } + + + +  ``` + + + +- **使用场景**: 大数据处理、批量API调用、性能优化 + + + +- **参考**: n8n的Split In Batches节点 + + + + + +#### 27. **去重节点** + + + +- **类型**: `deduplicate` + + + +- **分类**: 数据 + + + +- **功能**: 数据去重、唯一性检查、重复项过滤 + + + +- **配置**: + + + +  ```json + + + +  { + + + +    "key": "id",  // 去重字段 + + + +    "method": "first",  // first, last, all + + + +    "case_sensitive": true + + + +  } + + + +  ``` + + + +- **使用场景**: 数据清洗、去重处理、唯一性保证 + + + +- **参考**: n8n的Remove Duplicates节点 + + + + + +#### 28. **排序节点** + + + +- **类型**: `sort` + + + +- **分类**: 数据 + + + +- **功能**: 数据排序、多字段排序、自定义排序规则 + + + +- **配置**: + + + +  ```json + + + +  { + + + +    "fields": [ + + + +      {"field": "priority", "order": "desc"}, + + + +      {"field": "created_at", "order": "asc"} + + + +    ], + + + +    "type": "number"  // number, string, date + + + +  } + + + +  ``` + + + +- **使用场景**: 数据排序、优先级处理、列表整理 + + + +- **参考**: n8n的Sort节点 + + + + + +#### 29. **过滤节点** + + + +- **类型**: `filter` + + + +- **分类**: 数据 + + + +- **功能**: 数据过滤、条件筛选、数据过滤规则 + + + +- **配置**: + + + +  ```json + + + +  { + + + +    "conditions": [ + + + +      {"field": "status", "operator": "equals", "value": "active"}, + + + +      {"field": "age", "operator": "greater_than", "value": 18} + + + +    ], + + + +    "logic": "AND"  // AND, OR + + + +  } + + + +  ``` + + + +- **使用场景**: 数据筛选、条件过滤、数据清洗 + + + +- **参考**: n8n的Filter节点 + + + + + +#### 30. **聚合节点** + + + +- **类型**: `aggregate` + + + +- **分类**: 数据 + + + +- **功能**: 数据聚合、分组统计、汇总计算 + + + +- **配置**: + + + +  ```json + + + +  { + + + +    "group_by": ["category", "status"], + + + +    "aggregations": { + + + +      "total": "sum(amount)", + + + +      "count": "count()", + + + +      "average": "avg(price)" + + + +    } + + + +  } + + + +  ``` + + + +- **使用场景**: 数据统计、报表生成、数据分析 + + + +- **参考**: SQL的GROUP BY + + + + + +--- + + + +## 📋 实施建议 + + + +### 开发优先级 + + + +1. **第一阶段(核心功能)**: Switch、Merge、Wait、JSON处理、文本处理、缓存 + +2. **第二阶段(常用功能)**: 向量数据库、日志、错误处理、CSV处理、对象存储 + +3. **第三阶段(扩展功能)**: 通信节点(Slack/钉钉/企业微信/短信)、PDF/图像处理、Excel处理 + +4. **第四阶段(高级功能)**: 子工作流、代码执行、OAuth、数据验证、批处理 + + + +### 技术实现要点 + + + +1. **节点注册机制**: 统一的节点注册和发现机制 + +2. **配置验证**: 每个节点需要配置Schema验证 + +3. **错误处理**: 统一的错误处理和重试机制 + +4. **性能优化**: 异步执行、批量处理、缓存机制 + +5. **可扩展性**: 插件化架构,支持自定义节点 + + + +### 测试建议 + + + +1. **单元测试**: 每个节点的核心功能 + +2. **集成测试**: 节点之间的数据流 + +3. **性能测试**: 大数据量、并发场景 + +4. **用户体验测试**: UI交互、错误提示、文档 + + + +--- + + + +## 📚 参考资源 + + + +- **n8n**: https://docs.n8n.io/nodes/ + +- **Make.com**: https://www.make.com/en/help + +- **Zapier**: https://zapier.com/apps + +- **LangChain**: https://python.langchain.com/docs/modules/data_connection/ + +- **Airflow**: https://airflow.apache.org/docs/ + + + +--- + + + +## ✅ 总结 + + + +本文档列出了**30个建议新增的节点类型**,分为三个优先级: + + + +- **高优先级(6个)**: 核心功能增强,建议优先实现 + +- **中优先级(9个)**: 功能扩展,提升系统能力 + +- **低优先级(15个)**: 高级功能,满足复杂场景需求 + + + +建议根据实际业务需求和开发资源,按优先级逐步实现这些节点类型,持续完善工作流编辑器的功能。 \ No newline at end of file diff --git a/docs/Obsidian笔记体系/Projects/saars开发/aiapply/未命名 6.md b/docs/Obsidian笔记体系/Projects/saars开发/aiapply/已完成的增强功能.md similarity index 100% rename from docs/Obsidian笔记体系/Projects/saars开发/aiapply/未命名 6.md rename to docs/Obsidian笔记体系/Projects/saars开发/aiapply/已完成的增强功能.md diff --git a/docs/Obsidian笔记体系/Projects/saars开发/aiapply/已实现工作流模板快速应用功能。功能总结如下.md b/docs/Obsidian笔记体系/Projects/saars开发/aiapply/已实现工作流模板快速应用功能。功能总结如下.md new file mode 100644 index 0000000..012cee1 --- /dev/null +++ b/docs/Obsidian笔记体系/Projects/saars开发/aiapply/已实现工作流模板快速应用功能。功能总结如下.md @@ -0,0 +1,53 @@ +### 工作流模板快速应用 + +在工具栏添加了“应用模板”按钮,支持: + +1. 模板列表展示 + +- 从模板市场或工作流模板API加载模板 + +- 显示模板名称、描述、节点数、使用次数、评分等信息 + +- 支持搜索过滤(按名称、描述、分类) + +1. 模板应用功能 + +- 一键应用:点击模板即可应用到当前工作流 + +- 智能ID映射:自动重新生成节点和边的ID,避免冲突 + +- 智能定位:新节点自动添加到画布右侧,不覆盖现有节点 + +- 自动布局:应用后自动执行布局,使工作流更清晰 + +1. 用户体验优化 + +- 模板卡片式展示,悬停高亮 + +- 显示模板统计信息(节点数、使用次数、评分) + +- 精选模板标记 + +- 加载状态提示 + +### 使用方法 + +1. 点击工具栏的“应用模板”按钮 + +2. 在对话框中选择模板(可搜索) + +3. 点击模板卡片即可应用 + +4. 模板节点会自动添加到画布,并执行自动布局 + +### 技术实现 + +- 模板加载:优先从模板市场API获取,失败则回退到工作流模板API + +- ID冲突处理:为每个模板节点生成新的唯一ID + +- 位置计算:根据现有节点位置计算偏移量,避免重叠 + +- 自动布局:应用模板后自动执行层次布局算法 + +功能已集成到工作流编辑器中,可在 Agent 管理页面或工作流设计器中使用。 \ No newline at end of file diff --git a/docs/Obsidian笔记体系/Projects/saars开发/aiapply/未命名 2.md b/docs/Obsidian笔记体系/Projects/saars开发/aiapply/开发低代码智能体平台 - 完整开发提示词.md similarity index 100% rename from docs/Obsidian笔记体系/Projects/saars开发/aiapply/未命名 2.md rename to docs/Obsidian笔记体系/Projects/saars开发/aiapply/开发低代码智能体平台 - 完整开发提示词.md diff --git a/docs/Obsidian笔记体系/Projects/saars开发/aiapply/未命名 4.md b/docs/Obsidian笔记体系/Projects/saars开发/aiapply/未命名 4.md deleted file mode 100644 index 94ed55c..0000000 --- a/docs/Obsidian笔记体系/Projects/saars开发/aiapply/未命名 4.md +++ /dev/null @@ -1,23 +0,0 @@ -## 现在可以测试了 - -请重新测试 Agent: - -1. 点击右上角“测试运行” - -2. 执行应该能正常启动 - -3. 节点应该显示执行动画: - -- 执行中的节点:蓝色边框 + 脉冲动画 - -- 已完成的节点:绿色边框 - -- 失败的节点:红色边框 - -如果仍有问题,请查看: - -- 后端日志:docker-compose -f docker-compose.dev.yml logs -f backend celery - -- 前端控制台:查看 [rjb] 前缀的调试日志 - -现在链路调用应该可以正常工作了。 \ No newline at end of file diff --git a/docs/Obsidian笔记体系/Projects/saars开发/aiapply/查看日志的方法.md b/docs/Obsidian笔记体系/Projects/saars开发/aiapply/查看日志的方法.md new file mode 100644 index 0000000..a2211bb --- /dev/null +++ b/docs/Obsidian笔记体系/Projects/saars开发/aiapply/查看日志的方法.md @@ -0,0 +1,112 @@ +## 查看日志的方法 + +### 方法1:使用专用脚本(推荐) + +运行以下命令查看 Switch 节点的详细日志: + +cd /home/renjianbo/aiagent + +python3 check_switch_logs.py + +该脚本会显示: + +- Switch 节点的匹配过程(字段值、匹配的分支) + +- 分支过滤过程(保留/移除的边) + +- 意图理解节点的输出 + +- 所有节点的输出摘要 + +### 方法2:查看所有执行日志 + +运行以下命令查看完整的执行日志: + +cd /home/renjianbo/aiagent + +python3 check_execution_logs.py + +### 方法3:查看后端控制台日志 + +如果后端服务正在运行,日志会直接输出到控制台。查找包含 [rjb] Switch 的日志行。 + +### 方法4:通过 API 查看 + +可以通过 API 获取执行日志: + +# 获取执行ID(从最近的执行记录中) + +# 然后访问: + +GET /api/v1/execution_logs/executions/{execution_id}?node_id=switch-intent + +## 修复内容 + +1. 日志保存到数据库:Switch 节点的日志现在会通过 self.logger 保存到数据库的 execution_logs 表 + +2. 更详细的日志信息: + +- 匹配阶段:字段名、字段值、匹配的分支、处理后的输入数据 + +- 过滤阶段:过滤前后的边数、每条边的处理结果 + +1. 控制台日志:同时输出到控制台,便于实时查看 + +## 测试步骤 + +1. 执行一次 Agent 测试(发送一条消息) + +2. 运行日志查看脚本: + +    python3 check_switch_logs.py + + +3. 查看输出,重点关注: + +- Switch节点匹配:检查字段值是否正确提取 + +- Switch节点过滤后:检查是否只保留了一条边 + +## 预期输出示例 + +Switch节点相关日志: + +[1] 16:07:23.123 [INFO] + +    节点: switch-intent (switch) + +    消息: Switch节点匹配: field=intent, field_value=greeting, matched_case=greeting-handle + +    数据: + +      { + +        "field": "intent", + +        "field_value": "greeting", + +        "matched_case": "greeting-handle", + +        ... + +      } + +[2] 16:07:23.125 [INFO] + +    节点: switch-intent (switch) + +    消息: Switch节点分支过滤: branch=greeting-handle, 保留1条边,移除5条边 + +    数据: + +      { + +        "branch": "greeting-handle", + +        "edges_kept": 1, + +        "edges_removed": 5 + +      } + +如果仍有问题,请运行 check_switch_logs.py 并分享输出,我可以进一步分析。 \ No newline at end of file diff --git a/docs/Obsidian笔记体系/Projects/saars开发/aiapply/聊天智能机器人(苏苏).md b/docs/Obsidian笔记体系/Projects/saars开发/aiapply/聊天智能机器人(苏苏).md new file mode 100644 index 0000000..cb54405 --- /dev/null +++ b/docs/Obsidian笔记体系/Projects/saars开发/aiapply/聊天智能机器人(苏苏).md @@ -0,0 +1,119 @@ +## 已创建的内容 + +### 1. Python 生成脚本 + +- 文件: backend/scripts/generate_chat_agent.py + +- 功能: 自动生成并创建聊天智能体 Agent + +- 状态: 已成功运行,Agent 已创建到数据库 + +### 2. 详细说明文档 + +- 文件: 聊天智能体示例说明.md + +- 内容: 工作流结构、节点说明、使用方法、配置要点、测试示例 + +### 3. JSON 配置文件 + +- 文件: 聊天智能体示例.json + +- 功能: 可直接导入到平台的 Agent 配置 + +### 4. 数据库中的 Agent + +- 名称: 智能聊天助手(完整示例) + +- ID: 78ba9dfb-31fa-4550-833b-c44d4378cf6c + +- 状态: 草稿(draft) + +- 节点数: 15 个 + +- 连接数: 19 条 + +## 工作流特性 + +该示例展示了以下能力: + +1. 记忆管理:使用 Cache 节点存储对话历史 + +2. 意图识别:LLM 分析用户意图和情感 + +3. 多分支路由:Switch 节点根据意图分发到 6 个处理分支 + +4. 上下文传递:Transform 节点合并用户输入和记忆 + +5. 个性化回复:针对不同意图生成不同风格的回复 + +6. 多轮对话:支持上下文记忆和连贯对话 + +## 工作流结构 + +开始 → 查询记忆 → 合并上下文 → 意图理解 → Switch路由 + +                                              ├─→ 问候处理 + +                                              ├─→ 问题回答 + +                                              ├─→ 情感回应 + +                                              ├─→ 请求处理 + +                                              ├─→ 告别回复 + +                                              └─→ 通用回复 + +                                              ↓ + +合并回复 → 更新记忆 → 格式化回复 → 结束 + +## 下一步操作 + +1. 查看 Agent + +- 在 Agent 管理页面找到 智能聊天助手(完整示例) + +- 点击“设计”按钮查看工作流 + +1. 配置 API 密钥 + +- 在工作流编辑器中,为每个 LLM 节点配置 API 密钥 + +- 确保模型提供商和模型名称正确 + +1. 测试 Agent + +- 点击“测试”按钮 + +- 输入测试消息(如“你好”、“今天心情不错”等) + +- 查看执行结果和回复 + +1. 发布 Agent + +- 测试通过后,点击“发布”按钮 + +- Agent 状态变为“已发布” + +- 可以点击“使用”按钮进行对话测试 + +1. 自定义扩展 + +- 根据需求修改 Prompt + +- 添加新的意图分支 + +- 增强记忆功能 + +- 集成外部工具 + +## 文件位置 + +- 生成脚本: backend/scripts/generate_chat_agent.py + +- 说明文档: 聊天智能体示例说明.md + +- JSON 配置: 聊天智能体示例.json + +所有文件已创建完成,可以直接使用。如需进一步定制或有问题,请告知。 \ No newline at end of file diff --git a/docs/Obsidian笔记体系/Projects/知你-调测/数美文本风险拦截实施方案.md b/docs/Obsidian笔记体系/Projects/知你-调测/数美文本风险拦截实施方案.md new file mode 100644 index 0000000..74e8d08 --- /dev/null +++ b/docs/Obsidian笔记体系/Projects/知你-调测/数美文本风险拦截实施方案.md @@ -0,0 +1,472 @@ +# 数美文本风险拦截实施方案 + +## 一、需求概述 + +在聊天页面(ConversationActivity)实现基于数美API的文本风险拦截功能,根据风险等级显示不同级别的警告提示。 + +## 二、风险等级与提示对应关系 + +根据数美接口返回的 `riskLevel` 字段: + +| riskLevel | 风险等级 | 提示内容 | 处理方式 | +|-----------|---------|---------|---------| +| PASS | 通过 | 无提示 | 正常发送消息 | +| REVIEW | 二级警告 | "聊天内容存在风险,请谨慎交流" | 显示警告,允许用户选择是否发送 | +| REJECT | 三级警告 | "当前聊天内容可能存在风险,请谨慎核实信息真实性" | 显示警告,建议用户修改内容 | + +## 三、技术实现方案 + +### 3.1 架构设计 + +``` +ConversationFragment (聊天界面) + ↓ +TextRiskInterceptor (风险拦截器) + ↓ +ShumeiApiClient (数美API客户端) + ↓ +数美API服务器 +``` + +### 3.2 核心组件 + +#### 3.2.1 TextRiskInterceptor(风险拦截器) + +**职责**: +- 在消息发送前拦截文本消息 +- 调用数美API进行风险检测 +- 根据风险等级决定是否允许发送或显示警告 + +**关键方法**: +```java +public interface TextRiskInterceptor { + /** + * 检测文本风险 + * @param text 待检测文本 + * @param callback 检测结果回调 + */ + void checkTextRisk(String text, RiskCheckCallback callback); + + /** + * 风险检测回调 + */ + interface RiskCheckCallback { + void onRiskCheckResult(RiskCheckResult result); + } +} +``` + +#### 3.2.2 ShumeiApiClient(数美API客户端) + +**职责**: +- 封装数美API调用逻辑 +- 处理请求参数构建 +- 解析响应结果 + +**关键参数**: +- accessKey: "4OLLd2djEWRoCDVAbRAV" +- appId: "default" +- eventId: "text" +- type: "TEXTRISK" +- data.text: 待检测文本 +- data.tokenId: 用户token +- data.ip: 用户IP +- data.deviceId: 设备ID +- data.nickname: 用户昵称 + +#### 3.2.3 RiskWarningDialog(风险警告对话框) + +**职责**: +- 显示二级/三级警告提示 +- 提供用户操作选项(继续发送/取消/修改) + +### 3.3 集成点 + +#### 3.3.1 消息发送拦截点 + +在 `ConversationFragment` 或 `ConversationInputPanel` 中,消息发送前进行拦截: + +**位置**:`ConversationInputPanel.sendTextMessage()` 或类似方法 + +**拦截流程**: +1. 用户点击发送按钮 +2. 获取输入框文本内容 +3. 调用 `TextRiskInterceptor.checkTextRisk()` 进行风险检测 +4. 根据检测结果: + - PASS:直接发送消息 + - REVIEW:显示二级警告,用户确认后发送 + - REJECT:显示三级警告,建议用户修改 + +#### 3.3.2 警告提示显示位置 + +**方案一:对话框提示(推荐)** +- 在消息发送前弹出警告对话框 +- 显示风险等级和提示内容 +- 提供"继续发送"和"取消"按钮 + +**方案二:消息气泡提示** +- 在聊天界面中插入系统警告消息 +- 显示在风险消息的上方或下方 +- 使用灰色背景,区别于普通消息 + +**方案三:顶部横幅提示** +- 在聊天界面顶部显示警告横幅 +- 持续显示一段时间后自动消失 +- 可手动关闭 + +### 3.4 数据模型 + +#### 3.4.1 RiskCheckResult(风险检测结果) + +```java +public class RiskCheckResult { + private String riskLevel; // PASS, REVIEW, REJECT + private String riskDescription; // 风险描述 + private String riskLabel1; // 一级标签 + private String riskLabel2; // 二级标签 + private String riskLabel3; // 三级标签 + private double probability; // 风险概率 + private String filteredText; // 过滤后的文本 + private List allLabels; // 所有风险标签 +} +``` + +#### 3.4.2 响应解析 + +根据数美接口文档,关键字段: +- `code`: 1100 表示成功 +- `riskLevel`: 风险等级(PASS/REVIEW/REJECT) +- `riskDescription`: 风险描述 +- `allLabels`: 所有检测到的风险标签数组 +- `filteredText`: 过滤后的文本(敏感词被替换为**) + +## 四、实现步骤 + +### 步骤1:创建数美API客户端 + +**文件**:`app/src/main/java/com/xunpaisoft/social/im/risk/ShumeiApiClient.java` + +**功能**: +- 封装数美API调用 +- 构建请求参数 +- 解析响应结果 +- 错误处理 + +**关键代码**: +```java +public class ShumeiApiClient { + private static final String API_URL = "http://api-text-bj.fengkongcloud.com/text/v4"; + private static final String ACCESS_KEY = "4OLLd2djEWRoCDVAbRAV"; + private static final String APP_ID = "default"; + private static final String EVENT_ID = "text"; + private static final String TYPE = "TEXTRISK"; + + public void checkTextRisk(String text, String tokenId, String ip, + String deviceId, String nickname, + Map extra, + RiskCheckCallback callback) { + // 构建请求参数 + // 发送POST请求 + // 解析响应 + // 回调结果 + } +} +``` + +### 步骤2:创建风险拦截器 + +**文件**:`app/src/main/java/com/xunpaisoft/social/im/risk/TextRiskInterceptor.java` + +**功能**: +- 在消息发送前拦截 +- 调用数美API检测 +- 根据风险等级处理 + +**关键代码**: +```java +public class TextRiskInterceptor { + private ShumeiApiClient apiClient; + + public void interceptBeforeSend(String text, InterceptCallback callback) { + // 获取用户信息(tokenId, ip, deviceId, nickname等) + // 调用数美API检测 + // 根据riskLevel处理 + } +} +``` + +### 步骤3:创建警告对话框 + +**文件**:`app/src/main/java/com/xunpaisoft/social/im/risk/RiskWarningDialog.java` + +**功能**: +- 显示二级/三级警告 +- 提供用户操作选项 + +**关键代码**: +```java +public class RiskWarningDialog { + public static void showReviewWarning(Context context, String message, + OnConfirmListener listener) { + // 显示二级警告:"聊天内容存在风险,请谨慎交流" + } + + public static void showRejectWarning(Context context, String message, + OnConfirmListener listener) { + // 显示三级警告:"当前聊天内容可能存在风险,请谨慎核实信息真实性" + } +} +``` + +### 步骤4:集成到ConversationFragment + +**修改文件**:`uikit/src/main/java/cn/wildfire/chat/kit/conversation/ConversationFragment.java` + +**集成点**:消息发送方法 + +**关键代码**: +```java +// 在发送文本消息前拦截 +private void sendTextMessage(String text) { + // 先进行风险检测 + textRiskInterceptor.interceptBeforeSend(text, new InterceptCallback() { + @Override + public void onInterceptResult(RiskCheckResult result) { + if (result.getRiskLevel().equals("PASS")) { + // 风险等级为PASS,直接发送 + doSendMessage(text); + } else if (result.getRiskLevel().equals("REVIEW")) { + // 二级警告 + RiskWarningDialog.showReviewWarning( + getContext(), + "聊天内容存在风险,请谨慎交流", + new OnConfirmListener() { + @Override + public void onConfirm() { + doSendMessage(text); + } + @Override + public void onCancel() { + // 取消发送 + } + } + ); + } else if (result.getRiskLevel().equals("REJECT")) { + // 三级警告 + RiskWarningDialog.showRejectWarning( + getContext(), + "当前聊天内容可能存在风险,请谨慎核实信息真实性", + new OnConfirmListener() { + @Override + public void onConfirm() { + // 仍然允许发送,但建议用户修改 + doSendMessage(text); + } + @Override + public void onCancel() { + // 取消发送,建议用户修改内容 + } + } + ); + } + } + + @Override + public void onError(String error) { + // 检测失败,可以选择直接发送或提示错误 + // 建议:检测失败时允许发送,避免影响用户体验 + doSendMessage(text); + } + }); +} +``` + +## 五、性能优化 + +### 5.1 异步处理 +- 风险检测在后台线程进行 +- 不阻塞UI线程 +- 显示加载提示 + +### 5.2 缓存机制 +- 相同文本内容可以缓存检测结果 +- 减少重复API调用 +- 提高响应速度 + +### 5.3 超时处理 +- 设置API调用超时时间(建议1-2秒) +- 超时后允许发送,避免影响用户体验 +- 记录超时日志 + +### 5.4 频率限制 +- 避免频繁调用API +- 可以设置检测间隔(如500ms内不重复检测) +- 减少服务器压力 + +## 六、用户体验设计 + +### 6.1 加载提示 +- 检测过程中显示"正在检测..."提示 +- 使用ProgressDialog或Toast +- 避免用户等待焦虑 + +### 6.2 警告对话框设计 + +**二级警告(REVIEW)**: +- 标题:"风险提示" +- 内容:"聊天内容存在风险,请谨慎交流" +- 按钮:"继续发送" / "取消" +- 样式:黄色警告图标 + +**三级警告(REJECT)**: +- 标题:"高风险提示" +- 内容:"当前聊天内容可能存在风险,请谨慎核实信息真实性" +- 按钮:"仍然发送" / "取消并修改" +- 样式:红色警告图标 + +### 6.3 错误处理 +- API调用失败时,记录日志但不阻止发送 +- 网络异常时,提示用户但允许发送 +- 避免因检测失败影响正常聊天 + +## 七、数据获取 + +### 7.1 用户信息获取 +- `tokenId`: 从用户登录信息获取 +- `ip`: 从网络请求中获取或使用设备IP +- `deviceId`: 从设备信息获取(Android ID或设备唯一标识) +- `nickname`: 从当前用户信息获取 + +### 7.2 额外信息(extra) +- `topic`: 会话ID或话题ID +- `atId`: 发送者用户ID +- `room`: 群聊ID(如果是群聊) +- `receiveTokenId`: 接收者用户ID + +## 八、测试方案 + +### 8.1 测试用例 + +**测试用例1:正常文本** +- 输入:"你好" +- 预期:riskLevel = PASS,直接发送 + +**测试用例2:二级风险文本** +- 输入:包含敏感词但风险较低 +- 预期:riskLevel = REVIEW,显示二级警告 + +**测试用例3:三级风险文本** +- 输入:"加个好友吧 qq12345" +- 预期:riskLevel = REJECT,显示三级警告 + +**测试用例4:API调用失败** +- 模拟网络异常 +- 预期:允许发送,记录错误日志 + +**测试用例5:API超时** +- 模拟超时情况 +- 预期:允许发送,记录超时日志 + +### 8.2 性能测试 +- API响应时间测试 +- 并发检测测试 +- 内存占用测试 + +## 九、注意事项 + +### 9.1 隐私保护 +- 用户聊天内容需要加密传输 +- 遵守数据保护法规 +- 不存储敏感内容 + +### 9.2 用户体验 +- 检测速度要快,避免用户等待 +- 检测失败不应阻止正常聊天 +- 警告提示要清晰但不影响使用 + +### 9.3 成本控制 +- 数美API可能有调用费用 +- 考虑是否需要限制检测频率 +- 可以只检测文本消息,不检测图片/视频 + +### 9.4 兼容性 +- 确保不影响现有聊天功能 +- 向后兼容,不影响旧版本 +- 考虑不同Android版本的兼容性 + +## 十、实施优先级 + +### 第一阶段(核心功能) +1. 实现数美API客户端 +2. 实现风险拦截器 +3. 集成到消息发送流程 +4. 实现二级/三级警告对话框 + +### 第二阶段(优化) +1. 添加缓存机制 +2. 优化性能 +3. 完善错误处理 +4. 添加日志记录 + +### 第三阶段(增强) +1. 支持更多消息类型检测 +2. 添加统计功能 +3. 优化用户体验 +4. 添加配置管理 + +## 十一、代码示例 + +### 11.1 数美API调用示例 + +```java +// 构建请求参数 +Map requestParams = new HashMap<>(); +requestParams.put("accessKey", "4OLLd2djEWRoCDVAbRAV"); +requestParams.put("appId", "default"); +requestParams.put("eventId", "text"); +requestParams.put("type", "TEXTRISK"); + +Map data = new HashMap<>(); +data.put("text", text); +data.put("tokenId", getUserTokenId()); +data.put("ip", getUserIp()); +data.put("deviceId", getDeviceId()); +data.put("nickname", getCurrentUserNickname()); + +Map extra = new HashMap<>(); +extra.put("topic", conversationId); +extra.put("atId", getCurrentUserId()); +extra.put("room", getGroupId()); // 如果是群聊 +extra.put("receiveTokenId", getTargetUserId()); + +data.put("extra", extra); +requestParams.put("data", data); + +// 发送POST请求 +// 解析响应,获取riskLevel +``` + +### 11.2 风险等级判断 + +```java +String riskLevel = result.getRiskLevel(); +if ("PASS".equals(riskLevel)) { + // 通过,直接发送 +} else if ("REVIEW".equals(riskLevel)) { + // 二级警告 +} else if ("REJECT".equals(riskLevel)) { + // 三级警告 +} +``` + +## 十二、总结 + +本方案提供了完整的数美文本风险拦截实现思路,包括: +- 架构设计 +- 核心组件 +- 集成方案 +- 性能优化 +- 用户体验 +- 测试方案 + +实施时建议分阶段进行,先实现核心功能,再逐步优化和完善。 diff --git a/mkdocs.yml b/mkdocs.yml index c13f48b..2603b20 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -196,15 +196,20 @@ nav: - Obsidian笔记体系/Projects/saars开发/aiapply/工作流测试工具.md - Obsidian笔记体系/Projects/saars开发/aiapply/工作流(Workflow)vs Agent(智能体)的区别.md - Obsidian笔记体系/Projects/saars开发/aiapply/智能需求分析与解决方案生成器_使用说明.md - - Obsidian笔记体系/Projects/saars开发/aiapply/未命名 2.md - - Obsidian笔记体系/Projects/saars开发/aiapply/未命名 3.md - - Obsidian笔记体系/Projects/saars开发/aiapply/未命名 4.md - - Obsidian笔记体系/Projects/saars开发/aiapply/未命名 5.md - - Obsidian笔记体系/Projects/saars开发/aiapply/未命名 6.md - - Obsidian笔记体系/Projects/saars开发/aiapply/未命名 7.md - Obsidian笔记体系/Projects/saars开发/aiapply/电商系统用户订单处理流程设计方案.md - Obsidian笔记体系/Projects/saars开发/aiapply/节点配置中的温度和最大Token数是什么意思?.md - Obsidian笔记体系/Projects/saars开发/aiapply/项目低代码智能体功能扩展.md + - Obsidian笔记体系/Projects/saars开发/aiapply/# 创建Agent经验总结.md + - Obsidian笔记体系/Projects/saars开发/aiapply/aiagent节点类型扩展说明.md + - Obsidian笔记体系/Projects/saars开发/aiapply/下一步可选方向.md + - Obsidian笔记体系/Projects/saars开发/aiapply/个人简历.md + - Obsidian笔记体系/Projects/saars开发/aiapply/可新增节点类型建议.md + - Obsidian笔记体系/Projects/saars开发/aiapply/已完成的增强功能.md + - Obsidian笔记体系/Projects/saars开发/aiapply/已实现工作流模板快速应用功能。功能总结如下.md + - Obsidian笔记体系/Projects/saars开发/aiapply/开发低代码智能体平台 - 完整开发提示词.md + - Obsidian笔记体系/Projects/saars开发/aiapply/查看日志的方法.md + - Obsidian笔记体系/Projects/saars开发/aiapply/聊天智能机器人(苏苏).md + - Obsidian笔记体系/Projects/知你-调测/数美文本风险拦截实施方案.md - gerrit: - gerrit/gerrit上传代码详细指南.md - gerrit/gerrit分支规范.md