#!/usr/bin/env python """测试真实模板预览""" import sys import json from pathlib import Path sys.path.insert(0, str(Path(__file__).parent.parent / "backend")) from app.services.renderer import renderer from app.services.template_store import load_store def test_real_template(): base_dir = Path(__file__).parent.parent / "backend" store = load_store(base_dir) # 获取 X11 洗衣机通用模板 templates = store.list_templates(machine_model="x11", device_type="wash", template_type="common") if not templates: print("❌ 未找到 X11 洗涤 common 模板") return tpl = templates[0] print(f"测试模板: {tpl.name}") print(f"模板ID: {tpl.id}") print(f"变量数: {len(tpl.input_variables)}") print(f"\n{'='*60}") # 准备参数 params = { 'program_id': '15', 'program_name': '速洗', 'rerank_reason': 'PIN_CONSECUTIVE', 'feature_name': '每周这个时间都喜欢用', 'changed_params': {'setTemp': '40', 'speed': '10', 'spinTime': '2'}, } try: result = renderer.render_from_record(tpl, params) print(f"✅ 渲染成功") print(f"\n生成结果 ({len(result)}字):\n{result[:300]}...") # 也测试 preview preview_result = renderer.preview(type('obj', (object,), { 'template_body': tpl.template_body, 'parameters': {} })()) print(f"\n{'='*60}") print(f"预览结果 ({len(preview_result)}字):\n{preview_result[:300]}...") except Exception as e: print(f"❌ 渲染失败: {e}") import traceback traceback.print_exc() if __name__ == "__main__": test_real_template()