Files
workspace/code/app/.workbuddy/memory/2026-06-23.md
T
2026-06-23 21:29:18 +08:00

5.9 KiB
Raw Blame History

2026-06-23 工作日志

Skills 配置

  • 将 heroui-native skill 从临时目录安装到用户级 (~/.workbuddy/skills/) 和项目级 (项目/.workbuddy/skills/)
  • 项目中仅使用两个 skills:heroui-native 和 allapp-conventions
  • heroui-native 来源:通过 npx skills 安装的 heroui-inc/heroui 仓库,原始路径在临时目录 C:\Users\admin\AppData\Local\Temp\skills-oUbMIJ\

前端页面优化

tools/index.tsx — 多轮迭代

  • 去掉卡片背景(bg-white shadow-sm),极简化
  • 图标保持原生色,不加彩色圆底
  • 收藏:用 Heart(非 Star)图标,18px 右上角独立触摸,teal 实心/灰色空心
  • 图标 26→32px,文字 11→13px,整体放大更利于触摸

home/index.tsx — 重构

  • 宫格布局 → 横向功能卡片(图标圆底 + 标题 + 描述 + 右箭头)
  • 计时数字层级化:天 text-3xl 主力,时分降级
  • 去掉卡片背景,与 tools 页风格统一
  • 更多工具独立卡片,用 Grid3X3 图标

项目目录结构重组

  • 主应用所有页面收进 (main)/ route group:(tabs)/, auth/, family/, tools/
  • 子应用 finance/ 保持独立在顶层
  • 删除未用的 star/ 占位页
  • 路由引用 /(tabs)/home → /home(4 处更新)
  • 最终目录:app/(main)/* + app/finance/*,主副清晰分离

最近动态功能 — 完整实现

数据库:

  • 建表 b_feed(动态),字段:id, family_id, user_id, type, content, meta(VARCHAR), create_time, update_time, create_by, update_by
  • 插入 7 条模拟数据(加入家庭/修改昵称/记账/收藏工具)

前端新增:

  • src/helpers/feed.ts — recordFeed() 写入、loadFeeds() 查询,全程用通用接口
  • src/app/(main)/activities/index.tsx — 完整动态列表页,时间轴布局(图标圆底 + 竖线 + 内容)
  • 首页 /activities 路由,CloseButton 关闭

埋点位置(4 处):

  • tools/index.tsx — 收藏工具时 → favorite_app
  • family/entry.tsx — 创建家庭 → join_family(xxx 创建了家庭)
  • family/entry.tsx — 加入家庭 → join_family(xxx 加入了家庭)
  • family/user.tsx — 修改昵称 → change_nickname(旧名 修改了昵称为「新名」)

首页改造:

  • 最近动态区从 Demo 数据 → 真实 loadFeeds 加载,展示最新 3 条
  • 右上角「更多 →」入口跳转 /activities
  • 时间格式化:刚刚 / N分钟前 / N小时前 / N天前 / 日期

动态功能优化 — 表名 + 昵称修复

表名重命名:

  • b_feed → b_family_feed(统一 b_family_* 风格)
  • feed.ts 中 table_name / view_name 同步更新

昵称来源修正:

  • 新增 getFamilyMemberNickname(familyId, userId) — 从 b_family_member.nickname 查询
  • 所有 recordFeed() 调用处改用此函数,不再从 userStore.userInfo.nickname 取
  • family/user.tsx 改名时同步更新 b_family_member.nickname(之前只更新 b_user.name)

Skill 更新:

  • allapp-conventions 新增「家庭动态记录规范」章节,含 5 种触发场景、昵称来源规则、代码示例
  • 目录结构修正为 (main)/ route group

动态 type 简化 + content 占位符化

type 简码:

  • join_family → join,change_nickname → rename,add_finance → bill,favorite_app → fav
  • 数据库存量数据已批量 UPDATE,前端 TYPE_ICONS 全部更新

content 占位符:

  • content 存储模板 {nickname} 加入了家庭,不再拼接具体昵称
  • loadFeeds() 内部通过 getFamilyMemberNickname() 动态替换 {nickname} 为 b_family_member.nickname 最新值
  • 改名后历史动态自动显示新昵称,彻底解决写死问题
  • recordFeed() 调用处不再需要 getFamilyMemberNickname,只需传模板字符串
  • entry.tsx / user.tsx / tools/index.tsx 的 getFamilyMemberNickname import 已移除

动态 meta 字段清理

原则变更:content 自包含,不依赖 meta。recordFeed() 不再接收 meta 参数,所有展示信息直接写入 content。

改动:

  • helpers/feed.ts — recordFeed 签名去掉 meta? 参数,inserts 不再写 meta 字段
  • tools/index.tsx — fav 调用去掉 { app_name: subItem.title } 冗余 meta
  • family/user.tsx — rename content 改为 {nickname} 修改了昵称为「{新昵称}」
  • activities/index.tsx — 去掉 meta JSON.parse + amount 显示逻辑
  • 数据库:7 条存量记录 meta 全部置 NULL,bill 记录金额已嵌入 content(如「午餐」¥35)
  • Skill 更新:content 模板表同步,新增「content 自包含原则」说明

tools 卡片样式

  • item 加 bg-white rounded-xl shadow-sm,去底部分割线
  • 左右间距 mx-3;标题 + 描述双行布局,items-center 垂直居中

DateTime/DateTimeRange 组件重构

  • 替换依赖:@yz1311/react-native-wheel-picker → react-native-dates-picker(纯 JS、样式可控)
  • DateTime.tsx — mode="single" + initialView 映射(year/month/day)+ timePicker
  • DateTimeRange.tsx — mode="range" 原生支持起止日期选择,代码大幅简化(去掉 active/toggle 逻辑)
  • 选中色 selectedItemColor="#0d9488" 与 teal 主题统一
  • BottomSheet 包裹保留
  • chat/index.tsx 写入完整测试代码(5 种 DateTime 模式 + DateTimeRange)

记账页面重构

  • 页面分为上下两部分:上 — 大字号金额(40px bold,点击可输入)+ 日期行(文字 + ChevronDown 图标);下 — 类别网格(一行 5 个,flex-wrap)
  • 金额使用 TextInput 内联,点击切换显示/输入态,inputMode="decimal"
  • 日期不包在 Input 里,改为 bg-gray-50 rounded-xl 行 + 右侧 ChevronDown
  • 类别区域顶部加本地搜索框(useMemo 过滤 name.includes),无 API
  • 去掉横向滚动的 LegendList,改为 flex-row flex-wrap 的 View
  • BottomSheet "更多"面板保留,同样含搜索框 + 5 列网格