Commit Graph

51 Commits

Author SHA1 Message Date
zdl
ee33f7ffd7 refactor: 重构 Community 目录,将公共组件迁移到 src/components/
- 迁移 klineDataCache.js 到 src/utils/stock/(被 StockChart 使用)
- 迁移 InvestmentCalendar 到 src/components/InvestmentCalendar/(被 Navbar、Dashboard 使用)
- 迁移 DynamicNewsDetail 到 src/components/EventDetailPanel/(被 EventDetail 使用)
- 更新所有相关导入路径,使用路径别名
- 保持 Community 目录其余结构不变

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-08 12:09:24 +08:00
zdl
2ffb8f9e83 feat: bug修复 2025-12-05 18:41:45 +08:00
zdl
61a5e56d15 fix: stocks 字段支持对象格式 {code, name}
- investment.ts: stocks 类型改为 Array<{code, name} | string>
  - EventFormModal: 编辑时兼容对象格式,保存时附带股票名称
2025-12-05 18:24:18 +08:00
zdl
957f6dd37e refactor: EventDetailCard 重命名为 EventCard,支持多变体模式
- 新增 EventCard.tsx 组件,支持 variant 属性(detail/compact)
  - 删除 EventDetailCard.tsx(功能已合并到 EventCard)
  - EventDetailModal 改用新的 EventCard 组件
2025-12-05 18:23:52 +08:00
zdl
cc7fdbff56 fix: UI调试 2025-12-05 18:04:28 +08:00
zdl
15487a8307 refactor: EventFormModal 从 Chakra UI 迁移到 Ant Design
- 使用 Ant Design Form/Modal/Select 组件
 - 简化字段: 标题、日期、内容、关联股票
 - 新增计划/复盘模板系统
 - 股票选择支持前端模糊搜索 + 自选股快捷选择
 - 新增响应式样式 (EventFormModal.less)
 - EventPanel: 移除不再需要的 props
2025-12-05 17:24:06 +08:00
zdl
b74d88e592 fix: 适配 watchlist 新数据结构
- CompactSearchBox: 改用 Redux 获取股票列表
 - useWatchlist: 适配 { stock_code, stock_name }[] 结构
 - Center: 修复 watchlist key + H5 评论 Badge 溢出
2025-12-05 17:23:51 +08:00
zdl
a36ae5323e style: EventFormModal 和 InvestmentCalendar H5 响应式适配 2025-12-05 15:09:14 +08:00
zdl
d926b60f03 style: EventFormModal 和 InvestmentCalendar H5 响应式适配 2025-12-05 15:07:24 +08:00
zdl
de30489076 feat: h5隐藏日历视图 2025-12-05 15:06:43 +08:00
zdl
df90fc258b perf: EventPanel 性能优化,EventDetailCard H5适配,清理冗余类型 2025-12-05 15:03:56 +08:00
zdl
e283135ef8 refactor: CalendarPanel 性能优化,统一弹窗状态管理 2025-12-05 15:03:09 +08:00
zdl
0f7a3c0cc9 refactor: CalendarPanel 性能优化,统一弹窗状态管理 2025-12-05 14:44:22 +08:00
zdl
0adceb94f8 feat: 新增 EventDetailModal 和 EventEmptyState 组件
用于展示某一天的所有投资事件
2025-12-05 14:44:03 +08:00
zdl
c9801014c7 style: Dashboard Center 页面 H5 响应式适配 2025-12-05 14:42:37 +08:00
zdl
39f14fb148 fix: 兼容h5UI 2025-12-05 13:43:43 +08:00
zdl
0cc75462aa feat: 日历空状态优化 - 添加高亮导航链接
- CalendarPanel: 移除底部关闭按钮,优化空状态文案
- 空状态添加日历图标和引导文案
- 「计划」「复盘」「投资日历」高亮可点击
- 点击计划/复盘切换到对应列表视图
- 点击投资日历打开投资日历弹窗
- 扩展 PlanningContextValue 类型支持导航方法

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-05 13:40:43 +08:00
zdl
863212f53f feat: 添加投资日历mock数据
投资日历提取计划列表卡片组件
2025-12-05 13:35:12 +08:00
zdl
d296b0919c refactor: 日历视图移除删除功能,仅保留查看
- 移除删除按钮和 handleDeleteEvent 函数
- 移除未使用的导入(FiTrash2, IconButton, logger, getApiBase, toast, loadAllData)
- 日历视图现在只用于查看事件,不支持编辑操作

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-05 13:09:38 +08:00
zdl
6272e50348 refactor: 抽取 EventFormModal 通用弹窗组件,修复视图切换弹窗自动打开 bug
- 新建 EventFormModal.tsx 通用弹窗组件(约 500 行)
  - 支持通过 props 配置字段显示(日期、类型、状态、重要度、标签)
  - 支持两种 API 端点(investment-plans / calendar/events)
  - 支持两种股票输入模式(tag 标签形式 / text 逗号分隔)

- 重构 EventPanel.tsx 使用 EventFormModal
  - 使用 useRef 修复弹窗自动打开 bug(视图切换时不再误触发)
  - 移除内联 Modal 代码,减少约 200 行

- 重构 CalendarPanel.tsx 使用 EventFormModal
  - 添加事件功能改用 EventFormModal
  - 保留详情弹窗(只读展示当日事件列表)
  - 移除内联表单代码,减少约 100 行

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-05 12:11:14 +08:00
zdl
2f04293c68 pref: 删除备份文件 2025-12-05 12:03:41 +08:00
zdl
1351d2626a pref: PlansPanel 和 ReviewsPanel 代码高度重复,提取公共组件
创建通用 EventPanel 组件
新建 EventPanel.tsx (~420 行) - 通用事件面板组件
  - 删除 PlansPanel.tsx (495 行 → 27 行,减少 94%)
  - 删除 ReviewsPanel.tsx (496 行 → 27 行,减少 94%)
  - 修复 CalendarPanel.tsx 中的 setActiveTab 引用
2025-12-05 11:29:16 +08:00
zdl
90a59e031c fix: 清理未使用代码
InvestmentPlanningCenter.tsx | 移除 activeTab / setActiveTab state 和 Context
PlansPanel.tsx               | 移除 FiPlus、FiTarget,统一使用 FiFileText
 ReviewsPanel.tsx             | 移除未使用的 FiPlus 导入
investment.ts                | 移除 activeTab / setActiveTab 类型定义
2025-12-05 11:09:49 +08:00
zdl
f64c1ffb19 feat: 事件详情页 URL ID 加密,防止用户遍历
- 新增 idEncoder.ts 工具:使用 Base64 + 前缀混淆加密 ID
- 路由改为查询参数形式:/event-detail?id=xxx
- 更新所有入口使用 getEventDetailUrl() 生成加密链接
- 兼容旧链接:纯数字 ID 仍可正常访问

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-04 18:26:01 +08:00
4ba6fd34ff update pay ui 2025-12-02 19:44:46 +08:00
2b3700369f update pay ui 2025-12-02 17:55:01 +08:00
f60c6a8ae9 update pay ui 2025-12-02 17:36:35 +08:00
f24f37c50d update pay ui 2025-12-02 17:30:52 +08:00
zdl
581e874b0d fix:修复类型提示错误 2025-11-26 10:11:02 +08:00
e80d2cfcec update pay function 2025-11-24 20:06:51 +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
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
d69a32a320 fix: 修复个人中心不显示新发表的评论问题
问题描述:
- 用户在事件中心发表评论后,打开个人中心看不到新评论
- 个人中心"我的评论"区域始终为空或显示旧数据

根本原因:
- 项目存在两套独立的评论系统:
  1. 旧系统(EventComment 表)- 个人中心查询此表
  2. 新系统(Post 表)- 事件中心写入此表
- 创建评论时写入 Post 表,但个人中心查询 EventComment 表
- 两个表完全独立,数据不同步

修复方案(统一到 Post 系统):
1. 后端新增 API:GET /api/account/events/posts
   - 查询 Post 表中当前用户的所有评论
   - 返回格式完全兼容旧 EventComment.to_dict()
   - 新增 event_title 字段(改进点,旧 API 没有)

2. 前端修改 API 调用:Center.js
   - 将 /api/account/events/comments 改为 /api/account/events/posts
   - 无需修改数据渲染逻辑(格式兼容)

修改文件:
- app.py (第 4144-4187 行) - 新增 get_my_event_posts API
  - 查询 Post 表(user_id 过滤 + 按时间倒序)
  - JOIN 查询关联的 Event(获取 event_title)
  - 返回兼容格式:author(字符串), likes, created_at, event_title

- src/views/Dashboard/Center.js (第 105 行) - 修改 API 调用路径
  - 修改前:GET /api/account/events/comments
  - 修改后:GET /api/account/events/posts

数据兼容性:
- author 字段:字符串类型(与旧 EventComment 一致)
- likes 字段:映射自 likes_count
- created_at 字段:ISO 8601 格式
- 新增:event_title 字段(个人中心可显示评论关联的事件)

修复效果:
- 用户在事件中心发表评论 → 立即在个人中心看到新评论 
- 评论显示完整信息:内容、时间、关联事件标题 
- 前端无需修改渲染逻辑(完全兼容) 

🤖 Generated with Claude Code
2025-11-17 11:25:18 +08:00
zdl
5d8ad5e442 feat: bugfix 2025-10-31 10:33:53 +08:00
zdl
78e4b8f696 feat: Retention(留存)分析
1. 最受欢迎的功能
    - 哪些功能用户使用最频繁?
    - 新闻、事件、个股、模拟盘的使用对比
  2. 用户行为路径
    - 用户从哪里进入?
    - 在每个页面停留多久?
    - 从哪个环节流失?
  3. 内容偏好
    - 什么类型的新闻最受欢迎?
    - 用户关注哪些行业?
    - 哪些事件获得最多关注?

  Revenue(收入)转化

  1. 付费转化漏斗
  个人中心查看 →
  自选股/关注事件使用 →
  订阅页面查看 →
  升级按钮点击 →
  (付费转化)
  2. 模拟盘转化分析
  模拟盘进入 →
  搜索股票 →
  下单操作 →
  持续使用 →
  (付费转化)
2025-10-29 11:48:29 +08:00
zdl
6f34cab6d1 feat: 优化依赖 2025-10-24 17:18:08 +08:00
zdl
6c96299b8f feat: 添加合规 2025-10-20 21:25:33 +08:00
zdl
d695f8ff7b feat: 登陆状态调整 2025-10-20 13:58:07 +08:00
zdl
b2681231b0 feat: 删除无用组件 2025-10-20 13:34:19 +08:00
zdl
44f9fea624 feat: 添加导航徽章 2025-10-20 13:28:37 +08:00
zdl
923611f3a8 feat: 个人中心页添加mock数据 2025-10-19 16:17:31 +08:00
zdl
47fcb570c0 feat: 日志优化 2025-10-18 17:33:15 +08:00
zdl
32121c416e feat: 重构 TradingSimulation 和 Dashboard 组件 2025-10-18 09:03:10 +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
495ad758ea feat: 10.10线上最新代码提交 2025-10-11 16:16:02 +08:00