7 Commits

Author SHA1 Message Date
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
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
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
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