fix: 修复界面显示问题,优化文案
🎨 界面修复: - 修复章节列表锁图标和标题错位(用简单符号替代emoji) - 修复匹配页今日剩余图标和文字对齐 - 删除匹配页底部'每天3次免费匹配'提示 ✏️ 文案优化: - '分享赚钱' → '立即推广' - '分享给好友' → '推荐好友,共同成长' - '好友购买你获得90%佣金' → '邀请好友加入,享90%推广收益' 📄 文档更新: - 更新需求方案文档v1.1 - 添加上线检查清单 - 完善API接口文档
This commit is contained in:
@@ -67,19 +67,14 @@
|
|||||||
<block wx:for="{{chapter.sections}}" wx:key="id" wx:for-item="section">
|
<block wx:for="{{chapter.sections}}" wx:key="id" wx:for-item="section">
|
||||||
<view class="section-item" bindtap="goToRead" data-id="{{section.id}}">
|
<view class="section-item" bindtap="goToRead" data-id="{{section.id}}">
|
||||||
<view class="section-left">
|
<view class="section-left">
|
||||||
<view class="section-icon {{section.isFree || hasFullBook || purchasedSections.indexOf(section.id) > -1 ? 'icon-unlocked' : 'icon-locked'}}">
|
<text class="section-lock {{section.isFree || hasFullBook || purchasedSections.indexOf(section.id) > -1 ? 'lock-open' : 'lock-closed'}}">{{section.isFree || hasFullBook || purchasedSections.indexOf(section.id) > -1 ? '○' : '●'}}</text>
|
||||||
<text wx:if="{{section.isFree || hasFullBook || purchasedSections.indexOf(section.id) > -1}}">🔓</text>
|
<text class="section-title {{section.isFree || hasFullBook || purchasedSections.indexOf(section.id) > -1 ? '' : 'text-muted'}}">{{section.id}} {{section.title}}</text>
|
||||||
<text wx:else>🔒</text>
|
|
||||||
</view>
|
|
||||||
<text class="section-title {{section.isFree || hasFullBook || purchasedSections.indexOf(section.id) > -1 ? '' : 'text-muted'}}">
|
|
||||||
{{section.id}} {{section.title}}
|
|
||||||
</text>
|
|
||||||
</view>
|
</view>
|
||||||
<view class="section-right">
|
<view class="section-right">
|
||||||
<text wx:if="{{section.isFree}}" class="tag tag-free">免费</text>
|
<text wx:if="{{section.isFree}}" class="tag tag-free">免费</text>
|
||||||
<text wx:elif="{{hasFullBook || purchasedSections.indexOf(section.id) > -1}}" class="text-brand text-xs">已购</text>
|
<text wx:elif="{{hasFullBook || purchasedSections.indexOf(section.id) > -1}}" class="tag tag-purchased">已购</text>
|
||||||
<text wx:else class="text-muted text-xs">¥{{section.price}}</text>
|
<text wx:else class="section-price">¥{{section.price}}</text>
|
||||||
<text class="section-arrow">→</text>
|
<text class="section-arrow">›</text>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</block>
|
</block>
|
||||||
|
|||||||
@@ -335,37 +335,43 @@
|
|||||||
min-width: 0;
|
min-width: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.section-icon {
|
/* 小节锁图标 */
|
||||||
width: 36rpx;
|
.section-lock {
|
||||||
height: 36rpx;
|
width: 32rpx;
|
||||||
min-width: 36rpx;
|
min-width: 32rpx;
|
||||||
font-size: 28rpx;
|
font-size: 24rpx;
|
||||||
|
text-align: center;
|
||||||
flex-shrink: 0;
|
flex-shrink: 0;
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
line-height: 1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.icon-unlocked {
|
.lock-open {
|
||||||
color: #00CED1;
|
color: #00CED1;
|
||||||
}
|
}
|
||||||
|
|
||||||
.icon-locked {
|
.lock-closed {
|
||||||
color: rgba(255, 255, 255, 0.4);
|
color: rgba(255, 255, 255, 0.3);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* 小节标题 */
|
||||||
.section-title {
|
.section-title {
|
||||||
font-size: 26rpx;
|
font-size: 26rpx;
|
||||||
color: #ffffff;
|
color: #ffffff;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
text-overflow: ellipsis;
|
text-overflow: ellipsis;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
line-height: 36rpx;
|
|
||||||
flex: 1;
|
flex: 1;
|
||||||
height: 36rpx;
|
}
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
/* 小节价格 */
|
||||||
|
.section-price {
|
||||||
|
font-size: 24rpx;
|
||||||
|
color: rgba(255, 255, 255, 0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 已购标签 */
|
||||||
|
.tag-purchased {
|
||||||
|
background: rgba(0, 206, 209, 0.15);
|
||||||
|
color: #00CED1;
|
||||||
}
|
}
|
||||||
|
|
||||||
.section-right {
|
.section-right {
|
||||||
|
|||||||
@@ -63,11 +63,6 @@
|
|||||||
当前模式: <text class="text-brand">{{currentTypeLabel}}</text>
|
当前模式: <text class="text-brand">{{currentTypeLabel}}</text>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<!-- 免费次数提示 -->
|
|
||||||
<view class="free-tip" wx:if="{{!hasFullBook}}">
|
|
||||||
每天{{totalMatchesAllowed}}次免费匹配,用完可付费购买
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<!-- 分隔线 -->
|
<!-- 分隔线 -->
|
||||||
<view class="divider"></view>
|
<view class="divider"></view>
|
||||||
|
|
||||||
|
|||||||
@@ -55,10 +55,11 @@
|
|||||||
/* ===== 匹配次数条 ===== */
|
/* ===== 匹配次数条 ===== */
|
||||||
.match-count-bar {
|
.match-count-bar {
|
||||||
display: flex;
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
margin: 24rpx 32rpx;
|
margin: 24rpx 32rpx;
|
||||||
padding: 24rpx;
|
padding: 24rpx 32rpx;
|
||||||
background: #1c1c1e;
|
background: #1c1c1e;
|
||||||
border-radius: 24rpx;
|
border-radius: 24rpx;
|
||||||
border: 2rpx solid rgba(255, 255, 255, 0.05);
|
border: 2rpx solid rgba(255, 255, 255, 0.05);
|
||||||
@@ -66,18 +67,38 @@
|
|||||||
|
|
||||||
.count-left {
|
.count-left {
|
||||||
display: flex;
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
gap: 16rpx;
|
gap: 12rpx;
|
||||||
}
|
}
|
||||||
|
|
||||||
.count-icon {
|
.count-icon {
|
||||||
font-size: 32rpx;
|
font-size: 28rpx;
|
||||||
|
width: 32rpx;
|
||||||
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.count-icon.icon-warning {
|
.count-icon.icon-warning {
|
||||||
color: #FFD700;
|
color: #FFD700;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.count-text {
|
||||||
|
font-size: 28rpx;
|
||||||
|
color: rgba(255, 255, 255, 0.7);
|
||||||
|
}
|
||||||
|
|
||||||
|
.count-right {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
align-items: center;
|
||||||
|
gap: 16rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.count-value {
|
||||||
|
font-size: 32rpx;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
|
||||||
.count-text {
|
.count-text {
|
||||||
font-size: 26rpx;
|
font-size: 26rpx;
|
||||||
color: rgba(255, 255, 255, 0.7);
|
color: rgba(255, 255, 255, 0.7);
|
||||||
|
|||||||
@@ -80,13 +80,13 @@
|
|||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<!-- 分享提示 -->
|
<!-- 推广提示 -->
|
||||||
<view class="share-tip" bindtap="showShare">
|
<view class="share-tip" bindtap="showShare">
|
||||||
<view class="tip-content">
|
<view class="tip-content">
|
||||||
<text class="tip-title">觉得不错?分享给好友</text>
|
<text class="tip-title">推荐好友,共同成长</text>
|
||||||
<text class="tip-desc">好友购买你获得90%佣金</text>
|
<text class="tip-desc">邀请好友加入,享90%推广收益</text>
|
||||||
</view>
|
</view>
|
||||||
<view class="tip-btn">分享赚钱</view>
|
<view class="tip-btn">立即推广</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
@@ -136,7 +136,7 @@
|
|||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<text class="paywall-tip">分享给好友购买,你可获得90%佣金</text>
|
<text class="paywall-tip">邀请好友加入,享90%推广收益</text>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
|||||||
@@ -1,8 +1,9 @@
|
|||||||
# 小程序改造 TDD需求方案 v1.0
|
# 小程序改造 TDD需求方案 v1.1
|
||||||
|
|
||||||
**创建日期**:2026年1月23日
|
**创建日期**:2026年1月23日
|
||||||
|
**更新日期**:2026年1月23日
|
||||||
**创建人**:卡若AI
|
**创建人**:卡若AI
|
||||||
**状态**:待开发
|
**状态**:开发中
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -12,7 +13,7 @@
|
|||||||
|
|
||||||
**核心闭环**:
|
**核心闭环**:
|
||||||
```
|
```
|
||||||
用户打开小程序 → 搜索/浏览内容 → 阅读(进度同步)→ 付费购买 → 分销推广 → 自动提现
|
用户打开小程序 → 微信登录 → 浏览内容 → 付费购买 → 推广获益 → 自动提现
|
||||||
↓
|
↓
|
||||||
匹配合伙人 → 查看档案/认证 → 建立合作
|
匹配合伙人 → 查看档案/认证 → 建立合作
|
||||||
```
|
```
|
||||||
@@ -25,378 +26,194 @@
|
|||||||
|:---|:---|
|
|:---|:---|
|
||||||
| **项目名称** | 一场Soul的创业实验 - 小程序改造 |
|
| **项目名称** | 一场Soul的创业实验 - 小程序改造 |
|
||||||
| **项目阶段** | 已上线,功能迭代 |
|
| **项目阶段** | 已上线,功能迭代 |
|
||||||
| **核心目标** | 交互体验优化 + 功能增强 |
|
| **核心目标** | 交互体验优化 + 支付分销上线 |
|
||||||
| **验收人** | 卡若 |
|
| **验收人** | 卡若 |
|
||||||
| **代码位置** | `/Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验/miniprogram/` |
|
| **代码位置** | `/Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验/miniprogram/` |
|
||||||
|
| **数据库** | 腾讯云MySQL:56b4c23f6853c.gz.cdb.myqcloud.com:14413 |
|
||||||
|
| **域名** | https://soul.quwanzhi.com |
|
||||||
|
|
||||||
### 当前问题
|
### 当前问题(已修复)
|
||||||
|
|
||||||
| 问题类型 | 具体表现 |
|
| 问题类型 | 具体表现 | 修复状态 |
|
||||||
|
|:---|:---|:---|
|
||||||
|
| 登录流程 | 未登录时显示过多功能,干扰用户 | ✅ 已修复 |
|
||||||
|
| 支付流程 | 需要反复登录才能支付 | ✅ 已修复 |
|
||||||
|
| 章节显示 | 锁图标和标题错位 | ✅ 已修复 |
|
||||||
|
| 匹配页面 | 图标和文字对齐问题 | ✅ 已修复 |
|
||||||
|
| 文案问题 | "分享赚钱"不够高大上 | ✅ 已修复 |
|
||||||
|
| 数据库 | 使用本地数据库 | ✅ 切换腾讯云 |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 三、已完成功能清单
|
||||||
|
|
||||||
|
### 3.1 界面优化
|
||||||
|
|
||||||
|
| 模块 | 功能点 | 状态 |
|
||||||
|
|:---|:---|:---|
|
||||||
|
| **我的页面** | 未登录只显示登录按钮 | ✅ |
|
||||||
|
| **章节列表** | 简化锁图标,修复对齐 | ✅ |
|
||||||
|
| **匹配页面** | 修复次数栏图标对齐 | ✅ |
|
||||||
|
| **匹配页面** | 删除底部免费次数提示 | ✅ |
|
||||||
|
| **阅读页面** | 文案优化(推广收益) | ✅ |
|
||||||
|
|
||||||
|
### 3.2 支付功能
|
||||||
|
|
||||||
|
| 模块 | 功能点 | 状态 |
|
||||||
|
|:---|:---|:---|
|
||||||
|
| **微信支付** | 小程序直接调起微信支付 | ✅ |
|
||||||
|
| **重复购买检测** | 避免重复支付同一章节 | ✅ |
|
||||||
|
| **静默获取openId** | 已登录用户无需重复登录 | ✅ |
|
||||||
|
| **测试模式** | 支付服务不可用时可测试 | ✅ |
|
||||||
|
|
||||||
|
### 3.3 分销功能
|
||||||
|
|
||||||
|
| 模块 | 功能点 | 状态 |
|
||||||
|
|:---|:---|:---|
|
||||||
|
| **推广中心** | 显示收益、绑定用户列表 | ✅ |
|
||||||
|
| **邀请码** | 自动生成专属邀请码 | ✅ |
|
||||||
|
| **绑定关系** | H5/小程序统一绑定 | ✅ |
|
||||||
|
| **推广API** | `/api/referral/data` 接口 | ✅ |
|
||||||
|
|
||||||
|
### 3.4 后台管理
|
||||||
|
|
||||||
|
| 模块 | 功能点 | 状态 |
|
||||||
|
|:---|:---|:---|
|
||||||
|
| **章节管理** | `/admin/chapters` 管理页面 | ✅ |
|
||||||
|
| **价格设置** | 可修改章节价格 | ✅ |
|
||||||
|
| **免费设置** | 可设置章节免费状态 | ✅ |
|
||||||
|
| **匹配配置** | `/api/match/config` 接口 | ✅ |
|
||||||
|
|
||||||
|
### 3.5 数据库
|
||||||
|
|
||||||
|
| 模块 | 表名 | 状态 |
|
||||||
|
|:---|:---|:---|
|
||||||
|
| **用户表** | users | ✅ |
|
||||||
|
| **订单表** | orders | ✅ |
|
||||||
|
| **推广关系** | referral_bindings | ✅ |
|
||||||
|
| **匹配记录** | match_records | ✅ |
|
||||||
|
| **系统配置** | system_config | ✅ |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 四、上线检查清单
|
||||||
|
|
||||||
|
### 4.1 小程序配置
|
||||||
|
|
||||||
|
- [ ] AppID配置正确:`wxb8bbb2b10dec74aa`
|
||||||
|
- [ ] 域名白名单:`soul.quwanzhi.com`
|
||||||
|
- [ ] 支付功能开通
|
||||||
|
- [ ] 提交审核
|
||||||
|
|
||||||
|
### 4.2 服务端配置
|
||||||
|
|
||||||
|
- [ ] 腾讯云数据库连接正常
|
||||||
|
- [ ] 微信支付证书配置
|
||||||
|
- [ ] API接口全部可用
|
||||||
|
- [ ] SSL证书有效
|
||||||
|
|
||||||
|
### 4.3 支付配置
|
||||||
|
|
||||||
|
| 配置项 | 值 |
|
||||||
|:---|:---|
|
|:---|:---|
|
||||||
| 交互不顺畅 | 登录/支付流程分散,代码重复,体验不一致 |
|
| 小程序AppID | wxb8bbb2b10dec74aa |
|
||||||
| 导航混乱 | switchTab/navigateTo混用,用户易迷路 |
|
| 商户号 | 1318592501 |
|
||||||
| 功能缺失 | 无搜索、无进度同步、无自动提现、合伙人匹配弱 |
|
| API密钥 | wx3e31b068be59ddc131b068be59ddc2 |
|
||||||
| 数据不同步 | 购买后需手动刷新才能看到状态变化 |
|
| 回调地址 | https://soul.quwanzhi.com/api/miniprogram/pay/notify |
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 三、功能范围
|
## 五、API接口清单
|
||||||
|
|
||||||
### 3.1 核心功能(本期开发)
|
### 5.1 小程序专用接口
|
||||||
|
|
||||||
| 模块 | 功能点 | 优先级 | 工作量预估 |
|
| 接口 | 方法 | 说明 |
|
||||||
|:---|:---|:---|:---|
|
|:---|:---|:---|
|
||||||
| **全站搜索** | 搜索章节标题、内容、合伙人 | P0 | 中 |
|
| `/api/miniprogram/login` | POST | 微信登录获取openId |
|
||||||
| **阅读进度同步** | 小程序↔网页端同步,多设备同步 | P0 | 中 |
|
| `/api/miniprogram/pay` | POST | 创建支付订单 |
|
||||||
| **自动提现** | 分销收益达阈值自动提现 | P1 | 高 |
|
| `/api/miniprogram/pay/notify` | POST | 支付回调 |
|
||||||
| **合伙人档案** | 合伙人详细档案、认证体系 | P1 | 高 |
|
|
||||||
| **登录流程统一** | 全局登录组件,状态管理优化 | P0 | 低 |
|
|
||||||
| **支付流程简化** | 抽离支付模块,统一调用接口 | P0 | 中 |
|
|
||||||
| **导航结构优化** | 增加TabBar页面,统一跳转规则 | P1 | 中 |
|
|
||||||
| **数据实时同步** | 购买/操作后实时更新UI | P0 | 低 |
|
|
||||||
|
|
||||||
### 3.2 本期不做
|
### 5.2 通用接口
|
||||||
|
|
||||||
| 功能 | 原因 |
|
| 接口 | 方法 | 说明 |
|
||||||
|
|:---|:---|:---|
|
||||||
|
| `/api/referral/data` | GET/POST | 推广数据/绑定关系 |
|
||||||
|
| `/api/match/config` | GET/POST | 匹配规则配置 |
|
||||||
|
| `/api/admin/chapters` | GET/POST | 章节管理 |
|
||||||
|
| `/api/db/init` | POST | 数据库初始化 |
|
||||||
|
| `/api/db/chapters` | GET | 章节内容 |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 六、文案规范
|
||||||
|
|
||||||
|
### 6.1 推广相关
|
||||||
|
|
||||||
|
| 原文案 | 优化后 |
|
||||||
|:---|:---|
|
|:---|:---|
|
||||||
| 听书/TTS朗读 | 需要额外音频资源和API,优先级低 |
|
| 分享赚钱 | 立即推广 |
|
||||||
| 批注/划线/笔记 | 开发量大,后续版本考虑 |
|
| 分享给好友 | 推荐好友,共同成长 |
|
||||||
| 拼团/砍价 | 营销功能复杂,当前分销模式已够用 |
|
| 好友购买你获得90%佣金 | 邀请好友加入,享90%推广收益 |
|
||||||
| 聊天/私信 | 需要IM基础设施,成本高 |
|
|
||||||
| 离线阅读 | 小程序限制,技术复杂度高 |
|
|
||||||
|
|
||||||
---
|
### 6.2 匹配相关
|
||||||
|
|
||||||
## 四、功能详细设计
|
| 位置 | 文案 |
|
||||||
|
|
||||||
### 4.1 全站搜索
|
|
||||||
|
|
||||||
**用户场景**:用户想快速找到某个话题、某个案例、或某个合伙人。
|
|
||||||
|
|
||||||
**搜索范围**:
|
|
||||||
- 章节标题(62个章节)
|
|
||||||
- 章节内容(全文索引)
|
|
||||||
- 合伙人(昵称、行业、标签)
|
|
||||||
|
|
||||||
**交互设计**:
|
|
||||||
```
|
|
||||||
首页顶部搜索入口 → 搜索页(独立页面)
|
|
||||||
↓
|
|
||||||
输入关键词
|
|
||||||
↓
|
|
||||||
Tab切换:全部 | 章节 | 合伙人
|
|
||||||
↓
|
|
||||||
点击结果跳转
|
|
||||||
```
|
|
||||||
|
|
||||||
**技术方案**:
|
|
||||||
- 前端:新增 `/pages/search/search` 页面
|
|
||||||
- 后端:新增 `/api/search` 接口,支持分页
|
|
||||||
- 数据库:章节内容建立全文索引,合伙人表增加搜索字段
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
### 4.2 阅读进度同步
|
|
||||||
|
|
||||||
**用户场景**:用户在手机小程序看到第3章,换到电脑网页端继续看,能自动跳到上次位置。
|
|
||||||
|
|
||||||
**同步维度**:
|
|
||||||
- 当前阅读章节ID
|
|
||||||
- 章节内阅读位置(scrollTop百分比)
|
|
||||||
- 最后阅读时间
|
|
||||||
|
|
||||||
**同步策略**:
|
|
||||||
```
|
|
||||||
阅读时 → 每30秒或翻页时上报进度
|
|
||||||
打开时 → 拉取最新进度 → 提示"继续上次阅读?"
|
|
||||||
```
|
|
||||||
|
|
||||||
**技术方案**:
|
|
||||||
- 前端:阅读页增加进度上报逻辑,onHide/onUnload时同步
|
|
||||||
- 后端:新增 `/api/reading-progress` 接口(GET/POST)
|
|
||||||
- 数据库:新增 `reading_progress` 表
|
|
||||||
|
|
||||||
**数据结构**:
|
|
||||||
```sql
|
|
||||||
CREATE TABLE reading_progress (
|
|
||||||
id INT PRIMARY KEY AUTO_INCREMENT,
|
|
||||||
user_id VARCHAR(64) NOT NULL,
|
|
||||||
section_id VARCHAR(32) NOT NULL,
|
|
||||||
scroll_percent DECIMAL(5,2) DEFAULT 0,
|
|
||||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
||||||
UNIQUE KEY uk_user_section (user_id, section_id)
|
|
||||||
);
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
### 4.3 自动提现
|
|
||||||
|
|
||||||
**用户场景**:分销用户累积佣金达到100元,系统自动打款到微信零钱。
|
|
||||||
|
|
||||||
**业务规则**:
|
|
||||||
| 规则 | 说明 |
|
|
||||||
|:---|:---|
|
|:---|:---|
|
||||||
| 提现阈值 | 默认100元(可后台配置) |
|
| 匹配次数 | 今日剩余 X次 |
|
||||||
| 提现时间 | 每日凌晨2点检查并执行 |
|
| 购买次数 | ¥1购买1次 |
|
||||||
| 提现方式 | 微信企业付款到零钱 |
|
| 当前模式 | 当前模式: 创业合伙 |
|
||||||
| 手续费 | 平台承担 |
|
|
||||||
| 失败处理 | 记录日志,人工处理 |
|
|
||||||
|
|
||||||
**交互设计**:
|
|
||||||
```
|
|
||||||
个人中心 → 推广中心 → 收益明细
|
|
||||||
↓
|
|
||||||
显示"自动提现已开启"
|
|
||||||
显示"满100元自动到账"
|
|
||||||
↓
|
|
||||||
提现记录列表
|
|
||||||
```
|
|
||||||
|
|
||||||
**技术方案**:
|
|
||||||
- 前端:推广中心页面增加自动提现开关和记录
|
|
||||||
- 后端:
|
|
||||||
- 新增 `/api/withdrawal/auto-config` 接口(配置)
|
|
||||||
- 新增 `/api/withdrawal/records` 接口(记录)
|
|
||||||
- 新增定时任务(每日检查并执行提现)
|
|
||||||
- 微信支付:使用企业付款到零钱API
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
### 4.4 合伙人档案/认证
|
## 七、测试用例
|
||||||
|
|
||||||
**用户场景**:用户想找靠谱的合伙人,需要看到对方的详细背景和资质认证。
|
### 7.1 登录流程
|
||||||
|
|
||||||
**档案字段**:
|
| 用例 | 操作 | 期望结果 |
|
||||||
| 字段 | 类型 | 说明 |
|
|
||||||
|:---|:---|:---|
|
|:---|:---|:---|
|
||||||
| 基础信息 | 必填 | 昵称、头像、一句话介绍 |
|
| 未登录访问"我的" | 打开小程序进入"我的"页面 | 只显示登录按钮,不显示其他功能 |
|
||||||
| 行业领域 | 必填 | 电商/内容/传统行业/技术/其他 |
|
| 微信登录 | 点击微信登录按钮 | 调起微信授权,登录成功 |
|
||||||
| 所在城市 | 必填 | 省市选择 |
|
| 登录后显示 | 登录成功 | 显示用户信息和完整功能菜单 |
|
||||||
| 资源标签 | 多选 | 流量/供应链/资金/技术/人脉 |
|
|
||||||
| 需求标签 | 多选 | 找流量/找供应链/找资金/找技术/找合伙人 |
|
|
||||||
| 详细介绍 | 选填 | 200字以内 |
|
|
||||||
| 联系方式 | 认证后可见 | 微信号 |
|
|
||||||
|
|
||||||
**认证体系**:
|
### 7.2 支付流程
|
||||||
| 认证等级 | 条件 | 权益 |
|
|
||||||
|
| 用例 | 操作 | 期望结果 |
|
||||||
|:---|:---|:---|
|
|:---|:---|:---|
|
||||||
| 未认证 | 默认 | 只能看基础信息 |
|
| 购买章节 | 点击"购买本章" | 直接调起微信支付 |
|
||||||
| 手机认证 | 绑定手机号 | 可查看他人手机认证信息 |
|
| 重复购买 | 已购章节再次点击购买 | 提示"已购买过此章节" |
|
||||||
| 实名认证 | 提交身份证 | 显示"已实名"标识,可查看微信号 |
|
| 支付成功 | 完成支付 | 立即更新购买状态,可阅读 |
|
||||||
| 付费认证 | 购买全书 | 显示"书友"标识,优先匹配 |
|
|
||||||
|
|
||||||
**交互设计**:
|
### 7.3 推广流程
|
||||||
```
|
|
||||||
匹配页 → 合伙人列表(卡片式)
|
|
||||||
↓
|
|
||||||
点击查看档案
|
|
||||||
↓
|
|
||||||
档案详情页
|
|
||||||
↓
|
|
||||||
未认证提示 → 去认证 → 认证流程
|
|
||||||
```
|
|
||||||
|
|
||||||
**技术方案**:
|
| 用例 | 操作 | 期望结果 |
|
||||||
- 前端:
|
|
||||||
- 改造 `/pages/match/match` 为合伙人列表
|
|
||||||
- 新增 `/pages/partner-profile/partner-profile` 档案详情页
|
|
||||||
- 新增 `/pages/partner-edit/partner-edit` 档案编辑页
|
|
||||||
- 后端:
|
|
||||||
- 新增 `/api/partner/list` 接口(列表+筛选)
|
|
||||||
- 新增 `/api/partner/profile` 接口(详情)
|
|
||||||
- 新增 `/api/partner/update` 接口(更新档案)
|
|
||||||
- 新增 `/api/partner/verify` 接口(认证)
|
|
||||||
- 数据库:新增 `partner_profile` 表
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
### 4.5 交互优化
|
|
||||||
|
|
||||||
#### 4.5.1 登录流程统一
|
|
||||||
|
|
||||||
**当前问题**:
|
|
||||||
- 首页、阅读页、我的页面各自实现登录弹窗
|
|
||||||
- 代码重复,样式不一致
|
|
||||||
|
|
||||||
**改造方案**:
|
|
||||||
```
|
|
||||||
1. 新建全局登录组件 /components/global-login/
|
|
||||||
2. app.js 增加全局登录方法 app.showLogin()
|
|
||||||
3. 各页面调用 app.showLogin() 即可
|
|
||||||
4. 登录成功后通过事件广播通知各页面刷新
|
|
||||||
```
|
|
||||||
|
|
||||||
#### 4.5.2 支付流程简化
|
|
||||||
|
|
||||||
**当前问题**:
|
|
||||||
- 阅读页 `read.js` 支付相关代码300+行
|
|
||||||
- 真实支付和模拟支付逻辑混杂
|
|
||||||
|
|
||||||
**改造方案**:
|
|
||||||
```
|
|
||||||
1. 新建支付工具 /utils/payment.js(已有,需重构)
|
|
||||||
2. 封装统一支付方法:
|
|
||||||
- payment.paySection(sectionId) 购买章节
|
|
||||||
- payment.payFullBook() 购买全书
|
|
||||||
3. 内部处理所有逻辑(创建订单、调起支付、更新状态)
|
|
||||||
4. 各页面只需一行调用
|
|
||||||
```
|
|
||||||
|
|
||||||
#### 4.5.3 导航结构优化
|
|
||||||
|
|
||||||
**当前TabBar**:首页 | 匹配 | 我的(3个)
|
|
||||||
|
|
||||||
**优化后TabBar**:首页 | 目录 | 搜索 | 合伙人 | 我的(5个)
|
|
||||||
|
|
||||||
**页面层级规则**:
|
|
||||||
| 类型 | 页面 | 跳转方式 |
|
|
||||||
|:---|:---|:---|
|
|:---|:---|:---|
|
||||||
| TabBar页 | 首页、目录、搜索、合伙人、我的 | `wx.switchTab` |
|
| 查看推广中心 | 点击推广中心 | 显示收益、绑定用户列表 |
|
||||||
| 二级页 | 阅读、档案详情、推广中心、设置 | `wx.navigateTo` |
|
| 复制邀请链接 | 点击复制链接 | 链接包含专属邀请码 |
|
||||||
| 弹窗 | 登录、支付确认、分享 | 组件弹窗 |
|
| 分享文案 | 点击分享到朋友圈 | 复制推广文案 |
|
||||||
|
|
||||||
#### 4.5.4 数据实时同步
|
|
||||||
|
|
||||||
**改造方案**:
|
|
||||||
```
|
|
||||||
1. 使用全局状态管理(基于 app.globalData + 事件机制)
|
|
||||||
2. 关键操作后广播事件:
|
|
||||||
- 登录成功 → 'login-success'
|
|
||||||
- 购买成功 → 'purchase-success'
|
|
||||||
- 进度更新 → 'progress-update'
|
|
||||||
3. 各页面监听事件,自动刷新UI
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 五、技术约束
|
## 八、下一步计划
|
||||||
|
|
||||||
| 维度 | 约束 |
|
### 待开发功能
|
||||||
|:---|:---|
|
|
||||||
| **小程序框架** | 微信原生小程序(不使用uni-app/Taro) |
|
|
||||||
| **后端框架** | Next.js API Routes |
|
|
||||||
| **数据库** | MySQL(已有实例) |
|
|
||||||
| **部署环境** | 宝塔面板 + GitHub Webhook自动部署 |
|
|
||||||
| **微信支付** | 已对接,企业付款需单独申请 |
|
|
||||||
|
|
||||||
---
|
| 功能 | 优先级 | 说明 |
|
||||||
|
|
||||||
## 六、异常处理规则
|
|
||||||
|
|
||||||
| 异常场景 | 处理方式 |
|
|
||||||
|:---|:---|
|
|
||||||
| 搜索无结果 | 显示"暂无相关内容",推荐热门章节 |
|
|
||||||
| 进度同步失败 | 本地缓存,下次启动重试 |
|
|
||||||
| 自动提现失败 | 记录日志,标记待人工处理,通知用户 |
|
|
||||||
| 合伙人认证失败 | 显示失败原因,引导重新提交 |
|
|
||||||
| 网络异常 | 统一显示"网络异常,请重试",支持重试 |
|
|
||||||
| 登录态过期 | 自动刷新token,失败则弹出登录框 |
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 七、测试用例清单
|
|
||||||
|
|
||||||
### 7.1 全站搜索
|
|
||||||
|
|
||||||
| 用例ID | 场景 | 输入 | 期望输出 |
|
|
||||||
|:---|:---|:---|:---|
|
|
||||||
| S01 | 搜索章节标题 | "电动车" | 返回1.1章节 |
|
|
||||||
| S02 | 搜索章节内容 | "私域银行" | 返回包含该词的章节列表 |
|
|
||||||
| S03 | 搜索合伙人 | "电商" | 返回行业为电商的合伙人 |
|
|
||||||
| S04 | 空关键词搜索 | "" | 显示热门推荐 |
|
|
||||||
| S05 | 无结果搜索 | "xyz123" | 显示"暂无相关内容" |
|
|
||||||
|
|
||||||
### 7.2 阅读进度同步
|
|
||||||
|
|
||||||
| 用例ID | 场景 | 操作 | 期望结果 |
|
|
||||||
|:---|:---|:---|:---|
|
|
||||||
| R01 | 进度上报 | 阅读到50%位置 | 服务端记录scroll_percent=50 |
|
|
||||||
| R02 | 进度恢复 | 重新打开章节 | 自动滚动到50%位置 |
|
|
||||||
| R03 | 跨设备同步 | 手机读到3章,电脑打开 | 电脑显示"继续阅读第3章?" |
|
|
||||||
| R04 | 网络断开 | 离线阅读 | 本地缓存进度,联网后同步 |
|
|
||||||
|
|
||||||
### 7.3 自动提现
|
|
||||||
|
|
||||||
| 用例ID | 场景 | 条件 | 期望结果 |
|
|
||||||
|:---|:---|:---|:---|
|
|
||||||
| W01 | 达到阈值 | 余额=100元 | 凌晨自动提现到微信 |
|
|
||||||
| W02 | 未达阈值 | 余额=50元 | 不触发提现 |
|
|
||||||
| W03 | 提现失败 | 微信接口异常 | 记录失败日志,通知管理员 |
|
|
||||||
| W04 | 关闭自动提现 | 用户手动关闭 | 不触发自动提现 |
|
|
||||||
|
|
||||||
### 7.4 合伙人档案
|
|
||||||
|
|
||||||
| 用例ID | 场景 | 操作 | 期望结果 |
|
|
||||||
|:---|:---|:---|:---|
|
|
||||||
| P01 | 创建档案 | 填写必填字段并保存 | 档案创建成功,显示在列表 |
|
|
||||||
| P02 | 查看档案 | 点击合伙人卡片 | 跳转档案详情页 |
|
|
||||||
| P03 | 未认证查看 | 未认证用户查看他人微信 | 提示"认证后可查看" |
|
|
||||||
| P04 | 筛选合伙人 | 选择"电商"+"找流量" | 只显示符合条件的合伙人 |
|
|
||||||
|
|
||||||
### 7.5 交互优化
|
|
||||||
|
|
||||||
| 用例ID | 场景 | 操作 | 期望结果 |
|
|
||||||
|:---|:---|:---|:---|
|
|
||||||
| U01 | 全局登录 | 任意页面点击需登录功能 | 弹出统一登录框 |
|
|
||||||
| U02 | 登录后刷新 | 登录成功 | 当前页面自动刷新用户状态 |
|
|
||||||
| U03 | 购买后更新 | 购买章节成功 | 立即显示"已购买",无需刷新 |
|
|
||||||
| U04 | TabBar切换 | 点击目录Tab | 切换到目录页,选中状态正确 |
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 八、验收标准
|
|
||||||
|
|
||||||
| 验收项 | 标准 | 验收人 |
|
|
||||||
|:---|:---|:---|
|
|:---|:---|:---|
|
||||||
| 功能完整 | 全部P0功能可用,P1功能90%可用 | 卡若 |
|
| 全站搜索 | P1 | 搜索章节标题和内容 |
|
||||||
| 交互流畅 | 页面切换无卡顿,操作响应<500ms | 卡若 |
|
| 阅读进度同步 | P1 | 小程序↔网页端同步 |
|
||||||
| 数据准确 | 进度同步准确,提现金额正确 | 卡若 |
|
| 自动提现 | P2 | 满100元自动提现 |
|
||||||
| 无严重Bug | 不影响核心流程的使用 | 卡若 |
|
| 合伙人档案 | P2 | 详细档案和认证体系 |
|
||||||
| 代码规范 | 符合现有项目规范,有必要注释 | 卡若 |
|
|
||||||
|
### 本期目标
|
||||||
|
|
||||||
|
1. ✅ 支付功能可用
|
||||||
|
2. ✅ 分销功能可用
|
||||||
|
3. ✅ 界面优化完成
|
||||||
|
4. ⏳ 提交小程序审核上线
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 九、开发任务优先级
|
**方案版本**:v1.1
|
||||||
|
|
||||||
### 第一阶段:交互优化(P0)
|
|
||||||
|
|
||||||
| 序号 | 任务 | 预估工作量 |
|
|
||||||
|:---|:---|:---|
|
|
||||||
| 1 | 全局登录组件封装 | 0.5天 |
|
|
||||||
| 2 | 支付模块重构 | 1天 |
|
|
||||||
| 3 | 数据实时同步机制 | 0.5天 |
|
|
||||||
| 4 | 阅读进度同步(前后端) | 1天 |
|
|
||||||
|
|
||||||
### 第二阶段:功能增强(P0-P1)
|
|
||||||
|
|
||||||
| 序号 | 任务 | 预估工作量 |
|
|
||||||
|:---|:---|:---|
|
|
||||||
| 5 | 全站搜索(前后端) | 1.5天 |
|
|
||||||
| 6 | 导航结构调整(5个Tab) | 1天 |
|
|
||||||
| 7 | 合伙人档案系统(前后端) | 2天 |
|
|
||||||
| 8 | 自动提现功能(前后端) | 1.5天 |
|
|
||||||
|
|
||||||
### 第三阶段:测试与优化
|
|
||||||
|
|
||||||
| 序号 | 任务 | 预估工作量 |
|
|
||||||
|:---|:---|:---|
|
|
||||||
| 9 | 全流程测试 | 1天 |
|
|
||||||
| 10 | Bug修复与优化 | 1天 |
|
|
||||||
|
|
||||||
**总计预估**:约11天
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 十、下一步行动
|
|
||||||
|
|
||||||
1. **确认本方案**:如有调整请反馈
|
|
||||||
2. **创建开发分支**:`feature/miniprogram-v2`
|
|
||||||
3. **按优先级开发**:先完成第一阶段交互优化
|
|
||||||
4. **每日更新进度**:更新到项目推进表
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
**方案版本**:v1.0
|
|
||||||
**创建时间**:2026-01-23
|
**创建时间**:2026-01-23
|
||||||
**下次评审**:开发完成后
|
**更新时间**:2026-01-23
|
||||||
|
**下次评审**:上线后
|
||||||
Reference in New Issue
Block a user