xiangning
|
e31d2d004c
|
fix(config): Consul 用 SimpleConfigurationParser 解析扁平 KV
Winton 默认 JsonConfigurationParser 期望单个 key 的 value 是 JSON,
但 buildflow/ 下是 44 个扁平 key=value(每个 value 是普通字符串),
JSON 解析会失败。改用 SimpleConfigurationParser 把 value 直接作为字符串值。
配合默认 ConvertConsulKVPairToConfig:Consul key 路径去 buildflow/ 前缀后
作为 IConfiguration key(如 buildflow/Jwt:SigningKey → Jwt:SigningKey)。
|
2026-07-19 12:31:51 +08:00 |
|
xiangning
|
2f32b74687
|
feat(config): Consul ACL token 支持 + 8520 端口
- Program.cs 加 Consul:Token 配置(ACL 开启后 api 必须带 token)
- 默认端口改 8520(非标准,配合安全组+ACL 三重防护)
- token 通过环境变量注入(compose Consul__Token),不进代码
|
2026-07-17 17:34:13 +08:00 |
|
xiangning
|
f43e35a4b1
|
feat(config): 接入 Consul KV 配置中心 + IOptionsMonitor 热重载
配置中心:
- BuildFlow.Host.csproj 加 Winton.Extensions.Configuration.Consul 3.0.1
- Program.cs 注册 AddConsul(Optional=true 容错,ReloadOnChange=true 热重载)
- 配置优先级:appsettings.json → Secrets → Consul KV(最高,生产真相源)
热重载(IOptions<T> → IOptionsMonitor<T>):
- KkFileView/AiOptions/NotificationService:.Value → .CurrentValue,完全热重载
- 4 个 HostedService:业务参数热重载,timer 间隔启动时定一次(方案 A)
- S3StorageService:IOptionsMonitor + OnChange 回调重建 AmazonS3Client(volatile + lock)
- 测试全过(Rag 40 + Workflow Notification 21)
compose 加 Consul__Host 环境变量(api 容器注入 Consul 地址)
后续:Consul 部署在 middleware,KV 全量灌入 buildflow/* 前缀
|
2026-07-17 17:17:24 +08:00 |
|
xiangning
|
74e99850e5
|
feat(workflow): 添加钉钉式节点级字段权限和依次审批功能
- 实现钉钉式节点级字段权限:从审批节点config解析fieldPermissions进行表单校验
- 添加依次审批模式支持:按顺序逐个创建审批任务并推进流程
- 扩展工作流定义实体:新增DefinitionTree字段存储钉式审批流树JSON
- 更新表单验证器:支持节点级字段权限配置影响必填校验逻辑
- 重构后台服务:修复OperationCanceledException处理防止进程崩溃
- 扩展脚本执行服务:支持加载各模块Application/Domain程序集
- 更新菜单配置:调整组件管理和脚本函数菜单顺序
- 完善工作流引擎:修复实例图加载和任务完成逻辑
|
2026-07-17 17:05:35 +08:00 |
|
xiangning
|
4f23e76231
|
fix(api): GlobalExceptionMiddleware 补异常日志,便于排查静默 500
原实现 catch 异常后只返回通用错误信封,不记任何日志,
导致请求 500 时无法定位根因。补 LogError 记录异常详情+请求路径。
|
2026-07-17 16:24:18 +08:00 |
|
xiangning
|
caf3c17fce
|
fix(cicd): push_retry 加 timeout 60s 包裹,自动处理跨地域 push 死锁
问题:跨地域推 Harbor 时 docker push 推大 layer TCP 死锁,
命令 hang 住不退出,push_retry 永远等不到重试触发。
修复:
- 每次 docker push 用 timeout 60 包裹,超 60s 强制杀掉 CLI(断点续传)
- 重试次数 10→15,给更多断点续传机会
- 被 timeout 杀掉后返回非零,自动进入下一次重试循环
|
2026-07-17 15:42:36 +08:00 |
|
xiangning
|
2c11b45e31
|
docs(monitoring): define uhaozu captcha login flow
|
2026-07-17 15:18:45 +08:00 |
|
xiangning
|
ff5a95b3c9
|
fix(docker): 显式 COPY appsettings.json 进镜像 + 设 Production 环境
问题:dotnet publish 默认行为不稳定,运行时镜像内缺失 appsettings.json,
导致 api 容器启动时连 MongoDB 127.0.0.1:17017 失败(应用了默认配置)。
修复:
- Dockerfile runtime 阶段显式 COPY src/BuildFlow.Host/appsettings.json
- 设 ASPNETCORE_ENVIRONMENT=Production(配合 Secrets 覆盖)
- appsettings.Secrets.json 仍靠 compose volume 挂载注入,不进镜像
|
2026-07-17 15:06:40 +08:00 |
|
xiangning
|
26a7443cd7
|
fix(cicd): GenericTrigger 参数名 genericToken→token(修复编译错误)
|
2026-07-17 14:48:44 +08:00 |
|
xiangning
|
61e106415b
|
feat(cicd): 接入自动触发 + docker compose 部署
- Jenkinsfile: 加 GenericTrigger(token=buildflow-api),Gitea push 自动触发构建
- Jenkinsfile: 部署 stage 改 docker compose(原 docker run),去 try/catch 吞异常
- Jenkinsfile: HealthCheck 改轮询(最多60s),失败标 unstable 不再静默
- .dockerignore: 排除 appsettings.Secrets.json + bin/obj,防止密钥进镜像
链路:Gitea push → generic-webhook-trigger → Jenkins build → Harbor → cd-target compose up
|
2026-07-17 14:45:46 +08:00 |
|
xiangning
|
2489b33270
|
fix(cicd): push 重试每次重新 login,修复 Harbor auth session 过期
重试多次后报 'no basic auth credentials'(docker login session 过期)。
改成 push_retry 函数:每次 push 前重新 docker login,组合成原子重试单元。
重试次数提到 10 次。
|
2026-07-17 14:30:57 +08:00 |
|
xiangning
|
efa9f1d489
|
fix(cicd): docker push 加重试循环(8次),应对跨地域网络断流
devops→middleware push 大 blob 反复 use of closed network connection。
docker push 支持断点续传,重试时已传层跳过,多次后最终传完。
|
2026-07-17 14:07:07 +08:00 |
|
xiangning
|
7b0f74ebb8
|
revert(docker): 恢复 api Dockerfile 为 dotnet 版本
上一个提交 fa03ae2 误将 web 的 Dockerfile(node/nginx)推到 api 仓库,
覆盖了 api 的 dotnet 构建配置。本提交恢复 api 正确的多阶段 dotnet 构建。
|
2026-07-17 13:43:53 +08:00 |
|
xiangning
|
fa03ae26d1
|
fix(docker): builder 阶段装 git,解决 lefthook prepare 钩子失败
node:22-alpine 无 git,pnpm install 触发 prepare(is-ci || lefthook install)
时报 'git not found in PATH'。
|
2026-07-17 13:43:07 +08:00 |
|
xiangning
|
d41c45c74d
|
fix(cicd): 删除 Endpoints/ 小写重复目录,统一 PascalCase
小写目录是大写目录内容完全一致的冗余副本,Linux 构建 duplicate items
|
2026-07-17 13:33:17 +08:00 |
|
xiangning
|
1ab9621803
|
fix(docker): dotnet base 镜像用本地预拉缓存
devops 已 docker pull 完整缓存 sdk/aspnet:10.0,buildkit 用原始 mcr
地址 CACHED 命中,绕过 proxy 首次回源大镜像断流问题。
|
2026-07-17 13:24:56 +08:00 |
|
xiangning
|
6b106062b6
|
refactor(rag): 更新AI模型和RAG端点的权限控制
- 移除FastEndpoints命名空间引用
- 移除Microsoft.Extensions.AI命名空间引用
- 将AI模型端点的AllowAnonymous替换为ai-model:read权限
- 将AI模型创建、更新、删除端点的AllowAnonymous替换为ai-model:write权限
- 将RAG流查询端点的AllowAnonymous替换为rag:query权限
- 统一端点安全性配置以符合权限管理要求
|
2026-07-17 12:19:34 +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
|
c813230b8d
|
perf(docker): base 镜像走 Harbor Proxy Cache
dotnet sdk/aspnet FROM 改走 mcr-proxy(43.134.235.58:58080/mcr-proxy/dotnet/...),
经 Harbor 回源 mcr.microsoft.com 并本地缓存,避免公网拉取 connection reset。
devops 宿主 daemon 已配该 Harbor 为 insecure-registries。
|
2026-07-17 12:13:01 +08:00 |
|
xiangning
|
598e2a3b25
|
fix(cicd): 部署 stage 加远程 docker login Harbor
与 portal 同款修复:Harbor 私有仓库 cd-target pull 需先登录。
withCredentials 拿 harbor-credentials,ssh 传到远程执行
docker login(stdin 传密码,不进 history)。
|
2026-07-17 11:46:33 +08:00 |
|
xiangning
|
8345c478c8
|
fix(cicd): 部署 SSH 用 IP 直连 + sudo docker
实测 Jenkins 容器内无 cd-target ssh 别名(/root/.ssh/config 不存在),
且 cd-target 的 ubuntu 用户 docker 需 sudo(NOPASSWD 已配)。
- DEPLOY_HOST: cd-target → ubuntu@110.42.240.10
- 远程命令: docker → sudo docker
|
2026-07-17 11:36:06 +08:00 |
|
xiangning
|
aab0db2b68
|
fix(cicd): api 流水线 - 移除飞书通知(凭证缺失) + 部署改 SSH 直连 cd-target
- 移除 feishuNotify 闭包与 environment 中的 feishu-* credentials 绑定
(凭证未在 Jenkins 配置,导致构建启动即 FAIL)
- 部署 stage: node(deploy-agent) → ssh cd-target 执行 docker pull/run
(无 deploy-agent agent 节点)
- 新增 HealthCheck stage(try/catch 不阻塞)
- 清除硬编码 webhook URL 明文
|
2026-07-17 11:22:09 +08:00 |
|
xiangning
|
5239e59b4e
|
fix(security): 修复端点权限缺失问题并加强系统安全防护
- 移除所有 RAG 相关端点的 AllowAnonymous,添加细粒度权限控制
- 配置全局默认授权策略,防止新端点意外公开
- 为 AI 模型、文档、对话、知识库等资源分配读写权限
- 强化 JWT 令牌验证,开启 Issuer/Audience 校验
- 修复脚本执行服务沙箱配置,增强 API 黑名单过滤
- 添加飞书通知凭证环境变量配置,移除硬编码敏感信息
- 完善验证行为逻辑,优化性能和异常处理
- 新增监控模块告警规则实体及相关配置
- 实现外部系统连接器契约和凭证解析服务
|
2026-07-17 10:06:22 +08:00 |
|
xiangning
|
896c6c14cb
|
fix: 补齐 buildflow:form 权限种子 + 修复路径大小写冲突
- SeedData 补 6 个表单分享/导入导出权限码,修复架构测试
- 清理 git 索引中 workflow/Workflow 大小写重复路径
- ImServerFixture 恢复 filter-repo 误替换的测试库连接常量
|
2026-07-09 12:52:14 +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
|
368dc0abf0
|
security: 敏感配置迁移至 appsettings.Secrets.json
- appsettings.json 敏感项(连接串/密钥/API Key)改为占位符
- 新增 appsettings.Secrets.json(本地,gitignore)+ .example.json(模板)
- Program.cs 与 3 个 design-time factory 加载 Secrets.json 覆盖
- 历史中的明文凭据已用 git filter-repo 清理(REDACTED)
|
2026-07-09 12:52:01 +08:00 |
|
xiangning
|
7ecd78550f
|
test: 补充 platform/rag/file 模块单元测试
- platform: 通知与权限模块 handler 测试
- rag: Chat 端到端、知识库 CRUD、嵌入与查询测试
- file: 文件分享下载与文件夹/桶设置测试
|
2026-07-09 12:52:00 +08:00 |
|
xiangning
|
f550074fcc
|
test(platform): 添加平台模块测试基础设施和RAG端到端测试
- 为平台测试添加EntityFrameworkCore和Xunit引用
- 实现PlatformTestDb创建带审计字段自动填充的测试数据库
- 添加DictionaryConfiguration支持配置值获取测试
- 实现完整的密码强度验证规则
- 添加RAG问答全链路端到端测试
- 创建多个Stub服务用于解耦外部依赖测试
- 实现测试专用的当前用户上下文
|
2026-07-07 17:31:50 +08:00 |
|
xiangning
|
16ba77f69f
|
feat(platform): 实现权限版本控制即时失效旧token机制
- 在JWT中添加permver权限版本号claim,用于实时权限变更检测
- 实现PermissionVersionMiddleware中间件,在认证后授权前校验权限版本
- 修改AssignPermissionsCommandHandler,角色权限变更时自增相关用户权限版本号
- 修改AssignRolesCommandHandler,用户角色变更时自增权限版本号强制重登录
- 集成Redis存储权限版本镜像,支持分布式环境下的版本同步
- 添加PermissionVersion字段到User实体,用于存储权限版本号
- 实现分布式登录失败计数与账号锁定功能,增强安全防护
- 配置文件中新增AccessTokenMinutes和RefreshTokenDays可配置项
- 更新CORS策略配置,添加127.0.0.1本地访问支持
- 完善异常处理,统一使用ErrorCode枚举进行错误码管理
- 添加SOP测试单元设计文档,规范端到端测试流程
|
2026-07-07 17:18:05 +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
|
3d5604d80c
|
feat(scripting): 完整 CQRS 层 + 10 个管理端点
Commands: Create/Update/Delete/Publish/Disable/Test/Invoke
Queries: List/Detail/ExecutionLogs
DTOs: ScriptDto/ScriptExecutionLogDto + PagedResult
Endpoints (GET/POST/PUT/DELETE /scripts/*):
- GET /scripts scripts.read
- GET /scripts/{id} scripts.read
- POST /scripts scripts.create
- PUT /scripts/{id} scripts.update
- DELETE /scripts/{id} scripts.delete
- POST /scripts/{id}/publish scripts.publish
- POST /scripts/{id}/disable scripts.disable
- POST /scripts/{id}/test scripts.test
- GET /scripts/{id}/logs scripts.read
- POST /scripts/{name}/invoke scripts.run
Task T5 of scripting module refactor
|
2026-07-07 09:26:54 +08:00 |
|
xiangning
|
bfb83957b6
|
fix(scripting): ScriptTypeRegistry 程序集过滤按真实模块前缀匹配
原实现按 'BuildFlow.' 前缀过滤,但本仓库业务程序集命名为
Platform.* / Workflow.* / Scripting.* / File.* / IM.* / Rag.* /
BuildFlow.*,仅 rag 与共享层用 BuildFlow 前缀。
导致 Scan() 结果恒为空、方法面板无任何类型可展示。
改为按业务模块前缀白名单匹配,并排除 .Host 程序集。
Task T4 of scripting module refactor
|
2026-07-07 09:11:02 +08:00 |
|
xiangning
|
989c28da4d
|
refactor(tests): 更新脚本类型注册表测试中的空值检查语法
- 将 m.ResponseType is not null 替换为 m.ResponseType != null
- 保持测试逻辑功能不变
- 提高代码可读性与一致性
|
2026-07-07 09:07:13 +08:00 |
|
xiangning
|
505c46ec05
|
feat(scripting): 添加脚本类型元数据服务与按钮动作链功能
- 扩展 CreateBuildFlowButtonDefinitionRequest 添加 BeforeActionsJson 和 AfterActionsJson 字段
- 为自定义函数请求添加 Type、HttpMethod、HttpUrl、HttpHeaders、HttpBodyTemplate 字段
- 添加 ScriptTypeRegistry 服务用于反射扫描 BuildFlow.* 程序集中的 MediatR 类型
- 实现 GetScriptAssemblyListEndpoint 和 GetScriptTypeMetaEndpoint 两个新端点
- 添加 ScriptTypeMeta 相关 DTO 和 GetScriptTypeMetaQuery 查询处理器
- 为年份和年月字符串添加单元测试避免误判为 DateTime 类型
- 在应用启动时自动扫描并缓存脚本可用类型元数据
|
2026-07-07 09:07:05 +08:00 |
|
xiangning
|
bec5bfd0dd
|
fix(scripting): T3 code quality 修复
- C1: 脚本运行时异常未捕获导致 500(新增 catch-all Failed 日志+包装)
- I1: DateTime.TryParse 误判日期样字符串(改为严格 ISO-8601 正则前置)
- M1: IScriptExecutionService XML 注释补 Logger
- M2: TestExecuteAsync → ExecuteTestAsync 命名一致性
- M7: 递归深度 ++ 移入 try 块保证 finally 配对
T3 code quality review fixes
|
2026-07-07 08:55:16 +08:00 |
|
xiangning
|
624579cf78
|
feat(scripting): ScriptGlobals + ScriptExecutionService + 沙箱 + 编译缓存
- ScriptGlobals 注入 ISender/ICurrentUserContext/CancellationToken/ScriptLogger
- ScriptLogger 收集日志写入 ScriptExecutionLog.LogLines
- 变量类型升级:JsonElement→原生类型(long/double/decimal/bool/string/DateTime/Guid)
- 程序集白名单(含 BuildFlow.* Application/Domain,排除 Infrastructure)
- 代码黑名单扫描(防 System.Reflection/IO.File/Net.Http 等)
- 编译缓存(按 code SHA256 缓存委托,上限 500)
- 调用深度计数器(AsyncLocal,超 5 抛异常,防递归)
- 草稿可测(TestExecuteAsync 跳过 Published 校验)
Task T3 of scripting module refactor
|
2026-07-07 08:42:49 +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
|
d1c8988054
|
feat(scripting): 迁移 Domain 实体+EF 配置+表重命名迁移
- ScriptFunction/ScriptExecutionLog 实体(从 CustomFunction 迁移)
- ScriptStatus/ScriptExecutionStatus 枚举
- ScriptingDbContext + 两个 Configuration(表名 funcs/func_execution_logs)
- EF Core 迁移:RenameTablesForScriptingModule(b_funcs→funcs 保数据)
- 新增 LogLines 字段(Logger 输出收集)
Task T2 of scripting module refactor
|
2026-07-06 17:56:40 +08:00 |
|
xiangning
|
052dd7ff4c
|
chore(scripting): 修正 Host 模块注释的业务模块计数(五→六)
|
2026-07-06 17:42:20 +08:00 |
|
xiangning
|
54648ca1ac
|
feat(scripting): 新建 scripting 模块三层骨架
- Scripting.Domain/Application/Infrastructure 三个 csproj
- 三个 ABP Module 类
- 挂入 BuildFlowHostModule [DependsOn]
- 加入 BuildFlow.slnx 解决方案
Task T1 of scripting module refactor
|
2026-07-06 17:36:45 +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 |
|
ljw559
|
4ec64c773a
|
feat: 文件大小回填与文件夹递归总大小计算
- IS3StorageService 新增 GetObjectSizeAsync(HeadObject 取 ContentLength)
- 新增 FileSizeBackfillHelper:读路径惰性回填历史 Size=0 的文件
- 新增 FolderSizeCalculator:后序 DFS 计算文件夹递归总大小
- GetRootFiles/GetFolder 加载时回填;GetFolderTree 计算并返回 FolderDto.Size
- FolderDto 增加 Size 字段,FolderMapper.ToDto 适配
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-07-06 00:45:46 +08:00 |
|
xiangning
|
d45d655a5a
|
feat(custom-function): 添加表单定义ID支持
- 在CreateCustomFunctionRequest中添加FormDefinitionId字段
- 修改CreateCustomFunctionEndpoint以传递FormDefinitionId参数
- 在GetCustomFunctionListRequest中添加FormDefinitionId过滤条件
- 更新GetCustomFunctionListEndpoint以支持按表单定义ID查询
- 配置数据库初始化器使用蛇形命名约定
|
2026-07-05 10:24:03 +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
|
d6dc6be51d
|
feat(rag): 扩展分块模式支持更多文档处理策略
- 将分块模式取值范围从 0-2 扩展到 0-5,新增 Separator、ByPage 和 Token 模式
- 更新知识库创建和更新请求验证器以支持新的分块模式范围
- 修改文档上传端点的分块策略覆盖逻辑以兼容新模式
- 更新相关错误消息提示以反映完整的分块模式选项
- 在菜单端点中添加渲染类型和运行时视图模式字段支持
- 修改菜单更新请求参数 ID 类型从 Guid 调整为 long 类型
|
2026-07-04 19:49: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 |
|