|
@@ -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<T></code>(code/message/data)。分层 Controller → Service → Mapper。</li>
|
|
|
|
|
+ <li><strong>鉴权</strong>:JWT(密钥与 cfc 对齐),营员 token 与 cfc 体系互通。</li>
|
|
|
|
|
+ <li><strong>微信能力</strong>:登录(openid)、手机号授权、订阅消息(提醒)、微信支付(三期扩展)。开发环境 test-mode(openid=test_<code>)。</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>
|