# 2026-07-13 工作日志

## 小程序分享 / 朋友圈能力全量接入
- 新增 `src/hooks/useShare.ts`：统一注册 `useShareAppMessage` + `useShareTimeline`，自动追加 `inviter=${user.id}` 裂变参数；导出 `isTimelineSinglePage()`（scene===1154）。
- 新增 `src/components/SharePoster/index.tsx`：Canvas 2D 生成「封面+标题+价格+小程序码」海报，返回临时图路径作 imageUrl。
- 新增 `src/api/share.ts`：`generateShareCode(page, inviterId)`，复用 `generateMiniProgramCode`（scene=uid_${id}，page 透传）。
- 扩展 `src/api/shop/shopInvite/index.ts` 的 `generateMiniProgramCode`，URL 透传 `page` 参数（后端需读取转发）。
- 接入 10 个页面：商品/积分/拼团/秒杀/活动/赛事详情（带 canvas 海报）；邀请下级/分销推广/升级VIP/分享赚佣金（仅 enableShare + useShare）。
- 类型检查：本次改动零错误，仅余 1 个历史既有错误（TS2688 @tarojs/taro 类型解析，非本次引入）。
- 待办/注意：朋友圈分享必须真机测试；后端需支持按 page 生成指定落地页小程序码；单页模式降级（避免强制登录跳转）可调用 `isTimelineSinglePage()`。

## 首页分享纠正 + 三按钮全亮（好友/朋友圈/复制链接）
- ❗纠正：之前误以为"tabBar 页不能分享朋友圈"是错的。核实微信官方 Page 文档 + 分享朋友圈专题文档：tabBar 页**可以**分享朋友圈（只要定义 onShareAppMessage + onShareTimeline 即显示按钮）。"tabBar 不渲染"仅指朋友圈打开后的**单页模式**里底部 tabBar 不显示，不是不能发起分享。
- `src/hooks/useShare.ts` 扩展：新增 `enableCopyUrl?: boolean`（复制链接，用 `Taro.onCopyUrl`/`offCopyUrl` 在 useEffect 里进页绑定、离页解绑）；`enableTimeline` 默认 true 且 tabBar 页也生效；纠正了旧注释。
- `src/pages/index/index.tsx`：config 加 `enableShareAppMessage` + `enableShareTimeline`；`useShare({ title, path, enableTimeline:true, enableCopyUrl:true })`，首页右上角三个按钮全亮。
- 复制链接：基础库 2.14.3+ Beta（官方说仅 Android，实测 iOS 也支持）；朋友圈/复制链接开发者工具可能看不到入口，需真机测试。
- 注意：首页分享朋友圈后是单页模式（无登录态/不能跳转/tabBar 不渲染），首页是交互型页面，单页体验受限，但作传播入口可用；如需更好体验可用 `isTimelineSinglePage()` 做降级。
- 类型检查：零错误（历史既有 1 个 TS2688 仍在）。

## 分类页（pages/shop/index）分享接入
- `src/pages/shop/index.config.ts`：加 `enableShareAppMessage: true` + `enableShareTimeline: true`
- `src/pages/shop/index.tsx`：导入 `useShare`，组件内调用 `useShare({ title:'购物商城 - 精选好物...', path:'/pages/shop/index', enableTimeline:true, enableCopyUrl:true })`
- 分类页和首页一样是 tabBar 页，三按钮全亮（好友/朋友圈/复制链接）
- 类型检查：零错误

## 修复收藏列表（图文不显示、价格不对）
- `src/api/shop/shopGoodsFavorite/model.ts`：扩展 `ShopGoodsFavorite` 接口，增加 `product?: { id, name, image, price, salePrice }` 嵌套字段（与秒杀/拼团模型一致）。后端 API 返回的嵌套商品数据会带 `product` 字段。
- `src/pages/user/favorite-list/index.tsx`：
  - 图片：`item.goodsImage` → `item.goodsImage || item.product?.image`
  - 价格：`item.salePrice`（市场价）→ `item.product?.price || item.salePrice`（到手价），当市场价与到手价不同时再显示划掉的市场价
- 类型检查：零错误
## 修复订单列表看到他人订单
- `src/pages/order/list.tsx`：导入 `useUser`，请求参数加 `userId: user?.id`。原代码请求 `pageShopOrder` 时没传 `userId`，导致后端返回所有人订单。
- `ShopOrderParam` 接口已有 `userId` 字段（见 `src/api/shop/shopOrder/model/index.ts:225`），后端按此过滤——只需前端补传。
- 类型检查：零错误