现象
顶栏消息中心(InboxPopover)的**「活动动态」** tab 每条只显示相对时间(如 47m ·),主行(操作人 + 摘要)和 · 后的对象名全空白。
站内信/活动的列表页在当前 main 渲染正常(数据本身也正确),此 issue 只针对弹窗。
根因
packages/app-shell/src/layout/AppHeader.tsx 的 fetchPresenceAndActivities 把 sys_activity 的原始行直接 cast 成 ActivityItem,没有做字段改名:
- 原始行(plugin-audit 列名):
summary / actor_name / object_name / timestamp
ActivityItem 期望:description / user / objectName / timestamp
于是 InboxPopover 渲染 {a.user} {a.description} 与 {timeAgo(a.timestamp)} · {a.objectName} 时,user/description/objectName 全为 undefined,只有 timestamp 有值 → 即 47m ·。
旁边的 hooks/useHomeInbox.ts 做了正确映射,两者本应一致(注释里也这么写),AppHeader 漏了。
取证
- framework showcase 后端 REST 返回的
sys_activity 数据完整非空(summary/object_name/type 都在,actor_name 视写入方可能为 null)。
- 用 console 连该后端复现:「活动动态」一堆
1m ·/7m · 空条目;列表页正常。
修复
在 AppHeader 里按 useHomeInbox 的方式把原始行映射成 ActivityItem(字段改名 + type 归一化 + 时间戳兜底 + 过滤空 summary)。
现象
顶栏消息中心(
InboxPopover)的**「活动动态」** tab 每条只显示相对时间(如47m ·),主行(操作人 + 摘要)和·后的对象名全空白。站内信/活动的列表页在当前
main渲染正常(数据本身也正确),此 issue 只针对弹窗。根因
packages/app-shell/src/layout/AppHeader.tsx的fetchPresenceAndActivities把sys_activity的原始行直接 cast 成ActivityItem,没有做字段改名:summary/actor_name/object_name/timestampActivityItem期望:description/user/objectName/timestamp于是
InboxPopover渲染{a.user} {a.description}与{timeAgo(a.timestamp)} · {a.objectName}时,user/description/objectName全为undefined,只有timestamp有值 → 即47m ·。旁边的
hooks/useHomeInbox.ts做了正确映射,两者本应一致(注释里也这么写),AppHeader 漏了。取证
sys_activity数据完整非空(summary/object_name/type都在,actor_name视写入方可能为 null)。1m ·/7m ·空条目;列表页正常。修复
在 AppHeader 里按
useHomeInbox的方式把原始行映射成ActivityItem(字段改名 +type归一化 + 时间戳兜底 + 过滤空summary)。