PCM_Report/debug_ui_status.py

105 lines
3.2 KiB
Python
Raw Permalink Normal View History

2025-12-11 14:32:31 +08:00
#!/usr/bin/env python3
"""
调试UI状态显示问题
"""
import sqlite3
from pathlib import Path
def check_experiment_status():
"""检查实验状态"""
print("检查实验状态")
print("=" * 40)
try:
db_path = Path(__file__).parent / "experiments.db"
db = sqlite3.connect(str(db_path))
cur = db.cursor()
# 查询工单 11223345 的实验记录
cur.execute("""
SELECT id, work_order_no, start_ts, end_ts, created_at
FROM experiments
WHERE work_order_no = '11223345'
ORDER BY id DESC
LIMIT 5
""")
results = cur.fetchall()
if results:
print("工单 11223345 的实验记录:")
for row in results:
exp_id, work_order, start_ts, end_ts, created_at = row
# 判断状态
if start_ts and end_ts:
status = "已完成"
elif start_ts:
status = "进行中"
else:
status = "等待开始"
print(f" ID: {exp_id}")
print(f" 工单: {work_order}")
print(f" 创建: {created_at}")
print(f" 开始: {start_ts or '未开始'}")
print(f" 结束: {end_ts or '未结束'}")
print(f" 状态: {status}")
print("-" * 30)
else:
print("没有找到工单 11223345 的记录")
# 查询所有等待开始的实验
cur.execute("""
SELECT id, work_order_no, created_at
FROM experiments
WHERE start_ts IS NULL
ORDER BY id DESC
LIMIT 10
""")
waiting_results = cur.fetchall()
print(f"\n当前等待开始的实验 ({len(waiting_results)} 个):")
if waiting_results:
for row in waiting_results:
exp_id, work_order, created_at = row
print(f" ID: {exp_id} - 工单: {work_order} - 创建: {created_at}")
else:
print(" 没有等待开始的实验")
db.close()
except Exception as e:
print(f"ERROR 检查失败: {e}")
def main():
print("UI状态显示问题调试")
print("=" * 50)
print("问题: 实验已完成但UI仍显示'等待实验开始'")
print("=" * 50)
check_experiment_status()
print("\n" + "=" * 50)
print("问题分析:")
print("1. 监控器正常工作 ✅ - 数据库已更新开始和结束时间")
print("2. 状态变化检测正常 ✅ - load_status_int 1->0 变化被检测")
print("3. UI状态显示异常 ❌ - 界面仍显示'等待实验开始'")
print("\n可能原因:")
print("1. UI没有检测到实验完成")
print("2. UI刷新逻辑有问题")
print("3. UI显示的是错误的实验记录")
print("4. 等待状态没有正确退出")
print("\n解决方案:")
print("1. 手动刷新UI界面")
print("2. 检查UI的等待状态逻辑")
print("3. 确保监控器回调正确触发UI刷新")
print("4. 重启程序重新测试")
if __name__ == "__main__":
main()