43 lines
2.8 KiB
Markdown
43 lines
2.8 KiB
Markdown
# 项目私有规则
|
||
|
||
> 本文件由梦核分析 + 用户确认后生成,Claude 每次对话开始时读取并合并应用。
|
||
> 规则格式与 CONVENTIONS 自动推荐规则库相同,优先级高于全局规则。
|
||
> 来源:2026-07-04 梦核分析,基于 40 条复盘笔记 + 跨项目返工数据。
|
||
|
||
## 规则列表
|
||
|
||
### P01 — Android 画布/地图叠加面板必须用 absolute 定位
|
||
- **触发条件**:在地图、画布、SVG 可缩放视图上叠加侧边/底部面板
|
||
- **自动动作**:确认面板用 `position: absolute` 覆盖;严禁通过 `Animated.timing` / `LayoutAnimation` 改变父容器 flex 宽高——会触发底层视图重新布局,Android 上出现闪白/黑块
|
||
- **confidence**: 0.90
|
||
- **evidence_count**: 3
|
||
- **derived_from**: FoldableLayout 3 轮返工(4e1d922→cea2a5d→3dbc6f0),JS 线程宽度动画两次都有 Android 渲染问题,absolute 定位彻底解决
|
||
|
||
### P02 — 选图统一用 expo-document-picker,禁用 expo-image-picker
|
||
- **触发条件**:需要从相册选取图片
|
||
- **自动动作**:直接使用 `expo-document-picker`(`ACTION_GET_CONTENT`);发现代码中引用 `expo-image-picker` 时提示替换
|
||
- **confidence**: 0.92
|
||
- **evidence_count**: 3
|
||
- **derived_from**: 摄像头任务 3 轮返工(expo-image-picker SDK52 API 废弃 + 三星 Photo Picker 系统崩溃),expo-document-picker 彻底绕开
|
||
|
||
### P03 — 全屏预览 Modal 不用 transparent prop
|
||
- **触发条件**:实现全屏照片预览、全屏地图等需要覆盖整个屏幕的 Modal
|
||
- **自动动作**:去掉 `transparent` prop 改为非透明黑底;FlatList pagingEnabled 改为手势驱动单张渲染
|
||
- **confidence**: 0.88
|
||
- **evidence_count**: 2
|
||
- **derived_from**: MarkerPhotoPanel 返工(transparent Modal 渲染范围被限制为父容器宽度,FlatList 分页宽度异常)
|
||
|
||
### P04 — 列表页禁止 N+1 查询
|
||
- **触发条件**:列表组件需要展示每行的统计数据(照片数、物品数、数量合计等)
|
||
- **自动动作**:在 SQL 层通过 `LEFT JOIN` 子查询或 `GROUP BY` 一次聚合取数;发现逐行查询时标记需重构
|
||
- **confidence**: 0.80
|
||
- **evidence_count**: 1
|
||
- **derived_from**: ItemList 照片数统计 N+1 查询,O(n) 查库,内容量增大后有性能风险(2026-04-11 复盘)
|
||
|
||
### P05 — 动态数据前置:表单骨架初始化前先确认数据源
|
||
- **触发条件**:设计表单组件 / 列表筛选 chip / 下拉选择器
|
||
- **自动动作**:先问"这些选项/分类将来是否动态?";有动态数据则在 `_layout.tsx` 根布局一次性接入对应 `Context/Provider`,不得在组件层后补
|
||
- **confidence**: 0.80
|
||
- **evidence_count**: 2
|
||
- **derived_from**: ItemFields 分类 chip 3 轮返工(硬编码→动态 CategoriesContext 后补)+ Expo 骨架 2 轮返工(CategoriesProvider 初版未加)
|