fix(mp): 行业标准第二轮审计修复 — 安全存储+UX+合规

- 安全:AI聊天历史、患者档案、设备同步数据统一走 secureSet/secureGet 加密存储
- 合规:TabBar "消息" 改为 "助手" 消除命名误导
- 合规:新增 .env.production 模板配置 HTTPS API URL
- UX:AI发送按钮 40→44px、反馈按钮 32→44px、协议勾选框 44px 点击热区
- UX:5处硬编码 10-12px 字号替换为 design token(DoctorTabBar/ShortcutButton/TodoAlert/mall)
- UX:6处安全区域写法统一(全部使用 --tk-page-padding/--tk-tabbar-space + env fallback)
- 新增 safe-bottom-padded / safe-bottom-tabbar 两个 mixin

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
iven
2026-05-21 14:06:29 +08:00
parent d576b8ba8f
commit 345e46002a
16 changed files with 51 additions and 33 deletions

View File

@@ -308,7 +308,7 @@
gap: var(--tk-gap-md);
padding: var(--tk-section-gap) var(--tk-gap-lg);
padding-bottom: constant(safe-area-inset-bottom);
padding-bottom: env(safe-area-inset-bottom);
padding-bottom: calc(var(--tk-page-padding) + env(safe-area-inset-bottom, 0px));
background: $card;
box-shadow: $shadow-md;
}

View File

@@ -153,7 +153,7 @@
right: 0;
padding: var(--tk-section-gap) var(--tk-gap-lg);
padding-bottom: constant(safe-area-inset-bottom);
padding-bottom: env(safe-area-inset-bottom);
padding-bottom: calc(var(--tk-page-padding) + env(safe-area-inset-bottom, 0px));
background: $card;
box-shadow: $shadow-md;
}

View File

@@ -341,7 +341,8 @@
}
.ai-feedback-btn {
height: 32px;
height: 44px;
min-height: 44px;
border-radius: $r-xs;
@include flex-center;
padding: 0 var(--tk-gap-sm);

View File

@@ -189,6 +189,17 @@
@include flex-center;
flex-shrink: 0;
margin-top: 1px;
position: relative;
// 扩大点击区域至 44x4424px 视觉 + 10px 每侧 padding via 伪元素)
&::before {
content: '';
position: absolute;
top: -10px;
right: -10px;
bottom: -10px;
left: -10px;
}
&.checked {
background: var(--tk-pri);

View File

@@ -308,7 +308,7 @@
position: absolute;
top: 8px;
left: 8px;
font-size: 10px;
font-size: var(--tk-font-micro);
font-weight: 600;
padding: 2px 8px;
border-radius: 6px;

View File

@@ -252,7 +252,7 @@
align-items: center;
gap: 10px;
padding: 10px 16px;
padding-bottom: calc(10px + env(safe-area-inset-bottom));
padding-bottom: calc(var(--tk-tabbar-space) + env(safe-area-inset-bottom, 0px));
background: $card;
border-top: 1px solid $bd-l;
flex-shrink: 0;
@@ -275,9 +275,9 @@
}
.ai-chat-bar__send {
width: 40px;
height: 40px;
border-radius: 20px;
width: 44px;
height: 44px;
border-radius: 22px;
background: $pri;
display: flex;
align-items: center;

View File

@@ -197,7 +197,7 @@
align-items: center;
gap: 10px;
padding: 10px 16px;
padding-bottom: calc(10px + env(safe-area-inset-bottom));
padding-bottom: calc(var(--tk-page-padding) + env(safe-area-inset-bottom, 0px));
background: $card;
border-top: 1px solid $bd-l;
flex-shrink: 0;

View File

@@ -117,7 +117,7 @@
padding: var(--tk-gap-md) var(--tk-gap-lg);
background: $card;
border-top: 1px solid $bd;
padding-bottom: calc(16px + env(safe-area-inset-bottom));
padding-bottom: calc(var(--tk-page-padding) + env(safe-area-inset-bottom, 0px));
}
.chat-input {

View File

@@ -4,7 +4,7 @@
// 订单列表 — 对齐原型 docs/design/mp-10-mall-pkg.html → 屏幕3
.orders-page {
padding-bottom: env(safe-area-inset-bottom);
padding-bottom: calc(var(--tk-page-padding) + env(safe-area-inset-bottom, 0px));
}
// 状态筛选 Tab