- {/* 左侧: 富文本编辑器 */}
+ {/* 左侧: 富文本编辑器 — key 变化时强制重新挂载,防止 WangEditor toolbar 重复创建 */}
t.assigned_to).filter(Boolean))];
+ const assigneeIds = [...new Set(result.data.map((t: FollowUpTask) => t.assigned_to).filter((x): x is string => !!x))];
const newDoctorLabels: Record = {};
await Promise.allSettled(
- assigneeIds.map(async (id: string) => {
+ assigneeIds.map(async (id) => {
try {
const u = await getUser(id);
newDoctorLabels[id] = u.display_name || u.username;
diff --git a/wiki/frontend.md b/wiki/frontend.md
index f6c21b7..eef9d1b 100644
--- a/wiki/frontend.md
+++ b/wiki/frontend.md
@@ -1,6 +1,6 @@
---
title: Web 前端
-updated: 2026-04-25
+updated: 2026-04-26
status: stable
tags: [frontend, react, antd, vite, spa]
---
@@ -87,7 +87,7 @@ React 19.2.4 / Ant Design 6.3.5 / React Router 7.14.0 / Zustand 5.0.12 / Vite 8.
| `/plugins/:pluginId/:entityName` | 插件 CRUD(动态生成) |
| `/plugins/:pluginId/tabs|tree|graph|dashboard|kanban/:name` | 插件多视图页面 |
-**健康管理路由(10 条)**:
+**健康管理路由(22 条)**:
| 路径 | 页面 |
|------|------|
@@ -101,8 +101,20 @@ React 19.2.4 / Ant Design 6.3.5 / React Router 7.14.0 / Zustand 5.0.12 / Vite 8.
| `/health/follow-up-records` | 随访记录 |
| `/health/consultations` | 咨询会话列表 |
| `/health/consultations/:id` | 咨询详情(含消息 + 导出) |
+| `/health/articles` | 文章管理列表 |
+| `/health/article-editor` | 文章编辑器(富文本) |
+| `/health/article-categories` | 文章分类管理 |
+| `/health/article-tags` | 文章标签管理 |
+| `/health/points-rules` | 积分规则管理 |
+| `/health/points-products` | 积分商品管理 |
+| `/health/points-orders` | 积分订单列表 |
+| `/health/statistics` | 统计概览(透析/化验/预约/体征上报率) |
+| `/health/offline-events` | 线下活动管理 |
+| `/health/ai-analysis` | AI 分析历史 |
+| `/health/ai-prompts` | AI Prompt 管理 |
+| `/health/ai-usage` | AI 用量统计 |
-### 健康模块共享组件(12 个)
+### 健康模块共享组件(11 个)
| 组件 | 用途 |
|------|------|
@@ -196,6 +208,7 @@ ws://localhost:5174/ws/* → ws://localhost:3000/* (WebSocket)
| 日期 | 变更 |
|------|------|
+| 2026-04-26 | 全面更新:22 条健康路由(+12 内容/积分/统计/活动/AI)、11 个共享组件、77 个 TSX 文件 |
| 2026-04-26 | 从 CLAUDE.md 迁移:UI 布局规范(§8) |
| 2026-04-26 | VitalSignsChart 重设计:概览卡片条 + 点击展开详情图,5 指标独立 Y 轴 |
| 2026-04-25 | 全面更新:10 条健康路由、12 个共享组件、7 个健康 API 文件、3 个单元测试 |