## 接口梳理（App 用户相关）
- 登录与绑定：
  - `POST /api/app/users/weixin/login`，请求含 `code`、`invite_code`；响应含 `token`、`user_id`、`avatar`、`nickname`、`invite_code`（.trae/documents/基于 Swagger 的 App 用户 API 汇总与 Uni-App 微信登录页面实现方案.md:5-10）
  - `POST /api/app/users/{user_id}/phone/bind`，请求含微信手机号 `code`；响应为标准成功（.trae/documents/基于 Swagger 的 App 用户 API 汇总与 Uni-App 微信登录页面实现方案.md:11-16）
- 用户资料与地址：
  - `PUT /api/app/users/{user_id}`（修改头像/昵称，`avatar`、`nickname`）（:19-22）
  - 地址列表/新增/删除/设默认（`:23-27`），新增请求含基本地址字段（`:25-27`）
- 积分与统计：
  - `GET /api/app/users/{user_id}/points/balance` 响应 `balance`（`:31-34`）
  - `GET /api/app/users/{user_id}/stats` 响应 `coupon_count`、`item_card_count`、`points_balance`（`:35-37`）
- 订单与卡券/道具：
  - 订单列表、优惠券、邀请、道具卡与使用记录（`:40-48`）

## 技术方案
- 网络层：
  - 方案A（推荐）复用 `alova` 客户端与生成器，统一 `Authorization` 与错误处理（`:51`）
  - 方案B 以 `uni.request` 封装最小所需接口（登录/绑定/统计），在请求头注入 `Bearer` token（`:71-72`）
- 平台与配置：
  - `baseURL` 指向后端 `http://127.0.0.1:9991`；在微信小程序后台配置合法域名与 HTTPS 证书（`:75`）
- 状态与路由：
  - `pages.json` 添加 `pages/login/index`；登录成功后 `uni.reLaunch` 到首页；用 `pinia` 管理 `isLogin`、`userInfo`、`points`（`:79`）
- 错误处理：
  - 按既有分类提示与重试策略，覆盖网络错误、超时、404/500、参数错误（`:83`）

## 页面实现（Uni-App Vue3）
- 结构：Logo/说明、`「微信登录」`按钮、`open-type="getPhoneNumber"` 授权按钮、加载与错误提示（`:57-58`）
- 流程：
  - 触发 `uni.login({ provider: 'weixin' })` 获取 `code` → 调用 `POST /api/app/users/weixin/login` → 持久化 `token`、`user_id`（`:61-62`）
  - 可选手机号绑定：`onGetPhoneNumber` 取 `code` → `POST /api/app/users/{user_id}/phone/bind`（`:63-64`）
  - 登录后拉取统计与积分余额更新首页（`:65-66`）

## 交付内容
- 新增 `pages/login/index.vue`（Composition API）含完整登录/绑定流程与错误提示（`:91-94`）
- 接入并配置网络层（复用 `alova` 或最小 `uni.request` 封装）
- 路由与 `pinia` 状态的最小接入

## 验证方法
- 在开发者工具/真机验证：`code` 获取、接口返回、`token/user_id` 存储、后续接口成功（`:87-88`）
- 输出必要的调试日志（不含敏感信息），观察错误分支与重试入口

## 执行步骤
1. 接入 Swagger JSON（`http://127.0.0.1:9991/swagger/v1/swagger.json`）同步生成或确认接口（`:99-101`）
2. 选定网络层方案并落地调用
3. 新增登录页面与交互逻辑
4. 调整路由与状态管理
5. 自测与联调，完成交付