1. communityDataSlice 添加事件关注乐观更新 - pending: 立即切换 isFollowing 状态 - rejected: 回滚到之前状态 - fulfilled: 使用 API 返回的准确数据覆盖 2. Mock 数据添加内存状态管理 - 新增 followedEventsSet 和 followedEventsMap 存储 - toggleEventFollowStatus: 切换关注状态 - isEventFollowed: 检查是否已关注 - getFollowedEvents: 获取关注事件列表 3. Mock handlers 使用内存状态 - follow handler: 使用 toggleEventFollowStatus - following handler: 使用 getFollowedEvents 动态返回 - 事件详情: 返回正确的 is_following 状态 修复: 关注事件后导航栏"自选事件"列表不同步更新的问题 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
1218 lines
40 KiB
JavaScript
1218 lines
40 KiB
JavaScript
// src/mocks/data/account.js
|
||
// 个人中心相关的 Mock 数据
|
||
|
||
// ==================== 自选股数据 ====================
|
||
|
||
export const mockWatchlist = [
|
||
{
|
||
id: 1,
|
||
user_id: 1,
|
||
stock_code: '600519.SH',
|
||
stock_name: '贵州茅台',
|
||
industry: '白酒',
|
||
current_price: 1650.50,
|
||
change_percent: 2.5,
|
||
added_at: '2025-01-10T10:30:00Z'
|
||
},
|
||
{
|
||
id: 2,
|
||
user_id: 1,
|
||
stock_code: '000001.SZ',
|
||
stock_name: '平安银行',
|
||
industry: '银行',
|
||
current_price: 12.34,
|
||
change_percent: 4.76,
|
||
added_at: '2025-01-15T14:20:00Z'
|
||
},
|
||
{
|
||
id: 3,
|
||
user_id: 1,
|
||
stock_code: '000858.SZ',
|
||
stock_name: '五粮液',
|
||
industry: '白酒',
|
||
current_price: 156.78,
|
||
change_percent: 1.52,
|
||
added_at: '2025-01-08T09:15:00Z'
|
||
},
|
||
{
|
||
id: 4,
|
||
user_id: 1,
|
||
stock_code: '300750.SZ',
|
||
stock_name: '宁德时代',
|
||
industry: '新能源',
|
||
current_price: 168.90,
|
||
change_percent: -1.23,
|
||
added_at: '2025-01-12T16:45:00Z'
|
||
},
|
||
{
|
||
id: 5,
|
||
user_id: 1,
|
||
stock_code: '002594.SZ',
|
||
stock_name: 'BYD比亚迪',
|
||
industry: '新能源汽车',
|
||
current_price: 256.88,
|
||
change_percent: 3.45,
|
||
added_at: '2025-01-05T11:20:00Z'
|
||
}
|
||
];
|
||
|
||
// ==================== 实时行情数据 ====================
|
||
|
||
export const mockRealtimeQuotes = [
|
||
{
|
||
stock_code: '600519.SH',
|
||
current_price: 1650.50,
|
||
change_percent: 2.5,
|
||
change: 40.25,
|
||
volume: 2345678,
|
||
turnover: 3945678901.23,
|
||
high: 1665.00,
|
||
low: 1645.00,
|
||
open: 1648.80,
|
||
prev_close: 1610.25,
|
||
update_time: '15:00:00'
|
||
},
|
||
{
|
||
stock_code: '000001.SZ',
|
||
current_price: 12.34,
|
||
change_percent: 4.76,
|
||
change: 0.56,
|
||
volume: 123456789,
|
||
turnover: 1523456789.12,
|
||
high: 12.50,
|
||
low: 11.80,
|
||
open: 11.90,
|
||
prev_close: 11.78,
|
||
update_time: '15:00:00'
|
||
},
|
||
{
|
||
stock_code: '000858.SZ',
|
||
current_price: 156.78,
|
||
change_percent: 1.52,
|
||
change: 2.34,
|
||
volume: 45678901,
|
||
turnover: 7123456789.45,
|
||
high: 158.00,
|
||
low: 154.50,
|
||
open: 155.00,
|
||
prev_close: 154.44,
|
||
update_time: '15:00:00'
|
||
},
|
||
{
|
||
stock_code: '300750.SZ',
|
||
current_price: 168.90,
|
||
change_percent: -1.23,
|
||
change: -2.10,
|
||
volume: 98765432,
|
||
turnover: 16678945612.34,
|
||
high: 172.30,
|
||
low: 167.50,
|
||
open: 171.00,
|
||
prev_close: 171.00,
|
||
update_time: '15:00:00'
|
||
},
|
||
{
|
||
stock_code: '002594.SZ',
|
||
current_price: 256.88,
|
||
change_percent: 3.45,
|
||
change: 8.56,
|
||
volume: 56789012,
|
||
turnover: 14567890123.45,
|
||
high: 260.00,
|
||
low: 252.00,
|
||
open: 253.50,
|
||
prev_close: 248.32,
|
||
update_time: '15:00:00'
|
||
}
|
||
];
|
||
|
||
// ==================== 关注事件数据 ====================
|
||
|
||
// 事件关注内存存储(Set 存储已关注的事件 ID)
|
||
export const followedEventsSet = new Set();
|
||
|
||
// 关注事件完整数据存储(Map: eventId -> eventData)
|
||
export const followedEventsMap = new Map();
|
||
|
||
// 初始关注事件列表(用于初始化)
|
||
export const mockFollowingEvents = [
|
||
{
|
||
id: 101,
|
||
title: '央行宣布降准0.5个百分点,释放长期资金约1.2万亿元',
|
||
tags: ['货币政策', '央行', '降准', '银行'],
|
||
view_count: 12340,
|
||
comment_count: 156,
|
||
upvote_count: 489,
|
||
heat_score: 95,
|
||
exceed_expectation_score: 85,
|
||
related_avg_chg: 1.25,
|
||
related_max_chg: 3.15,
|
||
related_week_chg: 2.80,
|
||
creator: {
|
||
id: 1001,
|
||
username: '财经分析师',
|
||
avatar_url: 'https://i.pravatar.cc/150?img=11'
|
||
},
|
||
created_at: '2025-01-15T09:00:00Z',
|
||
followed_at: '2025-01-15T10:30:00Z'
|
||
},
|
||
{
|
||
id: 102,
|
||
title: 'ChatGPT-5 即将发布,AI 算力需求将迎来爆发式增长',
|
||
tags: ['人工智能', 'ChatGPT', '算力', '科技'],
|
||
view_count: 8950,
|
||
comment_count: 234,
|
||
upvote_count: 567,
|
||
heat_score: 88,
|
||
exceed_expectation_score: 78,
|
||
related_avg_chg: 5.60,
|
||
related_max_chg: 12.50,
|
||
related_week_chg: 8.90,
|
||
creator: {
|
||
id: 1002,
|
||
username: '科技观察者',
|
||
avatar_url: 'https://i.pravatar.cc/150?img=12'
|
||
},
|
||
created_at: '2025-01-14T14:20:00Z',
|
||
followed_at: '2025-01-14T15:00:00Z'
|
||
},
|
||
{
|
||
id: 103,
|
||
title: '新能源汽车补贴政策延续至2026年,行业持续受益',
|
||
tags: ['新能源', '汽车', '补贴政策', '产业政策'],
|
||
view_count: 6780,
|
||
comment_count: 98,
|
||
upvote_count: 345,
|
||
heat_score: 72,
|
||
exceed_expectation_score: 68,
|
||
related_avg_chg: 2.35,
|
||
related_max_chg: 6.80,
|
||
related_week_chg: 4.20,
|
||
creator: {
|
||
id: 1003,
|
||
username: '产业研究员',
|
||
avatar_url: 'https://i.pravatar.cc/150?img=13'
|
||
},
|
||
created_at: '2025-01-13T11:15:00Z',
|
||
followed_at: '2025-01-13T12:00:00Z'
|
||
},
|
||
{
|
||
id: 104,
|
||
title: '芯片法案正式实施,国产半导体迎来黄金发展期',
|
||
tags: ['半导体', '芯片', '国产替代', '政策'],
|
||
view_count: 9540,
|
||
comment_count: 178,
|
||
upvote_count: 432,
|
||
heat_score: 80,
|
||
exceed_expectation_score: 72,
|
||
related_avg_chg: 3.80,
|
||
related_max_chg: 9.20,
|
||
related_week_chg: 6.50,
|
||
creator: {
|
||
id: 1004,
|
||
username: '半导体观察',
|
||
avatar_url: 'https://i.pravatar.cc/150?img=14'
|
||
},
|
||
created_at: '2025-01-12T16:30:00Z',
|
||
followed_at: '2025-01-12T17:00:00Z'
|
||
},
|
||
{
|
||
id: 105,
|
||
title: '医保目录调整,创新药企业有望获得更多市场份额',
|
||
tags: ['医药', '医保', '创新药', '政策'],
|
||
view_count: 5430,
|
||
comment_count: 87,
|
||
upvote_count: 234,
|
||
heat_score: 65,
|
||
exceed_expectation_score: null,
|
||
related_avg_chg: -0.80,
|
||
related_max_chg: 2.50,
|
||
related_week_chg: 1.20,
|
||
creator: {
|
||
id: 1005,
|
||
username: '医药行业专家',
|
||
avatar_url: 'https://i.pravatar.cc/150?img=15'
|
||
},
|
||
created_at: '2025-01-11T10:00:00Z',
|
||
followed_at: '2025-01-11T11:30:00Z'
|
||
}
|
||
];
|
||
|
||
// 初始化:将 mockFollowingEvents 的数据加入内存存储
|
||
mockFollowingEvents.forEach(event => {
|
||
followedEventsSet.add(event.id);
|
||
followedEventsMap.set(event.id, event);
|
||
});
|
||
|
||
/**
|
||
* 切换事件关注状态
|
||
* @param {number} eventId - 事件 ID
|
||
* @param {Object} eventData - 事件数据(关注时需要)
|
||
* @returns {{ isFollowing: boolean, followerCount: number }}
|
||
*/
|
||
export function toggleEventFollowStatus(eventId, eventData = null) {
|
||
const wasFollowing = followedEventsSet.has(eventId);
|
||
|
||
if (wasFollowing) {
|
||
// 取消关注
|
||
followedEventsSet.delete(eventId);
|
||
followedEventsMap.delete(eventId);
|
||
} else {
|
||
// 添加关注
|
||
followedEventsSet.add(eventId);
|
||
if (eventData) {
|
||
followedEventsMap.set(eventId, {
|
||
...eventData,
|
||
followed_at: new Date().toISOString()
|
||
});
|
||
} else {
|
||
// 如果没有提供事件数据,创建基础数据
|
||
followedEventsMap.set(eventId, {
|
||
id: eventId,
|
||
title: `事件 ${eventId}`,
|
||
tags: [],
|
||
followed_at: new Date().toISOString()
|
||
});
|
||
}
|
||
}
|
||
|
||
const isFollowing = !wasFollowing;
|
||
const followerCount = isFollowing ? Math.floor(Math.random() * 500) + 100 : Math.floor(Math.random() * 500) + 50;
|
||
|
||
console.log('[Mock Data] 切换事件关注状态:', {
|
||
eventId,
|
||
wasFollowing,
|
||
isFollowing,
|
||
followedEventsCount: followedEventsSet.size
|
||
});
|
||
|
||
return { isFollowing, followerCount };
|
||
}
|
||
|
||
/**
|
||
* 检查事件是否已关注
|
||
* @param {number} eventId - 事件 ID
|
||
* @returns {boolean}
|
||
*/
|
||
export function isEventFollowed(eventId) {
|
||
return followedEventsSet.has(eventId);
|
||
}
|
||
|
||
/**
|
||
* 获取所有已关注的事件列表
|
||
* @returns {Array}
|
||
*/
|
||
export function getFollowedEvents() {
|
||
return Array.from(followedEventsMap.values());
|
||
}
|
||
|
||
// ==================== 评论数据 ====================
|
||
|
||
export const mockEventComments = [
|
||
{
|
||
id: 201,
|
||
user_id: 1,
|
||
event_id: 101,
|
||
event_title: '央行宣布降准0.5个百分点,释放长期资金约1.2万亿元',
|
||
content: '这次降准对银行股是重大利好!预计四大行和股份制银行都会受益,特别是净息差承压的中小银行。建议重点关注招商银行、兴业银行等优质标的。',
|
||
created_at: '2025-01-15T11:20:00Z',
|
||
likes: 45,
|
||
replies: 12
|
||
},
|
||
{
|
||
id: 202,
|
||
user_id: 1,
|
||
event_id: 102,
|
||
event_title: 'ChatGPT-5 即将发布,AI 算力需求将迎来爆发式增长',
|
||
content: 'AI 板块又要起飞了!重点关注算力基础设施概念股,如服务器、芯片、数据中心等。另外,AI 应用端也值得关注,特别是已经有成熟产品的公司。',
|
||
created_at: '2025-01-14T16:45:00Z',
|
||
likes: 38,
|
||
replies: 8
|
||
},
|
||
{
|
||
id: 203,
|
||
user_id: 1,
|
||
event_id: 103,
|
||
event_title: '新能源汽车补贴政策延续至2026年,行业持续受益',
|
||
content: '政策延续对整个产业链都是好消息。上游的锂电池、下游的整车厂都会受益。比亚迪和宁德时代可以继续持有,长期看好新能源汽车的渗透率提升。',
|
||
created_at: '2025-01-13T14:30:00Z',
|
||
likes: 56,
|
||
replies: 15
|
||
},
|
||
{
|
||
id: 204,
|
||
user_id: 1,
|
||
event_id: 104,
|
||
event_title: '芯片法案正式实施,国产半导体迎来黄金发展期',
|
||
content: '国产替代是大趋势!设备材料、设计封测、制造都有机会。关注那些有核心技术、已经打入国内大厂供应链的公司。半导体是长期主线,波动中坚定持有。',
|
||
created_at: '2025-01-12T18:00:00Z',
|
||
likes: 67,
|
||
replies: 20
|
||
},
|
||
{
|
||
id: 205,
|
||
user_id: 1,
|
||
event_id: 105,
|
||
event_title: '医保目录调整,创新药企业有望获得更多市场份额',
|
||
content: '医保谈判结果出来了,创新药企业普遍受益。重点关注有多个重磅品种的药企,以及 CXO 产业链。医药板块经过调整后,估值已经比较合理,可以逐步配置。',
|
||
created_at: '2025-01-11T13:15:00Z',
|
||
likes: 42,
|
||
replies: 10
|
||
}
|
||
];
|
||
|
||
// ==================== 投资计划与复盘数据 ====================
|
||
|
||
export const mockInvestmentPlans = [
|
||
// ==================== 计划数据(符合计划模板) ====================
|
||
{
|
||
id: 301,
|
||
user_id: 1,
|
||
type: 'plan',
|
||
title: '2025年Q1 新能源板块布局计划',
|
||
content: `【目标】
|
||
在Q1末实现新能源板块仓位15%,预计收益率20%,重点捕捉新能源政策利好和销量数据催化。
|
||
|
||
【策略】
|
||
1. 宁德时代:占比6%,等待回调至160元附近分批买入,技术面看好底部放量信号
|
||
2. 比亚迪:占比6%,当前价位可以开始建仓,采用金字塔式加仓
|
||
3. 隆基绿能:占比3%,观察光伏行业景气度再决定,等待基本面拐点确认
|
||
|
||
【风险控制】
|
||
- 单只个股止损-8%
|
||
- 板块整体止损-10%
|
||
- 遇到系统性风险事件,果断减仓50%
|
||
- 避免在重大财报日前重仓
|
||
|
||
【时间规划】
|
||
- 1月中旬:完成第一批建仓(5%仓位)
|
||
- 2月春节后:根据市场情况加仓(5%仓位)
|
||
- 3月中旬:完成最终布局(5%仓位)
|
||
- 季度末:复盘调整,决定是否持有到Q2`,
|
||
target_date: '2025-03-31',
|
||
status: 'in_progress',
|
||
created_at: '2025-01-10T10:00:00Z',
|
||
updated_at: '2025-01-15T14:30:00Z',
|
||
tags: ['新能源', '布局计划', 'Q1计划'],
|
||
stocks: ['300750.SZ', '002594.SZ', '601012.SH']
|
||
},
|
||
{
|
||
id: 303,
|
||
user_id: 1,
|
||
type: 'plan',
|
||
title: 'AI 算力板块波段交易计划',
|
||
content: `【目标】
|
||
捕捉ChatGPT-5发布带来的AI算力板块短期行情,目标收益15-20%,控制最大回撤在8%以内。
|
||
|
||
【策略】
|
||
- 寒武纪:AI芯片龙头,弹性最大,首选标的
|
||
- 中科曙光:服务器厂商,业绩支撑更扎实
|
||
- 浪潮信息:算力基础设施,流动性好
|
||
- 采用金字塔式买入,第一笔3%,后续根据走势加仓
|
||
- 快进快出,涨幅20%分批止盈
|
||
|
||
【风险控制】
|
||
- 仓位控制在10%以内(高风险高弹性)
|
||
- 单只个股止损-5%
|
||
- 破位及时止损,不恋战
|
||
- 避免追高,只在回调时介入
|
||
|
||
【时间规划】
|
||
- 本周:观察消息面发酵情况,确定进场时机
|
||
- 发布前1周:逐步建仓
|
||
- 发布后:根据市场反应决定持有还是止盈
|
||
- 2月底前:完成此轮操作`,
|
||
target_date: '2025-02-28',
|
||
status: 'pending',
|
||
created_at: '2025-01-14T16:00:00Z',
|
||
updated_at: '2025-01-14T16:00:00Z',
|
||
tags: ['AI', '算力', '波段交易'],
|
||
stocks: ['688256.SH', '603019.SH', '000977.SZ']
|
||
},
|
||
{
|
||
id: 305,
|
||
user_id: 1,
|
||
type: 'plan',
|
||
title: '银行股防守配置计划',
|
||
content: `【目标】
|
||
构建15%仓位的银行股防守配置,获取稳定分红收益(股息率5%+),同时等待估值修复带来的资本利得。
|
||
|
||
【策略】
|
||
1. 招商银行:零售银行龙头,ROE持续优秀,配置8%
|
||
2. 兴业银行:同业业务优势明显,配置4%
|
||
3. 成都银行:城商行中成长性最好,配置3%
|
||
选股逻辑:优先选择ROE高、资产质量好、分红稳定的标的
|
||
|
||
【风险控制】
|
||
- 银行股整体波动较小,但需关注宏观经济风险
|
||
- 如遇利率大幅下行或地产风险暴露,需重新评估持仓
|
||
- 单只银行股止损-15%(较宽松,适合长线持有)
|
||
- 定期关注季报中的不良贷款率和拨备覆盖率
|
||
|
||
【时间规划】
|
||
- 春节前:完成建仓
|
||
- 全年持有:享受分红收益
|
||
- 年中复盘:根据半年报调整配置比例
|
||
- 年底:评估是否继续持有到下一年`,
|
||
target_date: '2025-06-30',
|
||
status: 'active',
|
||
created_at: '2025-01-08T11:00:00Z',
|
||
updated_at: '2025-01-08T11:00:00Z',
|
||
tags: ['银行', '防守配置', '高股息'],
|
||
stocks: ['600036.SH', '601166.SH', '601838.SH']
|
||
},
|
||
{
|
||
id: 306,
|
||
user_id: 1,
|
||
type: 'plan',
|
||
title: '医药创新药中长线布局',
|
||
content: `【目标】
|
||
布局医药创新药板块,目标3-6个月内获得25%收益,享受创新药产品上市带来的业绩爆发。
|
||
|
||
【策略】
|
||
1. 恒瑞医药:创新药管线最丰富,PD-1放量进行中
|
||
2. 药明康德:CRO龙头,受益于全球创新药研发外包
|
||
3. 百济神州:海外收入占比高,泽布替尼持续放量
|
||
采用分批建仓策略,避免一次性重仓
|
||
|
||
【风险控制】
|
||
- 总仓位不超过12%
|
||
- 单只个股止损-10%
|
||
- 关注集采政策风险,如有利空政策出台立即减仓
|
||
- 关注核心产品的销售数据和临床进展
|
||
|
||
【时间规划】
|
||
- 第1个月:建立6%底仓
|
||
- 第2-3个月:根据业绩催化加仓至12%
|
||
- 第4-6个月:达到目标收益后分批止盈
|
||
- 每月关注:产品获批进展、销售数据、研报观点`,
|
||
target_date: '2025-06-30',
|
||
status: 'active',
|
||
created_at: '2025-01-05T14:00:00Z',
|
||
updated_at: '2025-01-12T09:30:00Z',
|
||
tags: ['医药', '创新药', '中长线'],
|
||
stocks: ['600276.SH', '603259.SH', '688235.SH']
|
||
},
|
||
{
|
||
id: 307,
|
||
user_id: 1,
|
||
type: 'plan',
|
||
title: '消费复苏主题布局计划',
|
||
content: `【目标】
|
||
捕捉春节消费旺季和全年消费复苏趋势,目标收益20%,重点布局白酒和免税龙头。
|
||
|
||
【策略】
|
||
1. 贵州茅台:高端白酒龙头,提价预期+渠道优化
|
||
2. 五粮液:次高端领军,估值修复空间大
|
||
3. 中国中免:免税龙头,海南自贸港政策利好
|
||
分散配置,每只占比3-5%
|
||
|
||
【风险控制】
|
||
- 总仓位控制在15%以内
|
||
- 单只个股止损-8%
|
||
- 关注消费数据变化,如不及预期及时调整
|
||
- 警惕宏观经济下行风险对消费的冲击
|
||
|
||
【时间规划】
|
||
- 春节前2周:完成建仓
|
||
- 春节后:观察销售数据和股价反应
|
||
- Q1末:根据一季度消费数据决定是否加仓
|
||
- 全年跟踪:月度社零数据、旅游数据`,
|
||
target_date: '2025-04-30',
|
||
status: 'pending',
|
||
created_at: '2025-01-03T10:30:00Z',
|
||
updated_at: '2025-01-03T10:30:00Z',
|
||
tags: ['消费', '白酒', '免税'],
|
||
stocks: ['600519.SH', '000858.SZ', '601888.SH']
|
||
},
|
||
|
||
// ==================== 复盘数据(符合复盘模板) ====================
|
||
{
|
||
id: 302,
|
||
user_id: 1,
|
||
type: 'review',
|
||
title: '2024年12月投资复盘 - 白酒板块大涨',
|
||
content: `【操作回顾】
|
||
1. 11月底在1550元加仓茅台0.5%仓位,持有至今
|
||
2. 五粮液持仓未动,从11月初一直持有
|
||
3. 错过了洋河股份的反弹行情
|
||
4. 月中短线做了一次泸州老窖,小赚2%出局
|
||
|
||
【盈亏分析】
|
||
- 贵州茅台:获利6.5%,贡献账户收益约0.65%
|
||
- 五粮液:获利4.2%,贡献账户收益约0.42%
|
||
- 泸州老窖:短线获利2%,贡献约0.06%
|
||
- 月度总收益:约1.13%
|
||
- 同期沪深300涨幅:0.8%,跑赢指数0.33%
|
||
|
||
【经验总结】
|
||
- 消费板块在年底有明显的估值修复行情,这个规律可以记住
|
||
- 龙头白马股在市场震荡时更具韧性,应该坚定持有
|
||
- 应该更大胆一些,茅台仓位可以再提高2-3个点
|
||
- 洋河的机会没把握住,主要是对二线白酒信心不足
|
||
|
||
【后续调整】
|
||
- 继续持有茅台、五粮液,不轻易卖出
|
||
- 关注春节前的消费旺季催化
|
||
- 如果有回调,考虑加仓茅台至5%总仓位
|
||
- 下月开始关注春节消费数据`,
|
||
target_date: '2024-12-31',
|
||
status: 'completed',
|
||
created_at: '2025-01-02T09:00:00Z',
|
||
updated_at: '2025-01-02T09:00:00Z',
|
||
tags: ['月度复盘', '白酒', '2024年12月'],
|
||
stocks: ['600519.SH', '000858.SZ', '000568.SZ']
|
||
},
|
||
{
|
||
id: 304,
|
||
user_id: 1,
|
||
type: 'review',
|
||
title: '2024年全年投资总结 - 收益率25.6%',
|
||
content: `【操作回顾】
|
||
1. 全年共进行交易52次,其中胜率62%
|
||
2. 主要盈利来源:新能源(+35%)、白酒(+18%)
|
||
3. 主要亏损来源:年初追高的概念股(-8%)
|
||
4. 最成功操作:5月底抄底宁德时代,持有3个月获利45%
|
||
5. 最失败操作:3月追高机器人概念,亏损12%割肉
|
||
|
||
【盈亏分析】
|
||
- 全年总收益率:25.6%
|
||
- 沪深300涨幅:13.6%
|
||
- 超额收益:12个百分点
|
||
- 最大回撤:-8.5%(3月份)
|
||
- 夏普比率:约1.8
|
||
- 各板块贡献:
|
||
- 新能源:+12.6%
|
||
- 白酒:+7.2%
|
||
- 半导体:+3.2%
|
||
- 其他:+2.6%
|
||
|
||
【经验总结】
|
||
1. 年初追高热门概念股是最大教训,后续回调损失较大
|
||
2. 止损执行不够坚决,有两次错过最佳止损时机
|
||
3. 仓位管理有待提高,牛市时仓位偏低(最高才70%)
|
||
4. 成功的操作都是逆向买入+耐心持有
|
||
5. 频繁交易并没有带来更好收益
|
||
|
||
【后续调整】
|
||
2025年目标:
|
||
- 收益率目标:30%
|
||
- 优化仓位管理,提高资金使用效率至80%+
|
||
- 严格执行止损纪律,设置自动止损提醒
|
||
- 加强行业研究,提前布局而非追高
|
||
- 减少交易频率,提高单次交易质量`,
|
||
target_date: '2024-12-31',
|
||
status: 'completed',
|
||
created_at: '2025-01-01T10:00:00Z',
|
||
updated_at: '2025-01-01T10:00:00Z',
|
||
tags: ['年度复盘', '2024年', '总结'],
|
||
stocks: []
|
||
},
|
||
{
|
||
id: 308,
|
||
user_id: 1,
|
||
type: 'review',
|
||
title: '宁德时代波段操作复盘',
|
||
content: `【操作回顾】
|
||
- 5月25日:在160元附近建仓3%,理由是估值回到历史低位+储能业务放量预期
|
||
- 6月10日:加仓2%,价格172元,技术面突破关键阻力
|
||
- 7月20日:再加仓2%,价格195元,财报预告超预期
|
||
- 8月15日:开始分批止盈,卖出3%仓位,均价235元
|
||
- 8月28日:清仓剩余4%仓位,均价228元
|
||
|
||
【盈亏分析】
|
||
- 第一笔:160元买入,平均卖出231.5元,收益率44.7%
|
||
- 第二笔:172元买入,平均卖出231.5元,收益率34.6%
|
||
- 第三笔:195元买入,平均卖出231.5元,收益率18.7%
|
||
- 加权平均收益率:约35%
|
||
- 持仓时间:约3个月
|
||
- 年化收益率:约140%
|
||
|
||
【经验总结】
|
||
1. 在估值底部+催化剂出现时建仓是正确的选择
|
||
2. 金字塔式加仓策略有效控制了成本
|
||
3. 分批止盈策略让我吃到了大部分涨幅
|
||
4. 但最后一笔加仓(195元)价格偏高,拉低了整体收益
|
||
5. 应该在涨幅达到30%时就开始止盈,而非等到40%+
|
||
|
||
【后续调整】
|
||
- 下次操作宁德时代,设置150-170元为合理买入区间
|
||
- 涨幅达到25%开始分批止盈
|
||
- 储能业务是长期逻辑,可以保留2%底仓长期持有
|
||
- 关注Q4业绩和2025年指引`,
|
||
target_date: '2024-08-31',
|
||
status: 'completed',
|
||
created_at: '2024-09-01T10:00:00Z',
|
||
updated_at: '2024-09-01T10:00:00Z',
|
||
tags: ['个股复盘', '宁德时代', '波段'],
|
||
stocks: ['300750.SZ']
|
||
},
|
||
{
|
||
id: 309,
|
||
user_id: 1,
|
||
type: 'review',
|
||
title: '11月第三周交易复盘',
|
||
content: `【操作回顾】
|
||
周一:观望,未操作
|
||
周二:买入比亚迪2%仓位,价格248元
|
||
周三:加仓比亚迪1%,价格252元;卖出中芯国际1%仓位
|
||
周四:买入恒瑞医药1.5%仓位,价格42元
|
||
周五:观望,持仓未动
|
||
|
||
【盈亏分析】
|
||
- 本周账户收益:+0.8%
|
||
- 比亚迪:浮盈1.2%
|
||
- 恒瑞医药:浮亏0.5%
|
||
- 中芯国际:卖出盈利3%
|
||
- 同期沪深300:+0.5%
|
||
- 超额收益:+0.3%
|
||
|
||
【经验总结】
|
||
1. 比亚迪买入时机较好,趁回调建仓
|
||
2. 恒瑞医药买得稍早,本周没有继续下跌但也没涨
|
||
3. 中芯国际止盈时机把握得不错,避免了后续调整
|
||
4. 交易频率偏高,手续费成本需要注意
|
||
|
||
【后续调整】
|
||
- 下周继续持有比亚迪和恒瑞,等待催化
|
||
- 如果恒瑞跌破40元,考虑加仓
|
||
- 比亚迪如果突破260元,可以继续加仓
|
||
- 下周计划观察AI板块是否有机会`,
|
||
target_date: '2024-11-24',
|
||
status: 'completed',
|
||
created_at: '2024-11-25T18:00:00Z',
|
||
updated_at: '2024-11-25T18:00:00Z',
|
||
tags: ['周度复盘', '11月第三周'],
|
||
stocks: ['002594.SZ', '600276.SH', '688981.SH']
|
||
},
|
||
{
|
||
id: 310,
|
||
user_id: 1,
|
||
type: 'review',
|
||
title: '机器人概念追高教训复盘',
|
||
content: `【操作回顾】
|
||
- 3月5日:看到机器人概念连续大涨,FOMO心态买入机器人ETF 5%仓位
|
||
- 3月8日:继续上涨,追加3%仓位
|
||
- 3月12日:见顶回落,犹豫不决
|
||
- 3月18日:跌破成本价,仍抱有侥幸心理
|
||
- 3月25日:止损出局,平均亏损12%
|
||
|
||
【盈亏分析】
|
||
- 买入成本:约1.05元(均价)
|
||
- 卖出价格:约0.92元
|
||
- 亏损金额:约8%仓位 × 12% = 0.96%账户净值
|
||
- 这是本年度最大单笔亏损
|
||
- 教训成本:约5000元
|
||
|
||
【经验总结】
|
||
1. 追高是最大的错误,概念炒作往往来去匆匆
|
||
2. FOMO心态害死人,看到别人赚钱就想追
|
||
3. 止损不坚决,跌破成本价时就应该走
|
||
4. 对机器人行业基本面了解不够,纯粹是跟风
|
||
5. 仓位太重,首次买入就5%,完全不符合试仓原则
|
||
|
||
【后续调整】
|
||
- 概念炒作坚决不追高,只在调整时考虑
|
||
- 任何新建仓位首次买入不超过2%
|
||
- 设置硬性止损-5%,坚决执行
|
||
- 不熟悉的领域少碰或只做小仓位
|
||
- 记住这次教训,下次遇到类似情况要克制`,
|
||
target_date: '2024-03-31',
|
||
status: 'completed',
|
||
created_at: '2024-04-01T09:00:00Z',
|
||
updated_at: '2024-04-01T09:00:00Z',
|
||
tags: ['教训复盘', '追高', '机器人'],
|
||
stocks: []
|
||
},
|
||
{
|
||
id: 311,
|
||
user_id: 1,
|
||
type: 'review',
|
||
title: '半导体板块Q3操作复盘',
|
||
content: `【操作回顾】
|
||
7月份:
|
||
- 买入中芯国际3%仓位,价格45元
|
||
- 买入北方华创2%仓位,价格180元
|
||
|
||
8月份:
|
||
- 中芯国际加仓1%,价格48元
|
||
- 北方华创持仓不动
|
||
|
||
9月份:
|
||
- 中芯国际在55元分批止盈2%
|
||
- 北方华创在195元全部止盈
|
||
- 保留中芯国际2%底仓
|
||
|
||
【盈亏分析】
|
||
- 中芯国际:
|
||
- 已止盈部分:收益率约20%
|
||
- 剩余持仓:浮盈约15%
|
||
- 北方华创:
|
||
- 全部止盈,收益率约8%
|
||
- Q3半导体板块总收益:约+3.2%账户净值
|
||
- 板块贡献排名:第三(仅次于新能源和白酒)
|
||
|
||
【经验总结】
|
||
1. 半导体板块波动大,不适合重仓长持
|
||
2. 北方华创止盈过早,后来又涨了10%
|
||
3. 中芯国际的分批止盈策略比较成功
|
||
4. 应该更多关注设备和材料,而非制造环节
|
||
5. 华为产业链相关标的值得持续关注
|
||
|
||
【后续调整】
|
||
- Q4继续持有中芯国际底仓
|
||
- 关注北方华创回调机会
|
||
- 新增关注标的:长电科技、华虹半导体
|
||
- 仓位目标:半导体板块不超过10%`,
|
||
target_date: '2024-09-30',
|
||
status: 'completed',
|
||
created_at: '2024-10-08T10:00:00Z',
|
||
updated_at: '2024-10-08T10:00:00Z',
|
||
tags: ['季度复盘', '半导体', 'Q3'],
|
||
stocks: ['688981.SH', '002371.SZ']
|
||
}
|
||
];
|
||
|
||
// ==================== 投资日历事件数据 ====================
|
||
|
||
// ==================== 未来事件数据(用于投资日历) ====================
|
||
|
||
export const mockFutureEvents = [
|
||
{
|
||
id: 501,
|
||
data_id: 501,
|
||
title: '美联储FOMC会议',
|
||
calendar_time: '2025-10-20T14:00:00Z',
|
||
type: 'event',
|
||
star: 5,
|
||
former: {
|
||
data: [
|
||
{
|
||
author: '美联储官网',
|
||
sentences: '本次会议将重点讨论通胀控制和利率调整策略,美联储将评估当前经济形势,包括就业市场、物价水平和金融稳定性等关键指标,以决定是否调整联邦基金利率目标区间',
|
||
query_part: '本次会议将重点讨论通胀控制和利率调整策略',
|
||
report_title: 'FOMC会议议程公告',
|
||
declare_date: '2025-10-15T00:00:00',
|
||
match_score: '好'
|
||
},
|
||
{
|
||
author: '彭博社',
|
||
sentences: '市场普遍预期美联储将维持当前利率水平,根据对50位经济学家的调查,超过80%的受访者认为美联储将在本次会议上保持利率不变,等待更多经济数据以评估政策效果',
|
||
query_part: '市场普遍预期美联储将维持当前利率水平',
|
||
report_title: '美联储利率决议前瞻:经济学家调查报告',
|
||
declare_date: '2025-10-18T00:00:00',
|
||
match_score: '好'
|
||
},
|
||
{
|
||
author: '路透社',
|
||
sentences: '鲍威尔的讲话将释放未来货币政策方向的重要信号,市场将密切关注其对经济前景的评估,特别是关于通胀回落速度、就业市场韧性以及未来降息时点的表述',
|
||
query_part: '鲍威尔的讲话将释放未来货币政策方向的重要信号',
|
||
report_title: '鲍威尔讲话要点预测',
|
||
declare_date: '2025-10-19T00:00:00',
|
||
match_score: '好'
|
||
}
|
||
]
|
||
},
|
||
forecast: '预计维持利率不变,关注鲍威尔讲话基调',
|
||
fact: null,
|
||
related_stocks: [
|
||
[
|
||
'600036',
|
||
'招商银行',
|
||
{
|
||
data: [
|
||
{
|
||
author: '中信证券',
|
||
sentences: '作为国内领先的商业银行,招商银行对利率变化敏感度高,美联储货币政策调整将通过汇率、资本流动等渠道影响国内货币政策,进而影响银行净息差和资产质量',
|
||
query_part: '美联储政策通过汇率和资本流动影响国内银行业',
|
||
report_title: '美联储政策对中国银行业影响分析',
|
||
declare_date: '2025-10-18T00:00:00',
|
||
match_score: '好'
|
||
},
|
||
{
|
||
author: '中信证券',
|
||
sentences: '作为国内领先的商业银行,招商银行对利率变化敏感度高,美联储货币政策调整将通过汇率、资本流动等渠道影响国内货币政策,进而影响银行净息差和资产质量',
|
||
query_part: '美联储政策通过汇率和资本流动影响国内银行业',
|
||
report_title: '美联储政策对中国银行业影响分析',
|
||
declare_date: '2025-10-18T00:00:00',
|
||
match_score: '好'
|
||
}
|
||
]
|
||
},
|
||
0.85
|
||
],
|
||
[
|
||
'601398',
|
||
'工商银行',
|
||
{
|
||
data: [
|
||
{
|
||
author: '招商证券',
|
||
sentences: '工商银行作为国有大行,其经营业绩与宏观经济和货币政策高度相关,美联储利率决策将影响全球流动性和人民币汇率,对大型商业银行的跨境业务和外汇敞口产生直接影响',
|
||
query_part: '美联储决策影响全球流动性和大行跨境业务',
|
||
report_title: '货币政策对银行业影响专题研究',
|
||
declare_date: '2025-10-17T00:00:00',
|
||
match_score: '好'
|
||
}
|
||
]
|
||
},
|
||
0.80
|
||
]
|
||
],
|
||
concepts: ['货币政策', '利率', '美联储'],
|
||
is_following: false
|
||
},
|
||
{
|
||
id: 502,
|
||
data_id: 502,
|
||
title: '央行货币政策委员会例会',
|
||
calendar_time: '2025-10-20T09:00:00Z',
|
||
type: 'event',
|
||
star: 4,
|
||
former: '本次例会将总结前期货币政策执行情况,研究部署下一阶段工作。重点关注经济增长、通胀水平和金融稳定等方面的形势变化。\n\n(AI合成)',
|
||
forecast: '可能释放适度宽松信号',
|
||
fact: null,
|
||
related_stocks: [],
|
||
concepts: ['货币政策', '央行', '宏观经济'],
|
||
is_following: true
|
||
},
|
||
{
|
||
id: 503,
|
||
data_id: 503,
|
||
title: '宁德时代业绩快报',
|
||
calendar_time: '2025-10-20T16:00:00Z',
|
||
type: 'data',
|
||
star: 5,
|
||
former: {
|
||
data: [
|
||
{
|
||
author: 'SNE Research',
|
||
sentences: '公司Q3动力电池装机量持续保持全球第一,市场份额达到37.8%,较去年同期提升2.3个百分点,在全球动力电池市场继续保持领先地位,主要得益于国内新能源汽车市场的强劲增长以及海外客户订单的持续放量',
|
||
query_part: '公司Q3动力电池装机量持续保持全球第一',
|
||
report_title: '全球动力电池市场装机量统计报告',
|
||
declare_date: '2025-10-10T00:00:00',
|
||
match_score: '好'
|
||
},
|
||
{
|
||
author: '宁德时代',
|
||
sentences: '储能业务订单饱满,预计全年营收同比增长超过60%,公司储能产品已应用于全球多个大型储能项目,在用户侧储能、电网侧储能等领域均实现突破,随着全球能源转型加速,储能市场需求持续旺盛',
|
||
query_part: '储能业务订单饱满,预计全年营收同比增长超过60%',
|
||
report_title: '宁德时代2024年业绩预告',
|
||
declare_date: '2025-09-30T00:00:00',
|
||
match_score: '好'
|
||
}
|
||
]
|
||
},
|
||
forecast: '预计营收和净利润双增长',
|
||
fact: null,
|
||
related_stocks: [
|
||
[
|
||
'300750',
|
||
'宁德时代',
|
||
{
|
||
data: [
|
||
{
|
||
author: '宁德时代公告',
|
||
sentences: '公司Q3动力电池装机量持续保持全球第一,市场份额达到37.8%,较去年同期提升2.3个百分点,在全球动力电池市场继续保持领先地位,主要得益于国内新能源汽车市场的强劲增长以及海外客户订单的持续放量',
|
||
query_part: '动力电池装机量全球第一,市场份额37.8%',
|
||
report_title: '宁德时代2024年Q3业绩快报',
|
||
declare_date: '2025-10-15T00:00:00',
|
||
match_score: '优'
|
||
},
|
||
{
|
||
author: '国泰君安证券',
|
||
sentences: '储能业务订单饱满,预计全年营收同比增长超过60%,公司储能产品已应用于全球多个大型储能项目,在用户侧储能、电网侧储能等领域均实现突破',
|
||
query_part: '储能业务营收同比增长超60%',
|
||
report_title: '宁德时代储能业务深度报告',
|
||
declare_date: '2025-10-12T00:00:00',
|
||
match_score: '优'
|
||
}
|
||
]
|
||
},
|
||
0.95
|
||
],
|
||
[
|
||
'002466',
|
||
'天齐锂业',
|
||
{
|
||
data: [
|
||
{
|
||
author: '天风证券',
|
||
sentences: '天齐锂业作为宁德时代的核心供应商,将直接受益于下游动力电池需求的增长,公司锂资源储量丰富,随着宁德时代产能扩张,锂盐需求持续旺盛,公司业绩增长确定性强',
|
||
query_part: '核心锂供应商直接受益于下游需求增长',
|
||
report_title: '天齐锂业:受益动力电池产业链景气',
|
||
declare_date: '2025-10-14T00:00:00',
|
||
match_score: '好'
|
||
},
|
||
{
|
||
author: '天风证券',
|
||
sentences: '天齐锂业作为宁德时代的核心供应商,将直接受益于下游动力电池需求的增长,公司锂资源储量丰富,随着宁德时代产能扩张,锂盐需求持续旺盛,公司业绩增长确定性强',
|
||
query_part: '核心锂供应商直接受益于下游需求增长',
|
||
report_title: '天齐锂业:受益动力电池产业链景气',
|
||
declare_date: '2025-10-14T00:00:00',
|
||
match_score: '好'
|
||
},
|
||
{
|
||
author: '天风证券',
|
||
sentences: '天齐锂业作为宁德时代的核心供应商,将直接受益于下游动力电池需求的增长,公司锂资源储量丰富,随着宁德时代产能扩张,锂盐需求持续旺盛,公司业绩增长确定性强',
|
||
query_part: '核心锂供应商直接受益于下游需求增长',
|
||
report_title: '天齐锂业:受益动力电池产业链景气',
|
||
declare_date: '2025-10-14T00:00:00',
|
||
match_score: '好'
|
||
}
|
||
]
|
||
},
|
||
0.82
|
||
]
|
||
],
|
||
concepts: ['新能源', '动力电池', '储能'],
|
||
is_following: false
|
||
}
|
||
];
|
||
|
||
export const mockCalendarEvents = [
|
||
{
|
||
id: 408,
|
||
user_id: 1,
|
||
title: '2025中医药高质量发展大会将于12月5日至7日举办',
|
||
date: '2025-12-05',
|
||
event_date: '2025-12-05',
|
||
type: 'policy',
|
||
category: 'industry_event',
|
||
description: `基于提供的路演记录、新闻动态以及上市公司公告,以下是与"2025中医药高质量发展大会将于12月5日至7日举办"相关的信息整理:
|
||
|
||
事件背景:
|
||
"2025中医药高质量发展大会"将于12月5日至7日在北京召开,由国家中医药管理局主办,旨在总结十四五期间中医药发展成果,部署下一阶段重点任务。大会主题为"守正创新、传承发展",将邀请国内外中医药领域专家学者、企业代表共商中医药现代化发展路径。
|
||
|
||
政策支持:
|
||
1. 国务院办公厅印发《中医药振兴发展重大工程实施方案》,明确到2025年中医药服务体系更加完善
|
||
2. 国家医保局持续推进中成药集采,优质中药企业有望受益于市场集中度提升
|
||
3. 各地出台中医药产业发展支持政策,加大对中药创新药研发的资金支持
|
||
|
||
行业展望:
|
||
中医药行业正处于政策红利期,创新中药、配方颗粒、中药材种植等细分领域景气度较高。预计大会将释放更多利好政策信号,推动行业高质量发展。`,
|
||
importance: 5,
|
||
source: 'future',
|
||
stocks: ['002424.SZ', '002873.SZ', '600518.SH', '002907.SZ', '600129.SH', '300519.SZ', '300878.SZ', '002275.SZ', '600222.SH'],
|
||
created_at: '2025-12-01T10:00:00Z'
|
||
},
|
||
{
|
||
id: 401,
|
||
user_id: 1,
|
||
title: '贵州茅台年报披露',
|
||
date: '2025-12-20',
|
||
event_date: '2025-12-20',
|
||
type: 'earnings',
|
||
category: 'financial_report',
|
||
description: '关注营收和净利润增速,以及渠道库存情况',
|
||
stock_code: '600519.SH',
|
||
stock_name: '贵州茅台',
|
||
importance: 5,
|
||
source: 'future',
|
||
stocks: ['600519'],
|
||
created_at: '2025-01-10T10:00:00Z'
|
||
},
|
||
{
|
||
id: 402,
|
||
user_id: 1,
|
||
title: '宁德时代业绩快报',
|
||
date: '2025-11-28',
|
||
event_date: '2025-11-28',
|
||
type: 'earnings',
|
||
category: 'financial_report',
|
||
description: '重点关注出货量和单位盈利情况',
|
||
stock_code: '300750.SZ',
|
||
stock_name: '宁德时代',
|
||
importance: 5,
|
||
source: 'future',
|
||
stocks: ['300750'],
|
||
created_at: '2025-01-12T14:00:00Z'
|
||
},
|
||
{
|
||
id: 403,
|
||
user_id: 1,
|
||
title: '央行货币政策委员会例会',
|
||
date: '2025-10-25',
|
||
event_date: '2025-10-25',
|
||
type: 'policy',
|
||
category: 'macro_policy',
|
||
description: '关注货币政策基调和利率调整信号',
|
||
importance: 4,
|
||
source: 'future',
|
||
stocks: [],
|
||
created_at: '2025-01-08T09:00:00Z'
|
||
},
|
||
{
|
||
id: 404,
|
||
user_id: 1,
|
||
title: '春节假期后首个交易日',
|
||
date: '2025-11-15',
|
||
event_date: '2025-11-15',
|
||
type: 'reminder',
|
||
category: 'trading',
|
||
description: '节后第一天,关注资金面和市场情绪',
|
||
importance: 3,
|
||
source: 'future',
|
||
stocks: [],
|
||
created_at: '2025-01-05T16:00:00Z'
|
||
},
|
||
{
|
||
id: 405,
|
||
user_id: 1,
|
||
title: '定投日 - 沪深300ETF',
|
||
date: '2025-10-20',
|
||
event_date: '2025-10-20',
|
||
type: 'reminder',
|
||
category: 'investment',
|
||
description: '每月20日定投3000元',
|
||
importance: 2,
|
||
source: 'user',
|
||
stocks: [],
|
||
is_recurring: true,
|
||
recurrence_rule: 'monthly',
|
||
created_at: '2024-12-15T10:00:00Z'
|
||
},
|
||
{
|
||
id: 406,
|
||
user_id: 1,
|
||
title: '美联储FOMC会议',
|
||
date: '2025-11-07',
|
||
event_date: '2025-11-07',
|
||
type: 'policy',
|
||
category: 'macro_policy',
|
||
description: '关注美联储利率决议和鲍威尔讲话',
|
||
importance: 5,
|
||
source: 'future',
|
||
stocks: [],
|
||
created_at: '2025-01-07T11:00:00Z'
|
||
},
|
||
{
|
||
id: 407,
|
||
user_id: 1,
|
||
title: '持仓股票复盘日',
|
||
date: '2025-10-26',
|
||
event_date: '2025-10-26',
|
||
type: 'reminder',
|
||
category: 'review',
|
||
description: '每周六进行持仓复盘和下周计划',
|
||
importance: 3,
|
||
source: 'user',
|
||
stocks: [],
|
||
is_recurring: true,
|
||
recurrence_rule: 'weekly',
|
||
created_at: '2025-01-01T10:00:00Z'
|
||
}
|
||
];
|
||
|
||
// ==================== 订阅信息数据 ====================
|
||
|
||
export const mockSubscriptionCurrent = {
|
||
type: 'pro',
|
||
status: 'active',
|
||
is_active: true,
|
||
days_left: 90,
|
||
end_date: '2025-04-15T23:59:59Z',
|
||
plan_name: 'Pro版',
|
||
features: [
|
||
'无限事件查看',
|
||
'实时行情推送',
|
||
'专业分析报告',
|
||
'优先客服支持',
|
||
'关联股票分析',
|
||
'历史事件对比'
|
||
],
|
||
price: 0.01,
|
||
currency: 'CNY',
|
||
billing_cycle: 'monthly',
|
||
auto_renew: true,
|
||
next_billing_date: '2025-02-15T00:00:00Z'
|
||
};
|
||
|
||
// ==================== 辅助函数 ====================
|
||
|
||
// 根据用户ID获取自选股
|
||
export function getWatchlistByUserId(userId) {
|
||
return mockWatchlist.filter(item => item.user_id === userId);
|
||
}
|
||
|
||
// 根据用户ID获取关注事件
|
||
export function getFollowingEventsByUserId(userId) {
|
||
return mockFollowingEvents;
|
||
}
|
||
|
||
// 根据用户ID获取评论
|
||
export function getCommentsByUserId(userId) {
|
||
return mockEventComments.filter(comment => comment.user_id === userId);
|
||
}
|
||
|
||
// 根据用户ID获取投资计划
|
||
export function getInvestmentPlansByUserId(userId) {
|
||
return mockInvestmentPlans.filter(plan => plan.user_id === userId);
|
||
}
|
||
|
||
// 根据用户ID获取日历事件
|
||
export function getCalendarEventsByUserId(userId) {
|
||
return mockCalendarEvents.filter(event => event.user_id === userId);
|
||
}
|
||
|
||
// 获取指定日期范围的日历事件
|
||
export function getCalendarEventsByDateRange(userId, startDate, endDate) {
|
||
const start = new Date(startDate);
|
||
const end = new Date(endDate);
|
||
|
||
return mockCalendarEvents.filter(event => {
|
||
if (event.user_id !== userId) return false;
|
||
const eventDate = new Date(event.date);
|
||
return eventDate >= start && eventDate <= end;
|
||
});
|
||
}
|
||
|
||
// ==================== 未来事件(投资日历)辅助函数 ====================
|
||
|
||
/**
|
||
* 获取指定日期的未来事件列表
|
||
* @param {string} dateStr - 日期字符串 'YYYY-MM-DD'
|
||
* @param {string} type - 事件类型 'event' | 'data' | 'all'
|
||
* @returns {Array} 事件列表
|
||
*/
|
||
export function getMockFutureEvents(dateStr, type = 'all') {
|
||
const targetDate = new Date(dateStr);
|
||
|
||
return mockFutureEvents.filter(event => {
|
||
const eventDate = new Date(event.calendar_time);
|
||
const isSameDate =
|
||
eventDate.getFullYear() === targetDate.getFullYear() &&
|
||
eventDate.getMonth() === targetDate.getMonth() &&
|
||
eventDate.getDate() === targetDate.getDate();
|
||
|
||
if (!isSameDate) return false;
|
||
|
||
if (type === 'all') return true;
|
||
return event.type === type;
|
||
});
|
||
}
|
||
|
||
/**
|
||
* 获取指定月份的事件统计
|
||
* @param {number} year - 年份
|
||
* @param {number} month - 月份 (1-12)
|
||
* @returns {Array} 事件统计数组
|
||
*/
|
||
export function getMockEventCountsForMonth(year, month) {
|
||
const counts = {};
|
||
|
||
mockFutureEvents.forEach(event => {
|
||
const eventDate = new Date(event.calendar_time);
|
||
if (eventDate.getFullYear() === year && eventDate.getMonth() + 1 === month) {
|
||
const dateStr = eventDate.toISOString().split('T')[0];
|
||
counts[dateStr] = (counts[dateStr] || 0) + 1;
|
||
}
|
||
});
|
||
|
||
return Object.entries(counts).map(([date, count]) => ({
|
||
date,
|
||
count,
|
||
className: count >= 3 ? 'high-activity' : count >= 2 ? 'medium-activity' : 'low-activity'
|
||
}));
|
||
}
|