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 = '';