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 |
|
zdl
|
356f865f09
|
feat: 微信mock数据调整
|
2025-10-28 18:47:39 +08:00 |
|
zdl
|
dc38199ae6
|
feat: 添加mock数据
|
2025-10-27 15:39:06 +08:00 |
|
zdl
|
199a54bc12
|
feat: 为"股票行情"和"财务全景"标签页添加 Mock 数据支持
问题:
- 点击"股票行情"标签页:MarketDataView 组件需要市场数据接口
- 点击"财务全景"标签页:FinancialPanorama 组件需要财务数据接口
- 这些接口都没有 mock 数据,导致页面显示空白
需要添加的接口:
股票行情 (MarketDataView) - 7个接口
1. /api/market/trade/:stockCode - 成交数据
2. /api/market/funding/:stockCode - 资金流向
3. /api/market/bigdeal/:stockCode - 大单统计
4. /api/market/unusual/:stockCode - 异动分析
5. /api/market/pledge/:stockCode - 股权质押
6. /api/market/summary/:stockCode - 市场摘要
7. /api/market/rise-analysis/:stockCode - 涨停分析
8. /api/stock/:stockCode/latest-minute - 最新分时数据
财务全景 (FinancialPanorama) - 9个接口
1. /api/financial/stock-info/:stockCode - 股票基本信息
2. /api/financial/balance-sheet/:stockCode - 资产负债表
3. /api/financial/income-statement/:stockCode - 利润表
4. /api/financial/cashflow/:stockCode - 现金流量表
5. /api/financial/financial-metrics/:stockCode - 财务指标
6. /api/financial/main-business/:stockCode - 主营业务
7. /api/financial/forecast/:stockCode - 业绩预告
8. /api/financial/industry-rank/:stockCode - 行业排名
9. /api/financial/comparison/:stockCode - 期间对比
实施步骤:
1. 创建 src/mocks/data/market.js - 市场数据
2. 创建 src/mocks/data/financial.js - 财务数据
3. 创建 src/mocks/handlers/market.js - 市场接口handlers
4. 创建 src/mocks/handlers/financial.js - 财务接口handlers
5. 更新 src/mocks/handlers/index.js - 注册新handlers
数据内容:
- 为平安银行 (000001) 提供完整真实数据
- 其他股票代码生成合理的模拟数据
|
2025-10-27 15:10:03 +08:00 |
|
zdl
|
39feae87a6
|
feat: 添加mock数据
|
2025-10-27 14:56:44 +08:00 |
|
zdl
|
b4b7eae1ba
|
feat: 添加mock数据
|
2025-10-26 19:50:20 +08:00 |
|
zdl
|
05307d6501
|
feat: 添加数据
|
2025-10-26 14:11:24 +08:00 |
|
zdl
|
873adda1fd
|
feat: 添加股票mock数据
|
2025-10-24 17:43:47 +08:00 |
|
zdl
|
b0ae5a2871
|
feat: 添加mock数据
|
2025-10-24 17:29:07 +08:00 |
|
zdl
|
13c3c74b92
|
feat: 添加mock数据
|
2025-10-24 12:32:36 +08:00 |
|
zdl
|
9dcd4bfbf3
|
feat: 调整行业请求数据结构
|
2025-10-23 14:24:26 +08:00 |
|
zdl
|
d2988d1a33
|
feat: 增加券商名字段
|
2025-10-23 11:44:58 +08:00 |
|
zdl
|
1f3fe8ce39
|
feat: 登陆付款mock添加
|
2025-10-22 15:36:55 +08:00 |
|
zdl
|
5a3a3ad42b
|
feat: 添加消息推送能力,添加新闻催化分析页的合规提示
|
2025-10-21 10:59:52 +08:00 |
|
zdl
|
6c96299b8f
|
feat: 添加合规
|
2025-10-20 21:25:33 +08:00 |
|
zdl
|
923611f3a8
|
feat: 个人中心页添加mock数据
|
2025-10-19 16:17:31 +08:00 |
|
zdl
|
36558e0715
|
feat: 1. 基础设施(2个文件)
- ✅ src/utils/logger.js - 统一日志工具
- API 请求/响应/错误日志
- 组件错误/警告/调试日志
- 开发环境详细分组,生产环境仅错误
- ✅ src/utils/axiosConfig.js - axios 全局拦截器
- 自动记录所有请求/响应
- 统一 baseURL 和 credentials 配置\
2. 核心文件重构(8个文件)\
AuthFormContent.js | ✅ 保留登录/注册成功 toast❌ 移除验证码发送 toast✅ 添加 .trim()✅ 所有 API 添加 logger | ✅ 完成 |
| Center.js | ❌ 移除所有 toast✅ 移除 toast 依赖✅ 添加错误 logger | ✅ 完成 |
| Community/index.js | ❌ 移除所有 toast 和导入✅ 移除 toast 依赖✅ 添加错误 logger | ✅ 完成 |
| authService.js | ✅ 统一 apiRequest 函数✅ 所有请求自动记录❌ 移除 console.error | ✅ 完成 |
| eventService.js | ✅ 重构 apiRequest✅ 所有方法添加 logger❌ 移除 console.log/error | ✅ 完成 |
| stockService | ✅ 所有方法添加 logger❌ 移除 console 输出 | ✅ 完成 |
| indexService | ✅ 添加 logger❌ 移除 console 输出 | ✅ 完成 |
| AuthContext.js | ✅ 保留注册/登出成功 toast❌ 移除验证码发送 toast✅ 所有方法添加 logger | ✅ 完成 |\
3. Mock 数据完善(\
Mock 数据完善(1个文件)
- ✅ src/mocks/handlers/account.js - 个人中心 Mock
- ✅ 自选股列表 (GET /api/account/watchlist)
- ✅ 实时行情 (GET /api/account/watchlist/realtime)
- ✅ 添加自选股 (POST /api/account/watchlist/add)
- ✅ 删除自选股 (DELETE /api/account/watchlist/:id)
- ✅ 关注的事件 (GET /api/account/events/following)
- ✅ 事件评论 (GET /api/account/events/comments)
- ✅ 当前订阅 (GET /api/subscription/current)\
4. API 文档(1个文件)
- ✅ API_ENDPOINTS.md - 完整 API 接口文档
- 认证相关: 4个接口
- 个人中心: 12个接口
- 事件相关: 12个接口
- 总计: 28+个接口\
5。Toast 策略执行:
- ✅ 保留: 3种(登录成功、注册成功、登出成功)
- ❌ 移除: 15+处(验证码、数据加载等)
Logger 替换:
- ✅ console.log → logger.debug/logger.info
- ✅ console.error → logger.error\- console.warn → logger.warn
Mock 数据:
已有: auth.js, event.js, users.js, events.js
新增: account.js(7个新接口)
6.用户体验改进
静默优化:不再弹出验证码发送成功提示(静默处理)不再弹出数据加载失败提示(console 记录) 仅在关键操作显示 toast(登录/注册/登出)
开发体验: Console 中有清晰的分组日志(🌐 🔴 ⚠️ 等图标), 所有 API 请求/响应自动记录,错误日志包含完整上下文和堆栈,Mock 服务完善
测试场景: 登录/注册 - 仅显示成功 toast,验证码静默发送 个人中心 - 加载自选股、实时行情、关注事件 社区页面 - 加载事件列表、Console 查看
9. 添加日志:API Request / ✅ API Response / ❌ API Error
|
2025-10-18 07:48:00 +08:00 |
|
zdl
|
69784d094d
|
feat: 添加mock数据
|
2025-10-17 23:23:31 +08:00 |
|
zdl
|
70d9dcaff2
|
feat: 添加关联描述mock
|
2025-10-17 19:09:38 +08:00 |
|
zdl
|
bae4d25e24
|
feat: 路由改造
|
2025-10-17 18:59:00 +08:00 |
|
zdl
|
02bf1ea709
|
feat: 添加二级导航,解决二级导航的展示问题
|
2025-10-17 16:48:32 +08:00 |
|
zdl
|
2d9d047a9f
|
feat: 添加mock数据,给导航添加选中标识
|
2025-10-17 15:01:35 +08:00 |
|