## 2026-06-28 - **SQL 模板字面量 Metro 解析错误修复**:Expo/Babel 在 `.tsx` 文件中会将模板字面量中的 `id` 关键字误解析为 JSX 属性,报 `Missing semicolon`。根因是 `@babel/plugin-transform-typescript` 的 TSX 模式 bug。最终方案:将所有 SQL 模板字面量改为字符串拼接(`+` 连接),避免了模板字面量 → TSX 解析路径。涉及文件: - `app-rn/src/app/finance/(tabs)/analysis/index.tsx` — 3 处 SQL - `app-rn/src/app/finance/(tabs)/home/index.tsx` — 1 处 SQL - `app-rn/src/app/finance/detail/[id].tsx` — 1 处 SQL - 注意:仅提取为变量不够(`const sql = \`...\`` 仍然触发),必须完全避免模板字面量 - **中文乱码修复**:修复了以下文件中因编码转换导致的大量中文乱码(UTF-8 被误当 GBK/CP1252 解析导致的 mojibake): - `app-rn/src/app/finance/(tabs)/analysis/index.tsx` — 约 50 处乱码修复(注释、UI 标签、¥ 符号) - `app-rn/src/app/finance/(tabs)/home/index.tsx` — 约 20 处乱码修复(toast 消息、UI 标签、¥ 符号) - `app-rn/src/app/finance/category/index.tsx` — 约 12 处乱码修复(toast 消息、表单标签) - `app-rn/src/app/finance/add/index.tsx` — 约 15 处乱码修复(UI 标签、toast 消息、¥ 符号) - **修复 DateTime/DateTimeRange 乱码和日历外边距**:修正了中文注释和按钮标签乱码,日历容器添加 `px-4` - **移除 BottomSheet 默认内边距**:gorhom 的 `BottomSheetView` 自带 `padding: 16`,在 `AppBottomSheetContent` 中通过 `style={[{ padding: 0 }]}` 消除。补偿了 `family/settings.tsx` 中一个缺少 `px-4` 的 BottomSheet 使用处 - **BottomSheet 内 input 键盘避让修复**:`family/user.tsx` 中 sheet 内的 heroui ``(底层原生 TextInput)被键盘遮挡。根因有三层: 1. `BottomSheet.tsx` 封装时 `keyboardBehavior="extend"` 是错的——gorhom 源码(BottomSheet.js L585)显示 `extend` 只是把 sheet 拉到最高 snap point,**根本不上移**。应改为 gorhom 默认值 `"interactive"`(L602-608:`highestDetentPosition - keyboardHeightInContainer`,sheet 上移到键盘上方)。 2. `android_keyboardInputMode="adjustResize"` 在 Android 上会导致 `interactive` 模式被**跳过**(L605: `!(Platform.OS === 'android' && android_keyboardInputMode === 'adjustResize')`)。应改为 gorhom 默认值 `"adjustPan"`。 3. heroui `` 底层是原生 `TextInput`,未注册到 sheet 内部 context,sheet 感知不到 focus。 - 最终方案(最优):`BottomSheet.tsx` 改 `keyboardBehavior="interactive"` + `android_keyboardInputMode="adjustPan"`。`AppBottomSheetInput` 封装改用 heroui 原生 `Input` + `useBottomSheetAwareHandlers`(heroui-native 提供),hook 内部调用 gorhom `useBottomSheetInternal(true)` 把 focus/blur 注册到 `animatedKeyboardState`。这样保留 heroui Input 全部样式和 API,无需用 `BottomSheetTextInput`。 - 全项目 sheet 内 `` 统一替换为 ``:`family/user.tsx`(2处)、`family/settings.tsx`(2处)、`finance/add/index.tsx`(2处)、`finance/category/index.tsx`(1处)、`finance/(tabs)/home/index.tsx`(1处)、`finance/(tabs)/analysis/index.tsx`(1处)。