test_rule_engine.py 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. """Quick test for rule engine."""
  2. import sys
  3. sys.path.insert(0, ".")
  4. from app.services.rule_engine import (
  5. get_parameter_registry, recommend_range, generate_plan,
  6. BoundaryConditions, generate_values,
  7. )
  8. reg = get_parameter_registry()
  9. print(f"Parameters registered: {len(reg)}")
  10. for p in reg:
  11. print(f" {p['name']} ({p['category']}): {p['default_start']}-{p['default_stop']} {p['unit']}")
  12. print()
  13. bc = BoundaryConditions.from_dict({
  14. "outer_diameter_mm": 76,
  15. "inner_diameter_mm": 40,
  16. "speed_rpm": 5000,
  17. "current_a": 21,
  18. "magnet_temp_c": 100,
  19. })
  20. r = recommend_range("Airgap", bc)
  21. print(f"Airgap range: {r}")
  22. r2 = recommend_range("Magnet_Length", bc)
  23. print(f"Magnet_Length range: {r2}")
  24. r3 = recommend_range("RMSCurrent", bc)
  25. print(f"RMSCurrent range: {r3}")
  26. print()
  27. plan = generate_plan(bc, model_path="test.mot")
  28. print(f"Generated plan: {plan['name']}")
  29. print(f" topology: {plan['topology']}")
  30. print(f" estimated_points: {plan['estimated_points']}")
  31. print(f" estimated_time_min: {plan['estimated_time_min']}")
  32. for v in plan["variables"]:
  33. print(f" {v['name']}: start={v['start']}, stop={v['stop']}, step={v['step']}")
  34. print(f" values={v['values']}")
  35. print(f" notes={v['recommendation_notes']}")
  36. print()
  37. vals = generate_values(0.6, 1.5, 0.3)
  38. print(f"generate_values(0.6, 1.5, 0.3) = {vals}")
  39. print("\n=== RULE ENGINE TESTS PASSED ===")