20260622214432

This commit is contained in:
oneao committed 2026-06-22 21:44:33 +08:00
1 parent b5f6fafd74
commit e9e3371be7
19 files changed
+1068 -121

No files matched your search

+81
View File
@@ -0,0 +1,81 @@
# 2026-06-22
## 添加测试登录功能
### 目标
前端 login.tsx 中的 test1/test2 需要实现模拟登录,后端接受并走完整 auth 流程(生成 JWT、查 family 等)。
### 改动文件
**后端:**
- `app-go/internal/types/auth.go` — 新增 `LoginTestReq` 结构体(user_id, nickname, avatar)
- `app-go/internal/handle/auth.go` — 新增 `LoginTest` handler:验证用户存在 → 更新登录时间 → 查 family → 生成 JWT → 返回 `LoginResp`
- `app-go/internal/router/router.go` — 新增路由 `POST /auth/login/test`
**前端:**
- `app-rn/src/types/auth.ts` — 新增 `LoginTestParams` 接口
- `app-rn/src/request/api.ts` — 新增 `loginTestApi()`,导入 `LoginTestParams`
- `app-rn/src/app/auth/login.tsx` — 实现 `test1()` 方法(硬编码用户 id=801787924787269, nickname=Zhang),修复两个测试按钮的 `onPress` 绑定(从 `handleLoginQQ` 改为 `test1` / `test2`)
### 关键设计
- 后端 `/auth/login/test` 不在白名单需要额外处理,但路由器中它属于 `/auth/login/**` 前缀,前端的 WhiteList 使用 prefix 匹配 → `/auth/login/test` 已被自动放行
- 生成的 token 是标准 JWT,auth 中间件无需任何改动即可正常识别
- `test2()` 目前为空占位,后续再实现
### 数据库依赖
需要确保 `b_user` 表中存在 id=801787924787269 的用户记录,否则测试登录会返回"测试用户不存在"。
## 子模块动画改为底部滑入/滑出(B 方案)
- ModuleLayout.tsx: handleClose 从 `router.replace("/(tabs)/home")` 改为 `router.back()`
- finance/(tabs)/_layout.tsx: 添加 `<Stack.Screen options={{ animation: "slide_from_bottom" }} />`
## tools/index.tsx 改为宫格布局
移除:列表组件(ListGroup/PressableFeedback/Separator/LegendList)、AZIndex 字母索引
改为:LayoutView.ScrollView + 3 列宫格(flexWrap),每个格子含图标、标题、描述
保留:顶部搜索框、底部关闭按钮、EmptyState
### 第二轮优化
- 去掉描述文案,卡片更紧凑
- 加回 AZIndex 字母导航,通过 onLayout 记录分组标题位置实现 scrollTo
- 卡片改为固定上下 padding(不设 aspectRatio),尺寸更小
- 按行分组渲染,末尾行空位用占位 View 填充,保证左对齐
- AZIndex 始终显示(搜索时位置基于复合 key 追踪)
## 修复测试登录 404 问题
`config.yaml` 中 `base_url: /app`,开发环境没有 nginx 剥离前缀,导致请求路径 `/auth/login/test` 无法匹配路由 `/app/auth/login/test`。
**修复:** `config.dev.yaml` 添加 `base_url: ""`,覆盖掉主配置的 `/app` 前缀。
## 工具页宫格样式对齐首页
- 组件:Pressable → PressableFeedback + PressableFeedback.Ripple
- 样式:h-20 / rounded-xl / shadow-lg / 去图标灰底 / 图标 26px / text-xs
## 子应用收藏(星标)功能
**数据库**: 新建 `b_app_favorite` 表(family_id + app_id 唯一约束)
**修复**: `b_app_favorite` 加入 `auditExcludeTables`(meta_field.go),因为表内已有 user_id 追踪、无需 create_by/update_by 审计字段。否则 saveData 自动注入不存在的列 → 500。
- **再次修复**: 用户要求不应跳过审计,改为给表添加 `create_by` / `update_by` 列,meta_field.go 撤回修改。
## PROJECT_CONTEXT.md 补充开发规范
新增 "Development Conventions" 章节:
- API 规则:禁止新增专用 CRUD 接口,一律使用 loadData/saveData/loadDataBySql/getUniqueId。如需新增接口须先询问,且新增的也应是通用接口。
- 数据库规则:所有业务表必须含 create_time/update_time/create_by/update_by 四列,不要随意加到 auditExcludeTables。
- 前端规则:复用现有 store 和通用 API,不创建 RPC 风格封装。
**后端**: 无新增路由/handler,全部复用已有通用接口(loadData / saveData / getUniqueId)
- 重新清理:删除了之前错误创建的 `types/app.go`、`handle/app.go` 和 `/app/favorite/*` 路由
**前端**:
- `request/api.ts`: 删除 toggleFavoriteApi / getFavoritesApi,改用 loadDataApi + saveDataApi + getUniqueIdApi
- `store/favorite.ts`: fetchFavorites 用 loadDataApi 查 b_app_favorite;toggleFavorite 用 loadDataApi 查存在 + saveDataApi 删/插 + getUniqueIdApi 取新 ID
- `tools/index.tsx`: 卡片右上角 Star 按钮(已修复事件冲突:Star 独立于导航主体,外层 View 容器 + z-10 避免触摸冒泡)+ 收藏分区置顶 + 搜索时不拆分收藏分区
- `home/index.tsx`: 改为 3 列宫格(同 tools,固定 itemWidth + 按行分组)+ 收藏优先 + "更多"占位自动补到末尾行 + 跳转 /tools
## 创建项目 Skill:allapp-conventions
位置:`.workbuddy/skills/allapp-conventions/`
- `SKILL.md`: 5 条规则(读 package.json、禁止专用 API、审计字段、不重复造轮子、家庭为中心)+ 项目结构速查 + 前端关键依赖库表 + 代码示例
- `references/db-config.md`: 数据库连接信息、所有表结构速查