77 Commits

Author SHA1 Message Date
xiangning
8ed1adba50 test: close backend optimization audit 2026-07-24 13:25:47 +08:00
xiangning
29cab3ed6a chore: add backend optimization closure sop 2026-07-24 13:20:22 +08:00
xiangning
b9c2a6b378 test: add isolated backend integration evidence 2026-07-24 13:07:52 +08:00
xiangning
86af47ad09 refactor: enforce one top-level type per file 2026-07-24 12:53:36 +08:00
xiangning
6ee0568e02 refactor: classify backend business errors 2026-07-24 12:47:09 +08:00
xiangning
b47eeb3561 refactor: remove host module service bridges 2026-07-24 12:29:06 +08:00
xiangning
a5a4446e6c refactor: query platform users through mediator 2026-07-24 12:10:21 +08:00
xiangning
ce3f29e9cd refactor: stream rag answers through cqrs 2026-07-24 11:56:53 +08:00
xiangning
d59454213e refactor: move password changes to platform cqrs 2026-07-24 11:48:21 +08:00
xiangning
566271837c test: enforce backend source architecture 2026-07-24 11:39:44 +08:00
xiangning
d9730db6a9 perf: index form data exports 2026-07-24 11:13:41 +08:00
xiangning
4683d09488 perf: stream paged excel exports 2026-07-24 10:57:02 +08:00
xiangning
de4241e5b5 perf: stream bounded excel imports 2026-07-24 10:42:18 +08:00
xiangning
85a95f05f7 perf: repair file sizes in background 2026-07-24 10:22:05 +08:00
xiangning
43a5911a5a feat: track verified file sizes 2026-07-24 10:09:12 +08:00
xiangning
156fb01fdb perf: append chat cache atomically 2026-07-24 09:58:24 +08:00
xiangning
3b918f5c0b perf: bound rag chat context 2026-07-24 09:50:16 +08:00
xiangning
d371ca59db perf: batch monitoring record upserts 2026-07-24 09:22:17 +08:00
xiangning
65566dc112 perf: persist imports in bounded batches 2026-07-24 09:10:49 +08:00
xiangning
4bedd17741 feat: add transactional import batch writer 2026-07-24 09:00:09 +08:00
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
42b9316f60 refactor: dispatch import jobs through MediatR 2026-07-23 19:01:28 +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
2684c2d5c4 feat: schedule persistent workflow timers 2026-07-23 18:48:06 +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
d7697a412a fix: stop logging Consul configuration values 2026-07-23 18:15:40 +08:00
xiangning
8988c880bc refactor: move RAG chat streams behind MediatR 2026-07-23 18:14:18 +08:00
xiangning
0d1fd55ef0 fix: enforce RAG conversation ownership 2026-07-23 18:06:44 +08:00
xiangning
6980b2ebba fix: enforce Obsidian ownership and permission 2026-07-23 18:02:45 +08:00
xiangning
1e51e6a965 feat: bound Obsidian filesystem access 2026-07-23 17:59:37 +08:00
xiangning
3f6082a9b1 fix: secure bootstrap administrator creation 2026-07-23 17:55:24 +08:00
xiangning
09ced1cd32 test: restore green solution baseline 2026-07-23 17:49:48 +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
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
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