Kaynağa Gözat

Docs: 重写小程序需求规格说明书V2(分期:课堂管理/课前准备/课后跟踪+报名付费裂变)

liaoxg 2 hafta önce
ebeveyn
işleme
f15211f5cb

+ 660 - 0
docs/小程序需求规格说明书.html

@@ -0,0 +1,660 @@
+<!DOCTYPE html>
+<html lang="zh-CN">
+<head>
+<meta charset="UTF-8">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<title>爱伴·AI之旅 训练营小程序 需求规格说明书(V2.0)</title>
+<style>
+  :root {
+    --brand: #F97316;
+    --brand-dark: #C2410C;
+    --ink: #1F2937;
+    --ink-soft: #4B5563;
+    --muted: #6B7280;
+    --line: #E5E7EB;
+    --bg: #F9FAFB;
+    --card: #FFFFFF;
+    --blue: #2563EB;
+    --blue-soft: #EFF6FF;
+    --green: #16A34A;
+    --green-soft: #F0FDF4;
+    --amber: #D97706;
+    --amber-soft: #FFFBEB;
+    --red: #DC2626;
+    --red-soft: #FEF2F2;
+    --p1: #2563EB;
+    --p1-soft: #EFF6FF;
+    --p2: #16A34A;
+    --p2-soft: #F0FDF4;
+    --p3: #9333EA;
+    --p3-soft: #FAF5FF;
+  }
+  * { box-sizing: border-box; }
+  body {
+    margin: 0;
+    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;
+    color: var(--ink);
+    background: var(--bg);
+    line-height: 1.7;
+    font-size: 15px;
+  }
+  .container { max-width: 1100px; margin: 0 auto; padding: 24px 28px 80px; }
+  header.hero {
+    background: linear-gradient(135deg, var(--brand), #FB923C);
+    color: #fff; border-radius: 16px; padding: 40px 44px; margin-bottom: 28px;
+  }
+  header.hero .brand { font-size: 14px; opacity: .9; letter-spacing: 2px; margin-bottom: 8px; }
+  header.hero h1 { font-size: 30px; margin: 0 0 10px; font-weight: 800; }
+  header.hero .sub { font-size: 16px; opacity: .95; }
+  .meta {
+    display: flex; flex-wrap: wrap; gap: 12px; margin-top: 20px;
+  }
+  .meta .chip {
+    background: rgba(255,255,255,.2); padding: 4px 14px; border-radius: 999px; font-size: 13px;
+  }
+  h2 {
+    font-size: 22px; margin: 40px 0 16px; padding-bottom: 10px; border-bottom: 2px solid var(--brand);
+    display: flex; align-items: center; gap: 10px;
+  }
+  h2 .num {
+    background: var(--brand); color: #fff; width: 30px; height: 30px; border-radius: 8px;
+    display: inline-flex; align-items: center; justify-content: center; font-size: 15px; flex-shrink: 0;
+  }
+  h3 { font-size: 17px; margin: 26px 0 10px; color: var(--ink); }
+  h4 { font-size: 15px; margin: 18px 0 8px; color: var(--ink); }
+  p { margin: 8px 0; }
+  ul, ol { margin: 8px 0; padding-left: 24px; }
+  li { margin: 4px 0; }
+  table { width: 100%; border-collapse: collapse; margin: 14px 0; font-size: 14px; background: var(--card); }
+  th, td { border: 1px solid var(--line); padding: 8px 12px; text-align: left; vertical-align: top; }
+  th { background: #F3F4F6; font-weight: 600; }
+  .card {
+    background: var(--card); border: 1px solid var(--line); border-radius: 12px;
+    padding: 20px 24px; margin: 16px 0;
+  }
+  .callout {
+    border-radius: 10px; padding: 14px 18px; margin: 14px 0; font-size: 14px;
+    border-left: 4px solid;
+  }
+  .callout.info { background: var(--blue-soft); border-color: var(--blue); }
+  .callout.warn { background: var(--amber-soft); border-color: var(--amber); }
+  .callout.danger { background: var(--red-soft); border-color: var(--red); }
+  .callout .t { font-weight: 700; margin-bottom: 4px; }
+  /* Phase tags */
+  .badge {
+    display: inline-block; padding: 2px 10px; border-radius: 999px; font-size: 12px; font-weight: 600;
+    vertical-align: middle; margin-right: 6px;
+  }
+  .badge.p1 { background: var(--p1-soft); color: var(--p1); border: 1px solid var(--p1); }
+  .badge.p2 { background: var(--p2-soft); color: var(--p2); border: 1px solid var(--p2); }
+  .badge.p3 { background: var(--p3-soft); color: var(--p3); border: 1px solid var(--p3); }
+  .badge.all { background: #F3F4F6; color: var(--muted); border: 1px solid #D1D5DB; }
+  /* FR blocks */
+  .fr {
+    border: 1px solid var(--line); border-left: 4px solid var(--blue); border-radius: 10px;
+    padding: 16px 20px; margin: 14px 0; background: var(--card);
+  }
+  .fr .fr-id { font-weight: 700; color: var(--blue); font-family: ui-monospace, monospace; }
+  .fr .fr-title { font-weight: 700; }
+  .fr.p1 { border-left-color: var(--p1); }
+  .fr.p2 { border-left-color: var(--p2); }
+  .fr.p3 { border-left-color: var(--p3); }
+  .fr .fr-id.p1 { color: var(--p1); }
+  .fr .fr-id.p2 { color: var(--p2); }
+  .fr .fr-id.p3 { color: var(--p3); }
+  .fr .desc { margin-top: 8px; color: var(--ink-soft); font-size: 14px; }
+  .fr ul { margin: 6px 0 0; }
+  .cols { display: flex; gap: 16px; flex-wrap: wrap; }
+  .cols > div { flex: 1; min-width: 260px; }
+  .toc { background: var(--card); border: 1px solid var(--line); border-radius: 12px; padding: 20px 26px; margin: 20px 0; }
+  .toc ol { margin: 4px 0; }
+  .toc a { color: var(--blue); text-decoration: none; }
+  .toc a:hover { text-decoration: underline; }
+  .flow { background: var(--card); border: 1px solid var(--line); border-radius: 10px; padding: 16px 20px; margin: 14px 0; font-size: 14px; }
+  .flow .step { margin: 6px 0; }
+  code { background: #F3F4F6; padding: 1px 6px; border-radius: 4px; font-family: ui-monospace, monospace; font-size: 13px; }
+  .small { font-size: 13px; color: var(--muted); }
+  .grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
+  @media (max-width: 700px) { .grid-2 { grid-template-columns: 1fr; } }
+  .tag-table td:first-child { white-space: nowrap; }
+  .prio { font-weight: 700; }
+</style>
+</head>
+<body>
+<div class="container">
+
+<header class="hero">
+  <div class="brand">爱伴 · AI之旅 | 训练营小程序</div>
+  <h1>需求规格说明书(SRS)</h1>
+  <div class="sub">用 AI 管好家里的三本账 · 让 AI 成为您的贴心伙伴<br>课程体系:L0/L1/L2/L3/L4 · 首期课程 L0 = 「家立方 · AI管家半日营」</div>
+  <div class="meta">
+    <span class="chip">版本:V2.0</span>
+    <span class="chip">日期:2026-09-04</span>
+    <span class="chip">状态:修订稿</span>
+    <span class="chip">替代:V1.0(2026-09-03)</span>
+  </div>
+</header>
+
+<div class="toc">
+  <strong>目录</strong>
+  <ol>
+    <li><a href="#s1">文档说明与版本变更</a></li>
+    <li><a href="#s2">项目背景与目标</a></li>
+    <li><a href="#s3">产品体系与名词约定</a></li>
+    <li><a href="#s4">用户角色与权限</a></li>
+    <li><a href="#s5">分期规划总览</a></li>
+    <li><a href="#s6">一期 · 课堂管理</a></li>
+    <li><a href="#s7">二期 · 课前准备</a></li>
+    <li><a href="#s8">三期 · 课后跟踪</a></li>
+    <li><a href="#s9">报名 · 付费 · 裂变分享</a></li>
+    <li><a href="#s10">数据模型</a></li>
+    <li><a href="#s11">接口与集成</a></li>
+    <li><a href="#s12">非功能需求与合规</a></li>
+    <li><a href="#s13">验收标准与排期建议</a></li>
+  </ol>
+</div>
+
+<!-- ===================== 1 ===================== -->
+<h2 id="s1"><span class="num">1</span>文档说明与版本变更</h2>
+
+<div class="card">
+  <h3>1.1 文档目的</h3>
+  <p>本文档定义「爱伴 · AI之旅」训练营微信小程序(学员端,uni-app Vue2)的需求规格,作为前端实现、后端开发与验收测试的基准。本文档依据 <code>C:\Users\liaoxg.DESKTOP-DGLN79N\WorkBuddy\2026-09-03-19-40-57</code> 目录下的产品方案文档重写,具体引用文件见 <strong>1.3</strong>。</p>
+
+  <h3>1.2 版本变更记录(V1.0 → V2.0)</h3>
+  <table>
+    <tr><th>章节</th><th>V1.0(旧)</th><th>V2.0(本版)</th></tr>
+    <tr>
+      <td>定位</td>
+      <td>面向「L0 半天营 30人 / 5组 / 积分对抗」单场景的完整课堂功能</td>
+      <td>按生命周期分期:<strong>一期=课堂管理</strong>;<strong>二期=课前准备</strong>;<strong>三期=课后跟踪</strong>;另新增<strong>报名 / 付费 / 裂变分享</strong></td>
+    </tr>
+    <tr>
+      <td>课堂管理</td>
+      <td>分散描述</td>
+      <td>归并为「一期」,与现有页面/表对齐(分组、分工、上传、教学卡、路演、投票、积分榜)</td>
+    </tr>
+    <tr>
+      <td>课前准备</td>
+      <td>仅装机打卡</td>
+      <td>新增:课前资料包、数据自检、课前 3 件事(见 §7)</td>
+    </tr>
+    <tr>
+      <td>课后跟踪</td>
+      <td>仅 7 天计划</td>
+      <td>新增:T+1/T+3/T+7/T+21/T+30 跟进、测评调研、卡券发放(见 §8)</td>
+    </tr>
+    <tr>
+      <td>报名 / 付费 / 裂变</td>
+      <td>无</td>
+      <td>新增模块(见 §9)</td>
+    </tr>
+  </table>
+
+  <h3>1.3 引用源文档(WorkBuddy 2026-09-03)</h3>
+  <table>
+    <tr><th>源文档</th><th>关系</th></tr>
+    <tr><td>01_校友圈AI培训与教练陪伴_整体方案.html</td><td>产品体系、商业模式、L0-L4 金字塔、定价</td></tr>
+    <tr><td>02_课纲_AI管家启航营_半天版_V4_三本账分工.html</td><td>课堂管理主需求:6 模块、积分赛制、两轮投票、三本账分工、五步教学卡</td></tr>
+    <tr><td>06_引流与产品闭环设计.html</td><td>报名、付费、裂变分享、转介激励、完课证书</td></tr>
+    <tr><td>11_小程序需求规格说明书.html</td><td>旧版 SRS(本文档重写对象)</td></tr>
+    <tr><td>13_文件索引与版本说明.html</td><td>文档索引、品牌名词约定</td></tr>
+  </table>
+</div>
+
+<!-- ===================== 2 ===================== -->
+<h2 id="s2"><span class="num">2</span>项目背景与目标</h2>
+
+<div class="card">
+  <h3>2.1 产品背景</h3>
+  <p>「爱伴 · AI之旅」面向希望用 AI 管理家庭生活的用户(尤其校友圈),提供「精品半天课 → 工作坊 → 系统营 → 21 天陪跑 → 年度教练会员 → 校友讲师团」的进阶路径。课程核心是教会用户用 <strong>WorkBuddy(得力/爱达玳 AI 助手)</strong> 管好家里的<strong>三本账</strong>:财富账、健康账、成长账。</p>
+  <ul>
+    <li><strong>L0 · 家立方·AI管家半日营</strong>:入门体验课,3 小时,30 人 / 5 组 / 积分对抗。</li>
+    <li><strong>L1 · 三场景工作坊</strong>:单场景深度 + 三场景联报。</li>
+    <li><strong>L2 · 个人系统建造营</strong>:搭建个人 AI 管家系统。</li>
+    <li><strong>L3 · 21 天陪跑</strong>:教练陪伴、习惯固化。</li>
+    <li><strong>L4 · 校友讲师团</strong>:优秀学员成长为讲师。</li>
+  </ul>
+
+  <h3>2.2 本小程序定位</h3>
+  <p>小程序(学员端)是线下训练营的<strong>数字化载体</strong>,覆盖「报名 → 课前准备 → 课堂管理 → 课后跟踪 → 裂变转介绍」全生命周期。一期聚焦课堂内实时管理,后续逐步补齐课前课后与商业闭环。</p>
+
+  <h3>2.3 总体目标</h3>
+  <ol>
+    <li>一期实现线下课堂的高效管理:分组、分工、积分、投票、成果沉淀,替代纸质记录。</li>
+    <li>二期打通课前准备,降低课堂上手门槛(预装、数据就绪)。</li>
+    <li>三期承接课后跟踪,提升完课率与留存转化。</li>
+    <li>新增报名 / 付费 / 裂变分享,形成从获客到转化的商业闭环。</li>
+  </ol>
+</div>
+
+<!-- ===================== 3 ===================== -->
+<h2 id="s3"><span class="num">3</span>产品体系与名词约定</h2>
+
+<div class="card">
+  <h3>3.1 品牌与课程</h3>
+  <table>
+    <tr><th>项</th><th>约定</th></tr>
+    <tr><td>总品牌</td><td>爱伴 · AI之旅</td></tr>
+    <tr><td>品牌标语(课程层)</td><td>用 AI 管好家里的三本账</td></tr>
+    <tr><td>品牌标语(品牌层)</td><td>让 AI 成为您的贴心伙伴</td></tr>
+    <tr><td>课程体系</td><td>L0/L1/L2/L3/L4 五级</td></tr>
+    <tr><td>首期课程(L0)</td><td>家立方 · AI管家半日营(保留为 L0 的 course name)</td></tr>
+    <tr><td>三本账</td><td>财富账(wealth)· 健康账(health)· 成长账(growth)</td></tr>
+  </table>
+
+  <h3>3.2 关键名词表</h3>
+  <table>
+    <tr><th>名词</th><th>含义</th></tr>
+    <tr><td>班次 Class</td><td>一次授课场次(例:2026-09-06 上午场),30 人 / 5 组</td></tr>
+    <tr><td>小组 Group</td><td>6 人一组,组名含数字 + 三本账之一 + 8 字口号</td></tr>
+    <tr><td>分工 Assignment</td><td>组内按三本账分工,role=专家/expert 或 支援/support</td></tr>
+    <tr><td>成果 Submission</td><td>深度产出(deep)或 互教跑通(taught)</td></tr>
+    <tr><td>教学卡 TeachingCard</td><td>互教 5 步教学卡(五槽位)</td></tr>
+    <tr><td>路演 Roadmap</td><td>各组终局展示 + 讲师评分 0-40</td></tr>
+    <tr><td>两轮投票 Vote</td><td>第1轮「我学会了」;第2轮「最想抄走」</td></tr>
+    <tr><td>积分 Score</td><td>组积分 + 个人积分,满分 230</td></tr>
+    <tr><td>嘉宾 Gift</td><td>完课后的卡券 / 私教名额 / 年会员等权益</td></tr>
+    <tr><td>浠艾福</td><td>AI 托管运营引擎,「一灯传百灯」创客生态(裂变载体)</td></tr>
+  </table>
+</div>
+
+<!-- ===================== 4 ===================== -->
+<h2 id="s4"><span class="num">4</span>用户角色与权限</h2>
+
+<div class="card">
+  <table>
+    <tr><th>角色</th><th>说明</th><th>主要权限</th></tr>
+    <tr><td>学员 Student</td><td>报名参训的营员(train_user.role=student)</td><td>报名、进班、分组、上传成果、投票、查看积分</td></tr>
+    <tr><td>讲师 Lecturer</td><td>主讲老师(train_admin.role=lecturer)</td><td>建班、管理后台、路演评分、积分手动加分、颁奖</td></tr>
+    <tr><td>助教 Assistant</td><td>课堂协助(train_admin.role=assistant)</td><td>核验成果、管理负责的组(manage_group_ids)</td></tr>
+    <tr><td>运营 Admin</td><td>后台运营(train_admin.role=admin)</td><td>全部后台权限、课程/班次/卡券/统计管理</td></tr>
+    <tr><td>(游客)</td><td>未登录 / 未报名用户</td><td>浏览课程介绍、发起报名、微信授权登录</td></tr>
+  </table>
+  <div class="callout info">
+    <div class="t">权限边界</div>
+    <p>小程序端权限由后端 JWT + 角色控制;后台(train-web)独立账号体系(train_admin)。助教只能操作其负责的小组。</p>
+  </div>
+</div>
+
+<!-- ===================== 5 ===================== -->
+<h2 id="s5"><span class="num">5</span>分期规划总览</h2>
+
+<div class="card">
+  <p>本文档按交付优先级将需求分为<strong>三期</strong>,并标注新增的<strong>报名 / 付费 / 裂变分享</strong>模块(扩展三期)。各功能需求以 <strong>FR-xx-ID</strong> 编号,并打上分期标签:<span class="badge p1">一期</span><span class="badge p2">二期</span><span class="badge p3">三期</span>。</p>
+
+  <table>
+    <tr>
+      <th>分期</th><th>聚焦</th><th>核心功能</th><th>对应页面 / 表(现状)</th>
+    </tr>
+    <tr>
+      <td><span class="badge p1">一期</span><br>课堂管理</td>
+      <td>线下课堂实时管理</td>
+      <td>进班、分组、分工、成果上传与核验、教学卡、路演、两轮投票、积分榜、奖项、后台</td>
+      <td>页面:index/class/group/assignment/upload/teaching/roadmap/vote/scoreboard/verify<br>表:train_class/group/group_member/assignment/submission/teaching_card/roadmap/vote/score</td>
+    </tr>
+    <tr>
+      <td><span class="badge p2">二期</span><br>课前准备</td>
+      <td>降低课堂上手门槛</td>
+      <td>课前资料包、装机打卡、数据自检、课前 3 件事、通知提醒</td>
+      <td>页面:checkin/prep(新)<br>表:train_checkin/train_prep_check</td>
+    </tr>
+    <tr>
+      <td><span class="badge p3">三期</span><br>课后跟踪</td>
+      <td>提升完课率与留存</td>
+      <td>7 天行动计划、T+ 系列跟进、测评兴趣调研、卡券/权益发放、证书</td>
+      <td>页面:plan/survey/mine(卡券)<br>表:train_plan/train_survey/train_coupon</td>
+    </tr>
+    <tr>
+      <td><span class="badge p3">扩展</span><br>报名·付费·裂变</td>
+      <td>商业闭环</td>
+      <td>报名表单、支付、团报、专属海报、邀请码、转介激励、转介绍统计</td>
+      <td>页面:enroll/pay/share(新)<br>表:train_order/train_enrollment/train_invite(新增)</td>
+    </tr>
+  </table>
+
+  <div class="callout warn">
+    <div class="t">分期建议</div>
+    <p>一期(课堂管理)为最低可用闭环,建议最先交付;二期(课前)与三期(课后)可同步并行;报名 / 付费 / 裂变涉及支付与第三方能力,建议在三期后或与三期并行启动。</p>
+  </div>
+</div>
+
+<!-- ===================== 6 · 一期 课堂管理 ===================== -->
+<h2 id="s6"><span class="num">6</span>一期 · 课堂管理</h2>
+
+<div class="card">
+  <p><span class="badge p1">一期</span>一期聚焦线下课堂的实时管理,对应现有小程序已实现的页面与后端表。目标:替代纸质流程,让讲师/助教/学员在课堂上用小程序完成全部协作。以下功能需求均已具备实现基础,本版 SRS 予以固化表述。</p>
+</div>
+
+<h3>6.1 登录与进班</h3>
+<div class="fr p1">
+  <span class="fr-id p1">FR-CM-01</span> <span class="fr-title">微信授权登录</span> <span class="badge p1">一期</span>
+  <div class="desc">学员通过微信授权登录,绑定 <code>openid</code>。登录后自动获取微信手机号与昵称,填充个人资料(train_user.phone / name)。后端签发 JWT(密钥与 cfc 体系互通)。</div>
+</div>
+<div class="fr p1">
+  <span class="fr-id p1">FR-CM-02</span> <span class="fr-title">校友身份校验</span> <span class="badge p1">一期</span>
+  <div class="desc">学员可提交校友身份(姓名、届别、院系、城市)进行校验,状态 pending(待审)/ accepted(通过)/ rejected(驳回)。通过后方可享受校友价/进入对应班次。后台可审核(train-web)。<br>页面:verify。</div>
+</div>
+<div class="fr p1">
+  <span class="fr-id p1">FR-CM-03</span> <span class="fr-title">班级码进班</span> <span class="badge p1">一期</span>
+  <div class="desc">学员通过 6 位班级码(train_class.code)加入班次,系统自动记录 class_id。已在班则提示。班次状态 draft/active/finished 控制可加入性。<br>页面:class。</div>
+</div>
+
+<h3>6.2 分组与组队</h3>
+<div class="fr p1">
+  <span class="fr-id p1">FR-CM-04</span> <span class="fr-title">组队与组名口号</span> <span class="badge p1">一期</span>
+  <div class="desc">班内 30 人分为 5 组(每组 6 人)。学员创建或加入小组,组名需包含「数字 + 钱/身体/孩子之一」+ 8 字口号。组名称示例符合课纲 V4 规则。<br>页面:group。</div>
+</div>
+<div class="fr p1">
+  <span class="fr-id p1">FR-CM-05</span> <span class="fr-title">组内分工(三本账)</span> <span class="badge p1">一期</span>
+  <div class="desc">组内成员认领三本账(wealth/health/growth)之一,role=expert(专家)或 support(支援)。可标记是否使用 etotem 脱敏样本。分工状态 pending/confirmed。<br>页面:group,assignment。</div>
+</div>
+<div class="fr p1">
+  <span class="fr-id p1">FR-CM-06</span> <span class="fr-title">路演发言人登记</span> <span class="badge p1">一期</span>
+  <div class="desc">每组登记路演发言人(话最少的人,登记后不可更换),作为路演评分对象。<br>表字段:train_group.spokesperson_uid。</div>
+</div>
+
+<h3>6.3 成果沉淀与核验</h3>
+<div class="fr p1">
+  <span class="fr-id p1">FR-CM-07</span> <span class="fr-title">成果上传</span> <span class="badge p1">一期</span>
+  <div class="desc">学员上传深度产出(deep)或互教跑通(taught)成果,支持多文件(files JSON)+ 核心产出截图(image)。标记是否样本数据(sample_flag)与是否确认脱敏(desensitized)。<br>页面:upload。</div>
+</div>
+<div class="fr p1">
+  <span class="fr-id p1">FR-CM-08</span> <span class="fr-title">助教核验</span> <span class="badge p1">一期</span>
+  <div class="desc">助教对成果进行 approved/rejected 审核,rejected 需填退回原因。核验通过后计入对应积分。<br>后端:SubmissionController + AdminReviewController。</div>
+</div>
+<div class="fr p1">
+  <span class="fr-id p1">FR-CM-09</span> <span class="fr-title">五步教学卡</span> <span class="badge p1">一期</span>
+  <div class="desc">学员按五槽位生成互教教学卡:①想一个问题 ②放进数据 ③让它报字段 ④发指令·验数字 ⑤存下来·定个时。可上传教学卡照片,讲师给质量分 0-20。<br>表:train_teaching_card;页面:teaching。</div>
+</div>
+
+<h3>6.4 路演与投票</h3>
+<div class="fr p1">
+  <span class="fr-id p1">FR-CM-10</span> <span class="fr-title">路演材料提交</span> <span class="badge p1">一期</span>
+  <div class="desc">各组提交路演材料(截图/文件),记录命题(proposition A-E)与发言人。讲师路演评分 0-40。<br>表:train_roadmap;页面:roadmap。</div>
+</div>
+<div class="fr p1">
+  <span class="fr-id p1">FR-CM-11</span> <span class="fr-title">两轮投票</span> <span class="badge p1">一期</span>
+  <div class="desc">
+    <ul>
+      <li><strong>第1轮「我学会了」</strong>:每人 2 票,不得投本组,投两个不同组;票王 30 / 第二 22 / 第三 15 / 其余 8。</li>
+      <li><strong>第2轮「最想抄走」</strong>:每人 1 票,可投本组;票王 20 / 第二 14 / 第三 9 / 其余 4。</li>
+    </ul>
+    防作弊:不得重复投票。<br>页面:vote;表:train_vote。
+  </div>
+</div>
+
+<h3>6.5 积分与排名</h3>
+<div class="fr p1">
+  <span class="fr-id p1">FR-CM-12</span> <span class="fr-title">积分流水</span> <span class="badge p1">一期</span>
+  <div class="desc">组积分与个人积分统一记录在 train_score,计分项含:install/prep/find/upload/teach/roadmap_quality/roadmap/vote/help。支持加分项(跨组互助 +10/次、进阶命题 +15)。<br>页面:scoreboard。</div>
+</div>
+<div class="fr p1">
+  <span class="fr-id p1">FR-CM-13</span> <span class="fr-title">积分榜与奖项</span> <span class="badge p1">一期</span>
+  <div class="desc">实时排行榜展示各组/个人积分,支持颁奖(冠军组、最佳教学、同题最优、最想抄走、最佳互教、最佳洞察、闪电装机、全员完课)。<br>页面:scoreboard,mine。</div>
+</div>
+
+<h3>6.6 管理后台(一期)</h3>
+<div class="fr p1">
+  <span class="fr-id p1">FR-CM-14</span> <span class="fr-title">后台管理</span> <span class="badge p1">一期</span>
+  <div class="desc">train-web 管理后台提供:课程/班次管理、学员管理、身份审核、成果审核、路演评分、积分手动加分、统计报表(AdminStatsController)。后台角色 admin/lecturer/assistant。</div>
+</div>
+
+<div class="callout info">
+  <div class="t">一期现状对齐</div>
+  <p>上述一期功能在小程序端已有对应页面(index/login/verify/class/group/assignment/upload/teaching/roadmap/vote/scoreboard/mine)与后端控制器(Auth/Class/Group/Assignment/Submission/TeachingCard/Roadmap/Vote/Score + admin/*)。本版 SRS 固化为一期范围。</p>
+</div>
+
+<!-- ===================== 7 · 二期 课前准备 ===================== -->
+<h2 id="s7"><span class="num">7</span>二期 · 课前准备</h2>
+
+<div class="card">
+  <p><span class="badge p2">二期</span>课前准备降低课堂上手门槛,确保学员到课即能动手。对应现有 train_checkin / train_prep_check 表,需补充课前资料包与提醒通知。</p>
+</div>
+
+<h3>7.1 课前资料与提醒</h3>
+<div class="fr p2">
+  <span class="fr-id p2">FR-PRE-01</span> <span class="fr-title">课前资料包</span> <span class="badge p2">二期</span>
+  <div class="desc">报名并进班后,系统推送课前资料包:课件 PDF、导出指引、脱敏清单、课前 3 件事说明。资料可按班次配置(train_class 扩展字段或独立附件表)。</div>
+</div>
+<div class="fr p2">
+  <span class="fr-id p2">FR-PRE-02</span> <span class="fr-title">课前提醒通知</span> <span class="badge p2">二期</span>
+  <div class="desc">上课前 T-7/T-3/T-1 通过微信订阅消息提醒学员完成课前准备,并附上课时间地点(train_class.time/place)。</div>
+</div>
+
+<h3>7.2 课前 3 件事</h3>
+<div class="fr p2">
+  <span class="fr-id p2">FR-PRE-03</span> <span class="fr-title">装机打卡</span> <span class="badge p2">二期</span>
+  <div class="desc">学员提交 WorkBuddy 已安装并登录的截图(train_checkin.image),status=done 即完成。计入课前完成状态,课堂模块二「装机通关」可读取该状态提速。<br>页面:checkin(现有)。</div>
+</div>
+<div class="fr p2">
+  <span class="fr-id p2">FR-PRE-04</span> <span class="fr-title">数据准备自检</span> <span class="badge p2">二期</span>
+  <div class="desc">学员自检三本账数据是否就绪:券商持仓(wealth)、体检或血压(health)、孩子成绩或日程(growth)。可勾「选了无」,系统分配 etotem 脱敏样本。<br>表:train_prep_check;页面:prep(新增)。</div>
+</div>
+<div class="fr p2">
+  <span class="fr-id p2">FR-PRE-05</span> <span class="fr-title">课前 3 件事引导</span> <span class="badge p2">二期</span>
+  <div class="desc">引导页展示课前 3 件事:①预装 WorkBuddy ②拷贝真实数据 ③想好「我家最乱的一本账」。全部完成点亮,未完成可反复提醒。</div>
+</div>
+
+<!-- ===================== 8 · 三期 课后跟踪 ===================== -->
+<h2 id="s8"><span class="num">8</span>三期 · 课后跟踪</h2>
+
+<div class="card">
+  <p><span class="badge p3">三期</span>课后跟踪提升完课率、留存与转化,把「半天课」延伸为「持续陪伴」。对应现有 train_plan / train_survey / train_coupon 表。</p>
+</div>
+
+<h3>8.1 7 天行动计划</h3>
+<div class="fr p3">
+  <span class="fr-id p3">FR-POST-01</span> <span class="fr-title">7 天行动计划提交</span> <span class="badge p3">三期</span>
+  <div class="desc">学员填写课后 4 件事:①补齐账本 ②固化 3 个用法 ③第 2 条自动化 ④约 etotem 测评。提交后进入 7 天执行期,状态 pending/done。<br>页面:plan;表:train_plan。</div>
+</div>
+
+<h3>8.2 T+ 系列跟进</h3>
+<div class="fr p3">
+  <span class="fr-id p3">FR-POST-02</span> <span class="fr-title">课后跟进节奏</span> <span class="badge p3">三期</span>
+  <div class="desc">
+    <ul>
+      <li><strong>T+1</strong>:推送成果合集与课堂照片。</li>
+      <li><strong>T+3</strong>:提醒补齐未完成项。</li>
+      <li><strong>T+7</strong>:回访 7 天计划完成度。</li>
+      <li><strong>T+21</strong>:约线上复盘会。</li>
+      <li><strong>T+30</strong>:留存统计与续课推荐。</li>
+    </ul>
+  </div>
+</div>
+
+<h3>8.3 测评调研与权益发放</h3>
+<div class="fr p3">
+  <span class="fr-id p3">FR-POST-03</span> <span class="fr-title">测评兴趣调研</span> <span class="badge p3">三期</span>
+  <div class="desc">课后收集学员感兴趣的后续方向(interest_health / interest_growth),用于精准推荐 L1-L4 课程。<br>页面:survey;表:train_survey。</div>
+</div>
+<div class="fr p3">
+  <span class="fr-id p3">FR-POST-04</span> <span class="fr-title">卡券 / 权益发放</span> <span class="badge p3">三期</span>
+  <div class="desc">按完成情况自动发放卡券(train_coupon):L1 / private(私教)/ etotem(测评),触发来源 vote/finish/research/champion/teaching。学员在「我的」查看并使用。<br>页面:mine(卡券区)。</div>
+</div>
+<div class="fr p3">
+  <span class="fr-id p3">FR-POST-05</span> <span class="fr-title">完课证书</span> <span class="badge p3">三期</span>
+  <div class="desc">完成离场验收 6 项(见 §6 备注与课纲)后,生成可分享的电子完课证书,作为社交货币用于裂变。</div>
+</div>
+
+<!-- ===================== 9 · 报名 付费 裂变 ===================== -->
+<h2 id="s9"><span class="num">9</span>报名 · 付费 · 裂变分享</h2>
+
+<div class="card">
+  <p><span class="badge p3">扩展</span>本模块为新增需求,落地商业闭环。引用源文档 <code>06_引流与产品闭环设计.html</code> 与 <code>01_整体方案.html</code>。需新增后端表 train_order / train_enrollment / train_invite,及前端页面 enroll / pay / share。</p>
+</div>
+
+<h3>9.1 报名</h3>
+<div class="fr p3">
+  <span class="fr-id p3">FR-ENROLL-01</span> <span class="fr-title">报名表单</span> <span class="badge p3">扩展</span>
+  <div class="desc">游客可浏览课程介绍并发起报名,填写:姓名、手机号、(选填)是否带电脑、已备数据类别、最想解决的 3 个问题。报名后生成报名单(train_enrollment),状态 pending/confirmed。</div>
+</div>
+<div class="fr p3">
+  <span class="fr-id p3">FR-ENROLL-02</span> <span class="fr-title">班次选择与容量</span> <span class="badge p3">扩展</span>
+  <div class="desc">报名时选择班次(train_class),展示时间/地点/剩余名额;满员(capacity)停止报名。校友价/公开价由身份校验结果决定。</div>
+</div>
+<div class="fr p3">
+  <span class="fr-id p3">FR-ENROLL-03</span> <span class="fr-title">邀请链接 / 班级码进班</span> <span class="badge p3">扩展</span>
+  <div class="desc">已报名学员可通过邀请链接或班级码进入班次与小组,衔接一期课堂管理。</div>
+</div>
+
+<h3>9.2 付费</h3>
+<div class="fr p3">
+  <span class="fr-id p3">FR-PAY-01</span> <span class="fr-title">在线支付</span> <span class="badge p3">扩展</span>
+  <div class="desc">接入微信支付,学员对报名单完成支付,生成订单(train_order)。订单状态 unpaid/paid/refunded/failed。金额以「分」为单位整数存储(与 cfc 金额规范一致)。</div>
+</div>
+<div class="fr p3">
+  <span class="fr-id p3">FR-PAY-02</span> <span class="fr-title">定价分层</span> <span class="badge p3">扩展</span>
+  <div class="desc">
+    <ul>
+      <li>L0 半天营:校友价 199-399,公开价 699-999。</li>
+      <li>L1 三场景工作坊:单场景 1280-1980,联报 3980。</li>
+      <li>L2 系统营:6800-9800。</li>
+      <li>21 天陪跑:1980;年度教练会员:12800-19800/年。</li>
+      <li>团报:30000-80000/场。</li>
+    </ul>
+    价格由后台配置,支付按实付金额结算。
+  </div>
+</div>
+<div class="fr p3">
+  <span class="fr-id p3">FR-PAY-03</span> <span class="fr-title">团报与发票</span> <span class="badge p3">扩展</span>
+  <div class="desc">支持团报下单(多学员一单)与企业开票信息采集。</div>
+</div>
+
+<h3>9.3 裂变分享</h3>
+<div class="fr p3">
+  <span class="fr-id p3">FR-FISS-01</span> <span class="fr-title">专属海报与邀请码</span> <span class="badge p3">扩展</span>
+  <div class="desc">每位学员生成专属分享海报 + 邀请码(train_user.invite_code 复用),带参进入报名页,记录转介关系(train_invite:inviter_id / invitee_id)。<br>页面:share(新增)。</div>
+</div>
+<div class="fr p3">
+  <span class="fr-id p3">FR-FISS-02</span> <span class="fr-title">转介激励</span> <span class="badge p3">扩展</span>
+  <div class="desc">
+    <ul>
+      <li>转介 1 人:赠 1 次私教(private)体验。</li>
+      <li>转介 3 人:赠年度会员权益。</li>
+      <li>「一灯传百灯」创客生态:邀请进入浠艾福创客体系,获得后续分成。</li>
+    </ul>
+  </div>
+</div>
+<div class="fr p3">
+  <span class="fr-id p3">FR-FISS-03</span> <span class="fr-title">转介绍统计</span> <span class="badge p3">扩展</span>
+  <div class="desc">后台展示每位学员的转介绍人数、成功报名数、发放权益记录,形成转介绍漏斗。</div>
+</div>
+<div class="fr p3">
+  <span class="fr-id p3">FR-FISS-04</span> <span class="fr-title">学员案例采集与授权</span> <span class="badge p3">扩展</span>
+  <div class="desc">对优秀学员成果进行「采集 → 脱敏 → 授权 → 回流」。”案例用于招生与裂变内容,需学员明确授权(同意隐私条款)。</div>
+</div>
+
+<div class="callout warn">
+  <div class="t">支付合规提示</div>
+  <p>付费功能涉及微信支付商户号、签名、回调验签、退款与财务对账。属于独立开发单元,建议单独立项并重点关注安全性(金额用整型分、回调幂等、防止重复支付)。</p>
+</div>
+
+<!-- ===================== 10 · 数据模型 ===================== -->
+<h2 id="s10"><span class="num">10</span>数据模型</h2>
+
+<div class="card">
+  <p>下表汇总现存表(schema.sql 已实现)与新增表(本版新增需求)。金额一律整型分;时间 ISO 8601;编码 utf8mb4。</p>
+
+  <h3>10.1 现存表(一期已具备)</h3>
+  <table>
+    <tr><th>表</th><th>用途</th><th>分期</th></tr>
+    <tr><td>train_course</td><td>课程 L0-L4</td><td class="prio" style="color:var(--green)">一期</td></tr>
+    <tr><td>train_class</td><td>班次</td><td class="prio" style="color:var(--green)">一期</td></tr>
+    <tr><td>train_user</td><td>学员</td><td class="prio" style="color:var(--green)">一期</td></tr>
+    <tr><td>train_group / train_group_member</td><td>小组与成员</td><td class="prio" style="color:var(--green)">一期</td></tr>
+    <tr><td>train_assignment</td><td>三本账分工</td><td class="prio" style="color:var(--green)">一期</td></tr>
+    <tr><td>train_submission</td><td>成果上传</td><td class="prio" style="color:var(--green)">一期</td></tr>
+    <tr><td>train_teaching_card</td><td>五步教学卡</td><td class="prio" style="color:var(--green)">一期</td></tr>
+    <tr><td>train_roadmap</td><td>路演材料</td><td class="prio" style="color:var(--green)">一期</td></tr>
+    <tr><td>train_vote</td><td>两轮投票</td><td class="prio" style="color:var(--green)">一期</td></tr>
+    <tr><td>train_score</td><td>积分流水</td><td class="prio" style="color:var(--green)">一期</td></tr>
+    <tr><td>train_checkin</td><td>装机打卡</td><td class="prio" style="color:var(--amber)">二期</td></tr>
+    <tr><td>train_prep_check</td><td>数据自检</td><td class="prio" style="color:var(--amber)">二期</td></tr>
+    <tr><td>train_plan</td><td>7 天计划</td><td class="prio" style="color:var(--amber)">三期</td></tr>
+    <tr><td>train_survey</td><td>测评调研</td><td class="prio" style="color:var(--amber)">三期</td></tr>
+    <tr><td>train_coupon</td><td>卡券</td><td class="prio" style="color:var(--amber)">三期</td></tr>
+    <tr><td>train_admin / train_audit_log</td><td>后台账号 / 审计</td><td class="prio" style="color:var(--green)">一期</td></tr>
+  </table>
+
+  <h3>10.2 新增表(报名/付费/裂变)</h3>
+  <table>
+    <tr><th>表</th><th>关键字段</th><th>用途</th></tr>
+    <tr>
+      <td>train_order</td>
+      <td>order_no, uid, class_id, amount(INT 分), status, pay_channel, pay_time, refund</td>
+      <td>支付订单</td>
+    </tr>
+    <tr>
+      <td>train_enrollment</td>
+      <td>uid, class_id, form_data(JSON), status, source(invite/scene)</td>
+      <td>报名单</td>
+    </tr>
+    <tr>
+      <td>train_invite</td>
+      <td>inviter_id, invitee_id, code, order_id, reward_status</td>
+      <td>转介绍关系</td>
+    </tr>
+  </table>
+</div>
+
+<!-- ===================== 11 · 接口与集成 ===================== -->
+<h2 id="s11"><span class="num">11</span>接口与集成</h2>
+
+<div class="card">
+  <ul>
+    <li><strong>接口规范</strong>:后端统一 <code>@PostMapping</code>,响应统一 <code>Result&lt;T&gt;</code>(code/message/data)。分层 Controller → Service → Mapper。</li>
+    <li><strong>鉴权</strong>:JWT(密钥与 cfc 对齐),营员 token 与 cfc 体系互通。</li>
+    <li><strong>微信能力</strong>:登录(openid)、手机号授权、订阅消息(提醒)、微信支付(三期扩展)。开发环境 test-mode(openid=test_&lt;code&gt;)。</li>
+    <li><strong>文件上传</strong>:UploadController 统一处理成果/截图/头像,返回可访问 URL。</li>
+    <li><strong>cfc 集成</strong>:CfcUser / CfcActivity 映射 cfc 同库 users / activities 表;金额与账本字段对齐 cfc 规范。</li>
+  </ul>
+</div>
+
+<!-- ===================== 12 · 非功能与合规 ===================== -->
+<h2 id="s12"><span class="num">12</span>非功能需求与合规</h2>
+
+<div class="card">
+  <table>
+    <tr><th>维度</th><th>要求</th></tr>
+    <tr><td>性能</td><td>课堂并发 ≤ 数百人,投票/积分实时刷新可接受秒级延迟;后台报表异步生成。</td></tr>
+    <tr><td>安全</td><td>金额整型分;支付回调幂等、验签;防止重复支付与越权访问(按角色校验)。</td></tr>
+    <tr><td>隐私合规</td><td>学员真实数据(持仓/血压/成绩)必须脱敏(desensitized);案例采集需明确授权;同意隐私政策。</td></tr>
+    <tr><td>兼容</td><td>uni-app Vue2(小程序端);不支持可选链/CSS Grid;时间展示用 utils/format.js 的 parseDate。</td></tr>
+    <tr><td>可用性</td><td>断网/弱网下课堂操作可重试;已提交数据不丢失。</td></tr>
+  </table>
+</div>
+
+<!-- ===================== 13 · 验收与排期 ===================== -->
+<h2 id="s13"><span class="num">13</span>验收标准与排期建议</h2>
+
+<div class="card">
+  <h3>13.1 验收标准(分阶段)</h3>
+  <table>
+    <tr><th>阶段</th><th>通过准则</th></tr>
+    <tr><td>一期 · 课堂管理</td><td>一次完整 L0 半天营课堂(30人/5组)全程可用小程序完成:进班、分组、分工、上传、核验、路演、两轮投票、积分榜、颁奖;后台可导出。</td></tr>
+    <tr><td>二期 · 课前准备</td><td>报名学员收到课前资料与提醒;装机打卡与数据自检状态可被课堂读取提速。</td></tr>
+    <tr><td>三期 · 课后跟踪</td><td>7 天计划、T+ 跟进、测评调研、卡券发放全流程跑通。</td></tr>
+    <tr><td>扩展 · 报名付费裂变</td><td>报名→支付→进班闭环;邀请海报/邀请码→转介绍→权益发放→后台转介绍漏斗。</td></tr>
+  </table>
+
+  <h3>13.2 排期建议</h3>
+  <ol>
+    <li><strong>一期(课堂管理)</strong>:现有代码已基本具备,建议优先验收、上线支撑首期线下课。</li>
+    <li><strong>二期(课前)+ 三期(课后)</strong>:可并行开发,共用订阅消息与资料体系。</li>
+    <li><strong>扩展(报名/付费/裂变)</strong>:涉及微信支付与商业结算,单独立项,紧随一期之后或与三期并行启动。</li>
+  </ol>
+
+  <div class="callout info">
+    <div class="t">结论</div>
+    <p>本 SRS 将原 V1.0 单场景文档重构为「<strong>一期课堂管理 → 二期课前准备 → 三期课后跟踪 + 报名/付费/裂变</strong>」的分期体系,与现有代码库已实现的 18 张表、15 个前端页面对齐,并为商业闭环预留新增表与页面。可按 §13.2 排期分阶段交付与验收。</p>
+  </div>
+</div>
+
+<footer style="margin-top:40px; text-align:center; color:var(--muted); font-size:13px; border-top:1px solid var(--line); padding-top:16px;">
+  爱伴 · AI之旅 训练营小程序 · 需求规格说明书 V2.0 · 2026-09-04
+</footer>
+
+</div>
+</body>
+</html>

+ 425 - 0
docs/小程序需求规格说明书.md

@@ -0,0 +1,425 @@
+# 爱伴 · AI之旅 训练营小程序 需求规格说明书(SRS)
+
+> **版本**:V2.0 | **日期**:2026-09-04 | **状态**:修订稿 | **替代**:V1.0(2026-09-03)
+>
+> 用 AI 管好家里的三本账 · 让 AI 成为您的贴心伙伴
+> 课程体系:L0/L1/L2/L3/L4 · 首期课程 L0 = 「家立方 · AI管家半日营」
+
+---
+
+## 目录
+
+1. [文档说明与版本变更](#1-文档说明与版本变更)
+2. [项目背景与目标](#2-项目背景与目标)
+3. [产品体系与名词约定](#3-产品体系与名词约定)
+4. [用户角色与权限](#4-用户角色与权限)
+5. [分期规划总览](#5-分期规划总览)
+6. [一期 · 课堂管理](#6-一期--课堂管理)
+7. [二期 · 课前准备](#7-二期--课前准备)
+8. [三期 · 课后跟踪](#8-三期--课后跟踪)
+9. [报名 · 付费 · 裂变分享](#9-报名--付费--裂变分享)
+10. [数据模型](#10-数据模型)
+11. [接口与集成](#11-接口与集成)
+12. [非功能需求与合规](#12-非功能需求与合规)
+13. [验收标准与排期建议](#13-验收标准与排期建议)
+
+---
+
+## 1. 文档说明与版本变更
+
+### 1.1 文档目的
+
+本文档定义「爱伴 · AI之旅」训练营微信小程序(学员端,uni-app Vue2)的需求规格,作为前端实现、后端开发与验收测试的基准。本文档依据 `C:\Users\liaoxg.DESKTOP-DGLN79N\WorkBuddy\2026-09-03-19-40-57` 目录下的产品方案文档重写,具体引用文件见 **1.3**。
+
+### 1.2 版本变更记录(V1.0 → V2.0)
+
+| 章节 | V1.0(旧) | V2.0(本版) |
+|---|---|---|
+| 定位 | 面向「L0 半天营 30人 / 5组 / 积分对抗」单场景的完整课堂功能 | 按生命周期分期:**一期=课堂管理**;**二期=课前准备**;**三期=课后跟踪**;另新增**报名 / 付费 / 裂变分享** |
+| 课堂管理 | 分散描述 | 归并为「一期」,与现有页面/表对齐(分组、分工、上传、教学卡、路演、投票、积分榜) |
+| 课前准备 | 仅装机打卡 | 新增:课前资料包、数据自检、课前 3 件事(见 §7) |
+| 课后跟踪 | 仅 7 天计划 | 新增:T+1/T+3/T+7/T+21/T+30 跟进、测评调研、卡券发放(见 §8) |
+| 报名 / 付费 / 裂变 | 无 | 新增模块(见 §9) |
+
+### 1.3 引用源文档(WorkBuddy 2026-09-03)
+
+| 源文档 | 关系 |
+|---|---|
+| 01_校友圈AI培训与教练陪伴_整体方案.html | 产品体系、商业模式、L0-L4 金字塔、定价 |
+| 02_课纲_AI管家启航营_半天版_V4_三本账分工.html | 课堂管理主需求:6 模块、积分赛制、两轮投票、三本账分工、五步教学卡 |
+| 06_引流与产品闭环设计.html | 报名、付费、裂变分享、转介激励、完课证书 |
+| 11_小程序需求规格说明书.html | 旧版 SRS(本文档重写对象) |
+| 13_文件索引与版本说明.html | 文档索引、品牌名词约定 |
+
+---
+
+## 2. 项目背景与目标
+
+### 2.1 产品背景
+
+「爱伴 · AI之旅」面向希望用 AI 管理家庭生活的用户(尤其校友圈),提供「精品半天课 → 工作坊 → 系统营 → 21 天陪跑 → 年度教练会员 → 校友讲师团」的进阶路径。课程核心是教会用户用 **WorkBuddy(得力/爱达玳 AI 助手)** 管好家里的**三本账**:财富账、健康账、成长账。
+
+- **L0 · 家立方·AI管家半日营**:入门体验课,3 小时,30 人 / 5 组 / 积分对抗。
+- **L1 · 三场景工作坊**:单场景深度 + 三场景联报。
+- **L2 · 个人系统建造营**:搭建个人 AI 管家系统。
+- **L3 · 21 天陪跑**:教练陪伴、习惯固化。
+- **L4 · 校友讲师团**:优秀学员成长为讲师。
+
+### 2.2 本小程序定位
+
+小程序(学员端)是线下训练营的**数字化载体**,覆盖「报名 → 课前准备 → 课堂管理 → 课后跟踪 → 裂变转介绍」全生命周期。一期聚焦课堂内实时管理,后续逐步补齐课前课后与商业闭环。
+
+### 2.3 总体目标
+
+1. 一期实现线下课堂的高效管理:分组、分工、积分、投票、成果沉淀,替代纸质记录。
+2. 二期打通课前准备,降低课堂上手门槛(预装、数据就绪)。
+3. 三期承接课后跟踪,提升完课率与留存转化。
+4. 新增报名 / 付费 / 裂变分享,形成从获客到转化的商业闭环。
+
+---
+
+## 3. 产品体系与名词约定
+
+### 3.1 品牌与课程
+
+| 项 | 约定 |
+|---|---|
+| 总品牌 | 爱伴 · AI之旅 |
+| 品牌标语(课程层) | 用 AI 管好家里的三本账 |
+| 品牌标语(品牌层) | 让 AI 成为您的贴心伙伴 |
+| 课程体系 | L0/L1/L2/L3/L4 五级 |
+| 首期课程(L0) | 家立方 · AI管家半日营(保留为 L0 的 course name) |
+| 三本账 | 财富账(wealth)· 健康账(health)· 成长账(growth) |
+
+### 3.2 关键名词表
+
+| 名词 | 含义 |
+|---|---|
+| 班次 Class | 一次授课场次(例:2026-09-06 上午场),30 人 / 5 组 |
+| 小组 Group | 6 人一组,组名含数字 + 三本账之一 + 8 字口号 |
+| 分工 Assignment | 组内按三本账分工,role=专家/expert 或 支援/support |
+| 成果 Submission | 深度产出(deep)或 互教跑通(taught) |
+| 教学卡 TeachingCard | 互教 5 步教学卡(五槽位) |
+| 路演 Roadmap | 各组终局展示 + 讲师评分 0-40 |
+| 两轮投票 Vote | 第1轮「我学会了」;第2轮「最想抄走」 |
+| 积分 Score | 组积分 + 个人积分,满分 230 |
+| 嘉宾 Gift | 完课后的卡券 / 私教名额 / 年会员等权益 |
+| 浠艾福 | AI 托管运营引擎,「一灯传百灯」创客生态(裂变载体) |
+
+---
+
+## 4. 用户角色与权限
+
+| 角色 | 说明 | 主要权限 |
+|---|---|---|
+| 学员 Student | 报名参训的营员(train_user.role=student) | 报名、进班、分组、上传成果、投票、查看积分 |
+| 讲师 Lecturer | 主讲老师(train_admin.role=lecturer) | 建班、管理后台、路演评分、积分手动加分、颁奖 |
+| 助教 Assistant | 课堂协助(train_admin.role=assistant) | 核验成果、管理负责的组(manage_group_ids) |
+| 运营 Admin | 后台运营(train_admin.role=admin) | 全部后台权限、课程/班次/卡券/统计管理 |
+| (游客) | 未登录 / 未报名用户 | 浏览课程介绍、发起报名、微信授权登录 |
+
+> **权限边界**:小程序端权限由后端 JWT + 角色控制;后台(train-web)独立账号体系(train_admin)。助教只能操作其负责的小组。
+
+---
+
+## 5. 分期规划总览
+
+本文档按交付优先级将需求分为**三期**,并标注新增的**报名 / 付费 / 裂变分享**模块(扩展三期)。各功能需求以 **FR-xx-ID** 编号,并打上分期标签:`[一期]` `[二期]` `[三期]`。
+
+| 分期 | 聚焦 | 核心功能 | 对应页面 / 表(现状) |
+|---|---|---|---|
+| **[一期]** 课堂管理 | 线下课堂实时管理 | 进班、分组、分工、成果上传与核验、教学卡、路演、两轮投票、积分榜、奖项、后台 | 页面:index/class/group/assignment/upload/teaching/roadmap/vote/scoreboard/verify<br>表:train_class/group/group_member/assignment/submission/teaching_card/roadmap/vote/score |
+| **[二期]** 课前准备 | 降低课堂上手门槛 | 课前资料包、装机打卡、数据自检、课前 3 件事、通知提醒 | 页面:checkin/prep(新)<br>表:train_checkin/train_prep_check |
+| **[三期]** 课后跟踪 | 提升完课率与留存 | 7 天行动计划、T+ 系列跟进、测评兴趣调研、卡券/权益发放、证书 | 页面:plan/survey/mine(卡券)<br>表:train_plan/train_survey/train_coupon |
+| **[扩展]** 报名·付费·裂变 | 商业闭环 | 报名表单、支付、团报、专属海报、邀请码、转介激励、转介绍统计 | 页面:enroll/pay/share(新)<br>表:train_order/train_enrollment/train_invite(新增) |
+
+> **分期建议**:一期(课堂管理)为最低可用闭环,建议最先交付;二期(课前)与三期(课后)可同步并行;报名 / 付费 / 裂变涉及支付与第三方能力,建议在三期后或与三期并行启动。
+
+---
+
+## 6. 一期 · 课堂管理
+
+> `[一期]` 一期聚焦线下课堂的实时管理,对应现有小程序已实现的页面与后端表。目标:替代纸质流程,让讲师/助教/学员在课堂上用小程序完成全部协作。以下功能需求均已具备实现基础,本版 SRS 予以固化表述。
+
+### 6.1 登录与进班
+
+**FR-CM-01 微信授权登录** `[一期]`
+
+学员通过微信授权登录,绑定 `openid`。登录后自动获取微信手机号与昵称,填充个人资料(train_user.phone / name)。后端签发 JWT(密钥与 cfc 体系互通)。
+
+**FR-CM-02 校友身份校验** `[一期]`
+
+学员可提交校友身份(姓名、届别、院系、城市)进行校验,状态 pending(待审)/ accepted(通过)/ rejected(驳回)。通过后方可享受校友价/进入对应班次。后台可审核(train-web)。页面:verify。
+
+**FR-CM-03 班级码进班** `[一期]`
+
+学员通过 6 位班级码(train_class.code)加入班次,系统自动记录 class_id。已在班则提示。班次状态 draft/active/finished 控制可加入性。页面:class。
+
+### 6.2 分组与组队
+
+**FR-CM-04 组队与组名口号** `[一期]`
+
+班内 30 人分为 5 组(每组 6 人)。学员创建或加入小组,组名需包含「数字 + 钱/身体/孩子之一」+ 8 字口号。组名称示例符合课纲 V4 规则。页面:group。
+
+**FR-CM-05 组内分工(三本账)** `[一期]`
+
+组内成员认领三本账(wealth/health/growth)之一,role=expert(专家)或 support(支援)。可标记是否使用 etotem 脱敏样本。分工状态 pending/confirmed。页面:group,assignment。
+
+**FR-CM-06 路演发言人登记** `[一期]`
+
+每组登记路演发言人(话最少的人,登记后不可更换),作为路演评分对象。表字段:train_group.spokesperson_uid。
+
+### 6.3 成果沉淀与核验
+
+**FR-CM-07 成果上传** `[一期]`
+
+学员上传深度产出(deep)或互教跑通(taught)成果,支持多文件(files JSON)+ 核心产出截图(image)。标记是否样本数据(sample_flag)与是否确认脱敏(desensitized)。页面:upload。
+
+**FR-CM-08 助教核验** `[一期]`
+
+助教对成果进行 approved/rejected 审核,rejected 需填退回原因。核验通过后计入对应积分。后端:SubmissionController + AdminReviewController。
+
+**FR-CM-09 五步教学卡** `[一期]`
+
+学员按五槽位生成互教教学卡:①想一个问题 ②放进数据 ③让它报字段 ④发指令·验数字 ⑤存下来·定个时。可上传教学卡照片,讲师给质量分 0-20。表:train_teaching_card;页面:teaching。
+
+### 6.4 路演与投票
+
+**FR-CM-10 路演材料提交** `[一期]`
+
+各组提交路演材料(截图/文件),记录命题(proposition A-E)与发言人。讲师路演评分 0-40。表:train_roadmap;页面:roadmap。
+
+**FR-CM-11 两轮投票** `[一期]`
+
+- **第1轮「我学会了」**:每人 2 票,不得投本组,投两个不同组;票王 30 / 第二 22 / 第三 15 / 其余 8。
+- **第2轮「最想抄走」**:每人 1 票,可投本组;票王 20 / 第二 14 / 第三 9 / 其余 4。
+
+防作弊:不得重复投票。页面:vote;表:train_vote。
+
+### 6.5 积分与排名
+
+**FR-CM-12 积分流水** `[一期]`
+
+组积分与个人积分统一记录在 train_score,计分项含:install/prep/find/upload/teach/roadmap_quality/roadmap/vote/help。支持加分项(跨组互助 +10/次、进阶命题 +15)。页面:scoreboard。
+
+**FR-CM-13 积分榜与奖项** `[一期]`
+
+实时排行榜展示各组/个人积分,支持颁奖(冠军组、最佳教学、同题最优、最想抄走、最佳互教、最佳洞察、闪电装机、全员完课)。页面:scoreboard,mine。
+
+### 6.6 管理后台(一期)
+
+**FR-CM-14 后台管理** `[一期]`
+
+train-web 管理后台提供:课程/班次管理、学员管理、身份审核、成果审核、路演评分、积分手动加分、统计报表(AdminStatsController)。后台角色 admin/lecturer/assistant。
+
+> **一期现状对齐**:上述一期功能在小程序端已有对应页面(index/login/verify/class/group/assignment/upload/teaching/roadmap/vote/scoreboard/mine)与后端控制器(Auth/Class/Group/Assignment/Submission/TeachingCard/Roadmap/Vote/Score + admin/*)。本版 SRS 固化为一期范围。
+
+---
+
+## 7. 二期 · 课前准备
+
+> `[二期]` 课前准备降低课堂上手门槛,确保学员到课即能动手。对应现有 train_checkin / train_prep_check 表,需补充课前资料包与提醒通知。
+
+### 7.1 课前资料与提醒
+
+**FR-PRE-01 课前资料包** `[二期]`
+
+报名并进班后,系统推送课前资料包:课件 PDF、导出指引、脱敏清单、课前 3 件事说明。资料可按班次配置(train_class 扩展字段或独立附件表)。
+
+**FR-PRE-02 课前提醒通知** `[二期]`
+
+上课前 T-7/T-3/T-1 通过微信订阅消息提醒学员完成课前准备,并附上课时间地点(train_class.time/place)。
+
+### 7.2 课前 3 件事
+
+**FR-PRE-03 装机打卡** `[二期]`
+
+学员提交 WorkBuddy 已安装并登录的截图(train_checkin.image),status=done 即完成。计入课前完成状态,课堂模块二「装机通关」可读取该状态提速。页面:checkin(现有)。
+
+**FR-PRE-04 数据准备自检** `[二期]`
+
+学员自检三本账数据是否就绪:券商持仓(wealth)、体检或血压(health)、孩子成绩或日程(growth)。可勾「选了无」,系统分配 etotem 脱敏样本。表:train_prep_check;页面:prep(新增)。
+
+**FR-PRE-05 课前 3 件事引导** `[二期]`
+
+引导页展示课前 3 件事:①预装 WorkBuddy ②拷贝真实数据 ③想好「我家最乱的一本账」。全部完成点亮,未完成可反复提醒。
+
+---
+
+## 8. 三期 · 课后跟踪
+
+> `[三期]` 课后跟踪提升完课率、留存与转化,把「半天课」延伸为「持续陪伴」。对应现有 train_plan / train_survey / train_coupon 表。
+
+### 8.1 7 天行动计划
+
+**FR-POST-01 7 天行动计划提交** `[三期]`
+
+学员填写课后 4 件事:①补齐账本 ②固化 3 个用法 ③第 2 条自动化 ④约 etotem 测评。提交后进入 7 天执行期,状态 pending/done。页面:plan;表:train_plan。
+
+### 8.2 T+ 系列跟进
+
+**FR-POST-02 课后跟进节奏** `[三期]`
+
+- **T+1**:推送成果合集与课堂照片。
+- **T+3**:提醒补齐未完成项。
+- **T+7**:回访 7 天计划完成度。
+- **T+21**:约线上复盘会。
+- **T+30**:留存统计与续课推荐。
+
+### 8.3 测评调研与权益发放
+
+**FR-POST-03 测评兴趣调研** `[三期]`
+
+课后收集学员感兴趣的后续方向(interest_health / interest_growth),用于精准推荐 L1-L4 课程。页面:survey;表:train_survey。
+
+**FR-POST-04 卡券 / 权益发放** `[三期]`
+
+按完成情况自动发放卡券(train_coupon):L1 / private(私教)/ etotem(测评),触发来源 vote/finish/research/champion/teaching。学员在「我的」查看并使用。页面:mine(卡券区)。
+
+**FR-POST-05 完课证书** `[三期]`
+
+完成离场验收 6 项(见 §6 备注与课纲)后,生成可分享的电子完课证书,作为社交货币用于裂变。
+
+---
+
+## 9. 报名 · 付费 · 裂变分享
+
+> `[扩展]` 本模块为新增需求,落地商业闭环。引用源文档 `06_引流与产品闭环设计.html` 与 `01_整体方案.html`。需新增后端表 train_order / train_enrollment / train_invite,及前端页面 enroll / pay / share。
+
+### 9.1 报名
+
+**FR-ENROLL-01 报名表单** `[扩展]`
+
+游客可浏览课程介绍并发起报名,填写:姓名、手机号、(选填)是否带电脑、已备数据类别、最想解决的 3 个问题。报名后生成报名单(train_enrollment),状态 pending/confirmed。
+
+**FR-ENROLL-02 班次选择与容量** `[扩展]`
+
+报名时选择班次(train_class),展示时间/地点/剩余名额;满员(capacity)停止报名。校友价/公开价由身份校验结果决定。
+
+**FR-ENROLL-03 邀请链接 / 班级码进班** `[扩展]`
+
+已报名学员可通过邀请链接或班级码进入班次与小组,衔接一期课堂管理。
+
+### 9.2 付费
+
+**FR-PAY-01 在线支付** `[扩展]`
+
+接入微信支付,学员对报名单完成支付,生成订单(train_order)。订单状态 unpaid/paid/refunded/failed。金额以「分」为单位整数存储(与 cfc 金额规范一致)。
+
+**FR-PAY-02 定价分层** `[扩展]`
+
+- L0 半天营:校友价 199-399,公开价 699-999。
+- L1 三场景工作坊:单场景 1280-1980,联报 3980。
+- L2 系统营:6800-9800。
+- 21 天陪跑:1980;年度教练会员:12800-19800/年。
+- 团报:30000-80000/场。
+
+价格由后台配置,支付按实付金额结算。
+
+**FR-PAY-03 团报与发票** `[扩展]`
+
+支持团报下单(多学员一单)与企业开票信息采集。
+
+### 9.3 裂变分享
+
+**FR-FISS-01 专属海报与邀请码** `[扩展]`
+
+每位学员生成专属分享海报 + 邀请码(train_user.invite_code 复用),带参进入报名页,记录转介关系(train_invite:inviter_id / invitee_id)。页面:share(新增)。
+
+**FR-FISS-02 转介激励** `[扩展]`
+
+- 转介 1 人:赠 1 次私教(private)体验。
+- 转介 3 人:赠年度会员权益。
+- 「一灯传百灯」创客生态:邀请进入浠艾福创客体系,获得后续分成。
+
+**FR-FISS-03 转介绍统计** `[扩展]`
+
+后台展示每位学员的转介绍人数、成功报名数、发放权益记录,形成转介绍漏斗。
+
+**FR-FISS-04 学员案例采集与授权** `[扩展]`
+
+对优秀学员成果进行「采集 → 脱敏 → 授权 → 回流」。案例用于招生与裂变内容,需学员明确授权(同意隐私条款)。
+
+> **支付合规提示**:付费功能涉及微信支付商户号、签名、回调验签、退款与财务对账。属于独立开发单元,建议单独立项并重点关注安全性(金额用整型分、回调幂等、防止重复支付)。
+
+---
+
+## 10. 数据模型
+
+下表汇总现存表(schema.sql 已实现)与新增表(本版新增需求)。金额一律整型分;时间 ISO 8601;编码 utf8mb4。
+
+### 10.1 现存表(一期已具备)
+
+| 表 | 用途 | 分期 |
+|---|---|---|
+| train_course | 课程 L0-L4 | 一期 |
+| train_class | 班次 | 一期 |
+| train_user | 学员 | 一期 |
+| train_group / train_group_member | 小组与成员 | 一期 |
+| train_assignment | 三本账分工 | 一期 |
+| train_submission | 成果上传 | 一期 |
+| train_teaching_card | 五步教学卡 | 一期 |
+| train_roadmap | 路演材料 | 一期 |
+| train_vote | 两轮投票 | 一期 |
+| train_score | 积分流水 | 一期 |
+| train_checkin | 装机打卡 | 二期 |
+| train_prep_check | 数据自检 | 二期 |
+| train_plan | 7 天计划 | 三期 |
+| train_survey | 测评调研 | 三期 |
+| train_coupon | 卡券 | 三期 |
+| train_admin / train_audit_log | 后台账号 / 审计 | 一期 |
+
+### 10.2 新增表(报名/付费/裂变)
+
+| 表 | 关键字段 | 用途 |
+|---|---|---|
+| train_order | order_no, uid, class_id, amount(INT 分), status, pay_channel, pay_time, refund | 支付订单 |
+| train_enrollment | uid, class_id, form_data(JSON), status, source(invite/scene) | 报名单 |
+| train_invite | inviter_id, invitee_id, code, order_id, reward_status | 转介绍关系 |
+
+---
+
+## 11. 接口与集成
+
+- **接口规范**:后端统一 `@PostMapping`,响应统一 `Result<T>`(code/message/data)。分层 Controller → Service → Mapper。
+- **鉴权**:JWT(密钥与 cfc 对齐),营员 token 与 cfc 体系互通。
+- **微信能力**:登录(openid)、手机号授权、订阅消息(提醒)、微信支付(三期扩展)。开发环境 test-mode(openid=test_<code>)。
+- **文件上传**:UploadController 统一处理成果/截图/头像,返回可访问 URL。
+- **cfc 集成**:CfcUser / CfcActivity 映射 cfc 同库 users / activities 表;金额与账本字段对齐 cfc 规范。
+
+---
+
+## 12. 非功能需求与合规
+
+| 维度 | 要求 |
+|---|---|
+| 性能 | 课堂并发 ≤ 数百人,投票/积分实时刷新可接受秒级延迟;后台报表异步生成。 |
+| 安全 | 金额整型分;支付回调幂等、验签;防止重复支付与越权访问(按角色校验)。 |
+| 隐私合规 | 学员真实数据(持仓/血压/成绩)必须脱敏(desensitized);案例采集需明确授权;同意隐私政策。 |
+| 兼容 | uni-app Vue2(小程序端);不支持可选链/CSS Grid;时间展示用 utils/format.js 的 parseDate。 |
+| 可用性 | 断网/弱网下课堂操作可重试;已提交数据不丢失。 |
+
+---
+
+## 13. 验收标准与排期建议
+
+### 13.1 验收标准(分阶段)
+
+| 阶段 | 通过准则 |
+|---|---|
+| 一期 · 课堂管理 | 一次完整 L0 半天营课堂(30人/5组)全程可用小程序完成:进班、分组、分工、上传、核验、路演、两轮投票、积分榜、颁奖;后台可导出。 |
+| 二期 · 课前准备 | 报名学员收到课前资料与提醒;装机打卡与数据自检状态可被课堂读取提速。 |
+| 三期 · 课后跟踪 | 7 天计划、T+ 跟进、测评调研、卡券发放全流程跑通。 |
+| 扩展 · 报名付费裂变 | 报名→支付→进班闭环;邀请海报/邀请码→转介绍→权益发放→后台转介绍漏斗。 |
+
+### 13.2 排期建议
+
+1. **一期(课堂管理)**:现有代码已基本具备,建议优先验收、上线支撑首期线下课。
+2. **二期(课前)+ 三期(课后)**:可并行开发,共用订阅消息与资料体系。
+3. **扩展(报名/付费/裂变)**:涉及微信支付与商业结算,单独立项,紧随一期之后或与三期并行启动。
+
+> **结论**:本 SRS 将原 V1.0 单场景文档重构为「**一期课堂管理 → 二期课前准备 → 三期课后跟踪 + 报名/付费/裂变**」的分期体系,与现有代码库已实现的 18 张表、15 个前端页面对齐,并为商业闭环预留新增表与页面。可按 §13.2 排期分阶段交付与验收。
+
+---
+
+*爱伴 · AI之旅 训练营小程序 · 需求规格说明书 V2.0 · 2026-09-04*