ShopTRAINING/test/direct_console_test.py
2025-07-02 11:05:23 +08:00

115 lines
3.7 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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()