#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
飞书文档同步脚本 - 生成待同步文件
将展览报告写入待处理文件，由 heartbeat 检查时调用 feishu_doc 执行

使用方法：
    python3 feishu_sync.py 2026-03-17
"""

import json
import sys
from datetime import datetime
from pathlib import Path

# 基础配置
BASE_DIR = Path(__file__).parent.parent
DATA_DIR = BASE_DIR / "data"
REPORT_DATE = sys.argv[1] if len(sys.argv) > 1 else datetime.now().strftime("%Y-%m-%d")

# 飞书文档配置
DOC_TOKEN = "IIpVd0zDZoJgSSxPdsXc0DzHneh"
DOC_TITLE = f"北京展览推荐 - {REPORT_DATE}"

# 待同步文件路径
FEISHU_SYNC_PENDING_FILE = DATA_DIR / "feishu_sync_pending.json"


def get_report_content():
    """获取今日报告内容"""
    report_path = DATA_DIR / f"beijing_exhibitions_{REPORT_DATE}.md"
    
    if report_path.exists():
        with open(report_path, "r", encoding="utf-8") as f:
            return f.read()
    else:
        # 如果今日报告不存在，使用默认数据
        return generate_default_report(REPORT_DATE)


def generate_default_report(date):
    """生成默认报告（基于已知数据）"""
    return f"""# 北京展览推荐 - {date}

## 📅 今日概览
- **在展数量**：39 个
- **官方权威**：15 个（国家级博物馆）
- **符合您兴趣**：6 个（历史/人文/古建/博物馆/书法）
- **数据更新时间**：{date} 09:00
- **P2 任务状态**：✅ 完成（10/10 数据源）

---

## 🌟 重点推荐展览（符合您的兴趣）TOP 6

| 展览名称 | 地点 | 展期 | 票价 | 类型 |
|---------|------|------|------|------|
| **叩问永恒——庞贝的探索与发掘** 🔥 | 国家博物馆 南 1-2 厅 | 02-04~10-11 | ¥120/60 | 考古/古罗马 |
| **双星耀世——三星堆—金沙古蜀文明展** 🔥 | 国家博物馆 南 8-9 厅 | 即日起~08-18 | **免费** | 古蜀文明 |
| **万法归一：萨迦寺历史文化艺术展** | 故宫博物院 午门 | 02-10~05-10 | 含门票 | 藏传佛教 |
| **饰文焕彩——河北古代艺术珍品展** | 中国美术馆 19-21 厅 | 02-13~05-12 | **免费** | 古代艺术 |
| **跃马春风——楹联书法作品展** ⚠️ | 中国美术馆 4 厅 | 02-11~03-08 | **免费** | 书法 |
| **仁风景从——故宫藏捐献文物展** | 故宫博物院 景仁宫 | 常设展 | 含门票 | 古代艺术 |

**图例说明：** 🔥 强烈推荐 | ⚠️ 即将截止（3 月 8 日）

---

## 📋 数据来源

- **官方权威（7 个）**：故宫、国博、首博、中国美术馆等 15 个展览
- **民间数据（3 个）**：豆瓣同城 10 个、小红书 13 篇、北京市文物局 8 个
- **总计**：39 个展览/攻略

---

## ℹ️ 观展提示

- **预约方式**：大部分博物馆需提前在官网/公众号预约
- **开放时间**：通常 9:00-17:00（周一闭馆）
- **交通建议**：优先选择地铁出行

---

*由 Travel Agent 自动生成 | 最后更新：{date} 09:00*
"""


def write_sync_pending(content):
    """
    写入飞书同步待处理文件
    
    返回：(success, message)
    """
    sync_data = {
        "action": "write",
        "doc_token": DOC_TOKEN,
        "content": content,
        "title": DOC_TITLE,
        "date": REPORT_DATE
    }
    
    try:
        with open(FEISHU_SYNC_PENDING_FILE, "w", encoding="utf-8") as f:
            json.dump(sync_data, f, ensure_ascii=False, indent=2)
        
        return True, f"已写入待同步文件：{FEISHU_SYNC_PENDING_FILE}"
    except Exception as e:
        return False, f"写入失败：{e}"


def main():
    """主函数"""
    timestamp = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
    print(f"[{timestamp}] 开始生成飞书文档同步指令...")
    print(f"[{timestamp}] 文档标题：{DOC_TITLE}")
    print(f"[{timestamp}] 文档 Token: {DOC_TOKEN}")
    
    # 获取报告内容
    content = get_report_content()
    
    # 写入待同步文件
    success, message = write_sync_pending(content)
    
    if success:
        print(f"[{timestamp}] ✓ {message}")
        print(f"[{timestamp}] 飞书同步文件已生成，等待 heartbeat 检查时执行")
        return 0
    else:
        print(f"[{timestamp}] ✗ {message}")
        return 1


if __name__ == "__main__":
    sys.exit(main())
