fix(mp): P1+P2 稳定性加固 — 导航安全+生产日志+分包预加载+logout清理

P1:
- 全局 23 个页面 Taro.navigateTo → safeNavigateTo,防止页栈超10层
- 生产构建保留 console.warn/error,便于线上问题排查
- 添加 preloadRule 分包预加载(首页预加载健康/医生/文章分包)

P2:
- logout 时清理 ai_chat_history + BLE DataBuffer 缓存
- restore() 移除冗余的双重 Storage 读取(secureGet 已包含 getStorageSync)
- 首页文章图片添加 lazyLoad
This commit is contained in:
iven
2026-05-17 17:13:35 +08:00
parent 1576709342
commit 59dd5ef38e
26 changed files with 122 additions and 80 deletions

View File

@@ -1,6 +1,7 @@
import React, { useState, useCallback } from 'react';
import { View, Text } from '@tarojs/components';
import Taro, { useReachBottom } from '@tarojs/taro';
import { safeNavigateTo } from '@/utils/navigate';
import { usePageData } from '@/hooks/usePageData';
import { getCachedPatientId } from '@/services/request';
import { listDialysisPrescriptions } from '@/services/dialysis';
@@ -68,7 +69,7 @@ export default function DialysisPrescriptionList() {
<View
className='prescription-card'
key={p.id}
onClick={() => Taro.navigateTo({ url: `/pages/pkg-profile/dialysis-prescriptions/detail/index?id=${p.id}` })}
onClick={() => safeNavigateTo(`/pages/pkg-profile/dialysis-prescriptions/detail/index?id=${p.id}`)}
>
<View className='prescription-card-top'>
<Text className='prescription-model'>{p.dialyzer_model || '未指定型号'}</Text>

View File

@@ -1,6 +1,7 @@
import React, { useState, useCallback } from 'react';
import { View, Text } from '@tarojs/components';
import Taro, { useReachBottom } from '@tarojs/taro';
import { safeNavigateTo } from '@/utils/navigate';
import { usePageData } from '@/hooks/usePageData';
import { getCachedPatientId } from '@/services/request';
import { listDialysisRecords } from '@/services/dialysis';
@@ -76,7 +77,7 @@ export default function DialysisRecordList() {
<View
className='record-card'
key={r.id}
onClick={() => Taro.navigateTo({ url: `/pages/pkg-profile/dialysis-records/detail/index?id=${r.id}` })}
onClick={() => safeNavigateTo(`/pages/pkg-profile/dialysis-records/detail/index?id=${r.id}`)}
>
<View className='record-card-top'>
<Text className={`type-tag ${ti.cls}`}>{ti.label}</Text>

View File

@@ -1,6 +1,7 @@
import React, { useState, useCallback } from 'react';
import { View, Text } from '@tarojs/components';
import Taro from '@tarojs/taro';
import { safeNavigateTo } from '@/utils/navigate';
import { usePageData } from '@/hooks/usePageData';
import { listPatients, Patient } from '../../../services/patient';
import { useAuthStore } from '../../../stores/auth';
@@ -42,12 +43,12 @@ export default function FamilyList() {
};
const goToAdd = () => {
Taro.navigateTo({ url: '/pages/pkg-profile/family-add/index' });
safeNavigateTo('/pages/pkg-profile/family-add/index');
};
const goToEdit = (patient: Patient) => {
Taro.setStorageSync('edit_patient', patient);
Taro.navigateTo({ url: `/pages/pkg-profile/family-add/index?id=${patient.id}` });
safeNavigateTo(`/pages/pkg-profile/family-add/index?id=${patient.id}`);
};
const genderText = (g?: string) => {

View File

@@ -1,6 +1,7 @@
import React, { useState, useCallback } from 'react';
import { View, Text } from '@tarojs/components';
import Taro from '@tarojs/taro';
import { safeNavigateTo } from '@/utils/navigate';
import { usePageData } from '@/hooks/usePageData';
import { listTasks, FollowUpTask } from '../../../services/followup';
import EmptyState from '../../../components/EmptyState';
@@ -45,7 +46,7 @@ export default function MyFollowUps() {
};
const goToDetail = (id: string) => {
Taro.navigateTo({ url: `/pages/pkg-profile/followups/detail/index?id=${id}` });
safeNavigateTo(`/pages/pkg-profile/followups/detail/index?id=${id}`);
};
const getStatusClass = (status: string) => {

View File

@@ -1,6 +1,7 @@
import React, { useState, useCallback } from 'react';
import { View, Text } from '@tarojs/components';
import Taro, { useReachBottom } from '@tarojs/taro';
import { safeNavigateTo } from '@/utils/navigate';
import { usePageData } from '@/hooks/usePageData';
import { getCachedPatientId } from '@/services/request';
import { listReports, LabReport } from '../../../services/report';
@@ -49,7 +50,7 @@ export default function MyReports() {
});
const goToDetail = (id: string) => {
Taro.navigateTo({ url: `/pages/pkg-profile/reports/detail/index?id=${id}` });
safeNavigateTo(`/pages/pkg-profile/reports/detail/index?id=${id}`);
};
const formatStatus = (report: LabReport) => {

View File

@@ -1,6 +1,7 @@
import React from 'react';
import { View, Text } from '@tarojs/components';
import Taro from '@tarojs/taro';
import { safeNavigateTo } from '@/utils/navigate';
import { useAuthStore } from '../../../stores/auth';
import { invalidateHeadersCache, clearRequestCache } from '@/services/request';
import { useElderClass } from '../../../hooks/useElderClass';
@@ -51,7 +52,7 @@ export default function Settings() {
};
const handlePrivacy = () => {
Taro.navigateTo({ url: '/pages/legal/privacy-policy' });
safeNavigateTo('/pages/legal/privacy-policy');
};
const handleLogout = () => {