#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Heartbeat 检查脚本
验证展览爬取任务是否正常执行
"""

import sqlite3
from datetime import datetime, timedelta
from pathlib import Path

BASE_DIR = Path(__file__).parent
DATA_DIR = BASE_DIR / "data"
DB_PATH = DATA_DIR / "exhibitions.db"


def check_crawl_status():
    """检查爬取任务状态"""
    
    # 检查数据库是否存在
    if not DB_PATH.exists():
        return {
            "status": "error",
            "message": "数据库不存在，请先运行爬虫初始化"
        }
    
    conn = sqlite3.connect(DB_PATH)
    cursor = conn.cursor()
    
    # 检查今日是否有爬取记录
    today = datetime.now().strftime("%Y-%m-%d")
    
    cursor.execute("""
        SELECT COUNT(*) FROM crawl_history 
        WHERE date(crawl_time) = date('now')
    """)
    
    today_count = cursor.fetchone()[0]
    
    # 检查最近一次爬取时间
    cursor.execute("""
        SELECT source, crawl_time, status, items_count 
        FROM crawl_history 
        ORDER BY crawl_time DESC 
        LIMIT 1
    """)
    
    last_crawl = cursor.fetchone()
    
    # 检查今日新增展览数量
    cursor.execute("""
        SELECT COUNT(*) FROM exhibitions 
        WHERE date(created_at) = date('now')
    """)
    
    new_exhibitions = cursor.fetchone()[0]
    
    conn.close()
    
    # 生成状态报告
    if today_count > 0:
        status = "success"
        message = f"今日已执行 {today_count} 次爬取，新增 {new_exhibitions} 个展览"
    else:
        status = "warning"
        message = "今日尚未执行爬取任务"
    
    return {
        "status": status,
        "message": message,
        "last_crawl": {
            "source": last_crawl[0] if last_crawl else None,
            "time": last_crawl[1] if last_crawl else None,
            "status": last_crawl[2] if last_crawl else None,
            "items": last_crawl[3] if last_crawl else 0
        },
        "today_new_exhibitions": new_exhibitions
    }


if __name__ == "__main__":
    import json
    result = check_crawl_status()
    print(json.dumps(result, ensure_ascii=False, indent=2))
