30 Commits

Author SHA1 Message Date
xiangning
943ae02859 perf: reuse prepared form schemas 2026-07-24 08:57:03 +08:00
xiangning
178b441b8a perf: batch workflow aggregate refresh 2026-07-24 08:49:29 +08:00
xiangning
4ba4769cc1 feat: migrate workflow job reliability state 2026-07-24 03:03:57 +08:00
xiangning
fdad2b2439 fix: make import jobs recoverable 2026-07-23 18:59:15 +08:00
xiangning
e515136c11 feat: atomically claim import jobs 2026-07-23 18:52:02 +08:00
xiangning
4aed8d9fa2 feat: process workflow timers with leases 2026-07-23 18:45:55 +08:00
xiangning
2eb6371c94 fix: persist workflow timer jobs 2026-07-23 18:41:52 +08:00
xiangning
e48f93aa04 feat: add workflow job lease model 2026-07-23 18:39:47 +08:00
xiangning
51eea796e2 refactor(rag): 重构AI模型相关代码结构和数据库迁移逻辑
- 将AI模型相关端点、命令、处理器移动到模块内部统一管理
- 优化数据库迁移脚本,添加对不同环境表状态的兼容处理逻辑
- 为异常处理添加错误码枚举参数,统一错误处理方式
- 重构多处业务逻辑中的异常抛出方式,增强代码一致性
- 移除独立的组件清单分组和项目定义,简化前端物料面板数据结构
- 修复测试代码中实体引用路径错误问题
- 添加新的监控模块测试项目到解决方案文件中
2026-07-20 08:25:18 +08:00
xiangning
6c110b579a refactor(dependencies): 移除未使用的域实体引用
- 从文件模块的多部分上传处理器中移除未使用的实体引用
- 从即时通讯模块的群组成员处理器中移除未使用的实体引用
- 从RAG模块的AI模型配置中移除未使用的实体引用
- 从监控模块的告警规则配置中移除未使用的实体引用
- 从平台模块的角色权限处理器中移除未使用的实体引用
- 从脚本模块的执行日志实体引用中进行清理
- 从多个基础设施配置类中移除未使用的依赖项
- 优化测试文件中的导入声明,移除不必要的引用
2026-07-19 14:09:47 +08:00
xiangning
3b13099378 refactor(domain): 重构领域实体结构并更新枚举命名
- 将通用 Entities 命名空间拆分为具体业务实体子目录
- 更新所有实体类型引用为具体的 Entity 后缀类型
- 将 ModelType、ModelProvider、GroupMemberRole 等枚举重命名为 Enum 后缀
- 重构 AiModel 相关配置和映射逻辑适配新的实体结构
- 更新测试代码中的实体类型引用和枚举使用
- 调整应用层处理器中的实体创建和查询逻辑
- 修改 appsettings.json 中的基础设施主机配置为动态占位符模式
2026-07-19 14:02:32 +08:00
xiangning
5332ff3867 refactor(monitoring): 重构监控模块数据库表名和查询处理
- 将监控模块表前缀从 mon_ 改为 b_
- 为工作流审批任务处理器添加流程引擎图加载逻辑
- 移除外部系统相关DTO和查询类的直接引用改为查询对象模式
- 为脚本执行服务添加模块程序集诊断日志
- 为分享表单提交功能增加密码验证支持
- 集成脚本模块数据库迁移支持
- 更新通知服务测试以兼容IOptionsMonitor接口变化
2026-07-19 13:09:43 +08:00
xiangning
74e99850e5 feat(workflow): 添加钉钉式节点级字段权限和依次审批功能
- 实现钉钉式节点级字段权限:从审批节点config解析fieldPermissions进行表单校验
- 添加依次审批模式支持:按顺序逐个创建审批任务并推进流程
- 扩展工作流定义实体:新增DefinitionTree字段存储钉式审批流树JSON
- 更新表单验证器:支持节点级字段权限配置影响必填校验逻辑
- 重构后台服务:修复OperationCanceledException处理防止进程崩溃
- 扩展脚本执行服务:支持加载各模块Application/Domain程序集
- 更新菜单配置:调整组件管理和脚本函数菜单顺序
- 完善工作流引擎:修复实例图加载和任务完成逻辑
2026-07-17 17:05:35 +08:00
xiangning
fb40c47d5b refactor(monitoring): 重构监控模块数据模型为文档模式
- 将 AlertRule 和 ExternalSystem 实体改为使用 JsonData 存储业务字段
- 移除独立的 ExternalSystemCredential 表,凭证信息合并到 ExternalSystem.JsonData
- 添加强类型视图 Data 属性用于访问 JsonData 中的业务数据
- 更新数据库配置将字段存储改为 jsonb 类型并调整索引策略
- 重构告警评估器使用 JsonData 强类型视图读取规则数据
- 更新连接器凭证解析器从 JsonData 中获取凭证信息
- 在 appsettings.json 中添加 monitoring 模块配置
- 将 monitoring 模块集成到主应用程序中并注册服务
- 更新相关处理器使用新的数据模型结构
2026-07-17 12:19:24 +08:00
xiangning
5239e59b4e fix(security): 修复端点权限缺失问题并加强系统安全防护
- 移除所有 RAG 相关端点的 AllowAnonymous,添加细粒度权限控制
- 配置全局默认授权策略,防止新端点意外公开
- 为 AI 模型、文档、对话、知识库等资源分配读写权限
- 强化 JWT 令牌验证,开启 Issuer/Audience 校验
- 修复脚本执行服务沙箱配置,增强 API 黑名单过滤
- 添加飞书通知凭证环境变量配置,移除硬编码敏感信息
- 完善验证行为逻辑,优化性能和异常处理
- 新增监控模块告警规则实体及相关配置
- 实现外部系统连接器契约和凭证解析服务
2026-07-17 10:06:22 +08:00
xiangning
3d45aed822 fix(workflow): 修复 WorkflowInstance.InitiatorId 系统性空值
全系统 InitiatorId 始终为 Guid.Empty,导致撤回鉴权与发起人通知失效。
自下而上修复:
- StartWorkflowInstanceCommand 加 InitiatorId 参数,Handler 写入实例
- StartWorkflowByNameCommandHandler 透传发起人(原为死参数)
- StartWorkflowInstanceEndpoint 取当前认证用户作为发起人
- IAiBotHandler.AnswerAsync 加 initiatorId 参数,AI 触发流程用真实发起人
- SendMessageCommandHandler 传 request.SenderId 给 AI 问答
- 补充测试断言验证 InitiatorId 正确赋值
2026-07-09 12:52:13 +08:00
xiangning
e9cc9247f2 test(scripting): 集成测试 + 按钮链回归测试
ScriptExecutionServiceTests:
- 脚本执行返回结果(简单+变量读取)
- 沙箱拦截(File/Reflection 禁用 API 抛异常)
- 草稿可测(ExecuteTestAsync 跳过 Published)
- 状态守卫(Draft/Disabled 拒绝正式执行)
- 执行日志写入(success/timeout/failed)
- 业务异常冒泡不包裹
- 编译缓存(同代码两次执行)
- Logger 输出收集
- ExecuteByNameAsync 按名执行

ScriptCommandHandlerTests:
- Create 唯一名校验 + 默认超时
- Update Disabled 拒绝 + Published 自增版本
- Delete Published 拒绝 + Draft 软删除
- Publish 状态+版本

BuildFlowButtonActionTests(回归):
- ExecuteAsync_RunFunctionAction 通过 IScriptExecutionService 执行脚本
- ExecuteAsync_DraftButton 状态守卫

Task T9 of scripting module refactor (final)
2026-07-07 11:12:28 +08:00
xiangning
2d70d92522 refactor(scripting): 删除旧 CustomFunction 代码 + 权限/菜单迁移
删除(workflow 模块):
- Application/BuildFlow/CustomFunctions/ 全目录(Commands/Handlers/Queries/DTOs/Services)
- Domain/Entities/CustomFunction.cs + CustomFunctionExecutionLog.cs
- Domain/Enums/CustomFunctionType.cs + CustomFunctionExecutionStatus.cs
- Infrastructure/Configurations/CustomFunction*Configuration.cs
- Host/Endpoints/Workflow/BuildFlow/CustomFunctions/ 全目录(5 端点+5 请求)
- Host/Services/Integration/HttpFunctionExecutor.cs + IHttpFunctionExecutor.cs(HTTP 函数不做,spec §11)
- WorkflowDbContext 移除 CustomFunctions/CustomFunctionExecutionLogs DbSet
- WorkflowApplicationModule 移除 ICustomFunctionExecutionService 注册

迁移:
- SeedData 权限码 buildflow:function:* → scripts.* (8 个)
- SeedData 菜单 buildflow.functions → scripts(顶级模块)
- 新增空迁移 RemoveCustomFunctionFromWorkflowModel(仅更新 ModelSnapshot)

测试清理:
- 删除 CustomFunctionTests.cs + BuildFlowApplicationTests.cs CustomFunction 用例
- BuildFlowButtonActionTests.cs 删除 7 个已 skip 的执行器测试(T9 重写)
- BuildFlowEntrySeedTests / PermissionRegistration 断言对齐新种子

Task T7 of scripting module refactor
2026-07-07 10:00:24 +08:00
xiangning
51fe387913 refactor(scripting): 按钮动作链改造指向 IScriptExecutionService
- WorkflowApplicationModule 依赖 ScriptingApplicationModule
- BuildFlowButtonActionExecutor 改用 IScriptExecutionService.ExecuteByIdAsync
- EnsureFunctionScopeAsync 改查 ScriptingDbContext.Scripts
- 结果列表类型 CustomFunctionExecutionResult → ScriptExecutionResult
  (连带更新 BuildFlowButtonActionResult DTO 的 Results 元素类型)
- BuildFlowButtonActionTests 旧 CustomFunction 链路用例暂跳过,留待 T9 重写
- 旧 CustomFunction 代码保留,T7 统一删除

Task T6 of scripting module refactor
2026-07-07 09:42:20 +08:00
xiangning
a978e7f868 feat(workflow): 添加自定义函数类型和按钮三阶段动作链功能
- 引入 CustomFunctionType 枚举,支持 Script 和 Http 两种函数类型
- 在自定义函数中添加 Http 相关字段(HttpMethod、HttpUrl、HttpHeaders、HttpBodyTemplate)
- 实现 HTTP 函数执行器,支持变量替换和 SSRF 防护
- 将按钮动作链拆分为 before、main、after 三个阶段
- 新增前置和后置动作 JSON 字段存储
- 实现批量执行多个函数的 executeFunctions 动作类型
- 更新数据库迁移以支持新的字段结构
- 调整相关 DTO、命令和处理器以兼容新功能
2026-07-06 18:03:22 +08:00
xiangning
b0cf3949d0 feat(workflow): 扩展按钮定义功能并优化错误处理
- 实现三阶段动作链:前置钩子(BeforeActionsJson)、主链(ActionsJson)、后置钩子(AfterActionsJson)
- 扩展自定义函数支持HTTP请求类型,添加相关字段配置
- 重构异常处理机制,引入语义错误码字符串替代数字码
- 优化数据库表名前缀,统一使用b_前缀提升命名规范性
- 实现菜单路由名称自动派生,支持Code到Name的转换
- 重构错误响应信封,code字段改为语义错误码字符串格式
- 添加ImportJobProcessorService后台服务支持
- 优化Swagger文档默认URL重定向逻辑
- 修复IM模块列缺失的数据库补丁机制
2026-07-06 17:27:32 +08:00
xiangning
baaff8db63 feat(workflow): 添加自定义函数表单绑定及权限控制功能
- 新增自定义函数与表单定义绑定关系字段 FormDefinitionId
- 实现按钮调用函数时的表单作用域权限校验机制
- 实现按钮提交表单时的作用域权限检查功能
- 添加自定义函数列表按表单定义筛选查询能力
- 新增 RelationPicker 关联选择表单组件支持
- 完善菜单权限体系支持受限但可见菜单配置
- 添加文件消息大小限制验证(最大200MB)
- 优化表单聚合变量同步异常处理机制
- 增加BuildFlow管理后台入口菜单种子数据
- 补充相关单元测试和架构约束测试用例
2026-07-05 09:30:45 +08:00
xiangning
96f11b5d87 feat(workflow): 添加表单提交功能并优化任务审批端点
- 在 ApproveTaskEndpoint 中返回布尔值响应并使用 Send.OkAsync
- 在 RejectTaskEndpoint 中返回布尔值响应并使用 Send.OkAsync
- 向 BuildFlowButtonActionExecutor 添加 submitForm 动作类型支持
- 实现 SubmitFormAsync 方法处理表单数据提交和保存逻辑
- 添加 ReadGuid 辅助方法解析 JSON 中的 GUID 值
- 更新 RAGStreamEndpoint 中的系统提示词以优化 AI 回答格式
- 为按钮动作执行器添加表单聚合服务和派生服务依赖注入
- 添加单元测试验证提交表单后运行函数的动作链执行流程
2026-07-04 21:38:31 +08:00
xiangning
54dc3fc26e refactor(rag): 重构AI对话和工作流集成实现
- 移除IWorkflowTriggerService接口及其实现,改用Mediator模式直接发送命令
- 更新AiBotHandler移除workflowTrigger依赖,使用新命令模式触发工作流
- 修改ApproveTaskEndpoint和RejectTaskEndpoint返回bool类型并使用Send.OkAsync
- 更新appsettings.json中AI助手的默认指令配置
- 在BuildFlowHostModule.cs中移除旧的工作流触发服务注册
- 添加SSE流式响应路径前缀配置以支持RAG聊天流
- 重构ChatAgentService使用HTTP客户端工厂和运行时配置解析
- 实现AiChatOutputSanitizer用于清洗AI输出中的模板内容
- 更新EmbeddingService使用运行时配置解析器动态创建客户端
- 调整RAG查询处理器中的系统提示指令内容
- 添加构建流按钮操作的单元测试验证发布和禁用功能
- 扩展即时消息集成测试覆盖文件消息元数据处理场景
- 更新平台权限种子数据添加按钮发布和禁用权限
- 实现AI模型运行时配置解析器支持动态模型切换
2026-07-04 21:29:37 +08:00
xiangning
2181f7dd49 feat(platform): 完善平台功能与权限管理
- 在菜单系统中新增 RenderType、FormDefinitionId 和 RuntimeViewMode 字段
- 实现自定义表单菜单类型的组件映射和验证逻辑
- 为分片上传相关端点添加 file:upload 权限控制
- 为桶和文件夹操作添加 bucket:write 和 file:write 权限控制
- 为文件共享功能添加 file-share:write 权限控制
- 为文件读取操作添加 file:read 权限控制
- 扩展 AI 模型提供商枚举,支持更多模型供应商
- 在 AI 模型创建和更新时添加枚举值验证
- 重构工作流按钮权限检查逻辑,使用统一的权限码查询方式
- 为 JSON 格式文档添加提取器支持
- 增强表单数据派生服务,支持自定义表单关联解析
- 为表单数据添加按表单定义 ID 的索引优化
- 添加聊天消息搜索和上下文获取的集成测试
- 修正删除菜单端点的 ID 类型从 Guid 改为 long
2026-07-04 19:38:43 +08:00
xiangning
1aeaf7b1a6 feat(platform): 实现菜单管理功能并完善权限控制
- 将菜单实体的 ID 类型从 Guid 改为 long,并配置为自增主键
- 添加菜单创建、删除、树形结构构建等完整的 CRUD 操作支持
- 为文件上传相关端点添加 file:upload 权限验证
- 为文件操作端点添加 file:read 和 file:write 权限控制
- 为通知功能添加 notification:read 权限限制
- 实现 BuildFlow 按钮执行的权限检查机制
- 在 IM 模块中集成 Redis 未读计数器优化性能
- 更新用户主页路径从 /workspace 到 /dashboard/workspace
- 添加 SignalR Hub 授权和 WebSocket 连接安全保护
- 新增平台测试项目并完善按钮权限测试用例
2026-07-04 17:21:07 +08:00
xiangning
81fbf63504 feat(workflow): 集成平台消息中心实现工作流通知推送
- 移除文件端点的权限控制以支持无权限访问
- 添加 IPlatformNotificationPublisher 接口定义跨模块通知发布能力
- 实现 WorkflowNotificationPublisher 将工作流通知转发到平台消息中心
- 在 NotificationService 中集成平台通知发布功能
- 添加 NoOpPlatformNotificationPublisher 用于单元测试
- 配置服务注册将工作流通知连接到平台消息系统
- 支持按用户ID批量发布工作流通知到平台通知表
- 复用平台的 fanout 落库和 SignalR 铃铛推送机制
- 实现容错机制确保通知失败不影响工作流主链路
2026-07-03 16:33:46 +08:00
xiangning
f932781040 feat(rag): 集成 Microsoft Extensions AI 框架并重构对话代理服务
- 引入 Microsoft.Extensions.AI.Abstractions 依赖包
- 重构 ChatAgentService 实现,支持多轮对话历史
- 更新 IAIChatAgent 接口,统一使用 ChatMessage 消息格式
- 优化流式输出处理逻辑,提升性能表现

feat(im): 增强即时通讯会话功能支持置顶备注免打扰

- 扩展会话 DTO,新增 IsPinned、IsMuted、OtherUserRemark 属性
- 扩展 ConversationParticipant 实体,新增置顶和备注相关字段
- 实现会话置顶功能,支持按置顶时间和最后消息时间排序
- 添加会话备注功能,私聊场景支持自定义备注名称
- 完善免打扰功能,支持用户级别静音设置

feat(file): 实现文件预览服务支持多种鉴权方式

- 新增文件预览端点,支持流式返回文件内容
- 实现三种鉴权方式:授权头、JWT令牌、内部签名
- 集成 KKFileView 预览服务,支持 Office 文档在线预览
- 优化文件访问安全控制,避免直接暴露 S3 链接

feat(rag): 增强 RAG 会话管理支持知识库关联

- 扩展会话创建功能,支持关联知识库
- 新增会话更新功能,支持重命名和切换知识库
- 优化会话 DTO 结构,支持知识库 ID 关联
- 实现知识库检索增强对话功能

feat(workflow): 废弃旧工作流定义接口迁移到图形化存储

- 标记旧的节点边操作端点为废弃状态
- 实现工作流定义图形化存储迁移
- 统一使用 JSON 格式作为单一事实源
- 优化工作流定义查询性能表现

chore(deps): 更新项目依赖包版本解决版本冲突问题

- 添加 Microsoft.Extensions.AI.Abstractions 依赖
- 显式声明 OpenAI 2.11.0 版本解决 CS1705 冲突
- 更新相关依赖包至兼容版本

fix(host): 修复文件预览响应包装中间件配置问题

- 添加文件预览接口到响应绕过前缀列表
- 避免文件流被 JSON 包装和内存缓冲影响性能
- 优化文件下载和预览的中间件处理逻辑

chore(im): 修复 IM 设计时数据库上下文工厂路径问题

- 优化 ImDbContextDesignTimeFactory 路径查找逻辑
- 修复数据库迁移时连接字符串获取问题
- 更新实体映射命名空间引用
2026-07-03 15:58:58 +08:00
xiangning
17b7e9996e chore(dependencies): 移除未使用的 using 语句
- 从多个文件中移除未使用的 System.Linq.Dynamic.Core 引用
- 从多个文件中移除未使用的 Microsoft.EntityFrameworkCore 引用
- 从 IM 模块中移除未使用的 MongoDB.Driver.Linq 引用
- 清理 Handler 文件中的冗余命名空间引用
- 优化代码结构减少不必要的依赖引入
- 提高代码整洁性和编译效率
2026-07-02 14:53:56 +08:00
xiangning
d738166261 feat: BuildFlow 后端初始化(.NET 10 模块化单体) 2026-07-02 10:54:23 +08:00