#!/home/ubuntu/project/we-mp-rss-main/venv/bin/python3
"""gdcjgk-每日发布 — 纯脚本检查 (no_agent=true)
异常时输出告警，正常时完全静默（无文章=静默，有文章=通知）

用法: python3 daily_gdcjgk_check.py [hours=36]
"""

import sqlite3, sys
from datetime import datetime, timezone, timedelta

HOURS = int(sys.argv[1]) if len(sys.argv) > 1 else 36
DB_PATH = "/home/ubuntu/project/we-mp-rss-data/db.db"
beijing = timezone(timedelta(hours=8))
now = datetime.now(beijing)
cutoff_ts = int((now - timedelta(hours=HOURS)).timestamp())

# ── 查文章 ──
try:
    db = sqlite3.connect(f"file:{DB_PATH}?mode=ro", uri=True)
    db.row_factory = sqlite3.Row

    total = db.execute("SELECT COUNT(*) FROM articles").fetchone()[0]
    latest_ts = db.execute("SELECT MAX(publish_time) FROM articles").fetchone()[0]
    rows = db.execute("""
        SELECT a.title, a.url, a.publish_time, a.description, f.mp_name
        FROM articles a JOIN feeds f ON a.mp_id = f.id
        WHERE a.publish_time > ?
        ORDER BY a.publish_time DESC
        LIMIT 20
    """, (cutoff_ts,)).fetchall()
    db.close()
except Exception as e:
    print(f"## ⚠️ gdcjgk 发布检查失败\n> DB错误: {e}")
    sys.exit(1)

# ── 判断 ──
if not rows:
    # 无新文章 → 检查是否断流
    if latest_ts:
        latest_dt = datetime.fromtimestamp(latest_ts, beijing)
        gap_hours = (now - latest_dt).total_seconds() / 3600
        if gap_hours > 48:
            print(f"""## 🚨 gdcjgk 每日发布异常

> 数据库总量: {total} 篇
> 最新文章: {latest_dt.strftime('%m-%d %H:%M')}（{gap_hours:.0f}h 前）
> 近 {HOURS}h 无新文章

⚠️ 可能原因: 公众号停更 / we-mp-rss 登录过期

👉 [检查登录状态](https://rss.gdcjgk.net) （gdcjgk / admin888）""")
            sys.exit(1)
    # 正常无文章 → 静默
    sys.exit(0)

# ── 有新文章 → 简讯 ──
articles = [dict(r) for r in rows]
source_counts = {}
for a in articles:
    source_counts[a["mp_name"]] = source_counts.get(a["mp_name"], 0) + 1
source_str = "、".join(f"{k}({v}篇)" for k, v in source_counts.items())

first_time = datetime.fromtimestamp(articles[-1]["publish_time"], beijing)
last_time = datetime.fromtimestamp(articles[0]["publish_time"], beijing)

lines = [
    f"## 📰 gdcjgk 每日发布检查",
    "",
    f"> 数据库总量: {total} 篇 | 近{HOURS}h新增: **{len(articles)}篇**",
    f"> 来源: {source_str}",
    f"> 时段: {first_time.strftime('%m-%d %H:%M')} ~ {last_time.strftime('%m-%d %H:%M')}",
    "",
    "### 候选文章",
]
for a in articles[:10]:
    pt = datetime.fromtimestamp(a["publish_time"], beijing).strftime("%m-%d %H:%M")
    title = a["title"][:50]
    lines.append(f"> [{pt}] {a['mp_name']}《{title}》")

lines.append("")
lines.append("> 🤖 自动检查 · 文章仍需人工审核后通过 CMS 发布")
print("\n".join(lines))
