# 前端代码静态分析报告 > 分析范围: apps/web/src/ (316 TS/TSX) + apps/miniprogram/src/ (167 TS/TSX) > 分析工具: Grep/Read/Bash ## 1. TypeScript 类型安全 — MEDIUM ### Web 前端 生产代码仅 1 处 `any`: | 文件 | 行号 | 问题 | |------|------|------| | `hooks/usePaginatedData.ts` | 39 | `fetchFn: (...args: any[]) =>` — 建议用泛型 `A extends unknown[]` | 测试文件中 17 处 `as any`(mock 场景),影响低。 ### 小程序 — 10 处 `as any` | 文件 | 行号 | 问题 | 严重性 | |------|------|------|--------| | `app.tsx` | 24, 29 | `(globalThis as any).__hms` | LOW — 调试辅助 | | `pages/login/index.tsx` | 9 | `(__wxConfig as any).envVersion` | MEDIUM | | `services/request.ts` | 250 | `method: method as any` | MEDIUM | | `pages/pkg-health/device-sync/index.tsx` | 69 | `(bleManager as any).dataBuffer` | HIGH | | `pages/appointment/create/index.tsx` | 132 | `(Taro.requestSubscribeMessage as any)` | MEDIUM | **修复建议:** 创建 `types/global.d.ts` 和 `types/taro.d.ts` 补全缺失类型。 ## 2. 错误处理 — HIGH ### Web 前端静默吞错 (10+ 处) | 文件 | 行号 | 模式 | |------|------|------| | `pages/Home.tsx` | 224, 232, 238 | 个人统计加载失败被吞 | | `pages/Roles.tsx` | 46 | 权限列表加载失败被吞 | | `pages/health/ArticleManageList.tsx` | 119 | 文章列表加载失败被吞 | | `pages/health/DialysisManageList.tsx` | 49 | 透析列表加载失败被吞 | | `pages/health/components/DoctorSelect.tsx` | 28 | 医生列表加载失败被吞 | | `pages/health/components/workbench/OperatorWorkbench.tsx` | 35 | 工作台数据加载失败被吞 | 另有 10 处 `catch { }`(ChatPage 4 处 / useAlertSSE 2 处 / MainLayout 1 处 / usePaginatedData 1 处 / NotificationPanel 1 处 / App.tsx 1 处)。 **修复:** `.catch(() => {})` → `.catch((err) => console.warn('[context] 操作失败:', err))`,或设置错误状态。 ### 小程序 仅 1 处静默 catch(`followups/detail/index.tsx:58`),有注释解释,属合理模式。 ## 3. 安全问题 — HIGH (1 处) ### dangerouslySetInnerHTML 无消毒 `pages/health/articleEditor/ArticlePhonePreview.tsx:243`: ```tsx
``` - `content` 来自 wangEditor 富文本输出 - 后台管理预览组件,内容由管理员创建(非 UGC) - **仍建议引入 DOMPurify 做客户端消毒** - 预计工时: 30min ### 硬编码 URL — LOW | 文件 | 内容 | 评估 | |------|------|------| | `AiConfigPage.tsx:340,402` | `http://localhost:11434` | Ollama 默认 URL,仅作 placeholder | | `miniprogram/services/request.ts:4` | `localhost:3000` fallback | 开发环境 fallback,生产需运行时校验 | **无硬编码密钥或密码。** ✅ ## 4. 可访问性 — LOW - 未发现缺少 `alt` 的 `