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
|
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
|
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 |
|