from flask import Blueprint, request, jsonify from datetime import datetime, timedelta import json bp = Blueprint('calendar', __name__, url_prefix='/api/v1/calendar') @bp.route('/event-counts', methods=['GET']) def get_event_counts(): """获取事件数量统计""" try: year = request.args.get('year', '2027') month = request.args.get('month', '10') # 模拟事件数量数据 event_counts = [] for day in range(1, 32): count = (day % 7) + 1 # 模拟每天1-7个事件 event_counts.append({ 'date': f'{year}-{month.zfill(2)}-{day:02d}', 'count': count }) return jsonify({ 'success': True, 'data': event_counts }) except Exception as e: print(f"Error getting event counts: {e}") return jsonify({'success': False, 'error': str(e)}), 500 @bp.route('/events', methods=['GET']) def get_calendar_events(): """获取日历事件""" try: year = request.args.get('year', '2027') month = request.args.get('month', '10') event_type = request.args.get('type', 'all') # 模拟日历事件数据 events = [] for day in range(1, 32): for i in range((day % 7) + 1): event = { 'id': f'{year}{month.zfill(2)}{day:02d}{i}', 'title': f'事件{day}-{i+1}', 'date': f'{year}-{month.zfill(2)}-{day:02d}', 'type': ['政策', '技术', '产业', '公司'][i % 4], 'importance': ['高', '中', '低'][i % 3], 'status': 'active' } events.append(event) # 根据类型过滤 if event_type != 'all': events = [e for e in events if e['type'] == event_type] return jsonify({ 'success': True, 'data': events }) except Exception as e: print(f"Error getting calendar events: {e}") return jsonify({'success': False, 'error': str(e)}), 500 @bp.route('/events/', methods=['GET']) def get_calendar_event_detail(event_id): """获取日历事件详情""" try: # 模拟事件详情 event_detail = { 'id': event_id, 'title': f'事件{event_id}详情', 'description': f'这是事件{event_id}的详细描述', 'date': '2027-10-15', 'type': '政策', 'importance': '高', 'status': 'active', 'related_stocks': [ {'code': '000001', 'name': '股票A'}, {'code': '000002', 'name': '股票B'} ], 'keywords': ['政策', '改革', '创新'], 'files': [ {'name': '报告.pdf', 'url': '/files/report.pdf'}, {'name': '数据.xlsx', 'url': '/files/data.xlsx'} ] } return jsonify({ 'success': True, 'data': event_detail }) except Exception as e: print(f"Error getting calendar event detail: {e}") return jsonify({'success': False, 'error': str(e)}), 500 def get_event_class(count): """根据事件数量获取CSS类""" if count == 0: return 'no-events' elif count <= 3: return 'few-events' elif count <= 6: return 'medium-events' else: return 'many-events' def parse_json_field(field_value): """解析JSON字段""" if isinstance(field_value, str): try: return json.loads(field_value) except (json.JSONDecodeError, TypeError): return [] elif isinstance(field_value, (list, dict)): return field_value else: return []