UNPKG

@pisell/pisellos

Version:

一个可扩展的前端模块化SDK框架,支持插件系统

107 lines (106 loc) 2.89 kB
import { StrategyConfig, RuntimeContext, EvaluationResult, EngineOptions, OperatorHandler } from './type'; /** * 策略模型 - 核心实现 * * 完全业务无关的通用策略引擎 * 支持条件评估、动作匹配、结果返回 */ /** * 策略引擎 * * 核心职责: * 1. 递归评估条件组 * 2. 收集满足条件的 actionIds * 3. 根据 actionIds 获取 ActionEffect 对象 * 4. 按 priority 排序返回 */ export declare class StrategyEngine { private options; private operatorHandlers; constructor(options?: EngineOptions); /** * 评估策略 */ evaluate(config: StrategyConfig, context: RuntimeContext): EvaluationResult; /** * 递归评估条件组 * * @param group 条件组 * @param context 运行时上下文 * @returns 评估结果对象,包含条件是否满足和收集到的 actionIds */ private evaluateConditionGroup; /** * 评估条件组的逻辑运算 */ private evaluateGroupLogic; /** * 评估单个规则 */ private evaluateRule; /** * 评估代码模式条件 */ private evaluateCodeCondition; /** * 评估运算符模式条件 */ private evaluateOperatorCondition; /** * 获取字段值 */ private getFieldValue; /** * 评估内置运算符 */ private evaluateBuiltInOperator; /** * 根据 actionIds 获取 ActionEffect 对象 */ private getActionsByIds; /** * 按 priority 排序(降序) */ private sortActionsByPriority; /** * 判断是否为条件组 */ private isConditionGroup; /** * 验证配置 */ private validateConfig; /** * 初始化内置运算符处理器 */ private initializeBuiltInOperators; /** * 评估商品匹配运算符 * * 匹配规则: * - 首先匹配 product_id * - 如果配置的 product_variant_id = 0,只需要 product_id 匹配(表示任意变体) * - 如果配置的 product_variant_id != 0,还需要 product_variant_id 精确匹配 * * @param fieldValue 实际商品 { product_id: number, product_variant_id: number } * @param configValue 配置的商品列表 Array<{ product_id: number, product_variant_id: number }> * @returns 是否匹配 */ private evaluateProductMatch; /** * 注册自定义运算符 */ registerOperator(operator: string, handler: OperatorHandler): void; /** * 获取调试信息 */ getDebugInfo(): Record<string, any>; } /** * 创建策略引擎实例 */ export declare function createStrategyEngine(options?: EngineOptions): StrategyEngine; /** * 快速评估(使用默认引擎配置) */ export declare function evaluate(config: StrategyConfig, context: RuntimeContext): EvaluationResult;