Commit Graph

848 Commits

Author SHA1 Message Date
zdl
0a6284289e 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
4f9233ed14 fix: 修复评论用户名显示不一致问题(乐观更新显示正确,刷新后显示 Anonymous)
问题描述:
- 用户发表评论时,乐观更新显示用户名 "zdl"
- 但 API 返回后,用户名变成 "Anonymous"
- 刷新页面后,用户名仍然是 "Anonymous"

根本原因:
- 前端代码期望评论对象包含 `author` 字段(src/types/comment.ts)
- 后端 API 返回的是 `user` 字段(app.py:7710-7714)
- 前端渲染时读取 comment.author?.username(CommentItem.js:72)
- 因为 comment.author 不存在,所以显示 'Anonymous'

修复方案:
- 在 eventService.getPosts 中添加数据转换逻辑
- 将后端返回的 user 字段映射为前端期望的 author 字段
- 兼容 avatar_url 和 avatar 两种字段名
- 处理 user 为 null 的边界情况(显示 Anonymous)

影响范围:
- src/services/eventService.js - getPosts 函数数据转换
- 所有使用 getPosts API 的组件都会受益于此修复
- 保持类型定义不变,符合业务语义

修复效果:
- 乐观更新显示:zdl 刚刚 打卡
- API 返回后显示:zdl 刚刚 打卡 (之前会变成 Anonymous)
- 刷新页面后显示:zdl XX分钟前 打卡 

🤖 Generated with Claude Code
2025-11-17 11:08:59 +08:00
zdl
00bba422ca fix: 修复评论在所有事件中串联显示的严重 Bug
问题描述:
- 在事件 A 下发表评论后,该评论会出现在事件 B、C 等所有事件下
- 切换事件时,评论列表没有重新加载,导致数据混乱

根本原因:
- usePagination Hook 的 useEffect 只依赖 autoLoad(常量)
- 当 eventId 变化时,loadCommentsFunction 被重新创建(包含新的 eventId)
- 但 useEffect 不会重新执行,导致旧数据(上一个事件的评论)持续显示

修复方案:
- 在 useEffect 依赖数组中添加 loadFunction
- 当 loadFunction 变化时(eventId 变化 → loadCommentsFunction 变化)
- useEffect 重新执行,加载新事件的评论数据

影响范围:
- EventCommentSection 组件(评论区)
- 所有使用 usePagination Hook 的组件都会受益于此修复
- 确保数据隔离性和正确性

🤖 Generated with Claude Code
2025-11-17 10:30:57 +08:00
41fa6e08b3 add forum 2025-11-15 10:09:17 +08:00
7297ffa84b add forum 2025-11-15 09:50:55 +08:00
0c067cf63b add forum 2025-11-15 09:15:54 +08:00
b88c5a4d6c Merge branch 'feature_bugfix/251113_ui' of https://git.valuefrontier.cn/vf/vf_react into feature_bugfix/251113_ui 2025-11-15 09:11:57 +08:00
0ae5618ef9 add forum 2025-11-15 09:10:26 +08:00
zdl
d1a0368eac Merge branch 'feature_bugfix/251113_bugfix' into feature_bugfix/251113_ui
* feature_bugfix/251113_bugfix:
  feat: 实现 Socket 触发的智能列表自动刷新功能(带防抖)
  feat: 实现评论分页功能并迁移到 TypeScript
  feat: 接入Ts配置
  feat: 添加评论功能
2025-11-14 19:04:45 +08:00
zdl
e4d9bc4124 feat: 实现 Socket 触发的智能列表自动刷新功能(带防抖)
核心改动:
- 扩展 NotificationContext,添加事件更新回调注册机制
- VirtualizedFourRowGrid 添加 forwardRef 暴露 getScrollPosition 方法
- DynamicNewsCard 实现智能刷新逻辑(根据模式和滚动位置判断是否刷新)
- Community 页面注册 Socket 回调自动触发刷新
- 创建 TypeScript 通用防抖工具函数(debounce.ts)
- 集成防抖机制(2秒延迟),避免短时间内频繁请求

智能刷新策略:
- 纵向模式 + 第1页:自动刷新列表
- 纵向模式 + 其他页:不刷新(避免打断用户)
- 平铺模式 + 滚动在顶部:自动刷新列表
- 平铺模式 + 滚动不在顶部:仅显示 Toast 提示

防抖效果:
- 短时间内收到多个新事件,只执行最后一次刷新
- 减少服务器压力,提升用户体验

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-14 19:04:00 +08:00
3ea93ea4cb update ui 2025-11-14 18:48:39 +08:00
5a45dc586c update ui 2025-11-14 18:03:55 +08:00
zdl
79308cec48 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
fe11bd9e6a Merge branch 'feature_bugfix/251113_ui' into feature_bugfix/251113_bugfix
* feature_bugfix/251113_ui:
  update ui
  update ui
  update ui
  update ui
  update ui
2025-11-14 16:16:10 +08:00
zdl
6ed654aba0 feat: 接入Ts配置 2025-11-14 16:15:29 +08:00
zdl
f44c5d37ed feat: 添加评论功能 2025-11-14 16:15:13 +08:00
ba193db5aa update ui 2025-11-14 15:50:21 +08:00
041b15fa0b update ui 2025-11-14 15:36:02 +08:00
181228ff10 update ui 2025-11-14 15:20:58 +08:00
9b1c6c693c update ui 2025-11-14 15:14:23 +08:00
b43a5c0d1e update ui 2025-11-14 15:08:32 +08:00
d0f8832e9a update ui 2025-11-14 08:09:18 +08:00
f6cb370faa update ui 2025-11-14 08:03:33 +08:00
e635fd0309 update ui 2025-11-14 07:42:18 +08:00
c412aeceee update ui 2025-11-14 07:25:12 +08:00
6ddcbf80d7 update ui 2025-11-14 06:39:29 +08:00
3d558a7e49 update ui 2025-11-13 23:44:37 +08:00
15481f9466 update ui 2025-11-13 23:34:29 +08:00
17a7dfa415 update ui 2025-11-13 23:24:54 +08:00
1200e1a3cf update ui 2025-11-13 23:06:19 +08:00
08b2c5e0cf update ui 2025-11-13 22:57:24 +08:00
bd9c860746 update ui 2025-11-13 22:35:33 +08:00
316eb5f172 update ui 2025-11-13 22:21:59 +08:00
5d26b72539 update ui 2025-11-13 21:59:33 +08:00
64906fabaa update ui 2025-11-13 18:08:02 +08:00
8eab6021a0 update ui 2025-11-13 17:58:37 +08:00
0c5bd1257d update ui 2025-11-13 17:51:47 +08:00
5b1d1e5af4 update ui 2025-11-13 17:45:09 +08:00
fb799d6bcc update ui 2025-11-13 17:38:54 +08:00
71076a951e update ui 2025-11-13 17:31:06 +08:00
9b836e2059 update ui 2025-11-13 17:18:33 +08:00
c409ea3648 update ui 2025-11-13 16:51:35 +08:00
d9a2a104b4 update ui 2025-11-13 16:34:34 +08:00
a7c3457e1d update ui 2025-11-13 16:17:32 +08:00
d47bdbee25 update ui 2025-11-13 16:07:14 +08:00
9f201ab177 update app_vx 2025-11-13 15:22:02 +08:00
13ef094131 add docx 2025-11-13 10:30:08 +08:00
3342daf875 update app_vx 2025-11-13 10:21:16 +08:00
zdl
8613312467 feat: 修改配置 2025-11-13 00:19:58 +08:00
zdl
70fd3bd817 feat: 参数调整 2025-11-12 14:27:32 +08:00