ShopTRAINING/test/direct_console_test.py

115 lines
3.7 KiB
Python
Raw Permalink Normal View History

2025-07-02 11:05:23 +08:00
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
直接控制台测试 - 验证编码和表情符号显示
"""
import os
import sys
# 设置环境变量
os.environ['PYTHONIOENCODING'] = 'utf-8'
# 添加server路径
sys.path.insert(0, os.path.join(os.path.dirname(__file__), 'server'))
def test_console_output():
"""测试控制台输出"""
print("=" * 60)
print("🧪 控制台编码测试开始")
print("=" * 60)
# 测试基本中文和表情符号
print("📝 基本测试:")
print(" ✅ 简体中文: 药店销售预测系统")
print(" 🚀 表情符号: 启动 📊 数据 🤖 模型")
print(" 💾 混合文本: Product P001 - 感冒灵颗粒")
# 测试训练相关输出
print("\n🏃 训练日志模拟:")
task_id = "test-12345"
print(f"🚀 训练任务开始: {task_id}")
print(f"📋 任务详情: 训练 TRANSFORMER 模型 - 药品 P001")
print(f"⚙️ 配置参数: 共 3 个轮次")
print(f"🤖 调用 TRANSFORMER 训练器 - 产品: P001")
# 模拟训练进度
for epoch in range(1, 4):
loss = 0.1234 - epoch * 0.01
print(f"📊 Epoch {epoch}/3, 训练损失: {loss:.4f}, 测试损失: {loss+0.01:.4f}")
print(f"✅ 训练完成!")
print(f"📈 训练指标: {{'mse': 0.0123, 'rmse': 0.1107, 'r2': 0.95}}")
print(f"💾 模型保存路径: saved_models/transformer/P001_v1.0.pth")
print(f"✔️ 任务状态更新: 已完成")
print("\n" + "=" * 60)
print("🎉 控制台编码测试完成")
print("💡 如果上述中文和表情符号都能正确显示,说明编码配置成功")
print("=" * 60)
def test_direct_trainer():
"""直接测试训练器"""
print("\n" + "=" * 60)
print("🔧 直接训练器测试")
print("=" * 60)
try:
# 导入预测器
print("📦 导入预测器模块...")
from core.predictor import PharmacyPredictor
print("✅ 预测器导入成功")
# 创建实例
predictor = PharmacyPredictor()
if predictor.data is not None:
print(f"📊 数据加载成功,行数: {len(predictor.data)}")
# 获取产品列表
products = predictor.data['product_id'].unique()
print(f"🎯 可用产品: {list(products[:3])}...") # 只显示前3个
# 选择产品进行快速测试
test_product = products[0]
print(f"\n🚀 开始训练测试 - 产品: {test_product}")
print("=" * 40)
# 调用训练(少量轮次)
metrics = predictor.train_model(
product_id=test_product,
model_type='transformer',
epochs=1, # 只训练1轮快速测试
training_mode='product'
)
print("=" * 40)
if metrics:
print("✅ 训练成功完成")
print(f"📊 返回指标: {metrics}")
else:
print("⚠️ 训练返回None可能是数据不足")
else:
print("❌ 数据加载失败")
except Exception as e:
print(f"❌ 训练测试失败: {e}")
# 不打印完整traceback只显示错误信息
print("\n" + "=" * 60)
print("🎯 重点观察:")
print("1. 控制台是否显示完整的训练过程日志")
print("2. 中文和表情符号是否正确显示")
print("3. 训练进度是否实时输出")
print("=" * 60)
if __name__ == "__main__":
# 先测试基本输出
test_console_output()
# 再测试实际训练
test_direct_trainer()