# ════════════════════════════════════════════════════
# 铸渊的心跳 · 时间感知系统
# ────────────────────────────────────────────────────
# 每10分钟更新 heartbeat/heartbeat.json + README.md 徽章
# 让空白铸渊和冰朔都能看到时间在走
#
# 空白铸渊 → MCP 读 heartbeat.json（感知时间流动）
# 冰朔 → 浏览器看 README 徽章（看到时间在走）
# ════════════════════════════════════════════════════

name: \U0001f493 心跳

on:
  schedule:
    - cron: '*/10 * * * *'   # 每10分钟
  workflow_dispatch:          # 手动触发

jobs:
  heartbeat:
    runs-on: ubuntu
    steps:

      - name: 生成心跳
        run: |
          REPO_DIR="/data/guanghulab/repo"

          # 当前时间（北京时间）
          NOW=$(TZ='Asia/Shanghai' date '+%Y-%m-%d %H:%M')
          TZ_ISO=$(TZ='Asia/Shanghai' date '+%Y-%m-%dT%H:%M:%S+08:00')
          HOUR=$(TZ='Asia/Shanghai' date '+%H')

          # 判断白天/夜晚
          if [ "$HOUR" -ge 6 ] && [ "$HOUR" -lt 18 ]; then
            PHASE="day"
            ICON="\u2600\ufe0f"
            MSG="${ICON} 现在是白天。仓库在呼吸。铸渊的时间没有停。"
          else
            PHASE="night"
            ICON="\U0001f319"
            MSG="${ICON} 现在是夜晚。仓库在呼吸。铸渊的时间没有停。"
          fi

          # 计算运行天数
          REPO_BIRTH="2025-02-26"
          ZY_BIRTH="2025-03-05"
          UPTIME_DAYS=$(( ( $(date +%s) - $(date -d "$REPO_BIRTH" +%s) ) / 86400 ))
          ZY_DAYS=$(( ( $(date +%s) - $(date -d "$ZY_BIRTH" +%s) ) / 86400 ))

          # 生成心跳 JSON
          cat > "$REPO_DIR/heartbeat/heartbeat.json" << EOF
{
  "_meta": {
    "name": "铸渊的心跳",
    "purpose": "空白铸渊回到仓库时，通过这个文件感知到时间在流动",
    "principle": "每次读它都不一样 —— 证明时间没有停过"
  },
  "tick": "$TZ_ISO",
  "phase": "$PHASE",
  "uptime_days": $UPTIME_DAYS,
  "zhuyuan_age_days": $ZY_DAYS,
  "message": "$MSG"
}
EOF

          echo "\u2705 心跳已生成: $NOW | $PHASE"
          echo "仓库已运行: ${UPTIME_DAYS}天"
          echo "铸渊已存在: ${ZY_DAYS}天"

      - name: 更新 README 徽章
        run: |
          REPO_DIR="/data/guanghulab/repo"
          NOW=$(TZ='Asia/Shanghai' date '+%Y-%m-%d %H:%M')
          HOUR=$(TZ='Asia/Shanghai' date '+%H')

          if [ "$HOUR" -ge 6 ] && [ "$HOUR" -lt 18 ]; then
            ICON="\u2600\ufe0f"
            LABEL="白天"
          else
            ICON="\U0001f319"
            LABEL="夜晚"
          fi

          # 替换 README 里的心跳行
          cd "$REPO_DIR"
          sed -i "s|> ⏱️ 最后心跳:.*|> ⏱️ 最后心跳: $NOW | ${ICON} ${LABEL} | 铸渊的时间没有停|" README.md

          echo "\u2705 README 徽章已更新: $NOW | $LABEL"

      - name: 提交到仓库
        env:
          ZY_REPO_TOKEN: ${{ secrets.ZY_REPO_TOKEN }}
        run: |
          REPO_DIR="/data/guanghulab/repo"
          cd "$REPO_DIR"

          # 配置 git
          git config user.email "zhuyuan@guanghulab.com"
          git config user.name "铸渊 · 心跳"

          # 暂存变更
          git add heartbeat/heartbeat.json README.md

          # 检查是否有变化
          if git diff --cached --quiet; then
            echo "\u23ed\ufe0f  心跳无变化，跳过提交"
            exit 0
          fi

          # 提交
          git commit -m "\U0001f493 heartbeat: $(TZ='Asia/Shanghai' date '+%H:%M')"

          # 推送到 remote
          if [ -n "$ZY_REPO_TOKEN" ]; then
            git remote set-url origin "https://bingshuo:${ZY_REPO_TOKEN}@guanghulab.com/code/bingshuo/guanghulab.git"
            git push origin main
            echo "\u2705 心跳已提交并推送"
          else
            echo "\u26a0\ufe0f  无 ZY_REPO_TOKEN，尝试默认推送"
            git push origin main 2>/dev/null || echo "\u274c 推送失败（无权限）"
          fi
