using System.Threading.Tasks;
using NPP.SmartSchedue.Api.Contracts.Services.Notification.Input;
using NPP.SmartSchedue.Api.Contracts.Services.Notification.Output;
namespace NPP.SmartSchedue.Api.Contracts.Services.Notification;
///
/// 通知模板服务接口
/// 决策点7:模板通知,支持通知内容模板,可替换变量
///
public interface INotificationTemplateService
{
#region 模板渲染
///
/// 渲染通知模板
/// 支持变量替换,如:{变量名}
///
/// 渲染模板输入参数
/// 渲染结果
Task RenderTemplateAsync(RenderTemplateInput input);
#endregion
#region 模板验证
///
/// 验证模板语法是否正确
///
/// 验证模板输入参数
/// 验证结果
Task ValidateTemplateAsync(ValidateTemplateInput input);
#endregion
#region 变量解析
///
/// 提取模板中的变量列表
///
/// 提取变量输入参数
/// 变量列表
Task ExtractVariablesAsync(ExtractVariablesInput input);
#endregion
#region 内置变量
///
/// 获取系统内置变量
///
/// 系统变量字典
Task GetSystemVariablesAsync();
///
/// 获取业务相关变量
///
/// 获取业务变量输入参数
/// 业务变量字典
Task GetBusinessVariablesAsync(GetBusinessVariablesInput input);
#endregion
#region 模板预定义
///
/// 获取预定义模板列表
///
/// 获取模板列表输入参数
/// 预定义模板列表
Task GetPredefinedTemplatesAsync(GetPredefinedTemplatesInput input);
///
/// 获取指定预定义模板
///
/// 获取指定模板输入参数
/// 预定义模板
Task GetPredefinedTemplateAsync(GetPredefinedTemplateInput input);
#endregion
}