diff --git a/app.py b/app.py
index 2eccdab..153a541 100644
--- a/app.py
+++ b/app.py
@@ -398,18 +398,46 @@ def api_calendar_sync():
@app.route('/api/calendar-sync-all', methods=['GET'])
@login_required
def api_calendar_sync_all():
- """批量查询过去15天~未来15天的钉钉日程,按日期分组返回"""
+ """批量查询过去15天~未来15天的钉钉日程,按日期分组返回,并自动填充到对应日期的 checkin"""
import json as _json
from datetime import datetime, timedelta
today = datetime.now().replace(hour=0, minute=0, second=0, microsecond=0)
results = []
+ saved_days = 0
for delta in range(-15, 16):
d = today + timedelta(days=delta)
ds = d.strftime('%Y-%m-%d')
events = _fetch_dingtalk_events(ds)
if events:
results.append({'date': ds, 'events': events})
- return jsonify({'ok': True, 'data': results})
+ # 自动去重填充到对应日期的 checkin
+ existing = get_checkin(ds)
+ data = existing['data'] if existing else {'morning': [], 'evening': [], 'study': []}
+ morning = data.get('morning', [])
+ existing_texts = set()
+ for mi in morning:
+ t = mi if isinstance(mi, str) else mi.get('text', '')
+ if t.strip():
+ existing_texts.add(t.strip())
+ added = False
+ for evt in events:
+ summary = (evt.get('summary') or '').strip()
+ if not summary:
+ continue
+ text = f"【{evt['time']}】{summary}" if evt.get('time') else summary
+ loc = evt.get('location', '')
+ if loc:
+ text += f" @{loc}"
+ text = text.strip()
+ if text not in existing_texts:
+ morning.append(text)
+ existing_texts.add(text)
+ added = True
+ if added:
+ data['morning'] = morning
+ save_checkin(ds, data)
+ saved_days += 1
+ return jsonify({'ok': True, 'data': results, 'saved_days': saved_days})
# ── 启动 ──────────────────────────────────────────────
diff --git a/static/app.js b/static/app.js
index 3e39f89..a837f0e 100644
--- a/static/app.js
+++ b/static/app.js
@@ -410,7 +410,7 @@
var totalDays = data.length;
var totalEvents = 0;
data.forEach(function(d){ totalEvents += d.events.length; });
- summary.innerHTML = '同步完成!共 ' + totalDays + ' 天有日程,合计 ' + totalEvents + ' 个会议';
+ summary.innerHTML = '同步完成!共 ' + totalDays + ' 天有日程,合计 ' + totalEvents + ' 个会议' + (res.saved_days ? ',已自动填充 ' + res.saved_days + ' 天' : '');
// 渲染结果列表
var html = '';