Files
wechat_wc/review1.md
T
2026-07-27 14:54:21 +08:00

125 lines
7.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 智绘微刻小程序 — 交付总结 v2
> 本文档供**完全无上下文的新会话**阅读,记录本轮重构的完整交付成果。
> **日期**2026-07-27(第二次修改)
> **项目目录**`F:\weixin_wordc\`
> **技术栈**Taro 3.6.31 + React 18 + TypeScript + SCSS
---
## 一、历史修改回顾
### Batch 1(已完成)
见 review1.md 历史版本。核心完成:全局主题切换、字体系统、tabBar重组、商品详情页、设计清单、效果确认页、后端技术栈文档。
---
## 二、本轮修改任务 — 全部完成 ✅
| 序号 | 任务 | 状态 |
|------|------|------|
| 1 | 全局主题系统升级为 Context 模式(点击即所有页面同步)+ 纯色背景去掉条纹 | ✅ 完成 |
| 2 | 设计清单页面实时刷新(`onShow` 钩子保证切页即刷新) | ✅ 完成 |
| 3 | 微信登录系统(`wx.login` + `chooseAvatar` + `nickname` input | ✅ 完成 |
| 4 | 修复商品图片路径(相对路径改为根路径 `/img/xxx` + copy 配置) | ✅ 完成 |
| 5 | 删除 DIY 页品种选择卡片,直接进入工作台 | ✅ 完成 |
| 6 | 词云生成不再跳转 DIY,仅保存图片 | ✅ 完成 |
| 7 | DIY 贴纸系统(上传多张图/删除/拖动/缩放/碰撞检测) | ✅ 完成 |
| 8 | 订单详情页(淘宝风格:物流时间轴+地址+订单信息+设计预览) | ✅ 完成 |
| 9 | Profile 页 5 状态 2+3 布局(待设计/待付款/待发货/待收货/已完成) | ✅ 完成 |
| 10 | 登录拦截(需登录才能访问设计清单、订单等敏感页面) | ✅ 完成 |
| 11 | 订单列表页接收 profile 跳转的参数自动筛选 | ✅ 完成 |
| 12 | 所有 11 个页面接入 ThemeContext | ✅ 完成 |
---
## 三、文件变更清单
### 新建文件
| 文件 | 作用 |
|---|---|
| `src/context/ThemeContext.tsx` | 全局主题 Context + Provider + useThemeContext hook |
| `src/components/LoginModal/index.tsx` + `.scss` | 登录弹窗组件(含头像选择和昵称输入) |
| `src/pages/orderDetail/index.tsx` + `index.scss` + `index.json` + `index.config.ts` | 订单详情页(淘宝风格) |
### 修改的现有文件
| 文件 | 核心改动 |
|---|---|
| `src/app.tsx` | 根组件包裹 `<ThemeProvider>` |
| `src/app.scss` | 移除 `background-image` 条纹,改为纯色背景 |
| `src/app.config.ts` | 新增 `pages/orderDetail/index` 路由 |
| `src/hooks/useTheme.ts` | 改为基于 `useContext(ThemeContext)` 实现 |
| `src/components/ThemeToggle/index.tsx` | 接入 Context,触发 `theme:storageChanged` 全局事件 |
| `src/custom-tab-bar/index.tsx` | 移除 fixed 白色背景,支持跟随主题变量 |
| `src/utils/productConfig.ts` | 图片路径改为 `/img/xxx` 绝对根路径 |
| `src/types/index.ts` | 添加 `StickerItem` 接口,更新 `DesignItem``designData` 字段 |
| `config/index.js` | `copy` 规则增加 `{ from: 'src/img', to: 'img' }` |
| `src/pages/index/index.tsx` | 接入 `useThemeContext()` |
| `src/pages/product/index.tsx` | 接入 `useThemeContext()` |
| `src/pages/diy/index.tsx` | 重写:删除步骤1选品,改为贴纸系统(上传/删除/拖动/缩放/碰撞检测) |
| `src/pages/diy/index.scss` | 重写:支持贴纸列表、碰撞红色标注、控制栏 |
| `src/pages/checkout/index.tsx` | 支持展示贴纸列表的预览 |
| `src/pages/designList/index.tsx` | `onShow` 自动刷新,接入 Context |
| `src/pages/orders/index.tsx` | 读取 `orders:filter` 参数自动切换 Tab |
| `src/pages/profile/index.tsx` | 重写:5 状态 2+3 布局 + 登录弹窗 + 登录拦截 + Context |
| `src/pages/profile/index.scss` | 重写:支持 2+3 网格、登录弹窗样式 |
| `src/pages/service/index.tsx` | 接入 `useThemeContext()` |
| `src/pages/wordcloud/index.tsx` | 移除「前往个性化定制」按钮,仅保存图片 |
| `src/utils/store.ts` | 新增 `setUserInfo`/`getUserInfo` 暴露接口(mock openid |
---
## 四、编译验证结果
```bash
npx taro build --type weapp
```
-**Compiled successfully in 15.49s**
- ✅ 0 报错,0 ERROR
- ⚠️ 2 个 Warning(均为正常提示):
1. `AssetsOverSizeLimitWarning` — 实物照片体积较大(2~12MB PNG),不影响运行,上线前可压缩优化。
2. `NoAsyncChunksWarning` — Webpack 懒加载建议,不涉及错误。
---
## 五、关键踩坑记录
| 坑 | 现象 | 解法 |
|---|---|---|
| **全局主题不同步** | 切换后已打开页面不刷新 | 引入 `React.createContext``ThemeToggle` 切换时写入 Storage + `eventCenter.trigger('theme:storageChanged')`,各页面 `onShow` 时重新读取 |
| **设计清单切页不刷新** | 加入清单后切换页面看不到新条目 | 用 `Taro.getCurrentInstance().page.onShow` 代替 `eventCenter`,保证每次页面展现必触发 |
| **图片显示纯空白** | 微信小程序编译后资源路径错乱 | `productConfig.ts` 的图片路径改为 `/img/xxx` 绝对路径,并在 `config/index.js` copy 到 `dist/img` |
| **DIY 贴纸碰撞检测** | 两张贴纸贴在一起时无法阻止进入下一步 | 矩形边界框(AABB)碰撞检测,只要两个贴纸矩形相交即标红 `isOverlapping=true`,预览/完成时若存在 `hasOverlap=true` 则禁用提交 |
| **Profile 5 状态空间不够** | 单行 5 个状态拥挤 | 采用 2+3 两排布局:第一排 2 个(待设计/待付款),第二排 3 个(待发货/待收货/已完成),用虚线分隔+细线水平分隔 |
| **微信登录获取真实头像** | `wx.getUserInfo` 已不再返回真实头像和昵称 | 使用微信标准 `open-type="chooseAvatar"` + `input type="nickname"` 组件,让用户手动选择和填写 |
| **订单页自动筛选** | Profile 点击状态跳转后订单列表未自动切换 Tab | 跳转前 `Taro.setStorageSync('orders:filter', 'pending')`,订单页 `onShow` 时读取并应用 |
---
## 六、核心业务流(完整链路)
```
首页浏览品类 → 商品详情页(轮播图+价格+介绍)
→ 加入设计清单(弹窗选数量)→ 设计清单页(随时切页刷新)
→ 立即下单 → DIY 工作台(直接进入,无需选品)
→ 添加贴纸(相册/相机)→ 拖动调整位置 → 碰撞检测
→ 预览效果 → 确认完成 → 设计效果确认页
→ 弹窗确认下单 → 订单生成 → 订单列表/订单详情
→ 物流时间轴追踪 → 确认收货 → 完成
```
---
## 七、下一步建议(可选)
1. **后端接入**:当前 `openid` 为 mock 值,接入真实后端后替换 `wx.login``code` 换取真实 `openid`
2. **图片压缩**:上线前将 `src/img` 下的实物照片压缩到 500KB 以内,避免微信包体积超限。
3. **真机测试图片**:在微信开发者工具中预览,确认图片是否正常加载(路径已改为绝对路径+copy)。
4. **订单物流接口**:当前物流为静态 mock,接入后端后可实现真实物流轨迹查询。
---
*文档更新时间:2026-07-27*
*本轮重构 12 项核心目标全部完成,编译通过。*