# AI零售柜 - 智能视觉零售小程序 ## 项目概述 一个基于 **uni-app 3 + Vue 3 + TypeScript + Pinia** 的跨平台小程序,实现"AI智能零售柜 · 即拿即走"的无人零售体验。用户扫码开门 -> 取走商品 -> 关门 -> AI自动识别 -> 微信支付分扣款。 ## 技术栈 - **框架**: uni-app 3.0 (DCloud) - **核心**: Vue 3.5 + TypeScript + Vite 5 - **状态管理**: Pinia - **样式**: SCSS (自定义设计系统) - **目标平台**: 微信小程序 (主)、H5、支付宝小程序等 ## 目录结构 ``` haha-mp/ ├── src/ │ ├── api/ # API 接口层 │ │ ├── device.ts # 设备相关 │ │ ├── order.ts # 订单相关 │ │ ├── user.ts # 用户/登录 │ │ ├── payscore.ts # 微信支付分 │ │ ├── coupon.ts # 优惠券 │ │ ├── announcement.ts # 公告 │ │ ├── status.ts # 状态轮询 │ │ └── replenish.ts # 补货员 │ ├── pages/ # 页面 │ │ ├── index/ # 首页 (扫码入口) │ │ ├── shopping/ # 购物流程页 │ │ ├── products/ # 柜内商品陈列 │ │ ├── login/ # 登录 │ │ ├── my/ # 个人中心 │ │ ├── orders/ # 订单列表 │ │ ├── orderDetail/ # 订单详情 │ │ ├── refund/ # 退款 │ │ ├── payscore/ # 开通微信支付分 │ │ ├── coupons/ # 我的优惠券 │ │ ├── couponCenter/ # 领券中心 │ │ ├── announcement/ # 系统公告 │ │ ├── announcementDetail/ # 公告详情 │ │ ├── agreement/ # 用户协议/privacy │ │ └── replenish/ # 补货员绑定 │ ├── utils/ # 工具类 │ │ ├── config.ts # API配置 & 路径常量 │ │ ├── request.ts # HTTP请求封装 │ │ ├── auth.ts # 认证/token管理 │ │ ├── order.ts # 订单工具函数 │ │ ├── coupon.ts # 优惠券工具函数 │ │ └── logger.ts # 日志工具 │ ├── components/ # 公共组件 │ ├── styles/ # 样式 │ ├── static/ # 静态资源 │ ├── App.vue # 应用入口(启动逻辑/登录守卫) │ ├── main.ts # 入口文件 │ ├── pages.json # 页面路由配置 │ ├── manifest.json # 应用配置 │ └── uni.scss # 设计系统变量 ├── package.json ├── tsconfig.json └── index.html ``` ## 业务架构 ### 核心业务流程 1. **扫码开门**: 用户扫码 -> 检查登录 -> 检查微信支付分(需550+) -> 后端开门 -> 进入购物页 2. **选购过程**: 开门后60秒倒计时 -> 轮询设备状态等待关门 3. **关门结算**: 门关 -> 轮询AI识别结果 -> 轮询订单信息 -> 展示结算结果 4. **查看订单**: 订单列表(待支付/已完成/已取消) -> 订单详情 -> 退款(7天内) ### 页面路由 | 路径 | 功能 | 导航栏标题 | 免登录? | |------|------|-----------|---------| | /pages/index/index | 首页(扫码入口) | AI零售柜 | 否(扫码时校验) | | /pages/login/login | 微信手机号登录 | 登录 | 是 | | /pages/my/my | 个人中心 | (空) | 否 | | /pages/shopping/shopping | 购物流程 | 购物进行中 | 否 | | /pages/products/products | 柜内商品陈列 | 柜内商品 | 是 | | /pages/orders/orders | 订单列表 | 订单 | 否 | | /pages/orderDetail/orderDetail | 订单详情 | 订单详情 | 否 | | /pages/refund/refund | 退款 | 退款商品 | 否 | | /pages/payscore/enable | 开通微信支付分 | 开通微信支付分 | 否 | | /pages/coupons/coupons | 我的优惠券 | 我的优惠券 | 否 | | /pages/couponCenter/couponCenter | 领券中心 | 领券中心 | 否 | | /pages/announcement/announcement | 系统公告 | 系统公告 | 否 | | /pages/announcementDetail/announcementDetail | 公告详情 | 公告详情 | 否 | | /pages/agreement/serviceAgreement | 用户服务协议 | 用户服务协议 | 是 | | /pages/agreement/privacyPolicy | 隐私政策 | 隐私政策 | 是 | | /pages/replenish/bind | 补货员绑定 | 上货员绑定 | 是 | ### 后端API (dev环境) - **Base URL**: `https://dev-haha.kuaiyuman.cn/api` - 统一返回格式: `{ code: number, message: string, data?: T }` - 认证方式: header `accessToken` - 业务码: 200/0=成功, 401=未授权 ### API 模块 | 模块 | 主要接口 | 说明 | |------|---------|------| | **用户** | miniapp-phone, user-info, logout | 微信手机号一键登录 | | **设备** | scan-open, status, products/{id} | 扫码开门&商品陈列 | | **订单** | list, detail, cancel | 订单CRUD | | **支付分** | check-enable, enable, create, confirm-enable | 微信支付分开通&下单 | | **优惠券** | my, receive/{id}, available, usable, count | 优惠券领取&使用 | | **状态轮询** | device, recognize, order, all | 实时状态查询(轮询) | | **公告** | list, detail | 系统公告 | | **补货员** | login/wechat, login/bind, my-info | 补货员身份绑定 | ### 状态轮询机制 核心购物流程依赖轮询: - **设备状态**: 2秒间隔, 120秒超时 -> 等待关门 - **识别结果**: 1秒间隔, 60秒超时 -> AI识别商品 - **订单信息**: 1秒间隔, 60秒超时 -> 生成订单 ### 设计系统(uni.scss) - 主色: `#FFC107` (暖黄) - 风格: 极简留白 · 优雅动效 · 微交互 - 功能已开发占位: 会员卡、卡片、发票管理、常见问题、公众号信息 ### 辅助角色 - **补货员(Replenisher)**: 通过管理后台二维码绑定身份,独立登录体系 - **客服**: `400-0755-315`