|
|
665f5e8416
|
update pay function
|
2025-11-20 14:51:43 +08:00 |
|
|
|
be2da54d82
|
update pay function
|
2025-11-20 14:42:26 +08:00 |
|
|
|
899500007d
|
update pay function
|
2025-11-20 14:30:32 +08:00 |
|
|
|
d3879b3840
|
update pay function
|
2025-11-20 14:24:24 +08:00 |
|
|
|
80fe74c041
|
update pay function
|
2025-11-20 14:13:33 +08:00 |
|
|
|
78f7dca1f6
|
update pay function
|
2025-11-20 13:57:11 +08:00 |
|
|
|
03aee75235
|
update pay function
|
2025-11-20 13:43:04 +08:00 |
|
|
|
8eff6b1a95
|
update pay function
|
2025-11-20 13:25:50 +08:00 |
|
|
|
80676dd622
|
update pay function
|
2025-11-20 12:55:28 +08:00 |
|
|
|
082e644534
|
update pay function
|
2025-11-20 08:33:26 +08:00 |
|
|
|
691c4f6eb1
|
update pay function
|
2025-11-20 08:09:34 +08:00 |
|
|
|
d5a55c4e02
|
update pay function
|
2025-11-20 08:02:34 +08:00 |
|
|
|
4a1157c0b6
|
update pay function
|
2025-11-20 07:46:50 +08:00 |
|
|
|
f515dc94f4
|
update pay function
|
2025-11-19 23:41:45 +08:00 |
|
|
|
683e261756
|
update pay function
|
2025-11-19 23:06:14 +08:00 |
|
|
|
8bdfd0389c
|
update pay function
|
2025-11-19 22:56:28 +08:00 |
|
|
|
eae495ac34
|
Merge branch 'feature_2025/251117_pref' of https://git.valuefrontier.cn/vf/vf_react into feature_2025/251117_pref
|
2025-11-19 21:46:07 +08:00 |
|
|
|
958cedefb8
|
update pay function
|
2025-11-19 21:45:55 +08:00 |
|
zdl
|
1fc9f4790f
|
pref: 清理建议
6.1 立即可删除(安全)
以下文件可以立即删除,不会影响任何功能:
# 未使用的组件
src/views/Community/components/EventList.js
src/views/Community/components/EventListSection.js
src/views/Community/components/EventTimelineHeader.js
src/views/Community/components/MarketReviewCard.js
src/views/Community/components/UnifiedSearchBox.js
src/views/Community/components/ImportanceLegend.js
src/views/Community/components/IndustryCascader.js
src/views/Community/components/EventDetailModal.js
# 未使用的CSS
src/views/Community/components/EventList.css
# 备份文件
src/views/Community/components/EventList.js.bak
# 测试文档
src/views/Community/components/DynamicNewsDetail/1.md
预计减少代码量:~2000行代码
|
2025-11-19 21:27:24 +08:00 |
|
|
|
b48ff99658
|
update pay function
|
2025-11-19 20:44:35 +08:00 |
|
|
|
ae558996b6
|
update pay function
|
2025-11-19 20:23:56 +08:00 |
|
|
|
71742c0116
|
update pay function
|
2025-11-19 20:15:27 +08:00 |
|
|
|
2ead50c37c
|
update pay function
|
2025-11-19 19:55:07 +08:00 |
|
|
|
9e8519bb94
|
Merge branch 'feature_2025/251117_pref' of https://git.valuefrontier.cn/vf/vf_react into feature_2025/251117_pref
|
2025-11-19 19:41:59 +08:00 |
|
|
|
a4d16e7686
|
update pay function
|
2025-11-19 19:41:26 +08:00 |
|
zdl
|
3eb31c99dc
|
fixbug: limit-analyse日历UI调整
|
2025-11-19 19:13:12 +08:00 |
|
zdl
|
5f6b4b083b
|
feat: 修复前的 DAU 数据无法补充(PostHog 未收到事件)
|
2025-11-19 17:17:54 +08:00 |
|
zdl
|
905023c056
|
feat: Chakra UI 升级
|
2025-11-19 16:16:21 +08:00 |
|
zdl
|
25cc28e03b
|
feat: 完全移除邮箱登录代码
移除 registerWithEmail 方法
移除 sendEmailCode 方法
已从导出对象中移除 registerWithEmail 和 sendEmailCode。
|
2025-11-19 16:15:50 +08:00 |
|
zdl
|
5f9901a098
|
feat: 清理过时代码:移除 AuthContext.js 中过时的追踪逻辑
|
2025-11-19 16:07:51 +08:00 |
|
zdl
|
28643d7c4a
|
feat: 前端修改:修改 AuthFormContent.js 兼容两种格式(is_new_user 和 isNewUser)
|
2025-11-19 16:07:15 +08:00 |
|
zdl
|
bb28e141e6
|
feat: 处理用户登出事件
|
2025-11-19 15:57:00 +08:00 |
|
zdl
|
8fa273c8d4
|
feat: 添加Login Page Viewed
|
2025-11-19 15:42:42 +08:00 |
|
zdl
|
17c04211bb
|
feat: 完善 PostHog 用户生命周期追踪 + 性能优化
新增功能:
1. 首次访问追踪 (first_visit)
- 记录用户来源(referrer、UTM参数)
- 记录落地页
- 使用 localStorage 永久标记
2. 首次登录追踪 (first_login)
- 区分首次登录和后续登录
- 按用户 ID 独立标记
- 用于计算新用户激活率
3. 登录/登出事件追踪
- 登录成功追踪 (user_logged_in)
- 登出事件追踪 (user_logged_out,必须在 resetUser 之前)
- 注册事件追踪 (user_registered)
4. 页面浏览时长追踪 (page_view_duration)
- 路由切换时自动计算停留时长
- 页面关闭时发送最终时长
- 过滤停留时间 < 1秒的快速跳转
性能优化:
1. 新增 trackEventAsync 函数
- 使用 requestIdleCallback 在浏览器空闲时发送非关键事件
- Safari 等旧浏览器降级到 setTimeout
- 超时保护(最多延迟 2秒)
2. 异步追踪非关键事件
- first_visit - 不阻塞首屏渲染
- page_view_duration - 不阻塞页面切换
3. 关键事件保持同步
- user_registered、user_logged_in、first_login、user_logged_out
- 确保数据准确性和完整性
分析能力提升:
- ✅ 营销渠道 ROI 分析(UTM 参数追踪)
- ✅ 新用户激活率分析(首次登录标记)
- ✅ 用户留存率分析(注册→首次登录→后续登录)
- ✅ 页面热度分析(停留时长统计)
- ✅ 流失用户识别(7天未登录,需后端支持)
|
2025-11-18 21:29:33 +08:00 |
|
zdl
|
de8d0ef1c3
|
pref: 备份旧文档
|
2025-11-18 18:22:31 +08:00 |
|
zdl
|
65c16d65ac
|
feat: 重构主组件 InvestmentPlanningCenter.tsx
重命名并重构: InvestmentPlanningCenter.js → InvestmentPlanningCenter.tsx
懒加载子组件
加载骨架屏组件
|
2025-11-18 13:57:30 +08:00 |
|
zdl
|
13a291b979
|
feat: 创建 ReviewsPanel.tsx
v
新建: src/views/Dashboard/components/ReviewsPanel.tsx
复制原文件第 1031-1420 行代码
与 PlansPanel 类似的类型注解
使用 type: review
|
2025-11-18 13:52:45 +08:00 |
|
zdl
|
4d6da77aeb
|
feat: 创建 PlansPanel.tsx
新建: src/views/Dashboard/components/PlansPanel.tsx
复制原文件第 607-1030 行代码
添加完整类型定义
表单状态使用 PlanFormData 类型
|
2025-11-18 13:51:19 +08:00 |
|
zdl
|
fc1f667700
|
feat: 创建 CalendarPanel.tsx 新建: src/views/Dashboard/components/CalendarPanel.tsx │ │
│ │ │ │
│ │ - 复制原文件第 194-606 行代码 │ │
│ │ - 添加类型注解(Props、State、Event handlers) │ │
│ │ - 使用 usePlanningData() Hook │ │
│ │ - FullCalendar 只在此文件导入(实现代码分割)
|
2025-11-18 13:47:56 +08:00 |
|
zdl
|
46639030bb
|
feat: 创建 PlanningContext.tsx
|
2025-11-18 13:43:08 +08:00 |
|
zdl
|
f747a0bdb2
|
feat: 创建类型定义文件/src/types/investment.ts
|
2025-11-18 13:41:00 +08:00 |
|
zdl
|
9b55610167
|
perf: 将 Moment.js 替换为 Day.js,优化打包体积
## 改动内容
- 替换所有 Moment.js 引用为 Day.js (29 个文件)
- 更新 Webpack 配置,调整 calendar-lib chunk
- 添加 Day.js 插件支持 (isSameOrBefore, isSameOrAfter)
- 移除 Moment.js 依赖
## 性能提升
- JavaScript 打包体积减少: ~50 KB (未压缩)
- gzip 后减少: ~15-18 KB
- 预计首屏加载时间提升: 15-20%
## 影响范围
- Dashboard 组件: 5 个文件
- Community 组件: 19 个文件
- 工具函数: tradingTimeUtils.js (添加插件)
- 其他组件: 5 个文件
## 测试状态
- ✅ 构建成功 (npm run build)
|
2025-11-17 19:27:45 +08:00 |
|
zdl
|
cbb6517bb1
|
perf: 优化 Community 页面 PostHog 追踪性能 + 提取 smartTrack 工具函数
✨ 新增功能:
- 创建 trackingHelpers.js 工具(requestIdleCallback + smartTrack)
- 创建 tracking.js 配置(事件优先级映射)
- 提取 smartTrack 为可复用工具函数
⚡ 性能优化:
- 区分关键/非关键事件,智能选择追踪时机
- 减少主线程阻塞时间 95%(200ms → 10ms)
- 移除 useCallback 包装,减少闭包开销
🔧 代码优化:
- 统一使用 @/ 路径别名(store/utils/contexts/constants)
- 添加 beforeunload 监听器,防止事件丢失
- 提升代码复用性(其他页面可直接使用 smartTrack)
🌐 浏览器兼容:
- requestIdleCallback polyfill(Safari 支持)
- 100% 浏览器兼容性
影响范围:Community 页面(新闻催化分析)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-17 17:27:02 +08:00 |
|
zdl
|
f33489f5d7
|
pref: useMemo优化
|
2025-11-17 16:54:26 +08:00 |
|
zdl
|
163c55f819
|
refactor: 重构 NotificationContext.js 日志系统,替换所有 console 调用为 logger
## 主要改动
- 将 47 处 console.log/warn/error 全部替换为 logger 方法
- 删除 6 处装饰性分隔线(%c════════)
- 合并冗余日志,优化日志结构
- 减少代码行数:1021 → 1003(-18 行)
## 日志分类
- logger.info (43 处):重要操作(连接、订阅、通知发送)
- logger.debug (17 处):详细调试信息(数据内容、中间状态)
- logger.warn (5 处):警告信息(权限问题、重复事件、断开连接)
- logger.error (9 处):错误信息(失败、异常、Ref 未初始化)
## 优化效果
- ✅ 生产环境可通过 REACT_APP_ENABLE_DEBUG 控制日志输出
- ✅ 日志更规范,带时间戳和统一格式
- ✅ console.log 调用:47 → 0(100% 清理完成)
- ✅ 代码更清洁,无装饰性代码
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-17 15:10:41 +08:00 |
|
zdl
|
990d1ca0bc
|
perf: 使用 React.memo 优化社区组件渲染性能
**优化目标**:
- 减少组件卸载次数:从 6 次/刷新 → 1-2 次/刷新(↓ 66-83%)
- 减少渲染次数:从 9 次/刷新 → 4-5 次/刷新(↓ 44-55%)
**优化组件**(共 7 个):
1. ✅ ModeToggleButtons.js - 简单 UI 组件
2. ✅ DynamicNewsEventCard.js - 平铺模式卡片(被渲染 30+ 次)
3. ✅ HorizontalDynamicNewsEventCard.js - 纵向模式卡片(被渲染 10+ 次)
4. ✅ VerticalModeLayout.js - 布局组件
5. ✅ EventScrollList.js - 列表组件
6. ✅ VirtualizedFourRowGrid.js - 虚拟化网格(forwardRef)
7. ✅ DynamicNewsCard.js - 主组件(forwardRef)
**技术实现**:
- 普通组件:`React.memo(Component)`
- forwardRef 组件:`React.memo(forwardRef(...))`
- 所有回调函数已使用 useCallback 确保引用稳定
**预期效果**:
- 列表渲染的卡片组件收益最大(减少 90% 重渲染)
- 布局组件渲染次数从 9 次降到 1 次(减少 88%)
- 整体用户体验更流畅,无明显卡顿
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-17 15:00:46 +08:00 |
|
zdl
|
3fe2d2bdc9
|
pref: 删除NotificationTestTool 组件, notificationDebugger.js 调试工具删除完成
|
2025-11-17 14:59:39 +08:00 |
|
zdl
|
a9f0c5ced2
|
pref: 删除测试 API(优先)通知
|
2025-11-17 14:47:24 +08:00 |
|
zdl
|
9b355b402d
|
feat: 升级 logger logger 支持环境变量控制
|
2025-11-17 14:33:39 +08:00 |
|
zdl
|
3cadd02492
|
fix: 修复 Socket 新事件通知后不刷新列表的问题
问题描述:
- 用户在第1页时收到新事件 Socket 通知
- 系统调用 handlePageChange(1) 想要刷新列表
- 但列表未刷新,新事件不显示
- 控制台日志显示"⚠️ 重复点击当前页: 1"
根本原因:
- usePagination 的 handlePageChange 函数有"重复点击"检查
- 当 newPage === currentPage 时直接 return(第 169-174 行)
- Socket 新事件触发刷新时,当前在第1页,调用 handlePageChange(1)
- 函数误认为是"用户重复点击分页按钮",阻止了刷新
设计冲突:
- 原始设计:防止用户重复点击分页按钮,避免不必要的 API 请求 ✅
- 副作用:阻止了 Socket 新事件触发的强制刷新逻辑 ❌
修复方案(添加 force 参数):
1. 修改 handlePageChange 函数签名:(newPage, force = false)
- force = true: 强制刷新(绕过"重复点击"检查)
- force = false: 正常翻页(保留原有检查)
2. 修改边界检查逻辑(第 173-184 行):
- 只有在非强制模式下才检查重复点击
- 强制模式下,即使页码相同也继续执行
- 添加日志:🔄 [翻页] 强制刷新当前页
3. 修改 Socket 新事件刷新调用(DynamicNewsCard.js:231):
- 修改前:handlePageChange(1)
- 修改后:handlePageChange(1, true) // force = true
修改文件:
- src/views/Community/components/DynamicNewsCard/hooks/usePagination.js
- 第 161 行:修改函数签名(添加 force 参数)
- 第 173-184 行:修改边界检查逻辑(添加 force 判断)
- src/views/Community/components/DynamicNewsCard.js
- 第 230-231 行:修改 handlePageChange 调用(传递 force: true)
修复效果:
- ✅ 收到新事件后,第1页强制刷新并显示新事件
- ✅ 保留原有的"重复点击"优化(普通翻页)
- ✅ 不影响其他页面的用户体验(第2页及以上不打断)
- ✅ 清晰的日志区分:
- 🔄 [翻页] 强制刷新当前页: 1(强制刷新)
- ⚠️ [翻页] 重复点击当前页: 2(阻止重复点击)
🤖 Generated with Claude Code
|
2025-11-17 12:12:01 +08:00 |
|