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