## Why 当前的 visible 条件渲染功能仅支持简单的非空检查(`{var != ''}`),无法满足实际使用中的复杂条件判断需求。用户需要根据多个变量、逻辑组合、数值比较等条件来控制元素显示,但现有实现过于受限。通过引入成熟的表达式评估库 simpleeval,可以提供强大且安全的条件表达式能力,显著提升模板系统的灵活性。 ## What Changes - 引入 simpleeval 库作为条件表达式评估引擎 - 扩展 visible 字段支持的表达式类型: - 比较运算符:`==`, `!=`, `>`, `<`, `>=`, `<=` - 逻辑运算符:`and`, `or`, `not` - 成员测试:`in`, `not in` - 列表/元组字面量:`status in ['draft', 'review']` - 数学运算:`+`, `-`, `*`, `/`, `%`, `**` - 内置函数:`int()`, `float()`, `str()`, `len()`, `bool()` - 增强错误处理,提供详细的错误信息和调试提示 - 添加表达式安全限制(最大长度、禁止危险操作) - **BREAKING**: 移除旧版本的简单正则匹配实现,统一使用 simpleeval ## Capabilities ### New Capabilities - `enhanced-condition-evaluation`: 基于 simpleeval 的增强条件表达式评估能力,支持复杂的逻辑判断、数学运算和成员测试 ### Modified Capabilities - `template-system`: 修改模板系统的条件渲染实现,从简单正则匹配升级为完整的表达式评估 ## Impact - **代码影响**: - `core/template.py`: 重写 `evaluate_condition` 方法 - `loaders/yaml_loader.py`: 可能需要更新验证逻辑 - 测试文件:需要大幅扩展测试用例覆盖新的表达式类型 - **依赖影响**: - 新增依赖:simpleeval (轻量级,无额外依赖) - 需要更新 `pyproject.toml` - **用户影响**: - **BREAKING**: 旧的简单实现被移除,但由于旧语法 `{var != ''}` 在新实现中仍然有效,实际兼容性影响较小 - 用户需要学习新的表达式语法(但与 Python 表达式一致,学习成本低) - 错误信息更详细,调试更容易 - **文档影响**: - README.md: 需要更新条件渲染章节,添加新的表达式示例 - README_DEV.md: 需要说明 simpleeval 集成和安全策略 - 需要添加完整的表达式语法参考文档