<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
>
<channel>
<title><![CDATA[安度因的技术站]]></title> 
<atom:link href="https://www.ady0.cn/rss.php" rel="self" type="application/rss+xml" />
<description><![CDATA[]]></description>
<link>https://www.ady0.cn/</link>
<language>zh-cn</language>

<item>
    <title>羽毛球系统「俱乐部」功能需求规格文档</title>
    <link>https://www.ady0.cn/?post=3</link>
    <description><![CDATA[<p><strong>状态</strong>：待评审</p>
<hr />
<h2>1. 问题陈述</h2>
<p>当前羽毛球系统以「个人发布比赛 + 个人用户报名」为核心模式，本质上是单向的——个人负责组织一切，个人用户被动参与。这种模式存在三个明显瓶颈：</p>
<ol>
<li><strong>组织能力天花板</strong>：无法覆盖所有地域、所有层次的羽毛球活动需求，尤其是本地化、常态化的组局找搭子场景。</li>
<li><strong>缺乏社群载体</strong>：羽毛球天然是高社交属性的运动，用户有归属感诉求，目前系统无法承载「俱乐部」这一社群形态。</li>
<li><strong>商业变现单一</strong>：平台仅靠比赛报名费变现，缺乏 B2B2C（平台→俱乐部→用户）的多层商业模型。</li>
</ol>
<p>引入「俱乐部」功能，本质上是将平台从一个「活动发布工具」升级为一个「羽毛球社群平台」——让有资源、有意愿的组织者（场馆方、教练、资深球友）成为平台的合作伙伴，由他们来服务和运营本地球友社群。</p>
<hr />
<h2>2. 目标</h2>
<h3>用户目标</h3>
<table>
<thead>
<tr>
<th>序号</th>
<th>目标</th>
<th>衡量方式</th>
</tr>
</thead>
<tbody>
<tr>
<td>U1</td>
<td>俱乐部组织者能够自主注册、管理俱乐部，招募会员</td>
<td>注册流程完成率 ≥ 80%</td>
</tr>
<tr>
<td>U2</td>
<td>会员能找到归属的俱乐部，参与内部比赛和组局</td>
<td>俱乐部会员活跃率（月活/总会员）≥ 40%</td>
</tr>
<tr>
<td>U3</td>
<td>俱乐部能够通过会员费获得收益</td>
<td>月均俱乐部会员费收入 &gt; 0 的俱乐部占比 ≥ 30%</td>
</tr>
</tbody>
</table>
<h3>业务目标</h3>
<table>
<thead>
<tr>
<th>序号</th>
<th>目标</th>
<th>衡量方式</th>
</tr>
</thead>
<tbody>
<tr>
<td>B1</td>
<td>提升平台赛事供给量，突破组织瓶颈</td>
<td>平台月总比赛数增长 ≥ 100%</td>
</tr>
<tr>
<td>B2</td>
<td>建立俱乐部年审费 + 扩容费收入模型</td>
<td>俱乐部频道月收入达到可量化目标（待定）</td>
</tr>
<tr>
<td>B3</td>
<td>提升用户留存和活跃度</td>
<td>有俱乐部归属的用户 30 日留存率高于无归属用户 ≥ 15pp</td>
</tr>
</tbody>
</table>
<hr />
<h2>3. 非目标</h2>
<table>
<thead>
<tr>
<th>序号</th>
<th>非目标</th>
<th>原因</th>
</tr>
</thead>
<tbody>
<tr>
<td>N1</td>
<td><strong>不开放个人注册俱乐部</strong></td>
<td>个人无营业执照、无场馆场景下，与现有「个人发布比赛」功能高度重合，缺乏独立价值。见第5节详细分析</td>
</tr>
<tr>
<td>N2</td>
<td><strong>打通商城放在下一阶段开发</strong></td>
<td>三方商城涉及类目/保证金/三方客服系统/物流发货等多种因素，将在后续阶段独立开发，暂时不纳入俱乐部 v1 范围</td>
</tr>
<tr>
<td>N3</td>
<td><strong>不支持场地售卖与预订</strong></td>
<td>原计划的场地售卖功能取消；比赛和组局也均不绑定场地，场地信息由发布者在活动描述中自行填写</td>
</tr>
</tbody>
</table>
<hr />
<h2>4. 功能模块与用户故事</h2>
<h3>模块A：俱乐部注册与生命周期</h3>
<h4>A1. 注册申请流程</h4>
<p><strong>用户故事</strong>：</p>
<ul>
<li>作为<strong>场馆方/组织者</strong>，我想要在前端提交俱乐部注册申请（填写名称、上传营业执照、选择所在城市/场馆位置、缴纳年费），以便成为平台的正式俱乐部合作伙伴。</li>
<li>作为<strong>平台管理员</strong>，我想要在后台审核俱乐部注册申请（查看资料、通过/驳回并附原因），以便确保平台上俱乐部的资质真实可靠。</li>
<li>作为<strong>申请者</strong>，我希望能看到申请的审核进度，以便了解当前状态。</li>
</ul>
<p><strong>需求规格</strong>：</p>
<p><strong>【P0】注册申请入口</strong></p>
<ul>
<li>前端新增「创建俱乐部」入口，位于个人中心或首页显眼位置</li>
<li>注册流程分步表单（参考公众号注册体验），步骤建议如下：</li>
</ul>
<pre><code>步骤1：选择主体类型
  → 仅开放「企业/机构」注册（不开放个人注册）

步骤2：填写基本信息
  → 俱乐部名称（2-20字，需唯一性校验）
  → 俱乐部简介（选填，≤200字）
  → 所在城市（省-市-区 三级联动选择器）
  → 俱乐部详细地址（选填）
  → 联系人姓名、手机号（自动读取当前用户信息，可修改）

步骤3：上传资质文件
  → 营业执照（必填，支持 jpg/png/pdf，≤10MB）
  → 场馆照片（选填，最多5张，但建议设为强烈推荐的"选填"）
  → 其他资质证明（选填，如体育经营许可证等）

步骤4：阅读协议并缴费
  → 展示《俱乐部入驻协议》
  → 勾选「我已阅读并同意」
  → 支付年审费用
  → 拉起支付（微信支付）

步骤5：提交成功
  → 提示「申请已提交，预计 3 个工作日内完成审核」
  → 显示审核状态入口</code></pre>
<p><strong>【P0】后台审核系统</strong></p>
<ul>
<li>后台新增「俱乐部审核」菜单</li>
<li>列表展示：俱乐部名称、申请人、主体类型、提交时间、审核状态</li>
<li>审核操作：
<ul>
<li><strong>通过</strong>：俱乐部状态变为「正常运营」，自动生成俱乐部主页，通知申请人</li>
<li><strong>驳回</strong>：必须填写驳回原因（预设模板 + 自定义），允许申请人修改后重新提交</li>
</ul></li>
<li>审核记录留痕（谁、何时、什么操作、原因）</li>
</ul>
<p><strong>【P0】年审机制</strong></p>
<ul>
<li>俱乐部注册通过后，有效期 = 1 年</li>
<li>到期前 30 天，系统向俱乐部管理员发送续费提醒（小程序订阅提醒 + 短信）</li>
<li>到期前 7 天、3 天、1 天，递增提醒频次</li>
<li>到期后未续费：
<ul>
<li>俱乐部状态变为「已冻结」</li>
<li>所有功能停止,俱乐部在前端隐藏不可查看,从之前的前端页面进入该俱乐部提示:俱乐部状态异常</li>
</ul></li>
</ul>
<p><strong>验收标准</strong>：</p>
<ul>
<li>[ ] Given 用户点击「创建俱乐部」，When 进入注册流程，Then 展示分步表单</li>
<li>[ ] Given 用户填写完步骤2点击下一步，When 俱乐部名称已被占用，Then 提示「该名称已被使用，请更换」</li>
<li>[ ] Given 用户完成支付，When 提交成功，Then 生成审核记录，状态为「待审核」</li>
<li>[ ] Given 管理员通过审核，When 操作完成，Then 俱乐部状态变为「正常运营」，申请人收到通知</li>
<li>[ ] Given 管理员驳回申请，When 填写驳回原因后提交，Then 申请人可查看原因并重新提交</li>
<li>[ ] Given 俱乐部到期未续费，Then 状态变为「已冻结」</li>
</ul>
<hr />
<h3>模块B：俱乐部信息与管理</h3>
<h4>B1. 俱乐部信息编辑</h4>
<p><strong>用户故事</strong>：</p>
<ul>
<li>作为<strong>俱乐部管理员</strong>，我想要编辑俱乐部的基本信息（名称、简介、封面图、轮播图等），以便向用户展示俱乐部的特色。</li>
<li>作为<strong>俱乐部管理员</strong>，我想要设置俱乐部的运营规则（是否开放加入、加入是否收费、非会员能否报名比赛、会员参赛折扣、是否开启俱乐部分销等），以便灵活管理俱乐部。</li>
</ul>
<p><strong>需求规格</strong>：</p>
<p><strong>【P0】俱乐部设置页</strong></p>
<ul>
<li>前端：俱乐部管理员进入「俱乐部管理」→「俱乐部设置」</li>
<li>可编辑项：</li>
</ul>
<table>
<thead>
<tr>
<th>设置项</th>
<th>类型</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td>俱乐部名称</td>
<td>文本</td>
<td>修改需平台审核（防止恶意改名）</td>
</tr>
<tr>
<td>俱乐部简介</td>
<td>富文本</td>
<td>支持图文混排</td>
</tr>
<tr>
<td>俱乐部头像/Logo</td>
<td>图片</td>
<td>建议 200×200</td>
</tr>
<tr>
<td>封面图</td>
<td>图片</td>
<td>最多3张，轮播展示</td>
</tr>
<tr>
<td>所在位置</td>
<td>地址选择器</td>
<td>审核通过后不可自行修改，需提交变更申请</td>
</tr>
</tbody>
</table>
<p><strong>【P0】运营规则设置</strong></p>
<table>
<thead>
<tr>
<th>设置项</th>
<th>类型</th>
<th>默认值</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td>是否允许用户申请加入</td>
<td>开关</td>
<td>开</td>
<td>关闭后新用户无法申请加入</td>
</tr>
<tr>
<td>加入是否需要审核</td>
<td>开关</td>
<td>开</td>
<td>开启 = 管理员审核通过方可加入；关闭 = 用户可直接加入</td>
</tr>
<tr>
<td>加入费用</td>
<td>金额</td>
<td>0（免费）</td>
<td>0 = 免费加入；&gt;0 = 需付费加入，可选择「永久/一次性」或「年费/周期制」</td>
</tr>
<tr>
<td>非会员能否报名俱乐部比赛</td>
<td>开关</td>
<td>关</td>
<td>开启后，管理员发比赛时可选择「允许非会员报名」</td>
</tr>
<tr>
<td>会员参赛折扣</td>
<td>百分比</td>
<td>100%（无折扣）</td>
<td>设置后，会员报名本俱乐部比赛自动享受折扣（如 80% = 8折）</td>
</tr>
<tr>
<td>是否开启俱乐部分销</td>
<td>开关</td>
<td>关</td>
<td>开启后可设置1级分销佣金比例或具体金额,仅支持1级分销</td>
</tr>
<tr>
<td>最大会员数</td>
<td>数字</td>
<td>500</td>
<td>见 B4 扩容功能</td>
</tr>
</tbody>
</table>
<p><strong>【P1】俱乐部名称修改审核</strong></p>
<ul>
<li>若管理员修改俱乐部名称，提交后进入审核队列</li>
<li>审核通过前，旧名称继续使用</li>
</ul>
<h4>B2. 子管理员体系</h4>
<p><strong>用户故事</strong>：</p>
<ul>
<li>作为<strong>俱乐部管理员</strong>，我想要设置子管理员并分配权限，以便分担日常管理压力。</li>
<li>作为<strong>子管理员</strong>，我只管理自己发布的比赛，不能管理或删除其他管理员的比赛。</li>
</ul>
<p><strong>需求规格</strong>：</p>
<p><strong>【P0】子管理员设置</strong></p>
<ul>
<li>管理员在「俱乐部管理」→「管理员设置」中操作：
<ul>
<li>添加子管理员：输入手机号，系统校验该手机号是否已注册平台账号</li>
<li>子管理员必须完成<strong>手机号绑定 + 实名认证</strong>方可生效</li>
<li>管理员可随时移除子管理员</li>
</ul></li>
</ul>
<p><strong>【P0】子管理员额度</strong></p>
<ul>
<li>俱乐部默认可免费设置 <strong>5 个</strong>子管理员</li>
<li>子管理员额度与会员上限<strong>相互独立</strong>，不绑定：
<ul>
<li>如需增加子管理员额度，需<strong>单独购买</strong></li>
</ul></li>
<li>子管理员额度为<strong>永久</strong>购买，非年付</li>
<li>额度阶梯（建议档位，具体价格待定）：</li>
</ul>
<table>
<thead>
<tr>
<th>子管理员额度</th>
<th>费用</th>
</tr>
</thead>
<tbody>
<tr>
<td>5 人（默认免费）</td>
<td>免费</td>
</tr>
<tr>
<td>10 人</td>
<td>¥X/永久</td>
</tr>
<tr>
<td>30 人</td>
<td>¥Y/永久</td>
</tr>
<tr>
<td>50 人</td>
<td>¥Z/永久</td>
</tr>
<tr>
<td>自定义</td>
<td>按每人 ¥N 计算</td>
</tr>
</tbody>
</table>
<ul>
<li>当前子管理员数量达到额度上限时，管理员无法添加新子管理员，前端提示「子管理员数量已达上限（X/Y），如需增加请单独购买子管理员额度」</li>
</ul>
<p><strong>【P0】权限边界</strong></p>
<table>
<thead>
<tr>
<th>权限项</th>
<th style="text-align: center;">俱乐部管理员</th>
<th style="text-align: center;">子管理员</th>
</tr>
</thead>
<tbody>
<tr>
<td>编辑俱乐部信息</td>
<td style="text-align: center;">✓</td>
<td style="text-align: center;">✗</td>
</tr>
<tr>
<td>设置运营规则</td>
<td style="text-align: center;">✓</td>
<td style="text-align: center;">✗</td>
</tr>
<tr>
<td>设置分销（开关/比例）</td>
<td style="text-align: center;">✓</td>
<td style="text-align: center;">✗</td>
</tr>
<tr>
<td>移除会员（仅限免费会员）</td>
<td style="text-align: center;">✓</td>
<td style="text-align: center;">✗</td>
</tr>
<tr>
<td>转移会员归属</td>
<td style="text-align: center;">✓</td>
<td style="text-align: center;">✗</td>
</tr>
<tr>
<td>发布比赛</td>
<td style="text-align: center;">✓</td>
<td style="text-align: center;">✓</td>
</tr>
<tr>
<td>删除自己发布的比赛</td>
<td style="text-align: center;">✓</td>
<td style="text-align: center;">✓</td>
</tr>
<tr>
<td>删除他人发布的比赛</td>
<td style="text-align: center;">✓</td>
<td style="text-align: center;">✗</td>
</tr>
<tr>
<td>查看俱乐部数据统计</td>
<td style="text-align: center;">✓</td>
<td style="text-align: center;">✗</td>
</tr>
<tr>
<td>查看自己名下用户</td>
<td style="text-align: center;">✓</td>
<td style="text-align: center;">✓</td>
</tr>
<tr>
<td>审核退款申请</td>
<td style="text-align: center;">✓（全部）</td>
<td style="text-align: center;">✓（仅自己发布的活动）</td>
</tr>
<tr>
<td>审核会员费退款</td>
<td style="text-align: center;">✓</td>
<td style="text-align: center;">✗</td>
</tr>
</tbody>
</table>
<h4>B3. 会员管理</h4>
<p><strong>【P0】会员移除规则</strong></p>
<blockquote>
<p>俱乐部管理员可以移除会员，但有严格限制：</p>
</blockquote>
<table>
<thead>
<tr>
<th>会员类型</th>
<th style="text-align: center;">是否可移除</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td>免费加入的会员</td>
<td style="text-align: center;">✅ 可移除</td>
<td>管理员确认后即刻移除，会员失去俱乐部身份</td>
</tr>
<tr>
<td>付费永久会员</td>
<td style="text-align: center;">❌ 不可移除</td>
<td>会员已一次性买断，永远不可移除</td>
</tr>
<tr>
<td>周期制年费会员（有效期内）</td>
<td style="text-align: center;">❌ 不可移除</td>
<td>会员已付费，在会员周期内受保护</td>
</tr>
<tr>
<td>周期制年费会员（已到期）</td>
<td style="text-align: center;">— 自动移除</td>
<td>到期后系统自动移除，无需管理员操作</td>
</tr>
</tbody>
</table>
<ul>
<li>前端会员列表需区分展示：
<ul>
<li>免费会员：显示「移除」按钮</li>
<li>付费会员：灰显「不可移除」标识，hover 显示原因（如「永久会员」/「会员有效期至 2027-03-15，到期后自动移除」）</li>
</ul></li>
<li>移除操作需二次确认弹窗</li>
<li>仅俱乐部管理员有此权限，子管理员无权移除会员</li>
</ul>
<p><strong>【P0】管理员不可主动添加会员</strong></p>
<ul>
<li>俱乐部管理员/子管理员<strong>不能</strong>主动将用户添加为俱乐部会员</li>
<li>会员加入的唯一路径：用户自行申请 → 按俱乐部加入规则（审核/付费）完成加入</li>
</ul>
<p><strong>【P0】多俱乐部归属</strong></p>
<ul>
<li>平台允许用户同时加入<strong>多个俱乐部</strong></li>
<li>用户在每个俱乐部的会员身份独立管理（费用独立、权益独立）</li>
<li>前端「我的俱乐部」展示所有已加入的俱乐部列表</li>
</ul>
<p><strong>【P0】会员归属规则</strong></p>
<blockquote>
<p>每个会员在俱乐部内归属到一个管理者名下，用于明确服务关系与售后责任。</p>
</blockquote>
<table>
<thead>
<tr>
<th>归属场景</th>
<th>归属对象</th>
</tr>
</thead>
<tbody>
<tr>
<td>用户自行加入俱乐部</td>
<td>自动归属<strong>俱乐部管理员</strong>名下</td>
</tr>
<tr>
<td>通过子管理员二维码或者转发小程序卡片邀请加入</td>
<td>自动归属<strong>该子管理员</strong>名下</td>
</tr>
</tbody>
</table>
<p><strong>【P0】会员归属转移</strong></p>
<ul>
<li>俱乐部管理员可以将会员的归属转移给任意子管理员，或收回至自己名下</li>
<li>子管理员之间<strong>不能</strong>互相转移会员，转移必须由俱乐部管理员操作</li>
<li>转移会员归属时，若该会员存在未完结的售后申请，禁止转移（详见模块D）</li>
</ul>
<p><strong>【P0】会员归属查看页面</strong></p>
<ul>
<li>子管理员：可查看「自己名下用户」列表</li>
<li>俱乐部管理员：可查看所有子管理员列表，以及每个子管理员名下所有用户的列表</li>
<li>俱乐部管理员也可查看自己名下用户列表</li>
</ul>
<h4>B4. 俱乐部人员上限与扩容</h4>
<p><strong>用户故事</strong>：</p>
<ul>
<li>作为<strong>平台运营方</strong>，我想要设置俱乐部的默认会员上限并通过扩容变现，以便在俱乐部规模增长时获得持续收入。</li>
</ul>
<p><strong>需求规格</strong>：</p>
<p><strong>【P0】基础上限</strong></p>
<ul>
<li>每个俱乐部默认最大会员数：<strong>500 人</strong></li>
<li>会员数 = 所有状态为「正常」的会员（不含已退出/已移除/免费被移除/年费到期自动移除）</li>
<li>达到上限后，新用户无法申请加入，前端提示「该俱乐部已满员」</li>
</ul>
<p><strong>【P1】付费扩容</strong></p>
<ul>
<li>
<p>扩容方案参考企业微信模式：</p>
<ul>
<li>管理员在「俱乐部设置」→「会员上限」中发起扩容</li>
<li>扩容阶梯（建议档位，具体价格待定）：</li>
</ul>
<table>
<thead>
<tr>
<th>扩容至</th>
<th>费用</th>
</tr>
</thead>
<tbody>
<tr>
<td>1000人</td>
<td>¥X/永久</td>
</tr>
<tr>
<td>2000人</td>
<td>¥Y/永久</td>
</tr>
<tr>
<td>5000人</td>
<td>¥Z/永久</td>
</tr>
<tr>
<td>自定义</td>
<td>按每人 ¥N 计算</td>
</tr>
</tbody>
</table>
<ul>
<li>扩容为<strong>永久</strong>购买，非年付</li>
<li>续费年审时，仅需支付年审费用即可，无需再次支付扩容费</li>
</ul>
</li>
</ul>
<h4>B5. 俱乐部分销</h4>
<p><strong>用户故事</strong>：</p>
<ul>
<li>作为<strong>俱乐部管理员</strong>，我想要开启分销并设置比例，激励子管理员积极发布活动。</li>
<li>作为<strong>子管理员</strong>，我发布活动可获得报名费抽佣，以便获得实际收益。</li>
</ul>
<p><strong>需求规格</strong>：</p>
<p><strong>【P0】分销开关与比例设置</strong></p>
<ul>
<li>俱乐部设置中新增「分销」开关（默认关闭）</li>
<li>开启后可设置<strong>一级分销比例</strong>（按报名费金额的百分比或固定金额，如 10%，范围 0-100%，或者 1¥）</li>
</ul>
<p><strong>【P0】分销生效范围</strong></p>
<ul>
<li>分销仅对<strong>子管理员</strong>生效，对俱乐部管理员无效</li>
<li>子管理员发布组局/比赛，用户付费报名时，子管理员按比例获得抽佣</li>
</ul>
<p><strong>【P0】资金归属规则</strong></p>
<table>
<thead>
<tr>
<th>发布者</th>
<th>报名费资金去向</th>
</tr>
</thead>
<tbody>
<tr>
<td>俱乐部管理员发布组局/比赛</td>
<td>计入俱乐部管理员自己的平台余额</td>
</tr>
<tr>
<td>子管理员发布组局/比赛</td>
<td>计入俱乐部管理员平台余额；若分销开启，抽佣部分计入子管理员余额，其余部分仍计入俱乐部管理员余额</td>
</tr>
<tr>
<td>俱乐部会员自行发布组局/比赛</td>
<td>一律计入该会员自己的平台余额，分销无效</td>
</tr>
</tbody>
</table>
<p><strong>【P0】分销关闭的影响</strong></p>
<ul>
<li>分销关闭或未设置比例时，子管理员发布的活动报名费全部计入俱乐部管理员余额，子管理员无抽佣</li>
</ul>
<hr />
<h3>模块C：俱乐部比赛与组局</h3>
<blockquote>
<p>注：比赛和组局均不绑定具体场地，场地信息由发布者在活动描述中自行填写</p>
</blockquote>
<h4>C1. 比赛列表整合方案</h4>
<p><strong>用户故事</strong>：</p>
<ul>
<li>作为<strong>普通用户</strong>，我想要在比赛列表中看到所有可参加的比赛（无论是平台发布还是俱乐部发布），以便不遗漏任何感兴趣的活动。</li>
<li>作为<strong>俱乐部会员</strong>，我想要能筛选只看本俱乐部的比赛，以便快速找到内部活动。</li>
</ul>
<p><strong>需求规格</strong>：</p>
<p><strong>【P0】比赛列表重构</strong></p>
<ul>
<li>总比赛列表合并展示：平台比赛 + 俱乐部公开比赛（混合排列，按时间倒序）</li>
<li>新增筛选条件：
<ul>
<li>「只看俱乐部比赛」</li>
<li>「只看个人比赛」</li>
<li>「只看本俱乐部比赛」（仅对有俱乐部归属的用户可见）</li>
<li>若用户属于<strong>多个俱乐部</strong>：选中后弹出俱乐部选择下拉框，选择具体俱乐部后筛选</li>
<li>若用户属于<strong>单个俱乐部</strong>：直接筛选该俱乐部的比赛</li>
</ul></li>
</ul>
<blockquote>
<p><strong>方案选择</strong>：采用「混合排列 + 筛选项」方案（而非「俱乐部置顶」方案），原因：</p>
<ul>
<li>置顶方案对个人发布者不公平，会降低个人用户发比赛积极性</li>
<li>混合排列 + 筛选兼顾了公平性和可发现性</li>
<li>后续可根据数据调整排序权重（如俱乐部比赛获得少量加权但不置顶）</li>
</ul>
</blockquote>
<p><strong>【P1】俱乐部比赛标识</strong></p>
<ul>
<li>俱乐部比赛在列表中展示俱乐部 Logo/名称</li>
<li>「俱乐部认证」标识，提升可信度</li>
</ul>
<h4>C2. 俱乐部内部比赛</h4>
<p><strong>用户故事</strong>：</p>
<ul>
<li>作为<strong>俱乐部管理员</strong>，我想要发布仅限本俱乐部会员参加的比赛，以便组织内部活动。</li>
<li>作为<strong>俱乐部会员</strong>，我想要在俱乐部主页看到所有内部比赛，以便不错过俱乐部专属活动。</li>
</ul>
<p><strong>需求规格</strong>：</p>
<p><strong>【P0】内部比赛发布</strong></p>
<ul>
<li>管理员/子管理员在「俱乐部管理」→「发布比赛」中操作</li>
<li>新增比赛发布选项：「是否允许非会员报名」
<ul>
<li><strong>不允许（默认）</strong>：比赛仅展示在俱乐部内部比赛列表，不在总列表中显示</li>
<li><strong>允许</strong>：比赛同时展示在俱乐部内部列表和总比赛列表</li>
</ul></li>
<li>该选项的可用性受俱乐部运营设置中「非会员能否报名俱乐部比赛」开关控制</li>
</ul>
<p><strong>【P0】俱乐部内部比赛列表</strong></p>
<ul>
<li>俱乐部详情页新增「赛事」Tab</li>
<li>展示该俱乐部所有比赛（含内部和公开），按时间排列</li>
<li>非会员访问时，仅展示公开比赛</li>
</ul>
<p><strong>【P0】会员专属折扣</strong></p>
<ul>
<li>若管理员设置了会员折扣（如 8 折），报名费自动计算：
<ul>
<li>会员：原价 × 折扣</li>
<li>非会员：原价</li>
</ul></li>
<li>前端报名页清晰展示原价和折后价</li>
</ul>
<h4>C3. 踢人与代报名（争议功能）</h4>
<blockquote>
<p><strong>详细分析见第 5 节「争议问题」</strong></p>
</blockquote>
<table>
<thead>
<tr>
<th>场景</th>
<th>功能</th>
<th>建议</th>
</tr>
</thead>
<tbody>
<tr>
<td>免费内部比赛</td>
<td>踢人</td>
<td>✅ 支持</td>
</tr>
<tr>
<td>免费内部比赛</td>
<td>代报名</td>
<td>✅ 支持（管理员选择会员直接报名，无需缴费）</td>
</tr>
<tr>
<td>收费内部比赛</td>
<td>踢人</td>
<td>⚠️ 支持但限制（需发起踢人请求 → 被踢者确认 → 自动退款）</td>
</tr>
<tr>
<td>收费内部比赛</td>
<td>代报名</td>
<td>⚠️ 改为「邀请报名」模式（管理员发起邀请 → 会员确认并付款）</td>
</tr>
<tr>
<td>允许非会员参与的比赛</td>
<td>踢人</td>
<td>❌ 不支持（外部用户无归属关系，踢人不合理）</td>
</tr>
<tr>
<td>允许非会员参与的比赛</td>
<td>代报名</td>
<td>❌ 不支持</td>
</tr>
</tbody>
</table>
<h4>C4. 比赛管理规则</h4>
<p><strong>【P0】发布后不可编辑</strong></p>
<ul>
<li>俱乐部发布的比赛一旦发布成功，<strong>不可再次编辑</strong></li>
<li>管理员/子管理员只能做<strong>删除</strong>操作</li>
<li>删除限制（沿用系统现有规则）：
<ul>
<li>只有<strong>无任何用户报名</strong>的比赛可以删除</li>
<li>或比赛<strong>已经结束</strong>后可以删除</li>
<li>有活跃报名的比赛禁止删除，前端提示「该比赛已有 X 人报名，无法删除」</li>
</ul></li>
<li>如果发现比赛信息有误，只能删除后重新发布</li>
</ul>
<hr />
<h3>模块D：退款与售后体系</h3>
<h4>D1. 现状分析</h4>
<p>现有系统的退款逻辑分散在多个场景中：</p>
<table>
<thead>
<tr>
<th>场景</th>
<th>现有退款机制</th>
<th>触发方</th>
</tr>
</thead>
<tbody>
<tr>
<td>组局活动</td>
<td>不可自行退款，必须走售后申请（用户填写资料 → 平台操作退款）</td>
<td>用户申请 → 平台审核</td>
</tr>
<tr>
<td>比赛（对局生成前）</td>
<td>可自行取消报名，系统自动退款</td>
<td>用户自助</td>
</tr>
<tr>
<td>比赛（对局生成后）</td>
<td>走售后申请（用户填写资料 → 平台操作退款）</td>
<td>用户申请 → 平台审核</td>
</tr>
</tbody>
</table>
<p><strong>现有问题</strong>：</p>
<ul>
<li>售后审核全部压在平台运营方，效率低、不灵活</li>
<li>俱乐部模式下，俱乐部管理员更了解实际参与情况，但没有审核权</li>
<li>缺少会员费退款通道</li>
</ul>
<h4>D2. 新流程设计</h4>
<p><strong>核心变化</strong>：审核权从「平台运营方」下放到「俱乐部管理员/子管理员」，平台退居仲裁角色。</p>
<pre><code>新流程：
用户提交退款资料 → 俱乐部管理员/子管理员审核
  ├── 同意 → 系统自动退款（原路返回）
  └── 拒绝 → 显示拒绝原因 +「平台介入」按钮
                └── 平台运营方仲裁 → 判同意/判驳回（终局）</code></pre>
<p><strong>权限隔离</strong>：</p>
<ul>
<li>俱乐部管理员：可查看并审核本俱乐部<strong>所有</strong>退款申请</li>
<li>子管理员：仅可查看并审核<strong>自己发布的活动</strong>产生的退款申请</li>
<li>会员费退款：<strong>仅</strong>俱乐部管理员可审核，子管理员无权</li>
</ul>
<h4>D3. 退款类型与权限矩阵</h4>
<table>
<thead>
<tr>
<th>退款类型</th>
<th>英文标识</th>
<th>可审核角色</th>
</tr>
</thead>
<tbody>
<tr>
<td>比赛报名费退款</td>
<td><code>match_signup</code></td>
<td>管理员（全部）+ 子管理员（仅自己发布的活动）</td>
</tr>
<tr>
<td>组局报名费退款</td>
<td><code>group_signup</code></td>
<td>管理员（全部）+ 子管理员（仅自己发布的活动）</td>
</tr>
<tr>
<td>会员费退款（新增）</td>
<td><code>membership_fee</code></td>
<td><strong>仅管理员</strong>（子管理员无权）</td>
</tr>
</tbody>
</table>
<h4>D4. 退款状态机</h4>
<pre><code>                   退款申请状态流转

   ┌─────────┐   用户提交申请    ┌──────────┐
   │ 无申请   │ ─────────────→  │ 待审核    │
   └─────────┘                └──────────┘
                                   │
                    ┌──────────────┼──────────────┐
                    │              │              │
                管理员同意      管理员拒绝    超时未处理
                    │              │         (超过72h)
                    ▼              ▼              │
              ┌──────────┐  ┌──────────┐         │
              │ 已同意    │  │ 已拒绝    │ ←──────┘
              │ 待退款    │  └──────────┘
              └──────────┘        │
                    │          用户点击
                系统自动        「平台介入」
                执行退款           │
                    │              ▼
                    ▼        ┌──────────┐
              ┌──────────┐  │ 平台仲裁中 │
              │ 已退款    │  └──────────┘
              │ (终态)    │        │
              └──────────┘   ┌────┴────┐
                             │         │
                         平台判同意  平台判驳回
                             │         │
                             ▼         ▼
                       ┌──────────┐ ┌──────────┐
                       │ 已退款    │ │ 平台驳回  │
                       │ (终态)    │ │ (终态)    │
                       └──────────┘ └──────────┘

   ┌──────────┐   用户主动撤销     ┌──────────┐
   │ 待审核    │ ───────────────→  │ 已撤销    │
   └──────────┘  (管理员处理前)    │ (终态)    │
                                  └──────────┘</code></pre>
<p><strong>状态说明</strong>：</p>
<table>
<thead>
<tr>
<th>状态</th>
<th>含义</th>
<th>可流转到</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>pending_review</code></td>
<td>待审核</td>
<td><code>approved</code>, <code>rejected</code>, <code>cancelled</code>, <code>expired</code></td>
</tr>
<tr>
<td><code>approved</code></td>
<td>已同意待退款</td>
<td><code>refunded</code>, <code>refund_failed</code></td>
</tr>
<tr>
<td><code>refunded</code></td>
<td>已退款（终态）</td>
<td>—</td>
</tr>
<tr>
<td><code>refund_failed</code></td>
<td>退款失败需人工处理</td>
<td><code>refunded</code></td>
</tr>
<tr>
<td><code>rejected</code></td>
<td>管理员拒绝</td>
<td><code>escalated</code>（用户点平台介入）</td>
</tr>
<tr>
<td><code>cancelled</code></td>
<td>用户主动撤销（终态）</td>
<td>—</td>
</tr>
<tr>
<td><code>escalated</code></td>
<td>平台仲裁中</td>
<td><code>refunded</code>, <code>platform_rejected</code></td>
</tr>
<tr>
<td><code>platform_rejected</code></td>
<td>平台驳回（终态）</td>
<td>—</td>
</tr>
<tr>
<td><code>expired</code></td>
<td>超时未处理 → 自动升级</td>
<td><code>escalated</code></td>
</tr>
</tbody>
</table>
<h4>D5. 关键业务规则</h4>
<table>
<thead>
<tr>
<th>编号</th>
<th>规则</th>
</tr>
</thead>
<tbody>
<tr>
<td>R1</td>
<td>用户提交退款申请后，在管理员处理前可主动撤销</td>
</tr>
<tr>
<td>R2</td>
<td>管理员同意后，系统自动调用支付网关退款（原路返回）</td>
</tr>
<tr>
<td>R3</td>
<td>管理员拒绝时，<strong>必须填写拒绝原因</strong>（不可为空）</td>
</tr>
<tr>
<td>R4</td>
<td>拒绝后，用户端显示拒绝原因 +「平台介入」按钮</td>
</tr>
<tr>
<td>R5</td>
<td>超时自动升级：俱乐部管理员/子管理员审核超过 <strong>48小时</strong> → 自动通过退款申请</td>
</tr>
<tr>
<td>R6</td>
<td>平台仲裁时效：平台介入后,平台运营需在 <strong>48小时</strong>内完成仲裁</td>
</tr>
<tr>
<td>R7</td>
<td>同一订单不可重复提交退款申请（一笔订单最多一条 active 退款单）</td>
</tr>
<tr>
<td>R8</td>
<td>管理员和子管理员的审核操作均需留痕（谁、何时、什么操作、原因）</td>
</tr>
<tr>
<td>R9</td>
<td>个人/俱乐部发布的组局和比赛售后流程统一走此新流程</td>
</tr>
<tr>
<td>R10</td>
<td>比赛对局生成前的「自行取消报名自动退款」功能保持不变</td>
</tr>
</tbody>
</table>
<h4>D6. 会员费退款特殊规则</h4>
<p><strong>用户故事</strong>：</p>
<ul>
<li>作为<strong>已付费加入俱乐部的用户</strong>，我想要申请退还会员费，以便在不满意时挽回损失。</li>
</ul>
<p><strong>需求规格</strong>：</p>
<p><strong>【P0】会员费退款冷静期设计</strong></p>
<table>
<thead>
<tr>
<th>时间段</th>
<th>退款规则</th>
</tr>
</thead>
<tbody>
<tr>
<td>加入后 <strong>0-7 天</strong></td>
<td>可申请全额退款</td>
</tr>
<tr>
<td>加入后 <strong>8-14 天</strong></td>
<td>按剩余天数比例退款：<code>退款金额 = 支付金额 × (剩余天数 / 总天数)</code></td>
</tr>
<tr>
<td>加入后 <strong>超过 14 天</strong></td>
<td>不可申请退款</td>
</tr>
</tbody>
</table>
<p><strong>【P0】权益清算</strong></p>
<ul>
<li>若用户在会员期间已享受会员参赛折扣（如比赛报名打折），退款时需扣除已享受的折扣差价</li>
<li>计算逻辑：<code>实际退款 = 按比例应退金额 - SUM(各比赛原价与折后价的差额)</code></li>
<li>若差价超过应退金额，退款额为 0（不追索）</li>
</ul>
<p><strong>【P0】退款后处理</strong></p>
<ul>
<li>会员费退款成功后，系统自动将该用户从俱乐部移除</li>
<li>清除会员身份及所有相关权益</li>
<li>该用户可重新申请加入俱乐部（重新走付费/审核流程）</li>
</ul>
<p><strong>【P0】审核权限</strong></p>
<ul>
<li>会员费退款申请<strong>仅</strong>俱乐部管理员可审核</li>
<li>子管理员无权限查看或审核会员费退款</li>
</ul>
<h4>D7. 售后通知与归属转移限制</h4>
<p><strong>用户故事</strong>：</p>
<ul>
<li>作为<strong>提交售后的会员</strong>，我希望能及时通知到负责审核的人。</li>
<li>作为<strong>俱乐部管理者</strong>，我希望售后通知精准触达，避免无关人员被打扰。</li>
</ul>
<p><strong>需求规格</strong>：</p>
<p><strong>【P0】售后通知范围</strong></p>
<ul>
<li>会员提交售后申请时，通过<strong>小程序订阅提醒</strong>通知（平台暂未对接短信）：
<ul>
<li>俱乐部管理员</li>
<li>该会员当前归属的子管理员（若归属在俱乐部管理员名下，则仅通知俱乐部管理员）</li>
</ul></li>
<li><strong>不通知所有子管理员</strong>，原因：
<ul>
<li>子管理员只负责自己名下会员的售后，广播通知会造成信息过载与越权</li>
<li>避免无关子管理员看到不属于自己名下会员的售后信息</li>
</ul></li>
</ul>
<blockquote>
<p><strong>技术说明</strong>：小程序订阅提醒为一次性订阅，需被通知者预先授权。建议在俱乐部管理员/子管理员开通权限时，引导其订阅「售后审核提醒」类消息模板。</p>
</blockquote>
<p><strong>【P0】归属转移限制</strong></p>
<ul>
<li>会员存在<strong>未完结</strong>（非终态）的售后申请时，<strong>禁止转移该会员的归属</strong></li>
<li>售后处理完毕（已退款 / 平台驳回 / 已撤销等终态）后，才允许转移</li>
<li>俱乐部管理员转移归属时前端校验并拦截，提示「该会员尚有未处理完的售后，需处理完毕后方可转移」</li>
</ul>
<blockquote>
<p><strong>设计说明</strong>：售后审核责任人与会员归属强绑定。若在售后未完结时转移归属，会导致「谁该继续处理这笔售后」的责任不清。因此采用「未完结售后 → 禁止转移归属」这一最简单明确的方案。</p>
</blockquote>
<hr />
<h2>5. 争议问题分析与方案建议</h2>
<h3>问题1：踢人与代报名</h3>
<p><strong>现状</strong>：当前系统不支持「管理员踢人」和「代其他用户报名」功能。</p>
<p><strong>分析</strong>：</p>
<p>踢人和代报名在免费场景下没有争议。争议集中在<strong>收费场景</strong>：</p>
<table>
<thead>
<tr>
<th>场景</th>
<th>踢人</th>
<th>代报名</th>
</tr>
</thead>
<tbody>
<tr>
<td>免费 + 内部</td>
<td>✅ 直接踢，无资金牵扯</td>
<td>✅ 管理员直接选人报名</td>
</tr>
<tr>
<td>收费 + 内部</td>
<td>⚠️ 涉及已付费用处理</td>
<td>⚠️ 涉及&quot;谁付钱&quot;的问题</td>
</tr>
<tr>
<td>允许外部参与</td>
<td>❌ 管理员对外部用户无管理权</td>
<td>❌ 代外部用户报名无业务合理性</td>
</tr>
</tbody>
</table>
<p><strong>方案</strong>：</p>
<p><strong>踢人（收费场景）</strong>：</p>
<ul>
<li>管理员发起「移出比赛」请求，需填写理由</li>
<li>系统通知被踢用户：「你将被移出比赛 X，费用将自动退回，是否同意」</li>
<li>被踢用户确认，系统自动退款（原路返回）</li>
<li>平台不抽取退款订单佣金</li>
<li>被踢用户拒绝 → 移除失败</li>
</ul>
<p><strong>代报名（收费场景）</strong>：</p>
<ul>
<li>改为「邀请报名」模式：
<ol>
<li>管理员选择会员 → 发起参赛邀请</li>
<li>会员收到通知 → 进入报名页确认</li>
<li>会员自行完成支付</li>
</ol></li>
<li><strong>不做管理员直接代付</strong>，原因：
<ul>
<li>支付归属不清晰（退款退给谁？）</li>
<li>存在纠纷风险</li>
<li>支付合规风险</li>
</ul></li>
</ul>
<hr />
<h3>问题2：个人注册 vs 企业注册</h3>
<p><strong>分析</strong>：</p>
<table>
<thead>
<tr>
<th>维度</th>
<th>个人注册</th>
<th>企业注册</th>
</tr>
</thead>
<tbody>
<tr>
<td>营业执照</td>
<td>❌ 无法提供</td>
<td>✅ 可提供</td>
</tr>
<tr>
<td>场馆/场所资质</td>
<td>❌ 无固定场所，位置难确定</td>
<td>✅ 有实体场所</td>
</tr>
<tr>
<td>信任度</td>
<td>低</td>
<td>高</td>
</tr>
<tr>
<td>与现有「个人发比赛」的区分度</td>
<td>模糊</td>
<td>清晰</td>
</tr>
</tbody>
</table>
<p><strong>推荐方案</strong>：</p>
<ul>
<li><strong>仅开放「企业/机构」注册</strong>，要求提供营业执照</li>
<li><strong>未来可考虑的个人场景</strong>：「召集人」角色（轻量版俱乐部），仅支持组局找搭子</li>
</ul>
<hr />
<h2>6. 开放问题</h2>
<table>
<thead>
<tr>
<th>#</th>
<th>问题</th>
<th>需要谁回答</th>
</tr>
</thead>
<tbody>
<tr>
<td>Q1</td>
<td>年审费用定多少？</td>
<td>运营/商务</td>
</tr>
<tr>
<td>Q2</td>
<td>会员扩容费用阶梯定价？</td>
<td>运营/商务</td>
</tr>
<tr>
<td>Q3</td>
<td>子管理员扩容费用阶梯定价？</td>
<td>运营/商务</td>
</tr>
<tr>
<td>Q4</td>
<td>俱乐部是否需要缴纳保证金（防止纠纷）？</td>
<td>运营/法务</td>
</tr>
<tr>
<td>Q5</td>
<td>子管理员额度购买的价格阶梯？</td>
<td>运营/商务</td>
</tr>
</tbody>
</table>
<hr />
<hr />
<blockquote>
<p><strong>文档状态：待评审</strong> |</p>
</blockquote>]]></description>
    <pubDate>Thu, 13 Aug 2026 10:11:23 +0800</pubDate>
    <dc:creator>安度因</dc:creator>
    <guid>https://www.ady0.cn/?post=3</guid>
</item>
</channel>
</rss>