zdl
|
999fd9b0a3
|
feat: K线添加mock数据
|
2025-12-04 14:02:03 +08:00 |
|
zdl
|
8d3e92dfaf
|
feat: 添加批量获取K线数据的 mock handler
- 新增 /api/stock/batch-kline POST 接口 mock
- 支持批量获取多只股票的分时图和日K线数据
- 修复事件详情页面相关股票的K线和分时图无数据问题
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-12-04 13:46:47 +08:00 |
|
zdl
|
f521b89c27
|
fix:修复添加自选股没反应
|
2025-12-04 12:20:27 +08:00 |
|
zdl
|
5dc480f5f4
|
feat: 个股添加个股列表弹窗
|
2025-12-04 11:51:21 +08:00 |
|
zdl
|
cdca889083
|
fix: 去除个股中心动画,添加mock数据
|
2025-12-03 17:28:23 +08:00 |
|
zdl
|
662d140439
|
feat: 添加mock数据
|
2025-12-03 15:56:24 +08:00 |
|
|
|
bd86ccce85
|
update pay ui
|
2025-12-02 12:01:59 +08:00 |
|
|
|
250d585b87
|
update pay function
|
2025-11-28 16:08:31 +08:00 |
|
|
|
8cf2850660
|
update pay function
|
2025-11-28 15:32:03 +08:00 |
|
|
|
9b7a221315
|
update pay function
|
2025-11-28 14:49:16 +08:00 |
|
zdl
|
9df725b748
|
feat: 精简日志
|
2025-11-26 15:34:11 +08:00 |
|
zdl
|
037471d880
|
feat: 修复 Mock 路径从 h5-auth-url → h5-auth
|
2025-11-26 14:52:05 +08:00 |
|
zdl
|
3507cfe9f7
|
pref: 删除调试工具
|
2025-11-26 13:16:30 +08:00 |
|
zdl
|
7b4c4be7bf
|
pref:点击手机登陆后日志优化
|
2025-11-26 11:43:16 +08:00 |
|
zdl
|
7a2c73f3ca
|
:pref: 首屏优化
|
2025-11-26 11:30:12 +08:00 |
|
zdl
|
105a0b02ea
|
fix:移除日志
|
2025-11-26 11:17:03 +08:00 |
|
zdl
|
1090a2fc67
|
feat: 客服接口mock添加
|
2025-11-26 10:55:18 +08:00 |
|
zdl
|
f8bb46ae64
|
feat: 添加mock
|
2025-11-24 16:53:37 +08:00 |
|
zdl
|
2f125a9207
|
feat: StockChartModal.tsx 替换 KLine 实现
|
2025-11-24 13:59:44 +08:00 |
|
zdl
|
9fd618c087
|
feat: 实现评论分页功能并迁移到 TypeScript
- 创建通用分页 Hook (usePagination.ts) 支持任意数据类型
- 将 EventCommentSection 迁移到 TypeScript (.tsx)
- 添加"加载更多"按钮,支持增量加载评论
- 创建分页和评论相关类型定义 (pagination.ts, comment.ts)
- 增加 Mock 评论数据从 5 条到 15 条,便于测试分页
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-14 17:27:12 +08:00 |
|
zdl
|
e23feb3c23
|
feat: 添加评论功能
|
2025-11-14 16:15:13 +08:00 |
|
zdl
|
033f29e90c
|
feat: 处理mock数据
|
2025-11-07 20:05:14 +08:00 |
|
zdl
|
c5d6247f49
|
fix: 修复 MSW 接口和调试代码清理...
|
2025-11-06 01:17:06 +08:00 |
|
zdl
|
e617eddd46
|
feat: 添加mock数据
|
2025-11-05 17:49:15 +08:00 |
|
zdl
|
22186eb54a
|
feat: 添加mock数据
|
2025-11-05 17:43:17 +08:00 |
|
zdl
|
623ec73c62
|
feat: 添加mock数据
|
2025-11-05 16:49:13 +08:00 |
|
zdl
|
7e781731c4
|
feat: mock数据添加
|
2025-11-05 15:20:59 +08:00 |
|
zdl
|
f9e4265dd6
|
feat: 配置完全mock环境
|
2025-11-05 15:00:11 +08:00 |
|
zdl
|
d95bd51206
|
feat: 导航栏关注事件弹窗增强显示信息
- 添加热度显示(🔥 图标 + 分数)
- ≥80 红色,≥60 橙色,<60 灰色
- 添加关注数显示(👥 图标 + 人数)
- 保留原有涨跌幅显示(日均、周涨)
- mock 数据补充涨跌幅字段(related_avg_chg, related_max_chg, related_week_chg)
- 智能显示:字段存在时才显示对应 Badge
- 优化 Badge 间距和布局
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-05 11:05:32 +08:00 |
|
zdl
|
c7334191e5
|
feat: 调整mock数据
|
2025-11-04 20:17:56 +08:00 |
|
zdl
|
f17a8fbd87
|
feat: 实现 Redux 全局状态管理事件关注功能
本次提交实现了滚动列表和事件详情的关注按钮状态同步:
✅ Redux 状态管理
- communityDataSlice.js: 添加 eventFollowStatus state
- 新增 toggleEventFollow AsyncThunk(复用 EventList.js 逻辑)
- 新增 setEventFollowStatus reducer 和 selectEventFollowStatus selector
✅ 组件集成
- DynamicNewsCard.js: 从 Redux 读取关注状态并传递给子组件
- EventScrollList.js: 接收并传递关注状态给事件卡片
- DynamicNewsDetailPanel.js: 移除本地 state,使用 Redux 状态
✅ Mock API 支持
- event.js: 添加 POST /api/events/:eventId/follow 处理器
- 返回 { is_following, follower_count } 模拟数据
✅ Bug 修复
- EventDetail/index.js: 添加 useRef 导入
- concept.js: 导出 generatePopularConcepts 函数
- event.js: 添加 /api/events/:eventId/concepts 处理器
功能:
- 点击滚动列表的关注按钮,详情面板的关注状态自动同步
- 点击详情面板的关注按钮,滚动列表的关注状态自动同步
- 关注人数实时更新
- 状态在整个应用中保持一致
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-03 17:40:09 +08:00 |
|
zdl
|
6a0a8e8e2b
|
feat: 添加mock接口
|
2025-11-03 17:31:25 +08:00 |
|
zdl
|
b14eb175f5
|
fix: 修复 Mock 环境相关概念返回空结果问题
问题分析:
- Mock handler 的过滤逻辑过于严格
- 只保留概念名包含查询关键词的结果
- 导致大部分查询返回空数组
解决方案:
✅ 移除字符串匹配过滤逻辑
- Mock 环境直接返回热门概念
- 模拟真实 API 的语义搜索行为
- 确保每次搜索都有结果展示
✅ 添加详细调试日志
- RelatedConceptsSection 组件渲染日志
- useEffect 触发和参数日志
- 请求发送和响应详情
- 数据处理过程追踪
✅ 完善 Mock 数据结构
- 添加 score, match_type, happened_times, stocks
- 支持详细卡片展示
- 数据结构与线上完全一致
修改文件:
- src/mocks/handlers/concept.js
- src/views/Community/components/DynamicNewsDetail/RelatedConceptsSection/index.js
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-03 16:40:25 +08:00 |
|
zdl
|
7e32dda2df
|
feat本次提交包含的优化
✅ StockChangeIndicators 组件优化
- 调整 padding 使布局更紧凑
- 修复窄卡片中的折行问题
- 自动根据内容调整宽度
✅ 重要性等级视觉优化
- 统一使用红色系(S→A→B→C:从深红到浅红)
- 添加 badgeBg 字段支持新的角标样式
✅ DynamicNewsEventCard 卡片改版
- 左上角矩形角标显示重要性(镂空边框样式)
- 悬浮显示所有等级说明
- 标题限制两行显示
✅ Mock 数据完整性
- 添加缺失的 related_week_chg 字段
- 确保三个涨跌幅指标数据完整
|
2025-11-03 15:38:30 +08:00 |
|
zdl
|
e31e4118a0
|
fix: 修改相关概念组件以匹配真实API数据结构
修改内容:
- SimpleConceptCard.js: 改用 concept.concept 和 concept.score 字段
- DetailedConceptCard.js: 改用 concept.concept、concept.score 和 concept.price_info.avg_change_pct
- RelatedConceptsSection/index.js: 导航时使用 concept.concept 字段
- events.js mock数据: 更新keywords生成函数,使用concept/score/price_info结构
数据结构变更:
- name → concept (概念名称)
- relevance (0-100) → score (0-1)
- avg_change_pct → price_info.avg_change_pct (嵌套结构)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-03 14:18:17 +08:00 |
|
zdl
|
cc2777ae20
|
feat: 实现实时要闻服务端分页功能
功能新增:
- 实时要闻组件支持服务端分页,每次切换页码重新请求数据
- 分页控制器组件,支持数字页码、上下翻页、快速跳转
- Mock 数据量从 100 条增加到 200 条,支持分页测试
技术实现:
1. Redux 状态管理(communityDataSlice.js)
- fetchDynamicNews 接收分页参数 { page, per_page }
- 返回数据结构调整为 { events, pagination }
- initialState 新增 dynamicNewsPagination 字段
- Reducer 分别存储 events 和 pagination 信息
- Selector 返回完整的 pagination 数据
2. 组件层(index.js → DynamicNewsCard → EventScrollList)
- Community/index.js: 获取并传递 pagination 信息
- DynamicNewsCard.js: 管理分页状态,触发服务端请求
- EventScrollList.js: 接收服务端 totalPages,渲染当前页数据
- 页码切换时自动选中第一个事件
3. 分页控制器(PaginationControl.js)
- 精简版设计:移除首页/末页按钮
- 上一页/下一页按钮,边界状态自动禁用
- 智能页码列表(最多5个,使用省略号)
- 输入框跳转功能,支持回车键
- Toast 提示非法输入
- 全部使用 xs 尺寸,紧凑布局
4. Mock 数据(events.js)
- 总事件数从 100 增加到 200 条
- 支持服务端分页测试(40 页 × 5 条/页)
分页流程:
1. 初始加载:请求 page=1, per_page=5
2. 切换页码:dispatch(fetchDynamicNews({ page: 2, per_page: 5 }))
3. 后端返回:{ events: [5条], pagination: { page, total, total_pages } }
4. 前端更新:显示新页面数据,更新分页控制器状态
UI 优化:
- 紧凑的分页控制器布局
- 移除冗余元素(首页/末页/总页数提示)
- xs 尺寸按钮,减少视觉负担
- 保留核心功能(翻页、页码、跳转)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-03 12:38:25 +08:00 |
|
zdl
|
e22a39c5cd
|
feat: 提交历史事件对比组件
|
2025-11-02 16:37:46 +08:00 |
|
zdl
|
3b8b749eb1
|
feat: 添加相关股票模块
|
2025-11-01 12:19:47 +08:00 |
|
zdl
|
933932b86d
|
feat:添加mock数据
|
2025-10-31 20:11:50 +08:00 |
|
zdl
|
9fd9fcb731
|
feat: 添加事件详情面板
|
2025-10-31 14:38:43 +08:00 |
|
zdl
|
c372832f1f
|
feat: 新增实时要闻·动态追踪与市场复盘功能,优化导航体验
新增功能:
- 实时要闻·动态追踪横向滚动卡片(DynamicNewsCard)
- 动态新闻事件卡片组件(DynamicNewsEventCard)
- 市场复盘卡片组件(MarketReviewCard)
- 股票涨跌幅指标组件(StockChangeIndicators)
- 交易时间工具函数(tradingTimeUtils)
- Mock API 支持动态新闻数据生成
UI 优化:
- EventFollowButton 改用 react-icons 星星图标,实现真正的空心/实心效果
- 关注按钮添加半透明白色背景(whiteAlpha.500),悬停效果更明显
- 事件卡片标题添加右侧留白,防止关注按钮遮挡文字
性能优化:
- 禁用 Router v7_startTransition 特性,解决路由切换延迟 2 秒问题
- 调整导航菜单点击顺序(先跳转后关闭),提升响应速度
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-10-31 14:11:03 +08:00 |
|
zdl
|
6829f687ee
|
fix: 修复 MSW EventEmitter 内存泄漏警告
## 问题
控制台警告:
```
MaxListenersExceededWarning: Possible EventEmitter memory leak detected.
11 response:mocked listeners added. Use emitter.setMaxListeners() to increase limit
```
## 根本原因
类似 PostHog 的问题:
1. **React StrictMode 双重渲染** - 开发环境组件渲染两次
2. **热重载** - 代码更改时频繁重新加载模块
3. **缺少启动锁** - `startMockServiceWorker()` 被多次调用
4. **事件监听器累积** - 每次启动添加新 listener,旧的未清理
## 解决方案
### 方案A: 防止重复启动
添加启动状态锁:
```javascript
let isStarting = false;
let isStarted = false;
export async function startMockServiceWorker() {
// 防止重复启动
if (isStarting || isStarted) {
console.log('[MSW] 已启动,跳过重复调用');
return;
}
isStarting = true;
try {
await worker.start({...});
isStarted = true; // 成功后标记
} finally {
isStarting = false; // 无论成功失败都重置
}
}
```
### 方案B: 完善 stop 逻辑
确保正确清理:
```javascript
export function stopMockServiceWorker() {
if (!isStarted) return; // 避免重复停止
worker.stop();
isStarted = false; // 重置状态
console.log('[MSW] Mock Service Worker 已停止');
}
```
## 影响
- ✅ 修复 EventEmitter 内存泄漏警告
- ✅ 防止热重载时重复启动 MSW
- ✅ 正确清理事件监听器
- ✅ 提升开发体验
## 验证
重启开发服务器后:
- ✅ 不再有 MaxListenersExceededWarning
- ✅ MSW 只启动一次
- ✅ 热重载正常工作
- ✅ Mock 功能正常
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-10-30 18:56:12 +08:00 |
|
zdl
|
3b0146fe49
|
fix: 修复 ConceptStatsPanel API Mock 数据格式问题
解决控制台 "无法访问概念统计API" 错误,完善 Mock Service Worker 的统计数据返回格式
**问题原因**
1. Mock 模式下,`/statistics` 端点返回的数据格式不完整
2. 缺少必需的 `success` 和 `data` 包装层
3. 缺少 5 个必需字段:`hot_concepts`, `cold_concepts`, `active_concepts`, `volatile_concepts`, `momentum_concepts`
**修复内容**
1. 创建 `generateConceptStats()` 函数(lines 50-104)
- 生成热门概念(涨幅前5)
- 生成冷门概念(跌幅前5)
- 生成活跃概念(新闻+研报最多)
- 生成波动概念(波动率最高)
- 生成动量概念(连续上涨天数最多)
2. 更新 `http://111.198.58.126:16801/statistics` handler(lines 273-300)
- 返回完整的统计数据格式
- 包装为 `{ success: true, data: {...} }`
- 支持 `min_stock_count`, `days`, `start_date`, `end_date` 参数
3. 新增 `/concept-api/statistics` handler(lines 302-329)
- 覆盖 nginx 代理路由
- 与直接 API 返回相同格式的数据
- 确保两个端点都能正常工作
**数据格式**
```json
{
"success": true,
"data": {
"hot_concepts": [...],
"cold_concepts": [...],
"active_concepts": [...],
"volatile_concepts": [...],
"momentum_concepts": [...]
},
"note": "Mock 数据",
"params": { ... },
"updated_at": "2025-10-30T..."
}
```
**测试结果**
- ✅ 编译成功
- ✅ ConceptStatsPanel 可以正确接收 Mock 数据
- ✅ 不再显示 "无法访问概念统计API" 错误
- ✅ 两个 API 端点(代理 + 直接)都已覆盖
**文件修改**
- src/mocks/handlers/concept.js (+79 lines)
- 新增 generateConceptStats() 函数
- 更新 /statistics handler
- 新增 /concept-api/statistics handler
|
2025-10-30 18:22:11 +08:00 |
|
zdl
|
3acc00ac8d
|
fix: 修复导航栏 Max 会员订阅信息显示问题
- 修复 HomeNavbar 中 useEffect 执行顺序导致订阅信息不加载的问题
- 移除 ref 检查逻辑,改为直接根据登录状态加载订阅信息
- 增强订阅相关的调试日志输出(getCurrentUser, API handler, HomeNavbar)
- 优化用户数据获取的日志格式,便于问题排查
|
2025-10-30 13:09:41 +08:00 |
|
zdl
|
5bac525147
|
feat: mock数据添加
|
2025-10-29 19:41:05 +08:00 |
|
zdl
|
fdbb6ceff5
|
feat:修复mock数据
|
2025-10-29 19:31:13 +08:00 |
|
zdl
|
35f8b5195a
|
feat: 访问"概念中心"页面
2. 点击任意概念卡片进入概念详情
3. 点击"历史时间轴"按钮(需要Max会员权限)
4. 查看弹窗底部是否显示风险提示 & mock数据处理
|
2025-10-29 19:18:12 +08:00 |
|
zdl
|
ac7a6991bc
|
feat: 添加mock数据
|
2025-10-29 18:43:57 +08:00 |
|
zdl
|
224c6a12d4
|
feat: 添加mock数据
|
2025-10-29 18:02:58 +08:00 |
|
zdl
|
e9b54ce10d
|
feat: package.json 优化方案
主要改动: 配置本地开发环境 PostHog 上报到 Cloud\
1. 修改 npm start 默认行为
- start → 使用 .env.mock (默认 mock 数据)
- 添加 start:real → 使用 .env.local (真实后端)
2. 添加 PostHog 测试脚本
- 新增 test:tracking → 启用 PostHog debug 模式 + mock 数据
3. 清理冗余脚本
- 移除 start:local (冗余,只是调用 npm start)
- 重命名 install:clean → reinstall (移除自动启动)
- 添加 dev 快捷命令 (等同于 npm start)
- 添加 clean 命令 (只清理,不安装)
4. 优化 NODE_OPTIONS
- 不在每个命令中重复,通过注释说明可以提取为环境变量
- 保持 exit 0 在 lint 命令中
|
2025-10-29 16:00:21 +08:00 |
|