20260702215426

This commit is contained in:
oneao committed 2026-07-02 21:54:26 +08:00
1 parent 2bbeea19fa
commit d0f7f0d3d8
39 files changed
+8341 -2049

No files matched your search

+102 -102
View File
@@ -541,21 +541,21 @@
- 严格按阶段推进,前一阶段没有确认前,不进入下一阶段。
- 默认优先使用通用接口;遇到通用接口明显无法覆盖的场景,再单独讨论是否增加通用 helper。
### 阶段 1:数据库表结构
### 阶段 1:数据库表结构 ✅
- [ ] 设计 `b_meal_dish` 表结构。
- [ ] 设计 `b_meal_dish_ingredient` 表结构,保存食材名称、数量、单位、规格。
- [ ] 设计 `b_meal_dish_step` 表结构,保存步骤描述和步骤图片。
- [ ] 设计 `b_meal_category` 表结构。
- [ ] 设计 `b_meal_tag` 表结构,包含 `parent_id` 支持父子标签。
- [ ] 设计 `b_meal_dish_tag` 表结构。
- [ ] 设计 `b_meal_slot` 表结构,支持家庭自定义餐段。
- [ ] 设计 `b_meal_plan` 表结构,包含 `plan_date`、`meal_slot_id`、`cook_by`。
- [ ] 设计 `b_meal_plan_item` 表结构,`dish_id` 指向菜品库。
- [ ] 设计 `b_meal_plan_log` 表结构,包含 `plan_id`、`type`、`content`、`ref_id`,统一记录操作和备注。
- [ ] 补充索引设计,例如 `family_id/plan_date/meal_slot_id/sort_number`。
- [ ] 生成 SQL 文件并确认命名、字段类型、默认值。
- [ ] 执行 SQL 到 dev 数据库并验证表已创建。
- [x] 设计 `b_meal_dish` 表结构。
- [x] 设计 `b_meal_dish_ingredient` 表结构,保存食材名称、数量、单位、规格。
- [x] 设计 `b_meal_dish_step` 表结构,保存步骤描述和步骤图片。
- [x] 设计 `b_meal_category` 表结构。
- [x] 设计 `b_meal_tag` 表结构,包含 `parent_id` 支持父子标签。
- [x] 设计 `b_meal_dish_tag` 表结构。
- [x] 设计 `b_meal_slot` 表结构,支持家庭自定义餐段。
- [x] 设计 `b_meal_plan` 表结构,包含 `plan_date`、`meal_slot_id`、`cook_by`。
- [x] 设计 `b_meal_plan_item` 表结构,`dish_id` 指向菜品库。
- [x] 设计 `b_meal_plan_log` 表结构,包含 `plan_id`、`type`、`content`、`ref_id`,统一记录操作和备注。
- [x] 补充索引设计,例如 `family_id/plan_date/meal_slot_id/sort_number`。
- [x] 生成 SQL 文件并确认命名、字段类型、默认值。
- [x] 执行 SQL 到 dev 数据库并验证表已创建。
产出文件:
@@ -569,15 +569,15 @@
- 食材明细可以支持后续采购清单生成。
- 餐段可以按家庭自定义、排序和停用。
### 阶段 2:前端基础模型与公共接口封装
### 阶段 2:前端基础模型与公共接口封装 ✅
- [ ] 新增菜品、食材明细、分类、父子标签、餐段、餐食安排、统一餐食安排明细、活动日志 TypeScript 类型。
- [ ] 新增 `meal` store,管理餐食模块缓存。
- [ ] 在 `meal` store 中封装基于公共接口的查询方法。
- [ ] 在 `meal` store 中封装基于公共接口的保存方法。
- [ ] 在 `meal` store 中封装图片上传复用逻辑。
- [ ] 在 `app-rn/src/store/index.ts` 导出 `meal` store。
- [ ] 不新增 services 层,避免重复封装。
- [x] 新增菜品、食材明细、分类、父子标签、餐段、餐食安排、统一餐食安排明细、活动日志 TypeScript 类型。
- [x] 新增 `meal` store,管理餐食模块缓存。
- [x] 在 `meal` store 中封装基于公共接口的查询方法。
- [x] 在 `meal` store 中封装基于公共接口的保存方法。
- [x] 在 `meal` store 中封装图片上传复用逻辑。
- [x] 在 `app-rn/src/store/index.ts` 导出 `meal` store。
- [x] 不新增 services 层,避免重复封装。
产出文件:
@@ -591,13 +591,13 @@
- 查询和保存优先使用现有 `loadData`、`loadDataPage`、`saveData`。
- 所有查询都按 `family_id` 过滤。
### 阶段 3:子应用入口与基础导航
### 阶段 3:子应用入口与基础导航 ✅
- [ ] 新增餐食应用图标。
- [ ] 在 `app-rn/src/configs/pages.ts` 注册餐食子应用。
- [ ] 新增 `meal/(tabs)/_layout.tsx`。
- [ ] 新增今日、菜品、管理底部 Tab,今日页默认展示今天/明天餐食安排。
- [ ] 确认子模块使用 `ModuleLayout`。
- [x] 新增餐食应用图标。
- [x] 在 `app-rn/src/configs/pages.ts` 注册餐食子应用。
- [x] 新增 `meal/(tabs)/_layout.tsx`。
- [x] 新增今日、菜品、管理底部 Tab,今日页默认展示今天/明天餐食安排。
- [x] 确认子模块使用 `ModuleLayout`。
产出文件:
@@ -611,21 +611,21 @@
- 首页工具列表可以进入餐食模块。
- 餐食模块底部 Tab 能正常切换。
### 阶段 4:菜品管理
### 阶段 4:菜品管理 ✅
- [ ] 新增菜品列表页。
- [ ] 支持关键词搜索。
- [ ] 支持按分类筛选。
- [ ] 支持按标签筛选。
- [ ] 新增菜品编辑页。
- [ ] 支持菜品图片上传,图片必填。
- [ ] 支持维护菜品食材明细。
- [ ] 食材明细支持名称、数量、单位、规格、备注。
- [ ] 支持创建或选择分类。
- [ ] 支持创建或选择父子标签。
- [ ] 支持编辑菜品。
- [ ] 支持停用或删除菜品。
- [ ] 删除已有餐食安排历史的菜品时使用软删除。
- [x] 新增菜品列表页。
- [x] 支持关键词搜索。
- [x] 支持按分类筛选。
- [x] 支持按标签筛选。
- [x] 新增菜品编辑页。
- [x] 支持菜品图片上传,图片必填。
- [x] 支持维护菜品食材明细。
- [x] 食材明细支持名称、数量、单位、规格、备注。
- [x] 支持创建或选择分类。
- [x] 支持创建或选择父子标签。
- [x] 支持编辑菜品。
- [x] 支持停用或删除菜品。
- [x] 删除已有餐食安排历史的菜品时使用软删除。
产出文件:
@@ -642,15 +642,15 @@
- 菜品列表筛选结果正确。
- 删除菜品不会破坏历史餐食安排。
### 阶段 5:分类、父子标签管理
### 阶段 5:分类、父子标签管理 ✅
- [ ] 在菜品编辑流程中支持快速新建分类。
- [ ] 在菜品编辑流程中支持快速新建父标签。
- [ ] 在菜品编辑流程中支持在父标签下新建子标签。
- [ ] 独立管理页支持维护分类。
- [ ] 独立管理页支持维护父标签。
- [ ] 独立管理页支持维护子标签。
- [ ] 支持父标签无子标签时直接用于菜品标记。
- [x] 在菜品编辑流程中支持快速新建分类。
- [x] 在菜品编辑流程中支持快速新建父标签。
- [x] 在菜品编辑流程中支持在父标签下新建子标签。
- [x] 独立管理页支持维护分类。
- [x] 独立管理页支持维护父标签。
- [x] 独立管理页支持维护子标签。
- [x] 支持父标签无子标签时直接用于菜品标记。
产出文件:
@@ -662,14 +662,14 @@
- 标签支持两级父子结构。
- 停用分类或标签后,不影响历史菜品展示。
### 阶段 5.5:餐段管理
### 阶段 5.5:餐段管理 ✅
- [ ] 独立管理页支持维护餐段。
- [ ] 支持新增餐段。
- [ ] 支持编辑餐段名称。
- [ ] 支持调整餐段排序。
- [ ] 支持停用餐段。
- [ ] 今日页按启用餐段排序展示。
- [x] 独立管理页支持维护餐段。
- [x] 支持新增餐段。
- [x] 支持编辑餐段名称。
- [x] 支持调整餐段排序。
- [x] 支持停用餐段。
- [x] 今日页按启用餐段排序展示(fetchSlots 已按 sort_number 排序并过滤已启用)。
产出文件:
@@ -681,23 +681,23 @@
- 停用餐段后,不影响历史餐食安排展示。
- 没有餐段时,引导用户先创建餐段。
### 阶段 6:餐食安排编辑
### 阶段 6:餐食安排编辑 ✅
- [ ] 支持从菜品列表选择单道菜加入餐食。
- [ ] 支持多选菜品后批量加入餐食。
- [ ] 新增餐食安排编辑页或 BottomSheet。
- [ ] 支持今天/明天快捷选择。
- [ ] 支持选择家庭自定义餐段。
- [ ] 支持填写每道菜数量。
- [ ] 支持选择做饭人。
- [ ] 支持填写餐食备注。
- [ ] 提交后创建或更新餐食安排和餐食安排明细。
- [ ] 安排餐食时写入 type=1 日志记录。
- [ ] 加菜时写入 type=2 日志记录,并调用 `recordFeed()` 触发家庭动态。
- [ ] 移除菜时写入 type=3 日志记录。
- [ ] 设置做饭人时写入 type=5 日志记录。
- [ ] 支持在餐食安排上留下备注(type=4),写入日志并调用 `recordFeed()`。
- [ ] 备注仅允许 `create_by` 本人删除,不可编辑;操作日志不暴露删除入口。
- [x] 支持从菜品列表选择单道菜加入餐食。
- [x] 支持多选菜品后批量加入餐食。
- [x] 新增餐食安排编辑页或 BottomSheet。
- [x] 支持今天/明天快捷选择。
- [x] 支持选择家庭自定义餐段。
- [x] 支持填写每道菜数量。
- [x] 支持选择做饭人。
- [x] 支持填写餐食备注。
- [x] 提交后创建或更新餐食安排和餐食安排明细。
- [x] 安排餐食时写入 type=1 日志记录。
- [x] 加菜时写入 type=2 日志记录,并调用 `recordFeed()` 触发家庭动态。
- [x] 移除菜时写入 type=3 日志记录。
- [x] 设置做饭人时写入 type=5 日志记录。
- [x] 支持在餐食安排上留下备注(type=4),写入日志并调用 `recordFeed()`。
- [x] 备注仅允许 `create_by` 本人删除,不可编辑;操作日志不暴露删除入口。
产出文件:
@@ -709,20 +709,20 @@
- 数量必须大于 0。
- 保存中有 LoadingOverlay。
### 阶段 7:今日/明日餐食安排
### 阶段 7:今日/明日餐食安排 ✅
- [ ] 新增今日/明日餐食区。
- [ ] 默认展示今天餐食安排。
- [ ] 支持今天/明天快捷切换。
- [ ] 支持打开日期选择器查看其他日期。
- [ ] 支持按家庭自定义餐段分组展示。
- [ ] 支持在每个餐段区块直接加菜。
- [ ] 支持在每个餐段区块移除菜。
- [ ] 支持从历史餐食安排再次安排同样的菜。
- [ ] 每个餐段区块下方展示活动时间轴,按 `create_time` 升序列出操作记录和备注。
- [ ] 时间轴条目根据 `type` 拼接展示文案:「xxx 安排了这顿饭」「xxx 加了 [菜名]」「xxx 移除了 [菜名]」「xxx 留下了一条备注:[content]」「xxx 设置了做饭人」。
- [ ] 备注条目(type=4)在当前用户为作者时显示删除按钮;其余条目不显示。
- [ ] 支持空状态。
- [x] 新增今日/明日餐食区。
- [x] 默认展示今天餐食安排。
- [x] 支持今天/明天快捷切换。
- [x] 支持打开日期选择器查看其他日期。
- [x] 支持按家庭自定义餐段分组展示。
- [x] 支持在每个餐段区块直接加菜。
- [x] 支持在每个餐段区块移除菜。
- [x] 支持从历史餐食安排再次安排同样的菜。(阶段 8 已补完)
- [x] 每个餐段区块下方展示活动时间轴,按 `create_time` 升序列出操作记录和备注。
- [x] 时间轴条目根据 `type` 拼接展示文案。
- [x] 备注条目(type=4)在当前用户为作者时显示删除按钮;其余条目不显示。
- [x] 支持空状态。
产出文件:
@@ -734,11 +734,11 @@
- 切换日期后数据正确刷新。
- 再次安排能复用原菜品生成新的餐食安排明细。
### 阶段 8:历史餐食与复用
### 阶段 8:历史餐食与复用 ✅
- [ ] 支持按日期查看历史餐食安排。
- [ ] 支持复制某顿历史餐食到今天或明天。
- [ ] 支持从历史餐食进入相关菜品详情。
- [x] 支持按日期查看历史餐食安排。
- [x] 支持复制某顿历史餐食到今天或明天。
- [x] 支持从历史餐食进入相关菜品详情。
产出文件:
@@ -752,7 +752,7 @@
### 阶段 8.5:快速记账入口
- [ ] 在餐食安排上增加记账按钮。
- [ ] 在餐食安排上增加记账按钮。(暂缓,后续迭代)
- [ ] 点击后复用现有记账新增能力。
- [ ] 默认带入菜品名称、餐段和备注。
- [ ] 保存成功后返回今日页。
@@ -766,18 +766,18 @@
- 快速记账不影响餐食安排。
- 记账保存逻辑与现有记账模块一致。
### 阶段 9:收尾与体验优化
### 阶段 9:收尾与体验优化 ✅
- [ ] 补充空状态。
- [ ] 补充加载状态。
- [ ] 补充保存中状态。
- [ ] 补充错误提示。
- [ ] 检查移动端小屏布局。
- [ ] 检查图片加载失败兜底。
- [ ] 跑 `pnpm exec oxfmt --check`。
- [ ] 跑 `pnpm lint`。
- [ ] 跑 `pnpm exec tsc --noEmit`。
- [ ] 根据实际结果更新本文档完成状态。
- [x] 补充空状态。
- [x] 补充加载状态。
- [x] 补充保存中状态。
- [x] 补充错误提示。
- [x] 检查移动端小屏布局。
- [x] 检查图片加载失败兜底。
- [x] 跑 `pnpm exec oxfmt --check`。(通过)
- [ ] 跑 `pnpm lint`。(环境中 ESLint 未安装,需 `npx expo lint` 初始化配置)
- [x] 跑 `pnpm exec tsc --noEmit`。(通过,0 错误)
- [x] 根据实际结果更新本文档完成状态。
验收标准: