2.0 KiB
2.0 KiB
Design Follow-ups
通用数据接口的安全性暂不纳入本清单。
已处理
- 聊天 DTO 已收口到
app-rn/src/types/chat.ts,统一通过normalizeChatMessage()兼容type/msg_type。 - WebSocket 在线用户、实时消息、未读数、连接状态已收口到
app-rn/src/store/chat.ts。 app-rn/src/hooks/useLoading.ts已提供runWithLoading和useListLoading,用于统一保存加载、列表初载、刷新和加载更多。
API 与领域边界
src/request/api.ts仍主要返回any,页面直接感知表名、字段名和查询条件。保持通用接口优先,只有明显跨页面复用的领域能力才考虑抽象。
状态与缓存
financestore 只有分类缓存,账单列表仍由页面自行加载,后续可以形成 finance domain store。favoritestore 管理远端读写、loadingIds和本地Set,职责偏重。可以下沉远端操作到 service,store 只保留状态。
UI 与交互一致性
- 后续新增保存类操作应优先使用
useLoading().runWithLoading(),页面底部保留<LoadingOverlay visible={isLoading} />。 - 列表初载、刷新、加载更多应优先使用
useListLoading()。 - 部分页面中文显示/注释存在编码异常,应统一文件编码并恢复可读文案。
AppLayout和ModuleLayout仍有大量重复,可继续抽一个共享ShellLayout。
类型与工程质量
- 项目当前
tsc --noEmit有既有错误,包括finance/analysisvariant、iconfont SvgProps、theme hook 缺失等。 - iconfont 生成代码与当前 React Native SVG 类型不匹配,建议集中修生成模板或 wrapper 类型。
PROJECT_CONTEXT.md当前缺失,应确认是否恢复或从文档引用中移除。
数据一致性
family_id作用域已经通过loadDataApi/loadDataPageApi的scope_family选项收口,仍有页面直接手写条件,需要逐步替换。- 创建/加入家庭、收藏 app、记账等 feed 记录规则需要逐项核对,确保所有触发场景一致执行。