Files
huangjingfen/docs/openclaw-frontend-tasks.md
panchengyong 9dd3dca21d docs: 新增前端开发规范文档 + Agent 执行任务清单
- frontend-new-pages-spec.md: 7 章开发规范,按业务模块组织(DB/前端/后端/测试),含 Mock 数据机制、改造复用页面规格、完整 mockData.js 定义
- openclaw-frontend-tasks.md: 74 个全生命周期任务(Phase 0-5),每个任务含完整 Agent Prompt,CP-01 检查点控制前后端阶段切换

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 14:07:55 +08:00

2429 lines
58 KiB
Markdown
Raw Permalink 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.
# 黄精粉健康商城 · 开发任务清单Agent 执行版)
> **配套文件**`docs/frontend-new-pages-spec.md`(开发规范)
> **执行主体**OpenClaw AI Agent
> **任务总数**74 个6 阶段)
> **版本**V2.0 · 2026年3月
---
## 文档说明
### 任务状态
| 状态 | 标记 | 说明 |
|------|------|------|
| pending | `[ ]` | 待执行 |
| in_progress | `[→]` | 执行中 |
| completed | `[✓]` | 已完成 |
| blocked | `[!]` | 被阻塞 |
### 阶段概览
| Phase | 名称 | 任务数 | 前置依赖 |
|-------|------|--------|----------|
| 0 | 基础设施 | 2 | — |
| 1 | 前端开发Mock 驱动) | 38 | Phase 0 |
| CP-01 | 前端评审检查点 | 1 | Phase 1 全部完成 |
| 2 | 数据库迁移 | 5 | CP-01 |
| 3 | 后端 API 开发 | 16 | Phase 2 |
| 4 | 前后端集成 | 5 | Phase 3 |
| 5 | 测试 | 8 | Phase 4 |
### 并行策略
- 同一 Stage 内标注"可并行"的任务可同时执行
- 不同 Stage 之间有依赖关系,必须按序执行
- Phase 1 完成后必须通过 CP-01 检查点才能进入 Phase 2
---
## Phase 0: 基础设施2 tasks
---
### P0-01: 创建 UniApp Mock 数据文件
| 属性 | 值 |
|------|------|
| Phase | 0 |
| Status | `[ ]` pending |
| Dependencies | 无 |
| Output | `pro_v3.5.1/view/uniapp/utils/hjfMockData.js` [NEW] |
**Agent Prompt:**
```
你正在为黄精粉健康商城项目创建 UniApp 端的 Mock 数据集中管理文件。
### 上下文
- 项目底座: CRMEB Pro v3.5,移动端使用 uni-app (Vue 2)
- 此文件为全新创建 [NEW]
- 所有 UniApp 前端页面的 Mock 数据统一在此文件中定义和导出
### 参考文件
- 开发规范: docs/frontend-new-pages-spec.md 第 7.1 节(完整的 Mock 数据定义)
### 开发规范
- 文件路径: pro_v3.5.1/view/uniapp/utils/hjfMockData.js
- 使用 ES6 命名导出 (export const)
- 按模块分区注释(公排/资产/会员/引导)
- 数据具有真实感:合理的金额(3600)、时间戳、状态分布
### 文件内容
按照 docs/frontend-new-pages-spec.md 第 7.1 节完整复制以下导出变量:
- MOCK_QUEUE_STATUS / MOCK_QUEUE_HISTORY
- MOCK_ASSETS_OVERVIEW / MOCK_POINTS_DETAIL / MOCK_CASH_DETAIL / MOCK_WITHDRAW_INFO
- MOCK_MEMBER_INFO / MOCK_TEAM_DATA / MOCK_TEAM_INCOME
- MOCK_GUIDE_DATA
### 验收标准
- [ ] 文件可被 import 正常引用
- [ ] 所有导出变量名与 spec 文档一致
- [ ] 数据字段完整、类型正确
```
---
### P0-02: 创建 Admin Mock 数据文件
| 属性 | 值 |
|------|------|
| Phase | 0 |
| Status | `[ ]` pending |
| Dependencies | 无 |
| Output | `pro_v3.5.1/view/admin/src/utils/hjfMockData.js` [NEW] |
**Agent Prompt:**
```
你正在为黄精粉健康商城项目创建 Admin 端的 Mock 数据集中管理文件。
### 上下文
- 项目底座: CRMEB Pro v3.5,管理后台使用 iView Admin
- 此文件为全新创建 [NEW]
### 参考文件
- 开发规范: docs/frontend-new-pages-spec.md 第 7.2 节(完整的 Admin Mock 数据定义)
### 开发规范
- 文件路径: pro_v3.5.1/view/admin/src/utils/hjfMockData.js
- 使用 ES6 命名导出
### 文件内容
按照 docs/frontend-new-pages-spec.md 第 7.2 节完整复制以下导出变量:
- MOCK_QUEUE_ORDER_LIST / MOCK_QUEUE_CONFIG / MOCK_QUEUE_FINANCE
- MOCK_POINTS_RELEASE_LOG
- MOCK_MEMBER_LIST / MOCK_MEMBER_CONFIG
### 验收标准
- [ ] 文件可被 import 正常引用
- [ ] 所有导出变量名与 spec 文档一致
```
---
## Phase 1: 前端开发38 tasks
---
### Stage 1A: API 模块 + Mock 集成6 tasks可并行
---
### P1A-01: UniApp API — hjfQueue.js
| 属性 | 值 |
|------|------|
| Phase | 1 |
| Stage | 1A |
| Status | `[ ]` pending |
| Dependencies | P0-01 |
| Output | `pro_v3.5.1/view/uniapp/api/hjfQueue.js` [NEW] |
**Agent Prompt:**
```
你正在为黄精粉健康商城创建公排模块的 UniApp API 文件。
### 上下文
- 项目底座: CRMEB Pro v3.5
- 技术栈: uni-app Vue 2
- 当前使用 Mock 数据 (USE_MOCK = true)
### 参考文件
- API 编写规范: pro_v3.5.1/view/uniapp/api/user.jsimport request + export function 模式)
- Mock 数据源: pro_v3.5.1/view/uniapp/utils/hjfMockData.js
- 完整规范: docs/frontend-new-pages-spec.md 第 2.2.1 节
### 开发规范
- 文件路径: pro_v3.5.1/view/uniapp/api/hjfQueue.js
- 导入: import request from "@/utils/request.js"
- 导入 Mock: import { MOCK_QUEUE_STATUS, MOCK_QUEUE_HISTORY } from '@/utils/hjfMockData.js'
- 顶部声明: const USE_MOCK = true
- 包含 mockResponse() 辅助函数(返回 Promise + 300ms 延迟 + JSON 深拷贝)
### 导出函数
1. getQueueStatus() — 获取公排状态
2. getQueueHistory(params) — 获取公排历史记录
### 验收标准
- [ ] USE_MOCK = true 时返回 Mock 数据
- [ ] USE_MOCK = false 时调用 request.get()
- [ ] mockResponse 返回与 request 相同的 { status, data } 结构
```
---
### P1A-02: UniApp API — hjfAssets.js
| 属性 | 值 |
|------|------|
| Phase | 1 |
| Stage | 1A |
| Status | `[ ]` pending |
| Dependencies | P0-01 |
| Output | `pro_v3.5.1/view/uniapp/api/hjfAssets.js` [NEW] |
**Agent Prompt:**
```
你正在创建资产模块的 UniApp API 文件。
### 参考文件
- API 规范: pro_v3.5.1/view/uniapp/api/user.js
- 完整规范: docs/frontend-new-pages-spec.md 第 3.2.1 节
### 开发规范
- 文件路径: pro_v3.5.1/view/uniapp/api/hjfAssets.js
- USE_MOCK = true + mockResponse() 模式
### 导出函数
1. getAssetsOverview() — 资产总览
2. getPointsDetail(params) — 积分明细
3. getCashDetail(params) — 现金流水明细
4. getWithdrawInfo() — 提现信息
### Mock 导入
MOCK_ASSETS_OVERVIEW, MOCK_POINTS_DETAIL, MOCK_CASH_DETAIL, MOCK_WITHDRAW_INFO
### 验收标准
- [ ] 4 个函数均正常导出
- [ ] Mock 模式下返回正确数据
```
---
### P1A-03: UniApp API — hjfMember.js
| 属性 | 值 |
|------|------|
| Phase | 1 |
| Stage | 1A |
| Status | `[ ]` pending |
| Dependencies | P0-01 |
| Output | `pro_v3.5.1/view/uniapp/api/hjfMember.js` [NEW] |
**Agent Prompt:**
```
你正在创建会员模块的 UniApp API 文件。
### 参考文件
- API 规范: pro_v3.5.1/view/uniapp/api/user.js
- 完整规范: docs/frontend-new-pages-spec.md 第 3.2.2 节
### 文件路径
pro_v3.5.1/view/uniapp/api/hjfMember.js
### 导出函数
1. getMemberInfo() — 会员信息
2. getTeamData(params) — 团队成员列表
3. getTeamIncome(params) — 推荐收益明细
### Mock 导入
MOCK_MEMBER_INFO, MOCK_TEAM_DATA, MOCK_TEAM_INCOME
### 验收标准
- [ ] 3 个函数均正常导出
- [ ] Mock 模式下返回正确数据
```
---
### P1A-04: Admin API — hjfQueue.js
| 属性 | 值 |
|------|------|
| Phase | 1 |
| Stage | 1A |
| Status | `[ ]` pending |
| Dependencies | P0-02 |
| Output | `pro_v3.5.1/view/admin/src/api/hjfQueue.js` [NEW] |
**Agent Prompt:**
```
你正在创建公排模块的 Admin API 文件。
### 参考文件
- Admin API 规范: pro_v3.5.1/view/admin/src/api/finance.jsimport request from '@/plugins/request' + request({url, method, params}) 模式)
- 完整规范: docs/frontend-new-pages-spec.md 第 5.2.1 节
### 文件路径
pro_v3.5.1/view/admin/src/api/hjfQueue.js
### 导出函数
1. queueOrderListApi(data) — 公排订单列表
2. queueConfigGetApi() — 获取公排配置
3. queueConfigSaveApi(data) — 保存公排配置
4. queueFinanceListApi(data) — 公排财务流水
### 注意
- Admin 端使用 request({url, method, params/data}) 模式,不是 request.get()
- Mock 数据从 '@/utils/hjfMockData.js' 导入
### 验收标准
- [ ] 4 个函数均正常导出
- [ ] Admin request 格式正确
```
---
### P1A-05: Admin API — hjfMember.js
| 属性 | 值 |
|------|------|
| Phase | 1 |
| Stage | 1A |
| Status | `[ ]` pending |
| Dependencies | P0-02 |
| Output | `pro_v3.5.1/view/admin/src/api/hjfMember.js` [NEW] |
**Agent Prompt:**
```
你正在创建会员模块的 Admin API 文件。
### 参考文件
- Admin API 规范: pro_v3.5.1/view/admin/src/api/finance.js
- 完整规范: docs/frontend-new-pages-spec.md 第 5.2.2 节
### 文件路径
pro_v3.5.1/view/admin/src/api/hjfMember.js
### 导出函数
1. memberListApi(data) — 会员管理列表
2. memberLevelUpdateApi(uid, data) — 等级调整
3. memberConfigGetApi() — 获取会员配置
4. memberConfigSaveApi(data) — 保存会员配置
### 验收标准
- [ ] 4 个函数均正常导出
```
---
### P1A-06: Admin API — hjfPoints.js
| 属性 | 值 |
|------|------|
| Phase | 1 |
| Stage | 1A |
| Status | `[ ]` pending |
| Dependencies | P0-02 |
| Output | `pro_v3.5.1/view/admin/src/api/hjfPoints.js` [NEW] |
**Agent Prompt:**
```
你正在创建积分模块的 Admin API 文件。
### 参考文件
- Admin API 规范: pro_v3.5.1/view/admin/src/api/finance.js
- 完整规范: docs/frontend-new-pages-spec.md 第 5.2.3 节
### 文件路径
pro_v3.5.1/view/admin/src/api/hjfPoints.js
### 导出函数
1. pointsReleaseLogApi(data) — 积分释放日志列表
### 验收标准
- [ ] 函数正常导出
```
---
### Stage 1B: 公共组件4 tasks依赖 1A可并行
---
### P1B-01: HjfQueueProgress 组件
| 属性 | 值 |
|------|------|
| Phase | 1 |
| Stage | 1B |
| Status | `[ ]` pending |
| Dependencies | P1A-01 |
| Output | `pro_v3.5.1/view/uniapp/components/HjfQueueProgress.vue` [NEW] |
**Agent Prompt:**
```
你正在创建公排进度组件。
### 上下文
- 技术栈: uni-app Vue 2 Options API
- 此组件为全新创建 [NEW]
### 参考文件
- 组件规范: docs/frontend-new-pages-spec.md 第 2.2.2 节
- 样式参考: pro_v3.5.1/view/uniapp/pages/users/user_money/index.vue渐变卡片内的统计数据展示
### 组件功能
- 显示当前批次进度条或环形图(如 2/4
- 显示下一个退款的排队序号
### Props
- currentCount: Number — 当前批次已入队数
- triggerMultiple: Number — 触发倍数(默认 4
- nextRefundNo: Number — 下一个退款的 queue_no
### 开发规范
- <style scoped lang="scss">
- 使用 CSS 变量 var(--view-theme) 作为进度条颜色
- rpx 单位
### 验收标准
- [ ] 进度条正确显示 currentCount / triggerMultiple
- [ ] 样式与 CRMEB 一致
```
---
### P1B-02: HjfAssetCard 组件
| 属性 | 值 |
|------|------|
| Phase | 1 |
| Stage | 1B |
| Status | `[ ]` pending |
| Dependencies | P1A-02 |
| Output | `pro_v3.5.1/view/uniapp/components/HjfAssetCard.vue` [NEW] |
**Agent Prompt:**
```
你正在创建三栏资产展示卡片组件。
### 参考文件
- 组件规范: docs/frontend-new-pages-spec.md 第 3.2.3 节
- 样式参考: pro_v3.5.1/view/uniapp/pages/users/user_money/index.vue.account 渐变卡片)
### 组件功能
- 渐变背景卡片linear-gradient 使用 CSS 变量)
- 三栏展示:现金余额(¥) / 待释放积分 / 已释放积分
- 今日预计释放数量
### Props
- nowMoney: String — 现金余额
- frozenPoints: Number — 待释放积分
- availablePoints: Number — 已释放积分
- todayRelease: Number — 今日预计释放
### 验收标准
- [ ] 渐变背景正确渲染
- [ ] 三栏数据正确展示
- [ ] 金额保留两位小数
```
---
### P1B-03: HjfMemberBadge 组件
| 属性 | 值 |
|------|------|
| Phase | 1 |
| Stage | 1B |
| Status | `[ ]` pending |
| Dependencies | P1A-03 |
| Output | `pro_v3.5.1/view/uniapp/components/HjfMemberBadge.vue` [NEW] |
**Agent Prompt:**
```
你正在创建会员等级徽章组件。
### 参考文件
- 组件规范: docs/frontend-new-pages-spec.md 第 3.2.4 节
### 组件功能
- 显示会员等级图标 + 等级名称
- 支持三种尺寸
### Props
- level: Number — 等级数字 (0-4)
- levelName: String — 等级名称(普通会员/创客/云店/服务商/分公司)
- size: String — 'small' / 'normal' / 'large'
### 等级颜色映射
- 0(普通): 灰色 #999
- 1(创客): 铜色 #CD7F32
- 2(云店): 银色 #C0C0C0
- 3(服务商): 金色 #FFD700
- 4(分公司): 紫色 #8B5CF6
### 验收标准
- [ ] 不同等级显示不同颜色
- [ ] 三种尺寸正确渲染
```
---
### P1B-04: HjfRefundNotice 组件
| 属性 | 值 |
|------|------|
| Phase | 1 |
| Stage | 1B |
| Status | `[ ]` pending |
| Dependencies | P1A-01 |
| Output | `pro_v3.5.1/view/uniapp/components/HjfRefundNotice.vue` [NEW] |
**Agent Prompt:**
```
你正在创建公排退款通知弹窗组件。
### 参考文件
- 组件规范: docs/frontend-new-pages-spec.md 第 2.2.3 节
### 组件功能
- 弹窗提示:恭喜!您的公排订单已退款
- 显示退款金额和订单号
- 确认按钮关闭弹窗
### Props
- visible: Boolean — 是否显示
- amount: Number — 退款金额
- orderId: String — 订单号
### Events
- @close — 关闭弹窗
### 验收标准
- [ ] 弹窗显示/隐藏正常
- [ ] 金额格式正确¥3,600.00
```
---
### Stage 1C: 新 UniApp 页面6 tasks依赖 1A+1B可并行
---
### P1C-01: P12 公排状态页
| 属性 | 值 |
|------|------|
| Phase | 1 |
| Stage | 1C |
| Status | `[ ]` pending |
| Dependencies | P1A-01, P1B-01 |
| Output | `pro_v3.5.1/view/uniapp/pages/queue/status.vue` [NEW] |
**Agent Prompt:**
```
你正在为黄精粉健康商城创建公排状态页面。
### 上下文
- 项目底座: CRMEB Pro v3.5
- 技术栈: UniApp Vue2 Options API
- 此页面为全新创建 [NEW]
- 数据来源: api/hjfQueue.js 中的 getQueueStatus()
- 当前使用 Mock 数据 (USE_MOCK=true)
### 参考文件
- 页面布局参考: pro_v3.5.1/view/uniapp/pages/users/user_money/index.vue渐变卡片头部 + 导航卡片结构)
- 列表翻页参考: pro_v3.5.1/view/uniapp/pages/users/user_bill/index.vuepage/limit/onReachBottom 模式)
- 组件引用: components/HjfQueueProgress.vue
- 完整规范: docs/frontend-new-pages-spec.md 第 2.2.4 节
### 开发规范
- 文件路径: pro_v3.5.1/view/uniapp/pages/queue/status.vue
- 样式: <style scoped lang="scss">
- 组件命名: Hjf 前缀
- 金额展示: 保留两位小数
### 页面功能
1. 顶部渐变卡片: 显示公排池总单数 + 当前进度 (HjfQueueProgress)
2. 我的排队列表: 显示 myOrders 数组
- 每条: 排队序号 | 金额(¥3600.00) | 状态标签 | 预计等待
- status=0 → 绿色"排队中"标签
- status=1 → 灰色"已退款"标签
3. 底部上拉加载更多 + 空状态
### Mock 数据
从 api/hjfQueue.js 的 getQueueStatus() 获取,数据结构见 spec 文档 2.2.4 节
### 验收标准
- [ ] 页面渲染无报错
- [ ] Mock 数据正确展示(总单数、列表、进度条)
- [ ] 状态标签颜色正确
- [ ] 样式与 CRMEB 页面风格一致
```
---
### P1C-02: P13 公排历史页
| 属性 | 值 |
|------|------|
| Phase | 1 |
| Stage | 1C |
| Status | `[ ]` pending |
| Dependencies | P1A-01 |
| Output | `pro_v3.5.1/view/uniapp/pages/queue/history.vue` [NEW] |
**Agent Prompt:**
```
你正在创建公排历史记录页面。
### 参考文件
- 列表页模式: pro_v3.5.1/view/uniapp/pages/users/user_bill/index.vueTab 筛选 + 按日期分组 + 上拉加载)
- 完整规范: docs/frontend-new-pages-spec.md 第 2.2.5 节
### 文件路径
pro_v3.5.1/view/uniapp/pages/queue/history.vue
### 页面功能
1. Tab 筛选: 全部 / 排队中(status=0) / 已退款(status=1)
2. 按日期分组的列表(使用 time_key 字段分组)
3. 每条记录: 订单号 | 金额 | 退款时间 | 批次号
4. 上拉加载更多 (onReachBottom)
### Mock 数据
从 api/hjfQueue.js 的 getQueueHistory() 获取
### 验收标准
- [ ] Tab 切换正常过滤
- [ ] 按日期分组展示
- [ ] 上拉加载更多正常
```
---
### P1C-03: P14 公排规则页
| 属性 | 值 |
|------|------|
| Phase | 1 |
| Stage | 1C |
| Status | `[ ]` pending |
| Dependencies | 无 |
| Output | `pro_v3.5.1/view/uniapp/pages/queue/rules.vue` [NEW] |
**Agent Prompt:**
```
你正在创建公排规则说明页面(纯静态页面)。
### 参考文件
- 完整规范: docs/frontend-new-pages-spec.md 第 2.2.6 节
- 业务规则: docs/PRD_V2.md 第 3.1 节(公排机制规则)
### 文件路径
pro_v3.5.1/view/uniapp/pages/queue/rules.vue
### 页面功能
1. 公排机制图示(进四退一流程图,可用 CSS 绘制简单流程)
2. 规则条款列表(有序列表)
3. 常见问题 FAQ 手风琴(点击展开/折叠)
### 内容要点
- 每笔报单商品订单 3600 元,付款后进入公排池
- 全局按付款时间排序,每进 4 单退 1 单
- 退款金额进入现金余额可提现7%手续费)
- 一次买多单拆分为独立订单
### 验收标准
- [ ] 规则内容完整准确
- [ ] FAQ 手风琴交互正常
- [ ] 无需后端 API
```
---
### P1C-04: P15 资产总览页
| 属性 | 值 |
|------|------|
| Phase | 1 |
| Stage | 1C |
| Status | `[ ]` pending |
| Dependencies | P1A-02, P1B-02 |
| Output | `pro_v3.5.1/view/uniapp/pages/assets/index.vue` [NEW] |
**Agent Prompt:**
```
你正在创建资产总览页面。
### 参考文件
- 页面布局: pro_v3.5.1/view/uniapp/pages/users/user_money/index.vue渐变卡片 + 导航卡片 + 推荐区)
- 完整规范: docs/frontend-new-pages-spec.md 第 3.2.5 节
### 文件路径
pro_v3.5.1/view/uniapp/pages/assets/index.vue
### 页面功能
1. HjfAssetCard 三栏资产卡片(渐变背景)
2. 快捷导航卡片:
- 现金余额 → 提现页 (pages/users/user_cash/index)
- 待释放积分 → 积分明细 (pages/assets/points_detail)
- 已释放积分 → 积分明细
- 公排记录 → 公排状态页 (pages/queue/status)
3. 今日释放提示
### Mock 数据
从 api/hjfAssets.js 的 getAssetsOverview() 获取
### 验收标准
- [ ] 三栏资产正确展示
- [ ] 导航卡片点击跳转正确
- [ ] 渐变背景与 CRMEB 风格一致
```
---
### P1C-05: P18 积分明细页
| 属性 | 值 |
|------|------|
| Phase | 1 |
| Stage | 1C |
| Status | `[ ]` pending |
| Dependencies | P1A-02 |
| Output | `pro_v3.5.1/view/uniapp/pages/assets/points_detail.vue` [NEW] |
**Agent Prompt:**
```
你正在创建积分明细页面。
### 参考文件
- 列表页模式: pro_v3.5.1/view/uniapp/pages/users/user_bill/index.vueTab 筛选 + 分组列表 + 翻页)
- 完整规范: docs/frontend-new-pages-spec.md 第 3.2.6 节
### 文件路径
pro_v3.5.1/view/uniapp/pages/assets/points_detail.vue
### 页面功能
1. Tab 筛选: 全部 / 直推奖励(reward_direct) / 伞下奖励(reward_umbrella) / 每日释放(release) / 消费(consume)
2. 每条: 标题 | 积分数(± 前缀) | 状态(待释放/已释放) | 时间
3. pm=1 显示绿色 +pm=0 显示红色 -
4. 上拉加载更多
### Mock 数据
从 api/hjfAssets.js 的 getPointsDetail() 获取
### 验收标准
- [ ] Tab 筛选正确过滤
- [ ] 积分收支方向颜色正确
- [ ] 按日期分组展示
```
---
### P1C-06: P23 新用户引导页
| 属性 | 值 |
|------|------|
| Phase | 1 |
| Stage | 1C |
| Status | `[ ]` pending |
| Dependencies | P0-01 |
| Output | `pro_v3.5.1/view/uniapp/pages/guide/hjf_intro.vue` [NEW] |
**Agent Prompt:**
```
你正在创建新用户引导页面。
### 参考文件
- 完整规范: docs/frontend-new-pages-spec.md 第 4.2.1 节
### 文件路径
pro_v3.5.1/view/uniapp/pages/guide/hjf_intro.vue
### 页面功能
1. 轮播引导swiper 组件3 屏)
- 第1屏: 平台介绍
- 第2屏: 公排规则图示
- 第3屏: 会员积分说明 + "立即开始"按钮
2. 底部指示器
3. 右上角"跳过"按钮
4. navigationStyle: custom自定义导航栏
### Mock 数据
从 hjfMockData.js 的 MOCK_GUIDE_DATA 获取幻灯片配置
### 验收标准
- [ ] 轮播滑动正常
- [ ] 跳过/立即开始按钮跳转首页
- [ ] 自定义导航栏适配刘海屏
```
---
### Stage 1D: 改造 UniApp 页面7 tasks依赖 1A+1B
---
### P1D-01: 首页改造
| 属性 | 值 |
|------|------|
| Phase | 1 |
| Stage | 1D |
| Status | `[ ]` pending |
| Dependencies | P1A-01 |
| Output | `pro_v3.5.1/view/uniapp/pages/index/index.vue` [MOD] |
**Agent Prompt:**
```
你正在改造首页,在商品卡片上增加报单商品角标。
### 参考文件
- 改造规范: docs/frontend-new-pages-spec.md 第 6.1.1 节
- 原始文件: pro_v3.5.1/view/uniapp/pages/index/index.vue
### 改动点
1. 在商品卡片 template 中根据 is_queue_goods 字段显示"参与公排"角标
2. 新增 .queue-badge 样式(绝对定位右上角,绿色/金色背景)
### 注意事项
- 首页使用 DIY 架构,商品卡片可能通过组件渲染
- 不要修改 DIY 核心逻辑,仅在商品卡片层增加角标判断
- 保持现有功能完整不变
### 验收标准
- [ ] 报单商品显示角标
- [ ] 普通商品不显示角标
- [ ] 原有功能不受影响
```
---
### P1D-02: 商品详情改造
| 属性 | 值 |
|------|------|
| Phase | 1 |
| Stage | 1D |
| Status | `[ ]` pending |
| Dependencies | P1A-01 |
| Output | 商品详情页 [MOD] |
**Agent Prompt:**
```
你正在改造商品详情页,增加支付方式选择功能。
### 参考文件
- 改造规范: docs/frontend-new-pages-spec.md 第 6.1.2 节
### 改动点
1. 购买弹窗中增加支付方式选择区域(单选按钮组)
2. data() 新增 payMethod: 'wechat'
3. 提交订单时传递 pay_type 参数
4. 报单商品显示"公排商品"标签
5. 报单商品不显示积分支付选项
### 验收标准
- [ ] 报单商品只显示微信/支付宝/余额
- [ ] 普通商品根据 allow_pay_types 显示
- [ ] 选择支付方式后正确传参
```
---
### P1D-03: 购买流程改造
| 属性 | 值 |
|------|------|
| Phase | 1 |
| Stage | 1D |
| Status | `[ ]` pending |
| Dependencies | P1A-01 |
| Output | 订单确认页 + 支付成功页 [MOD] |
**Agent Prompt:**
```
你正在改造购买流程,增加多单拆分提示和公排入队提示。
### 参考文件
- 改造规范: docs/frontend-new-pages-spec.md 第 6.1.3 节
### 改动点
1. 订单确认页: 报单商品数量>1 时显示"将拆分为 N 个独立公排订单"提示
2. 支付成功页: 报单商品支付成功后显示"已加入公排"提示 + 跳转公排状态按钮
### 验收标准
- [ ] 多单提示正确显示
- [ ] 支付成功后公排提示正确
- [ ] 普通商品不显示公排相关提示
```
---
### P1D-04: 我的订单改造
| 属性 | 值 |
|------|------|
| Phase | 1 |
| Stage | 1D |
| Status | `[ ]` pending |
| Dependencies | P1A-01 |
| Output | 订单详情页 [MOD] |
**Agent Prompt:**
```
你正在改造订单详情页,增加公排状态展示。
### 参考文件
- 改造规范: docs/frontend-new-pages-spec.md 第 6.1.4 节
### 改动点
1. 订单详情 template 新增公排状态区域(排队序号/状态/预计等待)
2. data() 新增 queueInfo 对象
3. 调用 getQueueStatus() 获取该订单的公排信息Mock 阶段用固定数据)
### 验收标准
- [ ] 报单商品订单显示公排状态
- [ ] 普通商品订单不显示公排区域
```
---
### P1D-05: 推荐页改造
| 属性 | 值 |
|------|------|
| Phase | 1 |
| Stage | 1D |
| Status | `[ ]` pending |
| Dependencies | P1A-03 |
| Output | `pro_v3.5.1/view/uniapp/pages/users/user_spread_money/index.vue` [MOD] |
**Agent Prompt:**
```
你正在改造推荐收益页面,将佣金替换为积分奖励。
### 参考文件
- 改造规范: docs/frontend-new-pages-spec.md 第 6.1.5 节
- 原始文件: pro_v3.5.1/view/uniapp/pages/users/user_spread_money/index.vue
### 改动点
1. 页面标题: "推广佣金" → "推荐收益"
2. 金额展示: 佣金金额(¥) → 积分数量(不带¥符号)
3. API 调用: 替换为 getTeamIncome()
4. 列表项: 显示积分来源(直推/伞下) + 积分状态(待释放)
### 验收标准
- [ ] 标题显示"推荐收益"
- [ ] 列表显示积分而非金额
- [ ] Mock 数据正确展示
```
---
### P1D-06: 提现页改造
| 属性 | 值 |
|------|------|
| Phase | 1 |
| Stage | 1D |
| Status | `[ ]` pending |
| Dependencies | P1A-02 |
| Output | `pro_v3.5.1/view/uniapp/pages/users/user_cash/index.vue` [MOD] |
**Agent Prompt:**
```
你正在改造提现页面增加7%手续费实时计算。
### 参考文件
- 改造规范: docs/frontend-new-pages-spec.md 第 6.1.6 节
- 原始文件: pro_v3.5.1/view/uniapp/pages/users/user_cash/index.vue
### 改动点
1. 提现金额输入区域下方新增: 「手续费¥XX.XX7%| 实际到账¥XX.XX」
2. computed 新增: feeAmount = 输入金额 × 0.07, actualAmount = 输入金额 × 0.93
3. 提交逻辑传递 fee_rate 参数
### 验收标准
- [ ] 输入 1000 → 显示手续费 ¥70.00 / 实际到账 ¥930.00
- [ ] 金额低于最低提现额时提示
- [ ] 手续费实时更新
```
---
### P1D-07: 个人中心改造
| 属性 | 值 |
|------|------|
| Phase | 1 |
| Stage | 1D |
| Status | `[ ]` pending |
| Dependencies | P1A-03, P1B-03 |
| Output | `pro_v3.5.1/view/uniapp/pages/user/index.vue` [MOD] |
**Agent Prompt:**
```
你正在改造个人中心页面,增加会员等级徽章和资产入口。
### 参考文件
- 改造规范: docs/frontend-new-pages-spec.md 第 6.1.7 节
- 原始文件: pro_v3.5.1/view/uniapp/pages/user/index.vueDIY 架构)
### 改动点
1. 用户信息区: 引入 HjfMemberBadge 显示会员等级
2. DIY 菜单数据: 增加"我的资产"、"公排查询"导航项
3. import: 导入 getMemberInfo() 和 HjfMemberBadge
4. onShow: 合并调用 getMemberInfo() 获取等级信息
### 注意事项
- 个人中心使用 DIY 架构(数据驱动),需理解 diyData 结构
- 使用 provide/inject 模式传递方法
- 不要破坏现有的 DIY 菜单结构
### 验收标准
- [ ] 会员等级徽章正确显示
- [ ] "我的资产"点击跳转 pages/assets/index
- [ ] "公排查询"点击跳转 pages/queue/status
- [ ] 原有 DIY 功能不受影响
```
---
### Stage 1E: Admin 新页面6 tasks依赖 1A可并行
---
### P1E-01: 公排订单管理页
| 属性 | 值 |
|------|------|
| Phase | 1 |
| Stage | 1E |
| Status | `[ ]` pending |
| Dependencies | P1A-04 |
| Output | `pro_v3.5.1/view/admin/src/pages/hjf/queueOrder/index.vue` [NEW] |
**Agent Prompt:**
```
你正在创建公排订单管理页面。
### 参考文件
- 列表页模式: pro_v3.5.1/view/admin/src/pages/finance/commission/index.vueCard + Form + Table + Page 模式)
- API: pro_v3.5.1/view/admin/src/api/hjfQueue.js
- 完整规范: docs/frontend-new-pages-spec.md 第 5.2.4 节
### 文件路径
pro_v3.5.1/view/admin/src/pages/hjf/queueOrder/index.vue
### 页面功能
1. 搜索区: 用户昵称/ID + 状态筛选(全部/排队中/已退款) + 日期范围
2. 数据表格: columns 见 spec 5.2.4 节
3. 分页组件
4. 导出功能(可选)
### formValidate 结构
{ nickname: '', status: '', start_time: '', end_time: '', page: 1, limit: 20 }
### 验收标准
- [ ] 表格正确展示 Mock 数据
- [ ] 搜索筛选正常工作
- [ ] 分页正常
```
---
### P1E-02: 公排财务流水页
| 属性 | 值 |
|------|------|
| Phase | 1 |
| Stage | 1E |
| Status | `[ ]` pending |
| Dependencies | P1A-04 |
| Output | `pro_v3.5.1/view/admin/src/pages/hjf/queueFinance/index.vue` [NEW] |
**Agent Prompt:**
```
你正在创建公排财务流水页面。
### 参考文件
- 列表页模式: pro_v3.5.1/view/admin/src/pages/finance/commission/index.vue
- 完整规范: docs/frontend-new-pages-spec.md 第 5.2.5 节
### 文件路径
pro_v3.5.1/view/admin/src/pages/hjf/queueFinance/index.vue
### 页面功能
1. 搜索区: 用户昵称/ID + 日期范围
2. 顶部统计: 退款总额
3. 数据表格: 用户 | 批次号 | 金额 | 排队序号 | 退款时间
### 验收标准
- [ ] 表格展示退款流水
- [ ] 统计数据正确
```
---
### P1E-03: 积分释放日志页
| 属性 | 值 |
|------|------|
| Phase | 1 |
| Stage | 1E |
| Status | `[ ]` pending |
| Dependencies | P1A-06 |
| Output | `pro_v3.5.1/view/admin/src/pages/hjf/pointsLog/index.vue` [NEW] |
**Agent Prompt:**
```
你正在创建积分释放日志页面。
### 参考文件
- 列表页模式: pro_v3.5.1/view/admin/src/pages/finance/commission/index.vue
- 完整规范: docs/frontend-new-pages-spec.md 第 5.2.6 节
### 文件路径
pro_v3.5.1/view/admin/src/pages/hjf/pointsLog/index.vue
### 页面功能
1. 搜索区: 用户昵称/ID + 日期范围
2. 顶部统计: 今日释放总量 / 今日释放用户数
3. 数据表格: 用户 | 释放前 | 释放量 | 释放后 | 日期
### 验收标准
- [ ] 表格正确展示
- [ ] 顶部统计 statistics 字段正确显示
```
---
### P1E-04: 公排参数配置页
| 属性 | 值 |
|------|------|
| Phase | 1 |
| Stage | 1E |
| Status | `[ ]` pending |
| Dependencies | P1A-04 |
| Output | `pro_v3.5.1/view/admin/src/pages/hjf/queueConfig/index.vue` [NEW] |
**Agent Prompt:**
```
你正在创建公排参数配置页面(表单页,非列表页)。
### 参考文件
- 完整规范: docs/frontend-new-pages-spec.md 第 5.2.7 节
### 文件路径
pro_v3.5.1/view/admin/src/pages/hjf/queueConfig/index.vue
### 页面功能
1. 表单项:
- 公排触发倍数 (InputNumber, 默认 4)
- 积分日释放比例 (InputNumber, 千分之 X, 默认 4)
- 提现手续费率 (InputNumber, 百分比, 默认 7)
2. 保存按钮 → 调用 queueConfigSaveApi()
3. 页面加载时调用 queueConfigGetApi() 填充表单
### 验收标准
- [ ] 表单正确加载 Mock 配置数据
- [ ] 保存按钮调用正确 API
- [ ] 数值输入合法性校验
```
---
### P1E-05: 会员等级配置页
| 属性 | 值 |
|------|------|
| Phase | 1 |
| Stage | 1E |
| Status | `[ ]` pending |
| Dependencies | P1A-05 |
| Output | `pro_v3.5.1/view/admin/src/pages/hjf/memberConfig/index.vue` [NEW] |
**Agent Prompt:**
```
你正在创建会员等级配置页面(表单页)。
### 参考文件
- 完整规范: docs/frontend-new-pages-spec.md 第 5.2.8 节
### 文件路径
pro_v3.5.1/view/admin/src/pages/hjf/memberConfig/index.vue
### 页面功能
1. 分区表单:
- 升级门槛区: 创客/云店/服务商/分公司 各自的门槛值
- 直推奖励区: 各等级直推积分奖励
- 伞下奖励区: 各等级伞下积分奖励
2. 保存按钮 → 调用 memberConfigSaveApi()
3. 页面加载时调用 memberConfigGetApi()
### 验收标准
- [ ] 表单正确加载 Mock 配置
- [ ] 所有等级配置项可编辑
```
---
### P1E-06: 会员管理页
| 属性 | 值 |
|------|------|
| Phase | 1 |
| Stage | 1E |
| Status | `[ ]` pending |
| Dependencies | P1A-05 |
| Output | `pro_v3.5.1/view/admin/src/pages/hjf/memberLevel/index.vue` [NEW] |
**Agent Prompt:**
```
你正在创建会员管理页面。
### 参考文件
- 列表页模式: pro_v3.5.1/view/admin/src/pages/finance/commission/index.vue
- 完整规范: docs/frontend-new-pages-spec.md 第 5.2.9 节
### 文件路径
pro_v3.5.1/view/admin/src/pages/hjf/memberLevel/index.vue
### 页面功能
1. 搜索区: 昵称/ID + 等级筛选(下拉) + 不考核筛选
2. 数据表格: 用户信息 | 等级 | 直推数 | 伞下业绩 | 待释放积分 | 已释放积分 | 余额 | 操作
3. 操作列: 调整等级(弹窗选择) / 设置不考核(确认弹窗)
4. 弹窗: 等级选择 Select + 确认按钮
### 验收标准
- [ ] 表格正确展示会员列表
- [ ] 等级筛选正常
- [ ] 等级调整弹窗可用
```
---
### Stage 1F: 路由注册7 tasks
---
### P1F-01: UniApp pages.json — 公排模块
| 属性 | 值 |
|------|------|
| Phase | 1 |
| Stage | 1F |
| Status | `[ ]` pending |
| Dependencies | P1C-01, P1C-02, P1C-03 |
| Output | `pro_v3.5.1/view/uniapp/pages.json` [MOD] |
**Agent Prompt:**
```
在 pages.json 中注册公排模块的 3 个页面路由。
### 新增路由
参考 docs/frontend-new-pages-spec.md 第 2.2.7 节:
- pages/queue/status (公排状态)
- pages/queue/history (公排记录)
- pages/queue/rules (公排规则)
### 注意
- 可以在 subPackages 中创建新的分包,或在 pages 数组中直接添加
- 保持与现有路由格式一致
### 验收标准
- [ ] 三个页面路由可正常访问
```
---
### P1F-02: UniApp pages.json — 资产模块
| 属性 | 值 |
|------|------|
| Phase | 1 |
| Stage | 1F |
| Status | `[ ]` pending |
| Dependencies | P1C-04, P1C-05 |
| Output | `pro_v3.5.1/view/uniapp/pages.json` [MOD] |
**Agent Prompt:**
```
在 pages.json 中注册资产模块的 2 个页面路由。
### 新增路由
参考 docs/frontend-new-pages-spec.md 第 3.2.7 节:
- pages/assets/index (我的资产)
- pages/assets/points_detail (积分明细)
### 验收标准
- [ ] 两个页面路由可正常访问
```
---
### P1F-03: UniApp pages.json — 引导页
| 属性 | 值 |
|------|------|
| Phase | 1 |
| Stage | 1F |
| Status | `[ ]` pending |
| Dependencies | P1C-06 |
| Output | `pro_v3.5.1/view/uniapp/pages.json` [MOD] |
**Agent Prompt:**
```
在 pages.json 中注册引导页路由。
### 新增路由
参考 docs/frontend-new-pages-spec.md 第 4.2.2 节:
- pages/guide/hjf_intro (新用户引导, navigationStyle: custom)
### 验收标准
- [ ] 引导页路由可正常访问
- [ ] 自定义导航栏生效
```
---
### P1F-04: Admin 路由 — hjfQueue.js
| 属性 | 值 |
|------|------|
| Phase | 1 |
| Stage | 1F |
| Status | `[ ]` pending |
| Dependencies | P1E-01, P1E-02, P1E-04 |
| Output | `pro_v3.5.1/view/admin/src/router/modules/hjfQueue.js` [NEW] |
**Agent Prompt:**
```
创建 Admin 端 HJF 模块的路由文件。
### 参考文件
- 路由规范: pro_v3.5.1/view/admin/src/router/modules/finance.jsBasicLayout + pre 前缀 + auth 权限)
- 完整规范: docs/frontend-new-pages-spec.md 第 5.2.10 节
### 文件路径
pro_v3.5.1/view/admin/src/router/modules/hjfQueue.js
### 路由定义
按照 spec 5.2.10 节完整定义,包含 6 个子路由:
- hjf/queue/order (公排订单)
- hjf/queue/finance (公排财务)
- hjf/queue/config (公排配置)
- hjf/points/log (积分日志)
- hjf/member/config (会员配置)
- hjf/member/level (会员管理)
### 验收标准
- [ ] 路由格式与现有 finance.js 一致
- [ ] 使用 BasicLayout + 动态 import
```
---
### P1F-05: Admin 路由模块注册
| 属性 | 值 |
|------|------|
| Phase | 1 |
| Stage | 1F |
| Status | `[ ]` pending |
| Dependencies | P1F-04 |
| Output | `pro_v3.5.1/view/admin/src/router/modules/index.js` [MOD] |
**Agent Prompt:**
```
在 Admin 路由入口文件中导入并注册 hjfQueue 路由模块。
### 参考文件
- 路由入口: pro_v3.5.1/view/admin/src/router/modules/index.js查看现有路由模块如何注册
### 改动点
1. 导入 hjfQueue 模块: import hjfQueue from './hjfQueue'
2. 在导出的路由数组中加入 hjfQueue
### 验收标准
- [ ] HJF 路由模块正常加载
- [ ] 菜单中可见 HJF 相关页面
```
---
### P1F-06: Admin finance.js 路由追加(如需要)
| 属性 | 值 |
|------|------|
| Phase | 1 |
| Stage | 1F |
| Status | `[ ]` pending |
| Dependencies | P1E-03 |
| Output | 评估是否需要修改 `router/modules/finance.js` [评估] |
**Agent Prompt:**
```
评估是否需要在现有 finance.js 路由中追加积分日志页路由。
### 判断依据
- 如果 P1F-04 已经将所有 HJF 页面(包括积分日志)放在统一的 hjfQueue.js 路由模块中,则此任务无需执行
- 如果积分日志更适合放在 finance 模块下,则在 finance.js 的 children 中追加子路由
### 验收标准
- [ ] 确认积分日志页路由可访问
```
---
### P1F-07: Admin user.js 路由追加(如需要)
| 属性 | 值 |
|------|------|
| Phase | 1 |
| Stage | 1F |
| Status | `[ ]` pending |
| Dependencies | P1E-06 |
| Output | 评估是否需要修改 `router/modules/user.js` [评估] |
**Agent Prompt:**
```
评估是否需要在现有 user.js 路由中追加会员管理页路由。
### 判断依据
- 如果 P1F-04 已经将会员管理放在 hjfQueue.js 路由模块中,则此任务无需执行
- 如果会员管理更适合放在 user 模块下,则追加
### 验收标准
- [ ] 确认会员管理页路由可访问
```
---
### Stage 1G: Admin 改造页面2 tasks
---
### P1G-01: 用户管理改造
| 属性 | 值 |
|------|------|
| Phase | 1 |
| Stage | 1G |
| Status | `[ ]` pending |
| Dependencies | P1A-05 |
| Output | `pro_v3.5.1/view/admin/src/pages/user/list/index.vue` [MOD] |
**Agent Prompt:**
```
你正在改造 Admin 用户管理页面,增加等级调整和不考核标记。
### 参考文件
- 改造规范: docs/frontend-new-pages-spec.md 第 6.2.1 节
- 原始文件: pro_v3.5.1/view/admin/src/pages/user/list/index.vue
### 改动点
1. columns 新增: "会员等级"列slot 渲染等级名称)
2. columns 新增: "不考核"列Tag 标记)
3. 操作列新增: "调整等级"按钮(弹窗 Select
4. 操作列新增: "设置不考核"开关
5. import 新增: memberLevelUpdateApi
6. methods 新增: handleLevelChange / handleNoAssess
### 注意事项
- 不要删除现有的操作按钮
- 等级弹窗使用 iView Modal + Select 组件
### 验收标准
- [ ] 等级列正确显示
- [ ] 调整等级弹窗可用
- [ ] 原有功能不受影响
```
---
### P1G-02: 商品管理改造
| 属性 | 值 |
|------|------|
| Phase | 1 |
| Stage | 1G |
| Status | `[ ]` pending |
| Dependencies | P1A-04 |
| Output | 商品编辑页面 [MOD] |
**Agent Prompt:**
```
你正在改造 Admin 商品管理页面,增加报单商品标记和支付方式配置。
### 参考文件
- 改造规范: docs/frontend-new-pages-spec.md 第 6.2.2 节
### 改动点
1. 商品编辑表单新增: "报单商品"开关 (is_queue_goods, Switch 组件)
2. 商品编辑表单新增: "支付方式"多选框组 (allow_pay_types, CheckboxGroup)
3. 保存逻辑: 传递 is_queue_goods + allow_pay_types
4. 商品列表新增: "报单"标记列
### 规则
- 当 is_queue_goods=1 时,自动禁用积分支付选项
### 验收标准
- [ ] 报单商品开关可切换
- [ ] 支付方式多选框正确联动
- [ ] 商品列表显示报单标记
```
---
## ★ CHECKPOINT CP-01: 前端评审确认 ★
| 属性 | 值 |
|------|------|
| Phase | CP |
| Status | `[ ]` pending |
| Dependencies | Phase 1 全部完成 |
| Gate | 用户确认后才能进入 Phase 2 |
**检查清单**
- [ ] **UniApp 新页面**P12/P13/P14/P15/P18/P23 均可用 Mock 数据浏览
- [ ] **UniApp 改造页面**:首页角标、商品详情支付方式、订单公排状态、推荐积分、提现手续费、个人中心徽章 均正常显示
- [ ] **Admin 新页面**6 个管理页面均可用 Mock 数据浏览
- [ ] **Admin 改造页面**:用户管理等级列、商品管理报单标记 均正常
- [ ] **路由**:所有新页面路由可正常访问
- [ ] **组件**HjfQueueProgress / HjfAssetCard / HjfMemberBadge / HjfRefundNotice 均正常渲染
**确认后**:用户在此处标记 `[✓]`,解锁 Phase 2。
---
## Phase 2: 数据库迁移5 tasks依赖 CP-01
---
### P2-01: 创建 eb_queue_pool 表
| 属性 | 值 |
|------|------|
| Phase | 2 |
| Status | `[ ]` pending |
| Dependencies | CP-01 |
| Output | `database/migrations/20260307_create_eb_queue_pool.php` [NEW] |
**Agent Prompt:**
```
创建公排池数据库表。
### SQL
参考 docs/frontend-new-pages-spec.md 第 2.1.1 节的建表 SQL。
### 索引
- idx_uid(uid)
- idx_status_queue_no(status, queue_no)
- idx_trigger_batch(trigger_batch)
- idx_add_time(add_time)
### 验收标准
- [ ] 迁移文件可正常执行
- [ ] 表结构与 spec 一致
```
---
### P2-02: 创建 eb_points_release_log 表
| 属性 | 值 |
|------|------|
| Phase | 2 |
| Status | `[ ]` pending |
| Dependencies | CP-01 |
| Output | `database/migrations/20260307_create_eb_points_release_log.php` [NEW] |
**Agent Prompt:**
```
创建积分释放日志表。
### SQL
参考 docs/frontend-new-pages-spec.md 第 3.1.2 节的建表 SQL。
### 验收标准
- [ ] 迁移文件可正常执行
```
---
### P2-03: ALTER eb_user 添加 4 字段
| 属性 | 值 |
|------|------|
| Phase | 2 |
| Status | `[ ]` pending |
| Dependencies | CP-01 |
| Output | `database/migrations/20260307_alter_eb_user_add_hjf_fields.php` [NEW] |
**Agent Prompt:**
```
为 eb_user 表添加 4 个新字段。
### SQL
参考 docs/frontend-new-pages-spec.md 第 3.1.1 节:
- member_level TINYINT DEFAULT 0
- no_assess TINYINT DEFAULT 0
- frozen_points BIGINT DEFAULT 0
- available_points BIGINT DEFAULT 0
### 验收标准
- [ ] ALTER 语句正常执行
- [ ] 现有数据不受影响
```
---
### P2-04: INSERT eb_system_config 配置项
| 属性 | 值 |
|------|------|
| Phase | 2 |
| Status | `[ ]` pending |
| Dependencies | CP-01 |
| Output | `database/migrations/20260307_insert_eb_system_config_hjf.php` [NEW] |
**Agent Prompt:**
```
向 eb_system_config 表插入 HJF 配置项。
### 配置项
参考 docs/PRD_V2.md 第 5.7 节:
- hjf_trigger_multiple = 4
- hjf_release_rate = 4
- hjf_withdraw_fee_rate = 7
- hjf_chuangke_threshold = 3
- hjf_yundian_threshold = 30
- hjf_fuwushang_threshold = 100
- hjf_fengongsi_threshold = 1000
- 各等级奖励积分配置
### 验收标准
- [ ] 配置项正确插入
- [ ] 不影响现有配置
```
---
### P2-05: ALTER eb_store_product 添加 is_queue_goods
| 属性 | 值 |
|------|------|
| Phase | 2 |
| Status | `[ ]` pending |
| Dependencies | CP-01 |
| Output | `database/migrations/20260307_alter_eb_store_product.php` [NEW] |
**Agent Prompt:**
```
为 eb_store_product 表添加报单商品标记字段。
### SQL
ALTER TABLE eb_store_product
ADD COLUMN is_queue_goods TINYINT NOT NULL DEFAULT 0 COMMENT '报单商品标记: 0否 1是',
ADD COLUMN allow_pay_types VARCHAR(255) NOT NULL DEFAULT 'wechat,alipay' COMMENT '允许的支付方式';
### 验收标准
- [ ] 字段正确添加
- [ ] 默认值合理
```
---
## Phase 3: 后端 API 开发16 tasks依赖 Phase 2
---
### P3-01: QueuePool Model
| 属性 | 值 |
|------|------|
| Phase | 3 |
| Status | `[ ]` pending |
| Dependencies | P2-01 |
| Output | `app/model/queue/QueuePool.php` [NEW] |
**Agent Prompt:**
```
创建 QueuePool 模型。参考 CRMEB 现有 Model 模式(继承 BaseModel定义 $table, $fillable 等)。
表名: eb_queue_pool
```
---
### P3-02: QueuePoolDao
| 属性 | 值 |
|------|------|
| Phase | 3 |
| Status | `[ ]` pending |
| Dependencies | P3-01 |
| Output | `app/dao/queue/QueuePoolDao.php` [NEW] |
**Agent Prompt:**
```
创建 QueuePool 数据访问层。参考 CRMEB 现有 Dao 模式。
方法: getList / getByUid / getByStatus / getNextRefund / incrementQueueNo
```
---
### P3-03: QueuePoolService
| 属性 | 值 |
|------|------|
| Phase | 3 |
| Status | `[ ]` pending |
| Dependencies | P3-02 |
| Output | `app/services/queue/QueuePoolService.php` [NEW] |
**Agent Prompt:**
```
创建公排核心业务服务。
### 方法
- addToQueue(uid, orderId, amount) — 入队
- checkAndTriggerRefund() — 检查并触发退款进N退1逻辑
- getQueueStatus(uid) — 获取用户排队状态
- getQueueHistory(uid, page, limit) — 获取历史记录
### 技术要点
- 使用 Redis 分布式锁 (hjf:queue:refund:lock)
- Redis 计数器 (hjf:queue:counter) 全局排队序号
- 退款通过 think-queue 异步处理
- 所有金额用 bcmath 计算
```
---
### P3-04: QueueRefundService
| 属性 | 值 |
|------|------|
| Phase | 3 |
| Status | `[ ]` pending |
| Dependencies | P3-03 |
| Output | `app/services/queue/QueueRefundService.php` [NEW] |
**Agent Prompt:**
```
创建退款处理服务。
- processRefund(queuePoolId) — 执行退款(更新状态 + 增加 now_money
- 使用数据库事务
- 退款后触发会员升级检查
```
---
### P3-05: QueuePoolController (API 端)
| 属性 | 值 |
|------|------|
| Phase | 3 |
| Status | `[ ]` pending |
| Dependencies | P3-03 |
| Output | `app/api/controller/v1/queue/QueuePoolController.php` [NEW] |
**Agent Prompt:**
```
创建公排 API 控制器。
- GET status — 调用 QueuePoolService::getQueueStatus()
- GET history — 调用 QueuePoolService::getQueueHistory()
路由路径: hjf/queue/status, hjf/queue/history
```
---
### P3-06: MemberLevelService
| 属性 | 值 |
|------|------|
| Phase | 3 |
| Status | `[ ]` pending |
| Dependencies | P2-03 |
| Output | `app/services/member/MemberLevelService.php` [NEW] |
**Agent Prompt:**
```
创建会员等级服务。
- checkAndUpgrade(uid) — 检查升级条件并执行升级
- getLevelInfo(uid) — 获取等级信息
- updateLevel(uid, level) — 手动调整等级(Admin)
- setNoAssess(uid, flag) — 设置不考核标记
升级条件参考 PRD_V2.md 第 3.2.1 节
```
---
### P3-07: MemberRewardService
| 属性 | 值 |
|------|------|
| Phase | 3 |
| Status | `[ ]` pending |
| Dependencies | P3-06 |
| Output | `app/services/member/MemberRewardService.php` [NEW] |
**Agent Prompt:**
```
创建积分奖励计算服务。
- calculateReward(orderId, buyerUid) — 计算并发放推荐奖励
- 逐级向上遍历推荐链,按等级发放固定积分
- 级差逻辑: 上级只获得与下级等级差额的积分
- 积分入账为 frozen_points待释放
```
---
### P3-08: MemberTeamService
| 属性 | 值 |
|------|------|
| Phase | 3 |
| Status | `[ ]` pending |
| Dependencies | P3-06 |
| Output | `app/services/member/MemberTeamService.php` [NEW] |
**Agent Prompt:**
```
创建团队业绩统计服务。
- getDirectCount(uid) — 直推人数
- getUmbrellaCount(uid) — 伞下总人数
- getUmbrellaOrders(uid) — 伞下总单数(含级别隔离逻辑)
- getTeamMembers(uid, page, limit) — 团队成员列表
```
---
### P3-09: PointsReleaseService
| 属性 | 值 |
|------|------|
| Phase | 3 |
| Status | `[ ]` pending |
| Dependencies | P2-02 |
| Output | `app/services/points/PointsReleaseService.php` [NEW] |
**Agent Prompt:**
```
创建积分每日释放服务。
- dailyRelease() — 定时任务入口,遍历所有 frozen_points > 0 的用户
- 释放量 = frozen_points × 0.4‰ (取整)
- 从 frozen_points 扣减,加到 available_points
- 写入 eb_points_release_log
- 使用 Redis 锁防止重复执行
```
---
### P3-10: PointsPayService
| 属性 | 值 |
|------|------|
| Phase | 3 |
| Status | `[ ]` pending |
| Dependencies | P3-09 |
| Output | `app/services/points/PointsPayService.php` [NEW] |
**Agent Prompt:**
```
创建积分支付服务。
- payWithFrozenPoints(uid, amount) — 待释放积分支付(仅普通商品)
- payWithAvailablePoints(uid, amount) — 已释放积分支付(仅普通商品)
- 检查余额是否充足
- 使用数据库事务
```
---
### P3-11: Admin QueueOrderController
| 属性 | 值 |
|------|------|
| Phase | 3 |
| Status | `[ ]` pending |
| Dependencies | P3-03 |
| Output | `app/adminapi/controller/v1/hjf/QueueOrderController.php` [NEW] |
**Agent Prompt:**
```
创建 Admin 公排订单控制器。
- GET order_list — 分页+筛选
```
---
### P3-12: Admin QueueConfigController
| 属性 | 值 |
|------|------|
| Phase | 3 |
| Status | `[ ]` pending |
| Dependencies | P3-03 |
| Output | `app/adminapi/controller/v1/hjf/QueueConfigController.php` [NEW] |
**Agent Prompt:**
```
创建 Admin 公排配置控制器。
- GET config — 读取 eb_system_config
- PUT config — 更新配置
```
---
### P3-13: Admin QueueFinanceController
| 属性 | 值 |
|------|------|
| Phase | 3 |
| Status | `[ ]` pending |
| Dependencies | P3-04 |
| Output | `app/adminapi/controller/v1/hjf/QueueFinanceController.php` [NEW] |
**Agent Prompt:**
```
创建 Admin 公排财务控制器。
- GET finance — 退款流水列表(分页+统计)
```
---
### P3-14: Admin MemberLevelController
| 属性 | 值 |
|------|------|
| Phase | 3 |
| Status | `[ ]` pending |
| Dependencies | P3-06 |
| Output | `app/adminapi/controller/v1/hjf/MemberLevelController.php` [NEW] |
**Agent Prompt:**
```
创建 Admin 会员管理控制器。
- GET list — 会员列表(分页+等级筛选)
- PUT level/{uid} — 调整等级
- GET/PUT config — 会员配置
```
---
### P3-15: API 路由注册
| 属性 | 值 |
|------|------|
| Phase | 3 |
| Status | `[ ]` pending |
| Dependencies | P3-05 |
| Output | `route/api.php` [MOD] |
**Agent Prompt:**
```
在 API 路由文件中注册公排和资产相关路由。
### 路由
- GET hjf/queue/status → QueuePoolController@status
- GET hjf/queue/history → QueuePoolController@history
- GET hjf/assets/overview → HjfAssetsController@overview
- GET hjf/assets/points_detail → HjfAssetsController@pointsDetail
- GET hjf/assets/cash_detail → HjfAssetsController@cashDetail
- GET hjf/assets/withdraw_info → HjfAssetsController@withdrawInfo
- GET hjf/member/info → HjfMemberController@info
- GET hjf/member/team → HjfMemberController@team
- GET hjf/member/income → HjfMemberController@income
```
---
### P3-16: Admin 路由注册
| 属性 | 值 |
|------|------|
| Phase | 3 |
| Status | `[ ]` pending |
| Dependencies | P3-11, P3-12, P3-13, P3-14 |
| Output | `route/adminapi.php` [MOD] |
**Agent Prompt:**
```
在 Admin 路由文件中注册 HJF 管理路由。
### 路由
参考 docs/frontend-new-pages-spec.md 第 5.3.2 节的 Admin API 契约表。
```
---
## Phase 4: 前后端集成5 tasks依赖 Phase 3
---
### P4-01: UniApp 关闭 USE_MOCK
| 属性 | 值 |
|------|------|
| Phase | 4 |
| Status | `[ ]` pending |
| Dependencies | P3-15 |
| Output | `api/hjfQueue.js`, `api/hjfAssets.js`, `api/hjfMember.js` [MOD] |
**Agent Prompt:**
```
将所有 UniApp HJF API 文件中的 USE_MOCK 改为 false。
文件: hjfQueue.js, hjfAssets.js, hjfMember.js
将 const USE_MOCK = true 改为 const USE_MOCK = false
```
---
### P4-02: Admin 关闭 USE_MOCK
| 属性 | 值 |
|------|------|
| Phase | 4 |
| Status | `[ ]` pending |
| Dependencies | P3-16 |
| Output | `api/hjfQueue.js`, `api/hjfMember.js`, `api/hjfPoints.js` [MOD] |
**Agent Prompt:**
```
将所有 Admin HJF API 文件中的 USE_MOCK 改为 false。
文件: hjfQueue.js, hjfMember.js, hjfPoints.js
将 const USE_MOCK = true 改为 const USE_MOCK = false
```
---
### P4-03: UniApp 联调冒烟测试
| 属性 | 值 |
|------|------|
| Phase | 4 |
| Status | `[ ]` pending |
| Dependencies | P4-01 |
| Output | 测试报告 |
**Agent Prompt:**
```
对 UniApp 端所有 HJF 页面进行联调冒烟测试。
### 测试清单
- [ ] P12 公排状态页: 调用真实 API 返回数据正确
- [ ] P13 公排历史页: 分页和筛选正常
- [ ] P15 资产总览页: 三栏数据正确
- [ ] P18 积分明细页: 列表和筛选正常
- [ ] 改造页面: 首页角标、商品详情支付方式、个人中心徽章正常
```
---
### P4-04: Admin 联调冒烟测试
| 属性 | 值 |
|------|------|
| Phase | 4 |
| Status | `[ ]` pending |
| Dependencies | P4-02 |
| Output | 测试报告 |
**Agent Prompt:**
```
对 Admin 端所有 HJF 页面进行联调冒烟测试。
### 测试清单
- [ ] 公排订单列表: 分页和搜索正常
- [ ] 公排配置: 读取和保存正常
- [ ] 积分日志: 列表和统计正常
- [ ] 会员管理: 等级调整正常
```
---
### P4-05: 端到端流程验证
| 属性 | 值 |
|------|------|
| Phase | 4 |
| Status | `[ ]` pending |
| Dependencies | P4-03, P4-04 |
| Output | 测试报告 |
**Agent Prompt:**
```
执行完整的端到端流程验证。
### 测试流程
1. 用户注册 → 绑定推荐关系
2. 购买报单商品(3600元) → 订单生成 → 公排入队
3. 查看公排状态 → 排队序号正确
4. 模拟第4单 → 触发退款 → 余额增加
5. 推荐人获得积分奖励 → frozen_points 增加
6. 次日释放 → available_points 增加
7. 使用积分购买普通商品 → available_points 扣减
8. 提现 → 扣除7%手续费
```
---
## Phase 5: 测试8 tasks依赖 Phase 4
---
### P5-01: QueuePool 单元测试
| 属性 | 值 |
|------|------|
| Phase | 5 |
| Status | `[ ]` pending |
| Dependencies | P4-05 |
| Output | `tests/Unit/QueuePoolServiceTest.php` [NEW] |
**Agent Prompt:**
```
编写公排核心逻辑单元测试。
- 测试入队: 队列序号递增
- 测试进4退1: 第4单触发退款
- 测试退款金额: 正确入账 now_money
- 测试并发: Redis 锁防重复
```
---
### P5-02: MemberReward 单元测试
| 属性 | 值 |
|------|------|
| Phase | 5 |
| Status | `[ ]` pending |
| Dependencies | P4-05 |
| Output | `tests/Unit/MemberRewardServiceTest.php` [NEW] |
**Agent Prompt:**
```
编写会员积分奖励单元测试。
- 测试直推奖励: 按等级发放正确积分
- 测试级差逻辑: 上级不获得同等级下级的团队奖励
- 测试积分入账: 正确写入 frozen_points
```
---
### P5-03: PointsRelease 单元测试
| 属性 | 值 |
|------|------|
| Phase | 5 |
| Status | `[ ]` pending |
| Dependencies | P4-05 |
| Output | `tests/Unit/PointsReleaseServiceTest.php` [NEW] |
**Agent Prompt:**
```
编写积分释放定时任务单元测试。
- 测试释放计算: 15000 × 0.4‰ = 6
- 测试余额变化: frozen_points 减少, available_points 增加
- 测试日志: eb_points_release_log 正确写入
- 测试幂等: 同一天不重复释放
```
---
### P5-04: 公排并发测试
| 属性 | 值 |
|------|------|
| Phase | 5 |
| Status | `[ ]` pending |
| Dependencies | P5-01 |
| Output | `tests/Feature/QueuePoolFlowTest.php` [NEW] |
**Agent Prompt:**
```
编写公排并发场景测试。
- 模拟 10 个用户同时下单
- 验证队列序号不重复
- 验证退款不重复触发
- 验证 Redis 锁正确工作
```
---
### P5-05: 完整购买流程 E2E
| 属性 | 值 |
|------|------|
| Phase | 5 |
| Status | `[ ]` pending |
| Dependencies | P5-01, P5-02, P5-03 |
| Output | `tests/Feature/OrderPayWithQueueTest.php` [NEW] |
**Agent Prompt:**
```
编写完整购买流程 E2E 测试。
1. 创建报单商品 (is_queue_goods=1)
2. 用户A购买1单 → 入队(queue_no=1)
3. 用户B购买1单 → 入队(queue_no=2), 用户A的推荐人获得积分
4. 用户C购买2单 → 入队(queue_no=3,4), 触发退款(queue_no=1)
5. 验证用户A的 now_money += 3600
6. 验证各级推荐人积分正确
```
---
### P5-06: Admin CRUD 冒烟测试
| 属性 | 值 |
|------|------|
| Phase | 5 |
| Status | `[ ]` pending |
| Dependencies | P4-04 |
| Output | 测试报告 |
**Agent Prompt:**
```
Admin 后台管理功能冒烟测试。
- 公排订单列表: 搜索/分页
- 公排配置: 读取/修改/保存
- 会员管理: 列表/等级调整/不考核设置
- 积分日志: 列表/日期筛选
```
---
### P5-07: 积分释放定时任务测试
| 属性 | 值 |
|------|------|
| Phase | 5 |
| Status | `[ ]` pending |
| Dependencies | P5-03 |
| Output | 测试报告 |
**Agent Prompt:**
```
积分释放定时任务集成测试。
- 创建 100 个用户,各有不同 frozen_points
- 执行 dailyRelease()
- 验证: 每个用户 frozen_points 正确减少, available_points 正确增加
- 验证: eb_points_release_log 记录数 = 有积分的用户数
- 验证: 执行时间 < 5 秒
```
---
### P5-08: 提现流程测试
| 属性 | 值 |
|------|------|
| Phase | 5 |
| Status | `[ ]` pending |
| Dependencies | P4-05 |
| Output | 测试报告 |
**Agent Prompt:**
```
提现流程集成测试。
- 用户余额 7200, 提现 1000
- 验证: 手续费 = 1000 × 7% = 70
- 验证: 实际到账 = 930
- 验证: now_money = 7200 - 1000 = 6200
- 边界测试: 低于最低提现额拒绝, 超过余额拒绝
```
---
## 依赖关系图
```
Phase 0
P0-01 ──┐
P0-02 ──┤
Phase 1 ▼
1A (6) ←── P0-01/P0-02
1B (4) ←── 1A
1C (6) ←── 1A + 1B
1D (7) ←── 1A + 1B
1E (6) ←── 1A
1F (7) ←── 1C + 1E
1G (2) ←── 1A
CP-01 ←── ALL Phase 1
Phase 2 (5) ←── CP-01
Phase 3 (16) ←── Phase 2
Phase 4 (5) ←── Phase 3
Phase 5 (8) ←── Phase 4
```
---
## 附录:任务索引
| 编号 | 名称 | Phase | Stage | 类型 |
|------|------|-------|-------|------|
| P0-01 | UniApp Mock 数据文件 | 0 | — | NEW |
| P0-02 | Admin Mock 数据文件 | 0 | — | NEW |
| P1A-01 | UniApp api/hjfQueue.js | 1 | 1A | NEW |
| P1A-02 | UniApp api/hjfAssets.js | 1 | 1A | NEW |
| P1A-03 | UniApp api/hjfMember.js | 1 | 1A | NEW |
| P1A-04 | Admin api/hjfQueue.js | 1 | 1A | NEW |
| P1A-05 | Admin api/hjfMember.js | 1 | 1A | NEW |
| P1A-06 | Admin api/hjfPoints.js | 1 | 1A | NEW |
| P1B-01 | HjfQueueProgress | 1 | 1B | NEW |
| P1B-02 | HjfAssetCard | 1 | 1B | NEW |
| P1B-03 | HjfMemberBadge | 1 | 1B | NEW |
| P1B-04 | HjfRefundNotice | 1 | 1B | NEW |
| P1C-01 | P12 公排状态页 | 1 | 1C | NEW |
| P1C-02 | P13 公排历史页 | 1 | 1C | NEW |
| P1C-03 | P14 公排规则页 | 1 | 1C | NEW |
| P1C-04 | P15 资产总览页 | 1 | 1C | NEW |
| P1C-05 | P18 积分明细页 | 1 | 1C | NEW |
| P1C-06 | P23 新用户引导页 | 1 | 1C | NEW |
| P1D-01 | 首页改造 | 1 | 1D | MOD |
| P1D-02 | 商品详情改造 | 1 | 1D | MOD |
| P1D-03 | 购买流程改造 | 1 | 1D | MOD |
| P1D-04 | 我的订单改造 | 1 | 1D | MOD |
| P1D-05 | 推荐页改造 | 1 | 1D | MOD |
| P1D-06 | 提现页改造 | 1 | 1D | MOD |
| P1D-07 | 个人中心改造 | 1 | 1D | MOD |
| P1E-01 | 公排订单管理页 | 1 | 1E | NEW |
| P1E-02 | 公排财务流水页 | 1 | 1E | NEW |
| P1E-03 | 积分释放日志页 | 1 | 1E | NEW |
| P1E-04 | 公排参数配置页 | 1 | 1E | NEW |
| P1E-05 | 会员等级配置页 | 1 | 1E | NEW |
| P1E-06 | 会员管理页 | 1 | 1E | NEW |
| P1F-01 | pages.json 公排路由 | 1 | 1F | MOD |
| P1F-02 | pages.json 资产路由 | 1 | 1F | MOD |
| P1F-03 | pages.json 引导路由 | 1 | 1F | MOD |
| P1F-04 | Admin hjfQueue 路由 | 1 | 1F | NEW |
| P1F-05 | Admin 路由模块注册 | 1 | 1F | MOD |
| P1F-06 | Admin finance 路由评估 | 1 | 1F | 评估 |
| P1F-07 | Admin user 路由评估 | 1 | 1F | 评估 |
| P1G-01 | 用户管理改造 | 1 | 1G | MOD |
| P1G-02 | 商品管理改造 | 1 | 1G | MOD |
| CP-01 | 前端评审检查点 | CP | — | GATE |
| P2-01 | eb_queue_pool 建表 | 2 | — | DDL |
| P2-02 | eb_points_release_log 建表 | 2 | — | DDL |
| P2-03 | eb_user 加字段 | 2 | — | DDL |
| P2-04 | eb_system_config 配置 | 2 | — | DML |
| P2-05 | eb_store_product 加字段 | 2 | — | DDL |
| P3-01 | QueuePool Model | 3 | — | NEW |
| P3-02 | QueuePoolDao | 3 | — | NEW |
| P3-03 | QueuePoolService | 3 | — | NEW |
| P3-04 | QueueRefundService | 3 | — | NEW |
| P3-05 | QueuePoolController | 3 | — | NEW |
| P3-06 | MemberLevelService | 3 | — | NEW |
| P3-07 | MemberRewardService | 3 | — | NEW |
| P3-08 | MemberTeamService | 3 | — | NEW |
| P3-09 | PointsReleaseService | 3 | — | NEW |
| P3-10 | PointsPayService | 3 | — | NEW |
| P3-11 | Admin QueueOrderController | 3 | — | NEW |
| P3-12 | Admin QueueConfigController | 3 | — | NEW |
| P3-13 | Admin QueueFinanceController | 3 | — | NEW |
| P3-14 | Admin MemberLevelController | 3 | — | NEW |
| P3-15 | API 路由注册 | 3 | — | MOD |
| P3-16 | Admin 路由注册 | 3 | — | MOD |
| P4-01 | UniApp 关闭 USE_MOCK | 4 | — | MOD |
| P4-02 | Admin 关闭 USE_MOCK | 4 | — | MOD |
| P4-03 | UniApp 联调冒烟 | 4 | — | TEST |
| P4-04 | Admin 联调冒烟 | 4 | — | TEST |
| P4-05 | 端到端验证 | 4 | — | TEST |
| P5-01 | QueuePool 单元测试 | 5 | — | TEST |
| P5-02 | MemberReward 单元测试 | 5 | — | TEST |
| P5-03 | PointsRelease 单元测试 | 5 | — | TEST |
| P5-04 | 公排并发测试 | 5 | — | TEST |
| P5-05 | 完整购买流程 E2E | 5 | — | TEST |
| P5-06 | Admin CRUD 冒烟 | 5 | — | TEST |
| P5-07 | 积分释放定时任务测试 | 5 | — | TEST |
| P5-08 | 提现流程测试 | 5 | — | TEST |