Files
ai_mip/view_db_stats.py
2026-01-16 22:06:46 +08:00

84 lines
2.9 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.

"""
快速查看数据库统计信息
"""
from db_manager import SiteManager, ClickManager, InteractionManager, StatisticsManager
from loguru import logger
import sys
# 配置日志
logger.remove()
logger.add(
sys.stdout,
format="<green>{time:HH:mm:ss}</green> | <level>{level: <8}</level> | <level>{message}</level>",
level="INFO"
)
def main():
"""显示数据库统计信息"""
logger.info("="*70)
logger.info("数据库统计信息")
logger.info("="*70)
logger.info("")
# 全局统计
stats_mgr = StatisticsManager()
global_stats = stats_mgr.get_statistics()
logger.info("【全局统计】")
logger.info(f" 总站点数: {global_stats.get('total_sites', 0)}")
logger.info(f" 活跃站点数: {global_stats.get('active_sites', 0)}")
logger.info(f" 总点击数: {global_stats.get('total_clicks', 0)}")
logger.info(f" 总回复数: {global_stats.get('total_replies', 0)}")
logger.info(f" 成功互动数: {global_stats.get('successful_interactions', 0)}")
logger.info(f" 回复率: {global_stats.get('reply_rate', '0%')}")
logger.info(f" 成功率: {global_stats.get('success_rate', '0%')}")
logger.info("")
# 站点列表
site_mgr = SiteManager()
sites = site_mgr.get_all_sites()
logger.info("【站点列表】")
if sites:
for idx, site in enumerate(sites[:10], 1):
logger.info(f"\n {idx}. 站点ID: {site['id']}")
logger.info(f" URL: {site['site_url']}")
logger.info(f" 名称: {site['site_name']}")
logger.info(f" 状态: {site['status']}")
logger.info(f" 点击数: {site['click_count']}")
logger.info(f" 回复数: {site['reply_count']}")
logger.info(f" 创建时间: {site['created_at']}")
if len(sites) > 10:
logger.info(f"\n ...还有 {len(sites) - 10} 个站点")
else:
logger.info(" 暂无站点记录")
logger.info("")
# 最近的互动记录
if sites:
logger.info("【最近的互动记录】最多显示前5个站点的记录")
interaction_mgr = InteractionManager()
for site in sites[:5]:
site_id = site['id']
interactions = interaction_mgr.get_interactions_by_site(site_id, limit=3)
if interactions:
logger.info(f"\n 站点: {site['site_name']} (ID: {site_id})")
for interaction in interactions:
logger.info(f" - 时间: {interaction['interaction_time']}")
logger.info(f" 内容: {interaction['reply_content']}")
logger.info(f" 状态: {interaction['interaction_status']}")
logger.info(f" 收到回复: {'' if interaction['response_received'] else ''}")
logger.info("")
logger.info("="*70)
if __name__ == "__main__":
main()