152 Commits

Author SHA1 Message Date
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
6dbbcc9be9 docs: plan context and io performance 2026-07-24 09:34:11 +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
350fdd56e1 docs: plan database and batch performance 2026-07-24 08:38:39 +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
e453ba1969 docs: plan workflow job reliability 2026-07-23 18:35:44 +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
6c9cde1e23 docs: plan API security and ownership hardening 2026-07-23 17:49:27 +08:00
xiangning
f8e406c1b6 chore: ignore local worktrees 2026-07-23 17:16:27 +08:00
xiangning
6c8246e1f1 docs: plan react pro integration foundation 2026-07-20 14:29:12 +08:00
xiangning
df0bc8ceed docs: define react pro integration foundation 2026-07-20 08:34:52 +08:00
xiangning
e549d3e3fb docs: add BuildFlow API optimization design 2026-07-20 08:29:10 +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
d63f48ce57 fix(config): Program.cs 用 Sources.Add 注册 Consul provider(修正编译错误) 2026-07-19 13:29:04 +08:00
xiangning
705c6c1b1f refactor(config): 自实现 ConsulConfigurationProvider 替换 Winton 包
Winton.Extensions.Configuration.Consul 在容器环境下读不到 KV(黑盒,
无异常无日志无连接),反复调试无效。改自实现 provider:
- ConsulConfigurationProvider.cs:~180 行,HTTP API 拉 /v1/kv/?recurse=true
- 支持 Optional(失败回退本地)、ReloadOnChange(Timer 轮询 watch)
- 完全可控:ILogger 打印加载结果/异常/热重载事件
- KV key 映射:去 buildflow/ 前缀,剩余直接作 IConfiguration key
- Value base64 解码(Consul API 默认编码)
- 去掉 Winton 包依赖(csproj)

Program.cs 改用 ConsulConfigurationSource 注册
2026-07-19 13:20:59 +08:00
xiangning
78d9bcb5b2 Revert "diag: AddConsul前后读配置值,定位 Winton 是否注入 IConfiguration"
This reverts commit 4883b44d33075cb12b46f97335e085f9ace0d25d.
2026-07-19 13:18:33 +08:00
xiangning
4883b44d33 diag: AddConsul前后读配置值,定位 Winton 是否注入 IConfiguration 2026-07-19 13:17:28 +08:00
xiangning
6b7116fafd refactor(monitoring): 重构领域实体命名和枚举类型
- 将 AlertRule 重命名为 AlertRuleEntity
- 将 ExternalSystem 重命名为 ExternalSystemEntity
- 将 SyncJob 重命名为 SyncJobEntity
- 将 SyncedRecord 重命名为 SyncedRecordEntity
- 将 AlertSeverity 重命名为 AlertSeverityEnum
- 将 ExternalSystemType 重命名为 ExternalSystemTypeEnum
- 将 SyncJobStatus 重命名为 SyncJobStatusEnum
- 将相关实体的命名空间从 Entities 移至 Values
- 更新所有引用这些类型的代码以使用新名称
- 修改数据访问层配置以使用新的实体类型名称
2026-07-19 13:13:24 +08:00
xiangning
a11330936a refactor(monitoring): 重构监控模块领域实体结构
- 将 AlertRule 实体移至 AlertRule 子命名空间并重命名为 AlertRuleEntity
- 将 ExternalSystem 实体移至 ExternalSystem 子命名空间并重命名为 ExternalSystemEntity
- 将 SyncedRecord 实体移至 SyncedRecord 子命名空间并重命名为 SyncedRecordEntity
- 将 SyncJob 实体移至 SyncJob 子命名空间并重命名为 SyncJobEntity
- 新增 CredentialEntry 值对象用于凭证管理
- 新增 JobData 值对象用于同步任务数据投影
- 新增 RecordData 值对象用于同步记录数据投影
- 新增 RuleData 值对象用于告警规则数据投影
- 新增 SystemData 值对象用于外部系统配置数据投影
- 统一值对象存放至 Domain/Values 目录
- 更新实体命名空间引用路径
- 修改 SyncJobStatus 枚举名为 SyncJobStatusEnum
2026-07-19 13:09:58 +08:00
xiangning
5332ff3867 refactor(monitoring): 重构监控模块数据库表名和查询处理
- 将监控模块表前缀从 mon_ 改为 b_
- 为工作流审批任务处理器添加流程引擎图加载逻辑
- 移除外部系统相关DTO和查询类的直接引用改为查询对象模式
- 为脚本执行服务添加模块程序集诊断日志
- 为分享表单提交功能增加密码验证支持
- 集成脚本模块数据库迁移支持
- 更新通知服务测试以兼容IOptionsMonitor接口变化
2026-07-19 13:09:43 +08:00
xiangning
ec06a95bc5 diag: Optional=false 强制暴露 Consul 错误 2026-07-19 13:04:24 +08:00
xiangning
23a2aa95fc diag(config): 临时打印 Consul 加载异常(诊断 Winton 不连接问题) 2026-07-19 12:52:40 +08:00
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