react-phone-apps/.blueprint/rules.md

2.8 KiB
Raw Blame History

项目私有规则

本文件由梦核分析 + 用户确认后生成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→3dbc6f0JS 线程宽度动画两次都有 Android 渲染问题absolute 定位彻底解决

P02 — 选图统一用 expo-document-picker禁用 expo-image-picker

  • 触发条件:需要从相册选取图片
  • 自动动作:直接使用 expo-document-pickerACTION_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 初版未加)