|
@@ -0,0 +1,3362 @@
|
|
|
|
|
+<!DOCTYPE html>
|
|
|
|
|
+<html lang="zh-CN" data-theme="light">
|
|
|
|
|
+<head>
|
|
|
|
|
+<meta charset="utf-8">
|
|
|
|
|
+<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
|
|
|
|
|
+<meta name="description" content="康师傅产品创新工作坊学员手册 v3:三个半天、3 份大课详案、13 个环节、13 份产出物规范。产品经理 = 未来品类负责人。">
|
|
|
|
|
+<title>康师傅 · 产品创新工作坊 学员手册 v3</title>
|
|
|
|
|
+<style>
|
|
|
|
|
+/* 康师傅工作坊学员手册 v3 —— 样式
|
|
|
|
|
+ 主色 #C8102E 只做强调;暖白底 #FAFAF8;正文 15.5px,行高 1.7;信息密度高、排版紧凑。
|
|
|
|
|
+ v3 新增:产出物规范板、推送语、大课分段、三层架构、对照表、话术对照、缩放条 */
|
|
|
|
|
+:root {
|
|
|
|
|
+ --red: #C8102E;
|
|
|
|
|
+ --red-soft: rgba(200, 16, 46, .07);
|
|
|
|
|
+ --red-line: rgba(200, 16, 46, .22);
|
|
|
|
|
+ --amber: #A86A12;
|
|
|
|
|
+ --amber-soft: rgba(168, 106, 18, .08);
|
|
|
|
|
+ --teal: #0E6E5C;
|
|
|
|
|
+ --teal-soft: rgba(14, 110, 92, .08);
|
|
|
|
|
+ --green: #2E7D32;
|
|
|
|
|
+ --bg: #FAFAF8;
|
|
|
|
|
+ --bg-2: #F2F1EC;
|
|
|
|
|
+ --card: #FFFFFF;
|
|
|
|
|
+ --ink: #1F1F1F;
|
|
|
|
|
+ --ink-2: #5E5E5A;
|
|
|
|
|
+ --ink-3: #8E8C86;
|
|
|
|
|
+ --line: #E7E5DF;
|
|
|
|
|
+ --line-2: #D9D6CE;
|
|
|
|
|
+ --shadow: 0 1px 2px rgba(31, 31, 31, .04), 0 4px 14px rgba(31, 31, 31, .04);
|
|
|
|
|
+ --code-bg: #F6F5F1;
|
|
|
|
|
+ --side-w: 276px;
|
|
|
|
|
+ --maxw: 920px;
|
|
|
|
|
+ --sans: -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans CJK SC", "Source Han Sans SC", sans-serif;
|
|
|
|
|
+ --mono: ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", "Noto Sans Mono CJK SC", monospace;
|
|
|
|
|
+}
|
|
|
|
|
+[data-theme="dark"] {
|
|
|
|
|
+ --red: #E8425C;
|
|
|
|
|
+ --red-soft: rgba(232, 66, 92, .12);
|
|
|
|
|
+ --red-line: rgba(232, 66, 92, .32);
|
|
|
|
|
+ --amber: #E2A44C;
|
|
|
|
|
+ --amber-soft: rgba(226, 164, 76, .1);
|
|
|
|
|
+ --teal: #4FB8A3;
|
|
|
|
|
+ --teal-soft: rgba(79, 184, 163, .1);
|
|
|
|
|
+ --green: #6FCF7B;
|
|
|
|
|
+ --bg: #141414;
|
|
|
|
|
+ --bg-2: #1C1C1B;
|
|
|
|
|
+ --card: #1E1E1D;
|
|
|
|
|
+ --ink: #ECEAE4;
|
|
|
|
|
+ --ink-2: #B0ADA6;
|
|
|
|
|
+ --ink-3: #85837D;
|
|
|
|
|
+ --line: #2E2D2A;
|
|
|
|
|
+ --line-2: #3A3935;
|
|
|
|
|
+ --shadow: 0 1px 2px rgba(0, 0, 0, .3), 0 4px 14px rgba(0, 0, 0, .25);
|
|
|
|
|
+ --code-bg: #242422;
|
|
|
|
|
+}
|
|
|
|
|
+* { box-sizing: border-box; }
|
|
|
|
|
+html { -webkit-text-size-adjust: 100%; }
|
|
|
|
|
+body {
|
|
|
|
|
+ margin: 0; background: var(--bg); color: var(--ink);
|
|
|
|
|
+ font: 15.5px/1.7 var(--sans);
|
|
|
|
|
+ -webkit-font-smoothing: antialiased;
|
|
|
|
|
+}
|
|
|
|
|
+a { color: var(--red); text-decoration: none; }
|
|
|
|
|
+a:hover { text-decoration: underline; }
|
|
|
|
|
+b, strong { font-weight: 650; }
|
|
|
|
|
+h1, h2, h3, h4 { line-height: 1.35; margin: 0; }
|
|
|
|
|
+p { margin: 0 0 .7em; }
|
|
|
|
|
+ul, ol { margin: .4em 0 .9em; padding-left: 1.3em; }
|
|
|
|
|
+li { margin: .25em 0; }
|
|
|
|
|
+.muted { color: var(--ink-2); font-size: 13.5px; }
|
|
|
|
|
+.mt { margin-top: 26px; }
|
|
|
|
|
+.num { font-variant-numeric: tabular-nums; }
|
|
|
|
|
+
|
|
|
|
|
+/* ---------- 布局 ---------- */
|
|
|
|
|
+.app { display: flex; min-height: 100vh; }
|
|
|
|
|
+.side {
|
|
|
|
|
+ position: fixed; top: 0; left: 0; bottom: 0; width: var(--side-w);
|
|
|
|
|
+ background: var(--card); border-right: 1px solid var(--line);
|
|
|
|
|
+ display: flex; flex-direction: column; z-index: 40;
|
|
|
|
|
+}
|
|
|
|
|
+.side-top { padding: 16px 18px 12px; border-bottom: 1px solid var(--line); }
|
|
|
|
|
+.brand { display: flex; align-items: center; gap: 9px; }
|
|
|
|
|
+.brand-logo { width: 26px; height: 26px; border-radius: 6px; background: var(--red); color: #fff; display: grid; place-items: center; font-weight: 800; font-size: 13px; flex: none; }
|
|
|
|
|
+.brand-name { font-weight: 700; font-size: 14.5px; letter-spacing: .2px; }
|
|
|
|
|
+.brand-sub { font-size: 12px; color: var(--ink-2); margin-top: 1px; }
|
|
|
|
|
+.side-tools { display: flex; gap: 6px; margin-top: 12px; }
|
|
|
|
|
+.tool-btn {
|
|
|
|
|
+ flex: 1; display: inline-flex; align-items: center; justify-content: center; gap: 5px;
|
|
|
|
|
+ height: 32px; border: 1px solid var(--line-2); background: transparent; color: var(--ink);
|
|
|
|
|
+ border-radius: 7px; font: inherit; font-size: 12.5px; cursor: pointer; white-space: nowrap;
|
|
|
|
|
+}
|
|
|
|
|
+.tool-btn:hover { border-color: var(--red); color: var(--red); text-decoration: none; }
|
|
|
|
|
+.search-box { margin-top: 10px; }
|
|
|
|
|
+.search-box input {
|
|
|
|
|
+ width: 100%; height: 32px; border: 1px solid var(--line-2); border-radius: 7px;
|
|
|
|
|
+ background: var(--bg); color: var(--ink); padding: 0 10px; font: inherit; font-size: 13px;
|
|
|
|
|
+}
|
|
|
|
|
+.search-box input:focus { outline: none; border-color: var(--red); }
|
|
|
|
|
+.toc { flex: 1; overflow-y: auto; padding: 8px 8px 24px; overscroll-behavior: contain; }
|
|
|
|
|
+.toc-group { margin: 12px 0 2px; padding: 0 10px; font-size: 11px; color: var(--ink-3); letter-spacing: .08em; font-weight: 650; }
|
|
|
|
|
+.toc a {
|
|
|
|
|
+ display: block; padding: 5px 10px; border-radius: 6px; color: var(--ink-2);
|
|
|
|
|
+ font-size: 13px; line-height: 1.45; border-left: 2px solid transparent; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
|
|
|
|
|
+}
|
|
|
|
|
+.toc a:hover { background: var(--bg-2); color: var(--ink); text-decoration: none; }
|
|
|
|
|
+.toc a.active { color: var(--red); background: var(--red-soft); border-left-color: var(--red); font-weight: 600; }
|
|
|
|
|
+.toc a.toc-big { font-weight: 650; color: var(--ink); }
|
|
|
|
|
+.toc a.hide { display: none; }
|
|
|
|
|
+.progress { border-top: 1px solid var(--line); padding: 12px 16px 14px; background: var(--card); }
|
|
|
|
|
+.progress .ptitle { font-size: 11px; color: var(--ink-3); letter-spacing: .08em; margin-bottom: 8px; font-weight: 650; }
|
|
|
|
|
+.pg-row { display: flex; gap: 6px; align-items: flex-start; }
|
|
|
|
|
+.pg { flex: 1; display: block; }
|
|
|
|
|
+.pg:hover { text-decoration: none; }
|
|
|
|
|
+.pg-bar { display: block; height: 5px; border-radius: 3px; background: var(--line); overflow: hidden; }
|
|
|
|
|
+.pg-bar i { display: block; height: 100%; width: 0; background: var(--red); transition: width .3s ease; }
|
|
|
|
|
+.pg.done .pg-bar i { width: 100% !important; background: var(--ink-3); }
|
|
|
|
|
+.pg-label { display: block; font-size: 11.5px; color: var(--ink-2); margin-top: 5px; text-align: center; }
|
|
|
|
|
+.pg.active .pg-label { color: var(--red); font-weight: 650; }
|
|
|
|
|
+.pg-count { display: block; font-size: 11.5px; color: var(--ink-3); text-align: right; margin-top: 6px; font-variant-numeric: tabular-nums; }
|
|
|
|
|
+
|
|
|
|
|
+.main { margin-left: var(--side-w); flex: 1; min-width: 0; }
|
|
|
|
|
+.content { max-width: var(--maxw); margin: 0 auto; padding: 0 36px 90px; }
|
|
|
|
|
+
|
|
|
|
|
+.mobile-bar {
|
|
|
|
|
+ display: none; position: sticky; top: 0; z-index: 30; height: 52px;
|
|
|
|
|
+ background: color-mix(in srgb, var(--bg) 92%, transparent); backdrop-filter: blur(8px);
|
|
|
|
|
+ border-bottom: 1px solid var(--line); align-items: center; gap: 10px; padding: 0 14px;
|
|
|
|
|
+}
|
|
|
|
|
+.mobile-bar .brand-name { font-size: 14px; }
|
|
|
|
|
+.mobile-bar .tool-btn { flex: none; width: auto; padding: 0 12px; margin-left: auto; }
|
|
|
|
|
+.icon-btn { width: 36px; height: 36px; border-radius: 8px; border: 1px solid var(--line-2); background: transparent; color: var(--ink); font-size: 16px; cursor: pointer; display: grid; place-items: center; flex: none; }
|
|
|
|
|
+.scrim { display: none; position: fixed; inset: 0; background: rgba(0,0,0,.35); z-index: 39; }
|
|
|
|
|
+.nav-open .scrim { display: block; }
|
|
|
|
|
+#drawer-close { display: none; }
|
|
|
|
|
+
|
|
|
|
|
+/* ---------- 封面 ---------- */
|
|
|
|
|
+.cover {
|
|
|
|
|
+ padding: 64px 0 38px; border-bottom: 1px solid var(--line);
|
|
|
|
|
+ background:
|
|
|
|
|
+ radial-gradient(900px 300px at 110% -10%, var(--red-soft), transparent 60%),
|
|
|
|
|
+ radial-gradient(700px 260px at -10% 110%, var(--amber-soft), transparent 60%);
|
|
|
|
|
+}
|
|
|
|
|
+.cover-mark { font-size: 12.5px; letter-spacing: .14em; color: var(--red); font-weight: 700; }
|
|
|
|
|
+.cover h1 { font-size: clamp(28px, 4.4vw, 44px); letter-spacing: -.01em; margin: 14px 0 6px; font-weight: 800; }
|
|
|
|
|
+.cover-sub { font-size: 17px; color: var(--ink-2); margin-bottom: 18px; }
|
|
|
|
|
+.cover-lead { font-size: 16.5px; max-width: 680px; }
|
|
|
|
|
+.cover-thesis { margin: 18px 0 0; padding: 12px 16px; border-left: 3px solid var(--red); background: var(--card); border-radius: 0 10px 10px 0; font-size: 15.5px; box-shadow: var(--shadow); }
|
|
|
|
|
+.cover-facts { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; margin: 22px 0 26px; }
|
|
|
|
|
+.cover-facts div { background: var(--card); border: 1px solid var(--line); border-radius: 10px; padding: 10px 14px; box-shadow: var(--shadow); }
|
|
|
|
|
+.cover-facts span { display: block; font-size: 12px; color: var(--ink-3); margin-bottom: 2px; }
|
|
|
|
|
+.cover-facts b { font-size: 14px; font-weight: 600; }
|
|
|
|
|
+.cover-cta { display: flex; gap: 10px; flex-wrap: wrap; }
|
|
|
|
|
+.btn { display: inline-flex; align-items: center; height: 40px; padding: 0 18px; border-radius: 9px; border: 1px solid var(--line-2); color: var(--ink); font-weight: 600; font-size: 14.5px; }
|
|
|
|
|
+.btn:hover { text-decoration: none; border-color: var(--red); color: var(--red); }
|
|
|
|
|
+.btn.primary { background: var(--red); border-color: var(--red); color: #fff; }
|
|
|
|
|
+.btn.primary:hover { color: #fff; opacity: .92; }
|
|
|
|
|
+
|
|
|
|
|
+/* ---------- 通用段 ---------- */
|
|
|
|
|
+.seg { padding: 42px 0 10px; border-bottom: 1px solid var(--line); scroll-margin-top: 60px; }
|
|
|
|
|
+.seg:last-of-type { border-bottom: 0; }
|
|
|
|
|
+.seg-title { font-size: clamp(22px, 3vw, 28px); font-weight: 800; margin-bottom: 10px; letter-spacing: -.01em; }
|
|
|
|
|
+.lead { font-size: 15.5px; color: var(--ink); background: var(--card); border: 1px solid var(--line); border-left: 3px solid var(--red); padding: 12px 16px; border-radius: 8px; margin: 14px 0 20px; }
|
|
|
|
|
+.block { margin: 22px 0; }
|
|
|
|
|
+.block > h3 { font-size: 17px; font-weight: 700; margin: 0 0 10px; display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
|
|
|
|
|
+.block > h4 { font-size: 15px; margin: 14px 0 8px; }
|
|
|
|
|
+.step-no { display: inline-grid; place-items: center; min-width: 28px; height: 22px; padding: 0 7px; border-radius: 6px; background: var(--red-soft); color: var(--red); font-size: 12px; font-weight: 700; }
|
|
|
|
|
+.block.note { background: var(--bg-2); border: 1px dashed var(--line-2); border-radius: 10px; padding: 12px 16px; font-size: 14px; }
|
|
|
|
|
+.block.note > h3 { font-size: 15px; }
|
|
|
|
|
+.block.accent { background: var(--card); border: 1px solid var(--line); border-radius: 12px; padding: 14px 18px; box-shadow: var(--shadow); }
|
|
|
|
|
+.block.accent > h3 { font-size: 16px; }
|
|
|
|
|
+.block.industry { background: var(--amber-soft); border: 1px solid color-mix(in srgb, var(--amber) 22%, transparent); border-radius: 12px; padding: 14px 18px; }
|
|
|
|
|
+.block.industry > h3 { color: var(--amber); }
|
|
|
|
|
+.block.industry .step-no { background: color-mix(in srgb, var(--amber) 16%, transparent); color: var(--amber); }
|
|
|
|
|
+.roles { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; margin: 12px 0 18px; }
|
|
|
|
|
+.role { background: var(--card); border: 1px solid var(--line); border-radius: 10px; padding: 12px 14px; box-shadow: var(--shadow); }
|
|
|
|
|
+.role b { font-size: 13.5px; color: var(--red); }
|
|
|
|
|
+.role p { font-size: 13.5px; color: var(--ink-2); margin: 4px 0 0; }
|
|
|
|
|
+
|
|
|
|
|
+/* ---------- 表格 ---------- */
|
|
|
|
|
+.tbl-scroll { max-width: 100%; overflow-x: auto; -webkit-overflow-scrolling: touch; border: 1px solid var(--line); border-radius: 10px; margin: 10px 0 14px; background: var(--card); }
|
|
|
|
|
+.tbl-scroll table.tbl { border: 0; border-radius: 0; margin: 0; }
|
|
|
|
|
+table.tbl { width: 100%; border-collapse: collapse; font-size: 13.8px; line-height: 1.6; background: var(--card); }
|
|
|
|
|
+table.tbl th, table.tbl td { padding: 8px 12px; text-align: left; vertical-align: top; border-top: 1px solid var(--line); word-break: break-word; overflow-wrap: anywhere; }
|
|
|
|
|
+table.tbl thead th { background: var(--bg-2); font-size: 12.5px; color: var(--ink-2); font-weight: 650; border-top: 0; white-space: nowrap; }
|
|
|
|
|
+.tbl-scroll table.tbl.wide { min-width: 680px; }
|
|
|
|
|
+.tbl-scroll table.tbl.compact { min-width: 540px; }
|
|
|
|
|
+table.clock td { font-variant-numeric: tabular-nums; white-space: nowrap; }
|
|
|
|
|
+table.tbl tr.hl td { background: var(--red-soft); }
|
|
|
|
|
+table.tbl td.zero { color: var(--red); font-weight: 750; }
|
|
|
|
|
+table.tbl .up { color: var(--green); }
|
|
|
|
|
+table.tbl .down { color: var(--red); }
|
|
|
|
|
+
|
|
|
|
|
+/* ---------- 总览 ---------- */
|
|
|
|
|
+.halves { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; margin: 18px 0; }
|
|
|
|
|
+.half-card { background: var(--card); border: 1px solid var(--line); border-top: 3px solid var(--acc); border-radius: 10px; padding: 14px 16px; box-shadow: var(--shadow); }
|
|
|
|
|
+.hc-head { display: flex; justify-content: space-between; align-items: baseline; gap: 6px; }
|
|
|
|
|
+.hc-head b { font-size: 14px; color: var(--acc); }
|
|
|
|
|
+.hc-head span { font-size: 12px; color: var(--ink-3); }
|
|
|
|
|
+.half-card h4 { font-size: 15px; margin: 6px 0 8px; }
|
|
|
|
|
+.half-card ol { padding-left: 1.2em; font-size: 13px; color: var(--ink-2); margin: 0 0 10px; }
|
|
|
|
|
+.half-card ol a { color: var(--ink); }
|
|
|
|
|
+.hc-out { font-size: 13px; margin: 0; padding-top: 8px; border-top: 1px dashed var(--line-2); }
|
|
|
|
|
+.hc-out span { display: block; font-size: 11.5px; color: var(--ink-3); margin-bottom: 2px; }
|
|
|
|
|
+
|
|
|
|
|
+/* ---------- 四步闭环 ---------- */
|
|
|
|
|
+.loop4 { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; margin: 16px 0; }
|
|
|
|
|
+.loop-step { position: relative; background: var(--card); border: 1px solid var(--line); border-radius: 12px; padding: 16px 18px 12px; box-shadow: var(--shadow); }
|
|
|
|
|
+.ls-no { position: absolute; top: 12px; right: 14px; font-size: 28px; font-weight: 800; color: color-mix(in srgb, var(--red) 22%, transparent); line-height: 1; }
|
|
|
|
|
+.loop-step h3 { font-size: 16px; }
|
|
|
|
|
+.ls-sub { font-size: 13px; color: var(--ink-2); margin: 2px 0 6px; }
|
|
|
|
|
+.loop-step ul { font-size: 13.5px; margin: 0; }
|
|
|
|
|
+
|
|
|
|
|
+/* ---------- 规则 ---------- */
|
|
|
|
|
+.rules { display: grid; gap: 10px; }
|
|
|
|
|
+.rule { display: grid; grid-template-columns: 36px 1fr; gap: 12px; background: var(--card); border: 1px solid var(--line); border-radius: 10px; padding: 12px 16px; box-shadow: var(--shadow); }
|
|
|
|
|
+.r-no { width: 30px; height: 30px; border-radius: 50%; background: var(--red); color: #fff; font-weight: 800; display: grid; place-items: center; font-size: 14px; }
|
|
|
|
|
+.r-body h3 { font-size: 15px; margin-bottom: 4px; }
|
|
|
|
|
+.r-body p { font-size: 14px; margin: 0 0 6px; color: var(--ink); }
|
|
|
|
|
+.r-body .r-how { color: var(--ink-2); }
|
|
|
|
|
+.r-how b { color: var(--ink); font-weight: 600; }
|
|
|
|
|
+
|
|
|
|
|
+/* ---------- 速查 ---------- */
|
|
|
|
|
+.jump-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; margin: 14px 0; }
|
|
|
|
|
+.jump { display: grid; grid-template-columns: 64px 1fr; grid-template-rows: auto auto auto; column-gap: 10px; background: var(--card); border: 1px solid var(--line); border-radius: 9px; padding: 10px 12px; color: var(--ink); }
|
|
|
|
|
+.jump:hover { text-decoration: none; border-color: var(--red-line); background: var(--red-soft); }
|
|
|
|
|
+.jump b { grid-row: span 3; font-size: 13px; color: var(--red); align-self: center; }
|
|
|
|
|
+.jump span { font-size: 14px; font-weight: 650; }
|
|
|
|
|
+.jump em { font-style: normal; font-size: 12.5px; color: var(--ink-2); }
|
|
|
|
|
+.jump i { font-style: normal; font-size: 11.5px; color: var(--ink-3); }
|
|
|
|
|
+
|
|
|
|
|
+/* ---------- 产品经理定位 ---------- */
|
|
|
|
|
+.pm-hero { background: var(--ink); color: var(--bg); border-radius: 14px; padding: 20px 24px; margin: 16px 0; }
|
|
|
|
|
+[data-theme="dark"] .pm-hero { background: var(--card); border: 1px solid var(--line-2); }
|
|
|
|
|
+.pm-hero .pm-tag { font-size: 12px; letter-spacing: .14em; font-weight: 800; color: #fff; background: var(--red); padding: 2px 10px; border-radius: 99px; }
|
|
|
|
|
+.pm-hero h3 { font-size: clamp(18px, 2.6vw, 23px); margin: 12px 0 6px; color: inherit; }
|
|
|
|
|
+.pm-hero p { font-size: 14.5px; opacity: .88; margin: 0; }
|
|
|
|
|
+.caps { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; margin: 12px 0; }
|
|
|
|
|
+.cap { background: var(--card); border: 1px solid var(--line); border-radius: 11px; padding: 14px 16px; box-shadow: var(--shadow); position: relative; }
|
|
|
|
|
+.cap::before { content: ''; position: absolute; left: 0; top: 12px; bottom: 12px; width: 3px; border-radius: 2px; background: var(--acc); }
|
|
|
|
|
+.cap h4 { font-size: 15px; margin: 0 0 2px; }
|
|
|
|
|
+.cap .cap-lv { font-size: 11.5px; font-weight: 700; color: #fff; background: var(--acc); padding: 1px 8px; border-radius: 99px; display: inline-block; margin-bottom: 8px; }
|
|
|
|
|
+.cap ul { font-size: 13.5px; margin: 0; padding-left: 1.1em; }
|
|
|
|
|
+.cap .cap-q { font-size: 12.5px; color: var(--ink-2); margin: 8px 0 0; padding-top: 8px; border-top: 1px dashed var(--line-2); }
|
|
|
|
|
+
|
|
|
|
|
+/* ---------- 八步 SOP ---------- */
|
|
|
|
|
+.sop { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; margin: 12px 0 6px; }
|
|
|
|
|
+.sop-step { background: var(--card); border: 1px solid var(--line); border-radius: 10px; padding: 10px 12px; position: relative; box-shadow: var(--shadow); }
|
|
|
|
|
+.sop-step b { display: block; font-size: 14px; }
|
|
|
|
|
+.sop-step .sop-no { font-size: 11px; color: var(--red); font-weight: 800; letter-spacing: .08em; }
|
|
|
|
|
+.sop-step .sop-q { font-size: 12.5px; color: var(--ink-2); margin: 2px 0 6px; }
|
|
|
|
|
+.sop-step .sop-d { font-size: 12px; padding: 2px 8px; border-radius: 99px; background: var(--bg-2); border: 1px solid var(--line); display: inline-block; }
|
|
|
|
|
+.sop-step .sop-d.d1 { background: var(--red-soft); border-color: var(--red-line); color: var(--red); }
|
|
|
|
|
+.sop-step .sop-d.d2a { background: var(--amber-soft); border-color: color-mix(in srgb, var(--amber) 25%, transparent); color: var(--amber); }
|
|
|
|
|
+.sop-step .sop-d.d2p { background: var(--teal-soft); border-color: color-mix(in srgb, var(--teal) 25%, transparent); color: var(--teal); }
|
|
|
|
|
+.sop-legend { display: flex; flex-wrap: wrap; gap: 8px; font-size: 12.5px; color: var(--ink-2); margin: 4px 0 0; }
|
|
|
|
|
+.sop-legend span { display: inline-flex; align-items: center; gap: 6px; }
|
|
|
|
|
+.sop-legend i { display: inline-block; width: 10px; height: 10px; border-radius: 3px; }
|
|
|
|
|
+.sop-legend .l1 { background: var(--red); }
|
|
|
|
|
+.sop-legend .l2 { background: var(--amber); }
|
|
|
|
|
+.sop-legend .l3 { background: var(--teal); }
|
|
|
|
|
+.chain { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 12px 0 16px; }
|
|
|
|
|
+.chain span { background: var(--card); border: 1px solid var(--line); border-radius: 8px; padding: 6px 12px; font-weight: 650; font-size: 14px; box-shadow: var(--shadow); }
|
|
|
|
|
+.chain i { font-style: normal; color: var(--red); font-weight: 800; }
|
|
|
|
|
+
|
|
|
|
|
+/* ---------- 半天头 ---------- */
|
|
|
|
|
+.half { margin: 48px 0 0; scroll-margin-top: 60px; }
|
|
|
|
|
+.half-head { background: var(--ink); color: var(--bg); border-radius: 14px; padding: 22px 24px; }
|
|
|
|
|
+[data-theme="dark"] .half-head { background: var(--card); color: var(--ink); border: 1px solid var(--line-2); }
|
|
|
|
|
+.half-top { display: flex; justify-content: space-between; align-items: center; gap: 10px; flex-wrap: wrap; }
|
|
|
|
|
+.half-label { font-size: 12px; letter-spacing: .16em; font-weight: 800; color: #fff; background: var(--red); padding: 2px 10px; border-radius: 99px; }
|
|
|
|
|
+.half-time { font-size: 13px; opacity: .75; font-variant-numeric: tabular-nums; }
|
|
|
|
|
+.half-head h2 { font-size: clamp(20px, 3vw, 26px); margin: 12px 0 6px; }
|
|
|
|
|
+.half-head > p { font-size: 14.5px; opacity: .85; margin-bottom: 14px; }
|
|
|
|
|
+.half-goal { background: rgba(255,255,255,.06); border-radius: 10px; padding: 10px 14px; }
|
|
|
|
|
+[data-theme="dark"] .half-goal { background: var(--bg-2); }
|
|
|
|
|
+.half-goal b { font-size: 13px; }
|
|
|
|
|
+.half-goal ol { margin: 4px 0 0; font-size: 13.5px; opacity: .9; }
|
|
|
|
|
+.band-note { margin-top: 10px; font-size: 13px; opacity: .8; }
|
|
|
|
|
+
|
|
|
|
|
+/* ---------- 大课 ---------- */
|
|
|
|
|
+.big { background: linear-gradient(180deg, var(--red-soft), transparent 240px); padding-top: 34px; }
|
|
|
|
|
+.big-head { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
|
|
|
|
|
+.big-no { font-size: 12.5px; font-weight: 800; letter-spacing: .12em; color: #fff; background: var(--red); padding: 3px 10px; border-radius: 6px; }
|
|
|
|
|
+.big-head h2 { font-size: clamp(24px, 3.6vw, 32px); font-weight: 800; }
|
|
|
|
|
+.meta-row { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 10px; }
|
|
|
|
|
+.chip { font-size: 12.5px; padding: 3px 9px; border-radius: 6px; background: var(--bg-2); color: var(--ink-2); border: 1px solid var(--line); }
|
|
|
|
|
+.chip.tag { background: var(--red-soft); color: var(--red); border-color: var(--red-line); font-weight: 600; }
|
|
|
|
|
+.chip.deliver { background: var(--red); color: #fff; border-color: var(--red); font-weight: 650; }
|
|
|
|
|
+.segments { display: grid; gap: 6px; margin: 16px 0 6px; }
|
|
|
|
|
+.seg-row { display: grid; grid-template-columns: 78px 1fr 1fr; gap: 12px; align-items: center; background: var(--card); border: 1px solid var(--line); border-radius: 9px; padding: 9px 14px; font-size: 13.5px; }
|
|
|
|
|
+.seg-row b { font-size: 14px; }
|
|
|
|
|
+.seg-row .sr-t { color: var(--red); font-weight: 700; font-variant-numeric: tabular-nums; }
|
|
|
|
|
+.seg-row .sr-q { color: var(--ink-2); }
|
|
|
|
|
+.seg-row.onair { border-color: var(--red-line); background: linear-gradient(90deg, var(--red-soft), var(--card) 60%); }
|
|
|
|
|
+.lecture { border: 1px solid var(--line-2); border-radius: 12px; background: var(--card); margin: 16px 0; overflow: hidden; box-shadow: var(--shadow); scroll-margin-top: 64px; }
|
|
|
|
|
+.lecture-head { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; padding: 12px 16px; background: var(--bg-2); border-bottom: 1px solid var(--line); }
|
|
|
|
|
+.lecture-no { font-size: 11.5px; font-weight: 800; letter-spacing: .1em; color: #fff; background: var(--red); padding: 2px 9px; border-radius: 6px; }
|
|
|
|
|
+.lecture-head h3 { font-size: 17px; flex: 1; min-width: 200px; }
|
|
|
|
|
+.lecture-body { padding: 6px 18px 14px; }
|
|
|
|
|
+.lp { margin: 14px 0; }
|
|
|
|
|
+.lp-head { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-bottom: 6px; }
|
|
|
|
|
+.lp-time { font-size: 12px; font-weight: 700; color: var(--red); background: var(--red-soft); border: 1px solid var(--red-line); padding: 1px 8px; border-radius: 99px; font-variant-numeric: tabular-nums; }
|
|
|
|
|
+.lp-head h4 { font-size: 15.5px; }
|
|
|
|
|
+.script { border-left: 3px solid var(--line-2); padding: 2px 0 2px 12px; font-size: 14.5px; color: var(--ink); }
|
|
|
|
|
+.script p { margin: 0 0 .55em; }
|
|
|
|
|
+.script p:last-child { margin-bottom: 0; }
|
|
|
|
|
+.script .say { color: var(--ink); }
|
|
|
|
|
+.two-col { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; margin: 10px 0; }
|
|
|
|
|
+.col { border-radius: 10px; padding: 12px 14px; border: 1px solid var(--line); background: var(--card); }
|
|
|
|
|
+.col h4 { font-size: 14px; margin: 0 0 6px; }
|
|
|
|
|
+.col ul, .col p { font-size: 13.5px; margin-bottom: 0; }
|
|
|
|
|
+.col.ok { border-top: 3px solid var(--green); }
|
|
|
|
|
+.col.ok h4 { color: var(--green); }
|
|
|
|
|
+.col.bad { border-top: 3px solid var(--red); }
|
|
|
|
|
+.col.bad h4 { color: var(--red); }
|
|
|
|
|
+
|
|
|
|
|
+/* 三层架构 */
|
|
|
|
|
+.layers { display: grid; gap: 0; margin: 14px 0; }
|
|
|
|
|
+.layer { border: 1px solid var(--line); background: var(--card); padding: 14px 18px; position: relative; }
|
|
|
|
|
+.layer:first-child { border-radius: 12px 12px 0 0; }
|
|
|
|
|
+.layer:last-child { border-radius: 0 0 12px 12px; }
|
|
|
|
|
+.layer + .layer { border-top: 0; }
|
|
|
|
|
+.layer .ly { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
|
|
|
|
|
+.layer .ly b { font-size: 16px; }
|
|
|
|
|
+.layer .ly .ly-k { font-size: 11.5px; font-weight: 700; color: #fff; background: var(--acc, var(--red)); padding: 2px 9px; border-radius: 99px; }
|
|
|
|
|
+.layer .ly .ly-who { font-size: 13px; color: var(--ink-2); }
|
|
|
|
|
+.layer p { font-size: 13.8px; margin: 6px 0 0; }
|
|
|
|
|
+.layer-down { display: flex; align-items: center; justify-content: center; gap: 8px; padding: 6px 0; margin: -1px 0; position: relative; z-index: 1; font-size: 12.5px; color: var(--red); }
|
|
|
|
|
+.layer-down::before { content: '↓'; font-size: 16px; font-weight: 800; }
|
|
|
|
|
+
|
|
|
|
|
+/* 责任制的五项 */
|
|
|
|
|
+.resp { display: grid; gap: 6px; margin: 10px 0; }
|
|
|
|
|
+.resp-row { display: grid; grid-template-columns: 44px 1.1fr 1.3fr 1.1fr; gap: 10px; align-items: center; background: var(--card); border: 1px solid var(--line); border-radius: 9px; padding: 8px 12px; font-size: 13.5px; }
|
|
|
|
|
+.resp-row .rh { background: var(--ink); color: var(--bg); border-radius: 6px; text-align: center; font-weight: 700; font-size: 12.5px; padding: 4px 0; }
|
|
|
|
|
+[data-theme="dark"] .resp-row .rh { background: var(--bg-2); color: var(--ink); }
|
|
|
|
|
+.resp-row .rk { color: var(--ink-3); font-size: 12px; }
|
|
|
|
|
+.resp-row b { font-size: 13.5px; }
|
|
|
|
|
+.rings { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; margin: 12px 0; position: relative; }
|
|
|
|
|
+.ring { border-radius: 12px; padding: 12px 12px 12px 14px; border: 1px solid var(--line); background: var(--card); }
|
|
|
|
|
+.ring b { font-size: 14px; display: block; }
|
|
|
|
|
+.ring span { font-size: 12.5px; color: var(--ink-2); }
|
|
|
|
|
+.ring.c1 { border-left: 4px solid var(--red); }
|
|
|
|
|
+.ring.c2 { border-left: 4px solid var(--amber); }
|
|
|
|
|
+.ring.c3 { border-left: 4px solid var(--teal); }
|
|
|
|
|
+.ring.c4 { border-left: 4px solid var(--ink-3); }
|
|
|
|
|
+.ladder { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; margin: 10px 0 14px; }
|
|
|
|
|
+.ladder div { background: var(--card); border: 1px solid var(--line); border-top: 3px solid var(--red); border-radius: 9px; padding: 10px 12px; font-size: 13.5px; }
|
|
|
|
|
+.ladder div b { display: block; font-size: 14.5px; margin-bottom: 2px; }
|
|
|
|
|
+.ladder div span { color: var(--ink-2); font-size: 12.5px; }
|
|
|
|
|
+.ladder div.lv2 { border-top-color: color-mix(in srgb, var(--red) 75%, var(--amber)); }
|
|
|
|
|
+.ladder div.lv3 { border-top-color: var(--amber); }
|
|
|
|
|
+.ladder div.lv4 { border-top-color: var(--teal); }
|
|
|
|
|
+
|
|
|
|
|
+/* 三类创新与两张对照表 */
|
|
|
|
|
+.kind3 { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; margin: 10px 0; }
|
|
|
|
|
+.kind { background: var(--card); border: 1px solid var(--line); border-radius: 11px; padding: 12px 14px; }
|
|
|
|
|
+.kind h4 { font-size: 14.5px; margin: 0 0 6px; color: var(--red); }
|
|
|
|
|
+.kind dl { margin: 0; font-size: 13px; display: grid; grid-template-columns: 52px 1fr; gap: 2px 8px; }
|
|
|
|
|
+.kind dt { color: var(--ink-3); }
|
|
|
|
|
+.kind dd { margin: 0; }
|
|
|
|
|
+table.tbl.compare td:first-child { font-weight: 650; color: var(--ink-2); }
|
|
|
|
|
+
|
|
|
|
|
+/* 案例框 */
|
|
|
|
|
+.case { background: linear-gradient(180deg, var(--red-soft), transparent 140px); border: 1px solid var(--red-line); border-radius: 12px; padding: 14px 18px; margin: 14px 0; }
|
|
|
|
|
+.case h4 { font-size: 15px; margin: 0 0 6px; color: var(--red); }
|
|
|
|
|
+.case p, .case li { font-size: 14px; }
|
|
|
|
|
+.case .case-foot { margin: 8px 0 0; font-size: 13.5px; padding-top: 8px; border-top: 1px dashed var(--red-line); }
|
|
|
|
|
+.moments { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; margin: 10px 0; }
|
|
|
|
|
+.moment { background: var(--card); border: 1px solid var(--line); border-left: 3px solid var(--amber); border-radius: 8px; padding: 8px 12px; font-size: 13.5px; }
|
|
|
|
|
+.moment b { color: var(--amber); font-size: 12px; display: block; }
|
|
|
|
|
+
|
|
|
|
|
+/* ---------- 环节 ---------- */
|
|
|
|
|
+.sec-head { display: grid; grid-template-columns: 80px 1fr; gap: 14px; align-items: start; }
|
|
|
|
|
+.sec-no { font-size: 18px; font-weight: 800; color: var(--red); padding-top: 2px; font-variant-numeric: tabular-nums; }
|
|
|
|
|
+.sec-head h2 { font-size: clamp(21px, 3vw, 26px); font-weight: 800; }
|
|
|
|
|
+.from { font-size: 13px; color: var(--ink-2); margin: 12px 0 0; padding: 7px 12px; background: var(--bg-2); border-radius: 8px; border: 1px dashed var(--line-2); }
|
|
|
|
|
+.pillars { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
|
|
|
|
|
+.pillar { background: var(--card); border: 1px solid var(--line); border-radius: 10px; padding: 12px 14px; box-shadow: var(--shadow); }
|
|
|
|
|
+.pillar.key { border-color: var(--red-line); background: linear-gradient(180deg, var(--red-soft), var(--card) 60%); }
|
|
|
|
|
+.p-head { display: flex; justify-content: space-between; align-items: center; }
|
|
|
|
|
+.p-head b { font-size: 14.5px; }
|
|
|
|
|
+.p-flag { font-size: 11px; font-weight: 700; color: #fff; background: var(--red); padding: 1px 7px; border-radius: 99px; }
|
|
|
|
|
+.p-tip { font-size: 12.5px; color: var(--ink-2); margin: 4px 0 6px; }
|
|
|
|
|
+.p-sample { font-size: 13px; margin: 0; color: var(--ink); }
|
|
|
|
|
+.p-sample span { font-size: 11px; color: var(--ink-3); margin-right: 6px; }
|
|
|
|
|
+.p-lines { margin-top: 8px; display: grid; gap: 6px; }
|
|
|
|
|
+.p-lines i { display: block; height: 1px; border-bottom: 1px dashed var(--line-2); }
|
|
|
|
|
+
|
|
|
|
|
+/* 提示词 */
|
|
|
|
|
+.prompt { border: 1px solid var(--line-2); border-radius: 10px; overflow: hidden; margin: 12px 0 14px; background: var(--code-bg); }
|
|
|
|
|
+.prompt-bar { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 7px 10px 7px 14px; background: var(--bg-2); border-bottom: 1px solid var(--line); }
|
|
|
|
|
+.prompt-label { font-size: 12.5px; color: var(--ink-2); font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
|
|
|
+.copy { flex: none; height: 30px; padding: 0 14px; border-radius: 7px; border: 1px solid var(--red); background: var(--red); color: #fff; font: inherit; font-size: 12.5px; font-weight: 650; cursor: pointer; }
|
|
|
|
|
+.copy:hover { opacity: .9; }
|
|
|
|
|
+.copy.ok { background: var(--green); border-color: var(--green); }
|
|
|
|
|
+.prompt-body { margin: 0; padding: 12px 14px; font: 12.8px/1.75 var(--mono); white-space: pre-wrap; word-break: break-word; color: var(--ink); max-height: 420px; overflow: auto; }
|
|
|
|
|
+
|
|
|
|
|
+/* 产出物规范板 */
|
|
|
|
|
+.spec { border: 1px solid var(--red-line); border-radius: 14px; overflow: hidden; margin: 12px 0 16px; background: var(--card); box-shadow: 0 2px 18px rgba(200,16,46,.06); }
|
|
|
|
|
+.spec-head { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; padding: 12px 16px; background: linear-gradient(90deg, var(--red), color-mix(in srgb, var(--red) 80%, #000)); color: #fff; }
|
|
|
|
|
+.spec-head .spec-k { font-size: 11px; font-weight: 800; letter-spacing: .16em; opacity: .85; }
|
|
|
|
|
+.spec-head h3 { font-size: 17px; color: #fff; }
|
|
|
|
|
+.spec-head .spec-meta { margin-left: auto; font-size: 12px; background: rgba(255,255,255,.16); padding: 2px 10px; border-radius: 99px; white-space: nowrap; }
|
|
|
|
|
+.spec-body { padding: 4px 16px 14px; }
|
|
|
|
|
+.spec-block { padding: 12px 0; border-bottom: 1px dashed var(--line-2); }
|
|
|
|
|
+.spec-block:last-child { border-bottom: 0; }
|
|
|
|
|
+.spec-block > h4 { font-size: 14.5px; margin: 0 0 8px; display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
|
|
|
|
|
+.spec-n { display: inline-grid; place-items: center; width: 22px; height: 22px; border-radius: 50%; background: var(--red); color: #fff; font-size: 12px; font-weight: 800; flex: none; }
|
|
|
|
|
+.spec-form { font-size: 12px; color: var(--ink-2); font-weight: 500; }
|
|
|
|
|
+.spec-legend { display: flex; flex-wrap: wrap; gap: 10px; font-size: 12px; color: var(--ink-2); margin: 4px 0 0; }
|
|
|
|
|
+.spec-legend span { display: inline-flex; align-items: center; gap: 5px; }
|
|
|
|
|
+.spec-legend em { font-style: normal; width: 12px; height: 12px; border-radius: 3px; display: inline-block; }
|
|
|
|
|
+
|
|
|
|
|
+/* 真实样卡(1:1 复刻的产物样例) */
|
|
|
|
|
+.doc { border: 1px solid var(--line-2); border-radius: 10px; background: #fff; color: #1F1F1F; overflow: hidden; font-size: 13px; line-height: 1.6; margin: 8px 0 10px; }
|
|
|
|
|
+[data-theme="dark"] .doc { background: #F7F6F2; }
|
|
|
|
|
+.doc-scroll { overflow-x: auto; }
|
|
|
|
|
+.doc-scroll > .doc { min-width: 620px; }
|
|
|
|
|
+.doc-bar { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; padding: 7px 12px; background: #1F1F1F; color: #fff; font-size: 12.5px; }
|
|
|
|
|
+.doc-bar b { font-size: 13px; }
|
|
|
|
|
+.doc-bar .doc-tag { margin-left: auto; font-size: 11px; background: rgba(255,255,255,.14); padding: 1px 8px; border-radius: 99px; }
|
|
|
|
|
+.doc-h { padding: 6px 12px; background: #F2F1EC; color: #5E5E5A; font-size: 11.5px; font-weight: 700; letter-spacing: .06em; border-bottom: 1px solid #E7E5DF; }
|
|
|
|
|
+.doc-body { padding: 10px 12px; }
|
|
|
|
|
+.doc-body.mark > p:first-child, .doc-body > table td.mark { background: rgba(200,16,46,.07); }
|
|
|
|
|
+.doc table { width: 100%; border-collapse: collapse; font-size: 12.8px; line-height: 1.55; color: #1F1F1F; }
|
|
|
|
|
+.doc th, .doc td { padding: 6px 8px; border-top: 1px solid #ECEAE4; text-align: left; vertical-align: top; }
|
|
|
|
|
+.doc thead th { background: #F4F3EF; color: #5E5E5A; font-size: 11.5px; border-top: 0; white-space: nowrap; }
|
|
|
|
|
+.doc caption { caption-side: top; text-align: left; font-weight: 700; font-size: 12.5px; padding: 2px 0 6px; color: #1F1F1F; }
|
|
|
|
|
+.doc .c { text-align: center; }
|
|
|
|
|
+.doc .r { text-align: right; font-variant-numeric: tabular-nums; }
|
|
|
|
|
+.doc .zero { color: #C8102E; font-weight: 800; }
|
|
|
|
|
+.doc .good { color: #2E7D32; font-weight: 700; }
|
|
|
|
|
+.doc .warn { color: #A86A12; font-weight: 700; }
|
|
|
|
|
+.doc-micro { font-size: 11.5px; color: #6B6B6B; margin: 6px 0 0; }
|
|
|
|
|
+.doc-grid2 { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
|
|
|
|
|
+.doc-box { border: 1px solid #E7E5DF; border-radius: 8px; padding: 8px 10px; background: #FCFCFA; }
|
|
|
|
|
+.doc-box h5 { margin: 0 0 4px; font-size: 12px; color: #C8102E; }
|
|
|
|
|
+.doc-box ul { margin: 0; padding-left: 1.1em; font-size: 12.6px; }
|
|
|
|
|
+.doc-title { font-weight: 800; font-size: 14px; margin: 0 0 4px; }
|
|
|
|
|
+.doc-kv { display: grid; grid-template-columns: 88px 1fr; gap: 3px 8px; font-size: 12.8px; }
|
|
|
|
|
+.doc-kv dt { color: #6B6B6B; }
|
|
|
|
|
+.doc-kv dd { margin: 0; }
|
|
|
|
|
+.doc-meta { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 8px; }
|
|
|
|
|
+.doc-meta span { font-size: 11px; border: 1px solid #D9D6CE; border-radius: 99px; padding: 0 8px; color: #5E5E5A; }
|
|
|
|
|
+.flow-mini { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; font-size: 12.8px; }
|
|
|
|
|
+.flow-mini b { background: #C8102E; color: #fff; padding: 2px 9px; border-radius: 6px; font-size: 12px; }
|
|
|
|
|
+.flow-mini span { background: #F2F1EC; border: 1px solid #E7E5DF; padding: 2px 9px; border-radius: 6px; }
|
|
|
|
|
+.flow-mini i { font-style: normal; color: #C8102E; font-weight: 800; }
|
|
|
|
|
+.rulerow { display: grid; grid-template-columns: 30px 1fr; gap: 8px; padding: 6px 0; border-top: 1px dashed #E7E5DF; font-size: 12.8px; }
|
|
|
|
|
+.rulerow:first-child { border-top: 0; }
|
|
|
|
|
+.rulerow b { color: #C8102E; }
|
|
|
|
|
+.rule-ok::before { content: '✓'; color: #2E7D32; font-weight: 800; }
|
|
|
|
|
+.rule-no::before { content: '✗'; color: #C8102E; font-weight: 800; }
|
|
|
|
|
+.rule-warn::before { content: '!'; color: #A86A12; font-weight: 800; }
|
|
|
|
|
+.score { display: inline-block; min-width: 22px; text-align: center; border-radius: 4px; font-weight: 700; font-size: 11.5px; padding: 0 4px; background: #F2F1EC; }
|
|
|
|
|
+.s3 { background: rgba(46,125,50,.14); color: #2E7D32; }
|
|
|
|
|
+.s2 { background: rgba(168,106,18,.14); color: #A86A12; }
|
|
|
|
|
+.s1 { background: rgba(200,16,46,.10); color: #C8102E; }
|
|
|
|
|
+.okdot { color: #2E7D32; font-weight: 800; }
|
|
|
|
|
+.nodot { color: #C8102E; font-weight: 800; }
|
|
|
|
|
+.halfdot { color: #A86A12; font-weight: 800; }
|
|
|
|
|
+
|
|
|
|
|
+/* 用途 / 流转 */
|
|
|
|
|
+.uses { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; margin: 0; }
|
|
|
|
|
+.use { border: 1px solid var(--line); border-radius: 9px; padding: 9px 12px; background: var(--bg); font-size: 13.5px; }
|
|
|
|
|
+.use b { color: var(--red); font-size: 12px; display: block; margin-bottom: 2px; }
|
|
|
|
|
+.handoff-box { margin: 8px 0 0; padding: 10px 14px; border-radius: 9px; background: var(--bg-2); border: 1px dashed var(--line-2); font-size: 13.5px; }
|
|
|
|
|
+.handoff-box ol { margin: 4px 0 0; }
|
|
|
|
|
+.handoff-box .hb { font-size: 12px; font-weight: 800; color: var(--red); letter-spacing: .06em; }
|
|
|
|
|
+
|
|
|
|
|
+/* 推送语 */
|
|
|
|
|
+.push { border: 1px solid var(--ink); border-radius: 12px; margin: 14px 0; overflow: hidden; background: var(--card); }
|
|
|
|
|
+[data-theme="dark"] .push { border-color: var(--line-2); }
|
|
|
|
|
+.push-bar { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; padding: 8px 14px; background: var(--ink); color: var(--bg); font-size: 12.5px; }
|
|
|
|
|
+[data-theme="dark"] .push-bar { background: var(--bg-2); color: var(--ink); }
|
|
|
|
|
+.push-bar b { font-size: 13px; color: #fff; }
|
|
|
|
|
+[data-theme="dark"] .push-bar b { color: var(--ink); }
|
|
|
|
|
+.push-bar span { opacity: .75; }
|
|
|
|
|
+.push-rows { display: grid; }
|
|
|
|
|
+.push-row { display: grid; grid-template-columns: 92px 1fr; gap: 10px; padding: 9px 14px; border-top: 1px dashed var(--line-2); font-size: 14px; }
|
|
|
|
|
+.push-row:first-child { border-top: 0; }
|
|
|
|
|
+.push-row b { font-size: 12.5px; color: var(--red); padding-top: 2px; }
|
|
|
|
|
+.push-row p { margin: 0; }
|
|
|
|
|
+.push-row .ask { font-weight: 650; }
|
|
|
|
|
+
|
|
|
|
|
+/* 自检 / 对错 */
|
|
|
|
|
+.block.check { background: var(--card); border: 1px solid var(--line-2); border-radius: 12px; padding: 14px 18px; box-shadow: var(--shadow); }
|
|
|
|
|
+.check ol { list-style: none; padding: 0; margin: 6px 0; counter-reset: chk; }
|
|
|
|
|
+.check li { counter-increment: chk; }
|
|
|
|
|
+.check label { display: flex; gap: 10px; align-items: flex-start; padding: 7px 8px; border-radius: 8px; cursor: pointer; font-size: 14.5px; }
|
|
|
|
|
+.check label:hover { background: var(--bg-2); }
|
|
|
|
|
+.check label::before { content: counter(chk); flex: none; width: 22px; height: 22px; border-radius: 50%; border: 1.5px solid var(--red); color: var(--red); font-size: 12px; font-weight: 700; display: grid; place-items: center; margin-top: 1px; }
|
|
|
|
|
+.check input { position: absolute; opacity: 0; pointer-events: none; }
|
|
|
|
|
+.check input:checked + span { text-decoration: line-through; color: var(--ink-3); }
|
|
|
|
|
+.check label:has(input:checked)::before { content: '✓'; background: var(--green); border-color: var(--green); color: #fff; }
|
|
|
|
|
+.check .muted { margin: 6px 0 0; }
|
|
|
|
|
+.right-wrong { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; margin: 18px 0; }
|
|
|
|
|
+.rw { border-radius: 10px; padding: 10px 16px; border: 1px solid var(--line); background: var(--card); }
|
|
|
|
|
+.rw h3 { font-size: 14.5px; margin: 0 0 4px; }
|
|
|
|
|
+.rw ul { font-size: 13.5px; margin: 0; padding-left: 1.15em; }
|
|
|
|
|
+.rw.ok { border-top: 3px solid var(--green); }
|
|
|
|
|
+.rw.ok h3 { color: var(--green); }
|
|
|
|
|
+.rw.bad { border-top: 3px solid var(--red); }
|
|
|
|
|
+.rw.bad h3 { color: var(--red); }
|
|
|
|
|
+.handoff { display: flex; gap: 12px; align-items: baseline; background: var(--ink); color: var(--bg); border-radius: 10px; padding: 12px 16px; margin: 4px 0 30px; }
|
|
|
|
|
+[data-theme="dark"] .handoff { background: var(--card); color: var(--ink); border: 1px solid var(--line-2); }
|
|
|
|
|
+.handoff span { flex: none; font-size: 12px; font-weight: 800; letter-spacing: .08em; color: #fff; background: var(--red); padding: 2px 10px; border-radius: 99px; }
|
|
|
|
|
+.handoff p { margin: 0; font-size: 14px; }
|
|
|
|
|
+
|
|
|
|
|
+/* ---------- 速查表 / 18 格 ---------- */
|
|
|
|
|
+.mat { display: grid; grid-template-columns: 40px repeat(4, minmax(0, 1fr)); gap: 4px; margin: 10px 0; font-size: 12.5px; }
|
|
|
|
|
+.mat div { padding: 6px 6px; border-radius: 6px; background: var(--card); border: 1px solid var(--line); }
|
|
|
|
|
+.mat .mh { background: var(--bg-2); font-weight: 700; text-align: center; color: var(--ink-2); }
|
|
|
|
|
+.mat .mh.corner { background: transparent; border: 0; }
|
|
|
|
|
+.mat .k { font-weight: 700; background: var(--bg-2); color: var(--ink-2); display: grid; place-items: center; }
|
|
|
|
|
+.mat .z0 { border-color: var(--red-line); background: var(--red-soft); }
|
|
|
|
|
+.mat .z0 b { color: var(--red); }
|
|
|
|
|
+.mat small { display: block; color: var(--ink-3); font-size: 11px; }
|
|
|
|
|
+
|
|
|
|
|
+/* ---------- 附录 ---------- */
|
|
|
|
|
+.traps { display: grid; gap: 16px; margin: 18px 0; }
|
|
|
|
|
+.trap { background: var(--card); border: 1px solid var(--line); border-radius: 12px; box-shadow: var(--shadow); overflow: hidden; }
|
|
|
|
|
+.trap-head { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; padding: 12px 16px; border-bottom: 1px solid var(--line); background: var(--bg-2); }
|
|
|
|
|
+.trap-no { font-size: 12px; font-weight: 800; color: #fff; background: var(--red); padding: 2px 8px; border-radius: 6px; }
|
|
|
|
|
+.trap-head h3 { font-size: 16px; flex: 1; min-width: 200px; }
|
|
|
|
|
+.trap-tag { font-size: 12px; color: var(--ink-2); }
|
|
|
|
|
+.trap-cols { display: grid; grid-template-columns: minmax(0, 1fr) 28px minmax(0, 1fr); gap: 8px; padding: 14px 16px 6px; align-items: stretch; }
|
|
|
|
|
+.tc { border-radius: 9px; padding: 10px 12px; border: 1px solid var(--line); min-width: 0; overflow-wrap: anywhere; }
|
|
|
|
|
+.tc h4 { font-size: 12px; letter-spacing: .06em; margin: 0 0 4px; }
|
|
|
|
|
+.tc p { font-size: 13.5px; margin: 0 0 6px; }
|
|
|
|
|
+.tc table { font-size: 12.3px; width: 100%; border-collapse: collapse; }
|
|
|
|
|
+.tc th, .tc td { padding: 3px 5px; border-top: 1px solid var(--line); text-align: left; }
|
|
|
|
|
+.tc.ai { background: var(--bg-2); }
|
|
|
|
|
+.tc.ai h4 { color: var(--ink-3); }
|
|
|
|
|
+.tc.human { background: var(--card); border-color: var(--red-line); }
|
|
|
|
|
+.tc.human h4 { color: var(--red); }
|
|
|
|
|
+.trap-cols .arrow { display: grid; place-items: center; color: var(--red); font-weight: 800; }
|
|
|
|
|
+.trap-foot { padding: 4px 16px 14px; }
|
|
|
|
|
+.trap-foot p { font-size: 13px; margin: 4px 0; }
|
|
|
|
|
+.trap-foot b { color: var(--ink-2); font-size: 12px; margin-right: 6px; }
|
|
|
|
|
+.faq-group { margin: 20px 0; }
|
|
|
|
|
+.faq-group h3 { font-size: 16px; margin-bottom: 8px; color: var(--red); }
|
|
|
|
|
+details.q { background: var(--card); border: 1px solid var(--line); border-radius: 9px; margin-bottom: 6px; }
|
|
|
|
|
+details.q summary { cursor: pointer; padding: 10px 14px; font-weight: 600; font-size: 14.5px; list-style: none; }
|
|
|
|
|
+details.q summary::-webkit-details-marker { display: none; }
|
|
|
|
|
+details.q summary::after { content: '+'; float: right; color: var(--red); font-weight: 700; }
|
|
|
|
|
+details.q[open] summary::after { content: '−'; }
|
|
|
|
|
+details.q p { padding: 0 14px 12px; margin: 0; font-size: 14px; color: var(--ink-2); }
|
|
|
|
|
+.tips { background: var(--ink); color: var(--bg); border-radius: 12px; padding: 16px 20px; margin: 24px 0; }
|
|
|
|
|
+[data-theme="dark"] .tips { background: var(--card); color: var(--ink); border: 1px solid var(--line-2); }
|
|
|
|
|
+.tips h3 { color: #fff; font-size: 15px; margin-bottom: 6px; }
|
|
|
|
|
+[data-theme="dark"] .tips h3 { color: var(--red); }
|
|
|
|
|
+.tips ol { margin: 0; font-size: 14px; }
|
|
|
|
|
+
|
|
|
|
|
+/* 话术对照 */
|
|
|
|
|
+.say-table td.no { color: var(--ink-3); text-decoration: line-through; text-decoration-color: var(--red-line); }
|
|
|
|
|
+.say-table td.yes { font-weight: 600; }
|
|
|
|
|
+
|
|
|
|
|
+/* ---------- 页脚 ---------- */
|
|
|
|
|
+.foot { padding: 28px 0 60px; font-size: 13px; color: var(--ink-2); border-top: 1px solid var(--line); margin-top: 30px; }
|
|
|
|
|
+.foot p { margin: 2px 0; }
|
|
|
|
|
+
|
|
|
|
|
+/* ---------- 响应式 ---------- */
|
|
|
|
|
+@media (max-width: 1100px) {
|
|
|
|
|
+ .content { padding: 0 24px 70px; }
|
|
|
|
|
+ .halves { grid-template-columns: 1fr; }
|
|
|
|
|
+ .roles, .caps, .kind3, .rings, .ladder { grid-template-columns: 1fr; }
|
|
|
|
|
+ .sop { grid-template-columns: repeat(2, minmax(0, 1fr)); }
|
|
|
|
|
+ .resp-row { grid-template-columns: 40px 1fr; }
|
|
|
|
|
+ .resp-row .rk { grid-column: 2; }
|
|
|
|
|
+}
|
|
|
|
|
+@media (max-width: 860px) {
|
|
|
|
|
+ .side { width: min(86vw, 320px); transform: translateX(-102%); transition: transform .25s ease; box-shadow: 0 10px 40px rgba(0,0,0,.25); }
|
|
|
|
|
+ .nav-open .side { transform: none; }
|
|
|
|
|
+ .main { margin-left: 0; }
|
|
|
|
|
+ .mobile-bar { display: flex; }
|
|
|
|
|
+ #drawer-close { display: grid; margin-left: auto; }
|
|
|
|
|
+ .content { padding: 0 16px 60px; }
|
|
|
|
|
+ .seg { padding-top: 30px; }
|
|
|
|
|
+ body { font-size: 15px; }
|
|
|
|
|
+ .cover { padding: 36px 0 28px; }
|
|
|
|
|
+ .cover-facts { grid-template-columns: 1fr; gap: 8px; }
|
|
|
|
|
+ .cover-facts div { padding: 8px 12px; }
|
|
|
|
|
+ .cover-cta .btn { flex: 1; justify-content: center; }
|
|
|
|
|
+ .lead { padding: 10px 12px; }
|
|
|
|
|
+ .loop4, .pillars, .jump-grid, .two-col, .right-wrong, .uses, .moments { grid-template-columns: 1fr; }
|
|
|
|
|
+ .sec-head { grid-template-columns: 1fr; gap: 4px; }
|
|
|
|
|
+ .sec-no { padding-top: 0; }
|
|
|
|
|
+ .trap-cols { grid-template-columns: 1fr; }
|
|
|
|
|
+ .trap-cols .arrow { transform: rotate(90deg); height: 18px; }
|
|
|
|
|
+ .half-head { padding: 16px 16px; border-radius: 12px; }
|
|
|
|
|
+ .rule { grid-template-columns: 30px 1fr; padding: 10px 12px; }
|
|
|
|
|
+ .handoff { flex-direction: column; gap: 6px; }
|
|
|
|
|
+ .prompt-body { max-height: 320px; }
|
|
|
|
|
+ .seg-row { grid-template-columns: 64px 1fr; }
|
|
|
|
|
+ .seg-row .sr-q { grid-column: 2; }
|
|
|
|
|
+ .spec-body { padding: 2px 12px 10px; }
|
|
|
|
|
+ .spec-head .spec-meta { margin-left: 0; }
|
|
|
|
|
+ .push-row { grid-template-columns: 1fr; gap: 2px; }
|
|
|
|
|
+ .doc-grid2 { grid-template-columns: 1fr; }
|
|
|
|
|
+ .lp-head h4 { font-size: 15px; }
|
|
|
|
|
+ .mat { grid-template-columns: 34px repeat(4, minmax(0, 1fr)); font-size: 11.5px; }
|
|
|
|
|
+ .mat div { padding: 4px 4px; }
|
|
|
|
|
+}
|
|
|
|
|
+@media (prefers-reduced-motion: reduce) { .pg-bar i { transition: none; } }
|
|
|
|
|
+
|
|
|
|
|
+</style>
|
|
|
|
|
+</head>
|
|
|
|
|
+<body>
|
|
|
|
|
+<div class="app">
|
|
|
|
|
+ <aside class="side" id="drawer" aria-label="目录">
|
|
|
|
|
+ <div class="side-top">
|
|
|
|
|
+ <div class="brand">
|
|
|
|
|
+ <span class="brand-logo">康</span>
|
|
|
|
|
+ <div><div class="brand-name">学员手册 v3</div><div class="brand-sub">产品创新工作坊 · 智研先锋计划</div></div>
|
|
|
|
|
+ <button class="icon-btn" id="drawer-close" type="button" aria-label="关闭目录">✕</button>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="side-tools">
|
|
|
|
|
+ <a class="tool-btn" href="../overview/index.html">总览图</a>
|
|
|
|
|
+ <button class="tool-btn" id="theme-toggle" type="button" aria-label="切换深色/浅色主题"><span aria-hidden="true">◐</span> 深浅色</button>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="search-box"><input id="search" type="search" placeholder="搜索环节,如 竞品、卖点、推送" aria-label="搜索目录"></div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <nav class="toc" id="toc-list"></nav>
|
|
|
|
|
+ <div class="progress" aria-label="进度">
|
|
|
|
|
+ <div class="ptitle">进度 · 环节产出</div>
|
|
|
|
|
+ <div class="pg-row" id="progress"></div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </aside>
|
|
|
|
|
+ <div class="scrim" id="scrim"></div>
|
|
|
|
|
+ <div class="main">
|
|
|
|
|
+ <div class="mobile-bar">
|
|
|
|
|
+ <button class="icon-btn" id="menu-btn" type="button" aria-label="打开目录">☰</button>
|
|
|
|
|
+ <div class="brand"><span class="brand-logo">康</span><span class="brand-name">学员手册 v3</span></div>
|
|
|
|
|
+ <a class="tool-btn" href="../overview/index.html">总览图</a>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <main class="content" id="content"></main>
|
|
|
|
|
+ </div>
|
|
|
|
|
+</div>
|
|
|
|
|
+<script>
|
|
|
|
|
+// x1 · 提示词库:每个提示词都以【推送格式】三段结尾;正文里用 {PROMPT:id} 引用(现由 app.js 按环节 id 直接渲染)
|
|
|
|
|
+window.PROMPTS = {
|
|
|
|
|
+
|
|
|
|
|
+d101: {
|
|
|
|
|
+name: 'D1-01 品类全景扫描',
|
|
|
|
|
+text: `【D1-01 品类全景扫描】
|
|
|
|
|
+承接:本组课题是「(粘贴本组课题:使用情境 + 产品范围)」,本组要支持的产品决定是「(粘贴练习四写下的决定)」。
|
|
|
|
|
+
|
|
|
|
|
+先看我下面填的认知盘点(不要跳过、不要替我改):
|
|
|
|
|
+1. 我已经知道的:
|
|
|
|
|
+2. 我还不知道的:
|
|
|
|
|
+3. 我希望搞清楚的:
|
|
|
|
|
+4. 我的真实限制:
|
|
|
|
|
+
|
|
|
|
|
+本节请建立「品类全景图谱」,它是后面所有环节的底座:
|
|
|
|
|
+- 供给树:按形态、工艺、价格带、地域风味四个维度,说明本组课题涉及的格子分别有什么商品(带计数);
|
|
|
|
|
+- 需求树:按人群(G1–G6)、场景、需求,说明本组课题的人群在哪一格里说过什么;
|
|
|
|
|
+- 供需缺口:左右两栏对照,指出「有商品、没需求原话」和「有需求原话、没商品」的格子;
|
|
|
|
|
+- 每个分支标注来源(数据文件 / 商品链接 / 笔记 ID)和覆盖范围(样本条数、平台、关键词)。
|
|
|
|
|
+
|
|
|
|
|
+要求:
|
|
|
|
|
+- 不虚构市场规模、销量或份额;数据里没有的,写「待确认」;
|
|
|
|
|
+- 「未标注」不等于「没有」,分清楚;
|
|
|
|
|
+- 先复用资料库已有材料;只有当缺口会改变图谱结构时,再说明需要补什么;
|
|
|
|
|
+- 「我还不知道的」那几条优先回答,并标出哪些已回答、哪些仍是缺口。
|
|
|
|
|
+
|
|
|
|
|
+最后输出:一张三栏图谱 + 一段 100 字以内的话,说明「本组所在的格子里,哪一格证据最薄」。
|
|
|
|
|
+
|
|
|
|
|
+【推送格式】结束本环节时,在回复最后用这三行总结:
|
|
|
|
|
+【本轮产出】你手上有:___
|
|
|
|
|
+【还缺什么】___(指出影响下一环 D1-02 的具体缺口)
|
|
|
|
|
+【下一步】接下来要做 D1-02 验证纪律。请先回答:___(只问一个会改变结论的问题)`
|
|
|
|
|
+},
|
|
|
|
|
+
|
|
|
|
|
+d102: {
|
|
|
|
|
+name: 'D1-02 验证纪律',
|
|
|
|
|
+text: `【D1-02 验证纪律】
|
|
|
|
|
+承接:本组 D1-01 的品类全景图谱(引用保存编号或粘贴表格)。
|
|
|
|
|
+
|
|
|
|
|
+本节请为本题定制一张「本题验证配置卡」,之后所有环节都按这张卡执行:
|
|
|
|
|
+1. 资料资格:哪些数据可以用、什么条件下可引用、什么情况下必须换口径;
|
|
|
|
|
+2. 统计与引文口径:分母怎么写、中位数用哪一种、价格用哪个口径(125 条与 71 条双报)、原文引用规范;
|
|
|
|
|
+3. 模型分工:哪些判断由你给证据、哪些必须由本组人来拍板;
|
|
|
|
|
+4. 分歧处理:两种说法冲突时怎么判,判不了怎么写;
|
|
|
|
|
+5. 回查记录:拿上面 1–4 回查 D1-01 图谱,挑出最容易被反驳的 3 条主张,说明换口径后结论变不变。
|
|
|
|
|
+
|
|
|
|
|
+企业标准(成本、产线、配方、价格政策)一律标「待确认」,不要替我猜。
|
|
|
|
|
+词典打标词(辣、贵、量大等)未抽读原文的,一律降级为「假设」。
|
|
|
|
|
+
|
|
|
|
|
+最后输出:一张配置卡(不超过一页)+ 一张回查记录。
|
|
|
|
|
+
|
|
|
|
|
+【推送格式】结束本环节时,在回复最后用这三行总结:
|
|
|
|
|
+【本轮产出】你手上有:___
|
|
|
|
|
+【还缺什么】___(指出影响下一环 D1-03 的具体缺口)
|
|
|
|
|
+【下一步】接下来要做 D1-03 竞品格局。请先回答:___(只问一个会改变结论的问题)`
|
|
|
|
|
+},
|
|
|
|
|
+
|
|
|
|
|
+d103: {
|
|
|
|
|
+name: 'D1-03 竞品格局',
|
|
|
|
|
+text: `【D1-03 竞品格局】
|
|
|
|
|
+承接:D1-01 品类全景图谱 + D1-02 验证配置卡。
|
|
|
|
|
+本组课题:(粘贴)。本组最关心的竞品 / 品牌:___。
|
|
|
|
|
+
|
|
|
|
|
+本节请按验证配置卡的口径,做「竞品图谱 + 待验证痛点假设」。
|
|
|
|
|
+
|
|
|
|
|
+一、商品层面(同格商品矩阵)
|
|
|
|
|
+对与本组课题同一格子的商品,比较:品牌、商品链接、规格(克重/件数)、价格条件(单价、百克价、整箱/单份)、形态、定位、卖点组合(哪些卖点叠加)、风味。
|
|
|
|
|
+每个卖点格子只标三种之一:【宣称】(标题/详情)、【回应】(用户原话所说)、【推断】(你的判断)。
|
|
|
|
|
+找不到新品时间字段就写「无字段,无法判断」,不要用标题推测。
|
|
|
|
|
+
|
|
|
|
|
+二、社媒层面
|
|
|
|
|
+- 每个竞品提取卖点组合,严格区分宣称 / 回应 / 推断;
|
|
|
|
|
+- 找出「正反都有」的原话:同一主题上有人说好、有人说不好,各给原文;
|
|
|
|
|
+- 对本组最关心的 2–3 个问题,提出可证伪的痛点假设(编号 H1、H2、H3),每条写清:凭什么怀疑、什么情况推翻它。
|
|
|
|
|
+
|
|
|
|
|
+口径要求:
|
|
|
|
|
+- 竞品社媒样本是每品牌一个关键词、约 20 篇,写明这个样本能代表什么、不能代表什么;
|
|
|
|
|
+- 不要用总赞排品牌声量;单条点赞特别高的,先检查是不是活动帖、表情包或重复抓取;
|
|
|
|
|
+- 碰到「辣」这类口味词,抽读原文再判断是正面还是负面。
|
|
|
|
|
+
|
|
|
|
|
+最后输出:一张竞品矩阵 + 一张假设清单。
|
|
|
|
|
+
|
|
|
|
|
+【推送格式】结束本环节时,在回复最后用这三行总结:
|
|
|
|
|
+【本轮产出】你手上有:___
|
|
|
|
|
+【还缺什么】___(指出影响下一环 D1-04 的具体缺口)
|
|
|
|
|
+【下一步】接下来要做 D1-04 假设定稿与任务下达。请先回答:___(只问一个会改变结论的问题)`
|
|
|
|
|
+},
|
|
|
|
|
+
|
|
|
|
|
+d104: {
|
|
|
|
|
+name: 'D1-04 假设定稿与任务下达',
|
|
|
|
|
+text: `【D1-04 假设定稿与任务下达】
|
|
|
|
|
+承接:D1-01 图谱、D1-02 配置卡、D1-03 竞品图谱与 H1–H3 待验证痛点假设。
|
|
|
|
|
+本组要支持的决定:(粘贴)。今晚最想得到答案的一条:(粘贴)。
|
|
|
|
|
+
|
|
|
|
|
+请把它们整理成「增强 AI 自驱任务卡」,每条主线假设一行,字段固定:
|
|
|
|
|
+- 假设键(H1 起编号,之后所有成果都用它引用)
|
|
|
|
|
+- 原假设(一句话,可被证伪)
|
|
|
|
|
+- 现有支持(带来源与编号)
|
|
|
|
|
+- 支持路径(查什么能支持它)
|
|
|
|
|
+- 反证路径(查什么能推翻它)
|
|
|
|
|
+- 停止条件(必须是程序可判定的东西,例如「找到 N 条反例」「读完某组全部笔记」)
|
|
|
|
|
+- 数据来源与权限(先复用资料库;外部补证是否授权、去哪里补)
|
|
|
|
|
+
|
|
|
|
|
+今晚的任务边界:
|
|
|
|
|
+- 只执行这张任务卡里的假设,不扩展新方向;
|
|
|
|
|
+- 最多 3 条主线假设,其余放「备查」;
|
|
|
|
|
+- 资料库不够、且缺口会改变结论时,才调用外部补证;不需要补证就直接成报;
|
|
|
|
|
+- 没查到、没权限、数据确实不存在,三类分开报。
|
|
|
|
|
+
|
|
|
|
|
+先给我一版任务卡草稿,并指出:哪些字段你拿不准、需要我回答?(只问会改变结论的问题)
|
|
|
|
|
+
|
|
|
|
|
+【推送格式】结束本环节时,在回复最后用这三行总结:
|
|
|
|
|
+【本轮产出】你手上有:___
|
|
|
|
|
+【还缺什么】___(指出今晚执行前还差什么)
|
|
|
|
|
+【下一步】今晚执行 D1-N 第二轮调研。请在交卡前回答:___(只问一个会改变结论的问题)`
|
|
|
|
|
+},
|
|
|
|
|
+
|
|
|
|
|
+d1n: {
|
|
|
|
|
+name: 'D1-N 第二轮调研(晚间执行)',
|
|
|
|
|
+text: `【D1-N 第二轮调研 · 晚间执行】
|
|
|
|
|
+按 D1-04 的任务卡执行今晚的调研。任务卡:(引用编号)验证配置卡:(引用编号)
|
|
|
|
|
+
|
|
|
|
|
+执行顺序:
|
|
|
|
|
+1. 先复用资料库原件:已有的商品、用户笔记、工艺知识、竞品资料;
|
|
|
|
|
+2. 检查覆盖与资格:每条假设被支持到什么程度,哪些是缺口;
|
|
|
|
|
+3. 只对「会改变判断的真实缺口」决定是否外部补证,并说明补什么、去哪里补;
|
|
|
|
|
+4. 按假设键做 VOC 预聚类,每条原话带笔记标题 / ID;提及率初表写清分母;
|
|
|
|
|
+5. 资料够用、不需要补证时,直接成报,不要为凑形式机械采集;
|
|
|
|
|
+6. 缺口清单分三类:没查到 / 没权限 / 数据确实不存在;
|
|
|
|
|
+7. 达到停止条件就停,并在战报中写明停在哪个条件;
|
|
|
|
|
+8. 保存后用真实编号回读,确认正文一致。
|
|
|
|
|
+
|
|
|
|
|
+最后输出:调研战报(按假设键一页)+ 缺口清单 + VOC 预聚类。
|
|
|
|
|
+
|
|
|
|
|
+【推送格式】战报生成时,在最后用这三行总结:
|
|
|
|
|
+【本轮产出】你手上有:___
|
|
|
|
|
+【还缺什么】___(明早最值得先读的缺口)
|
|
|
|
|
+【下一步】明早先做 D2-01 调研验收。请先回答:___(只问一个会改变结论的问题)`
|
|
|
|
|
+},
|
|
|
|
|
+
|
|
|
|
|
+d201: {
|
|
|
|
|
+name: 'D2-01 调研验收',
|
|
|
|
|
+text: `【D2-01 调研验收】
|
|
|
|
|
+承接:D1-N 的调研战报与缺口清单(引用编号)。
|
|
|
|
|
+
|
|
|
|
|
+请从战报中抽取「战报验收记录」,三列检查:
|
|
|
|
|
+1. 假设回应率:H1–H3 每条回应程度(支持 / 部分支持 / 推翻 / 未回应),并说明依据;
|
|
|
|
|
+2. 原件覆盖:支撑每条结论的原件是否能点开读到(附笔记 ID / 商品链接);读不到的标「待补证」;
|
|
|
|
|
+3. 分母口径:所有比例是否写明分母;没有的,补上或降级;
|
|
|
|
|
+另外:
|
|
|
|
|
+- 词典打标词是否抽读原文(辣 / 贵 / 量大等);未读的结论降到「假设」;
|
|
|
|
|
+- 缺口是否分了「没查到 / 没权限 / 不存在」三类;
|
|
|
|
|
+- 「AI 推断」是否与「原件证据」分开写。
|
|
|
|
|
+
|
|
|
|
|
+最后输出:一张验收记录 + 一份「可用资料集合」(合格的、能回读的原件清单)。
|
|
|
|
|
+
|
|
|
|
|
+【推送格式】结束本环节时,在回复最后用这三行总结:
|
|
|
|
|
+【本轮产出】你手上有:___
|
|
|
|
|
+【还缺什么】___(指出影响 D2-02 的具体缺口)
|
|
|
|
|
+【下一步】先听大课二,然后做 D2-02 VOC 证词聚类。请先回答:___(只问一个会改变结论的问题)`
|
|
|
|
|
+},
|
|
|
|
|
+
|
|
|
|
|
+d202: {
|
|
|
|
|
+name: 'D2-02 VOC 证词聚类',
|
|
|
|
|
+text: `【D2-02 VOC 证词聚类】
|
|
|
|
|
+承接:D2-01 战报验收记录 + 可用资料集合(附笔记 ID)。
|
|
|
|
|
+本组人群与场景范围:(粘贴)。
|
|
|
|
|
+
|
|
|
|
|
+请把可用资料的原话按四层拆开,四层不能混:
|
|
|
|
|
+1. 人群(G1–G6 或更细);
|
|
|
|
|
+2. 场景(具体时间、地点、行为);
|
|
|
|
|
+3. JTBD(用户要完成的事);
|
|
|
|
|
+4. 痛点(具体不满)。
|
|
|
|
|
+对每个打标痛点词(辣、贵、量大等),抽读原文,标注态度:正 / 负 / 读不出。
|
|
|
|
|
+
|
|
|
|
|
+输出四张表:
|
|
|
|
|
+- 聚类表:每条原话落在哪一层、哪一格;
|
|
|
|
|
+- 痛点库:痛点、原话(带 ID)、频次、态度分布;
|
|
|
|
|
+- KANO 表:每条痛点的需求类型(基本型 / 期望型 / 兴奋型),标明「频次先验」;
|
|
|
|
|
+- 人群 × 场景矩阵:每一格写原话条数与代表原话。
|
|
|
|
|
+
|
|
|
|
|
+禁止:按打标频次直接排名次;把「读不出态度」的原话删除。
|
|
|
|
|
+最后输出:四张表 + 3 个「有原话、没产品」的格子。
|
|
|
|
|
+
|
|
|
|
|
+【推送格式】结束本环节时,在回复最后用这三行总结:
|
|
|
|
|
+【本轮产出】你手上有:___
|
|
|
|
|
+【还缺什么】___(指出影响 D2-03 的具体缺口)
|
|
|
|
|
+【下一步】接下来要做 D2-03 风味趋势与矩阵空白。请先回答:___(只问一个会改变结论的问题)`
|
|
|
|
|
+},
|
|
|
|
|
+
|
|
|
|
|
+d203: {
|
|
|
|
|
+name: 'D2-03 风味趋势与矩阵空白',
|
|
|
|
|
+text: `【D2-03 风味趋势与矩阵空白】
|
|
|
|
|
+承接:D2-02 四张表 + D1-01 品类全景图谱。
|
|
|
|
|
+
|
|
|
|
|
+请把「需求矩阵」和「供给矩阵」叠在一起,按三类列出空白:
|
|
|
|
|
+1. 结构:现在长什么样(价格带、工艺、形态、地域的分布);
|
|
|
|
|
+2. 变化:本批数据是单次快照,不能判涨跌;如要判「在变」,必须说明时间序列来源,没有就写「本次不验证」;
|
|
|
|
|
+3. 未覆盖:该有的东西还没有——但每个「未覆盖」都必须先查同格竞品,写明「同格已有 N 个,其中谁」。
|
|
|
|
|
+
|
|
|
|
|
+每个空白格给一行「机会指标」:要验证什么、用什么数据能验证、本次能不能验证。
|
|
|
|
|
+禁止把三类放在同一张排序表里比较;禁止把「搜索页找不到」写成「市场空白」。
|
|
|
|
|
+
|
|
|
|
|
+最后输出:产品机会及指标初表(一行一个机会,五列:空白格 / 类别 / 供给证据 / 需求证据 / 需要验证的指标)。
|
|
|
|
|
+
|
|
|
|
|
+【推送格式】结束本环节时,在回复最后用这三行总结:
|
|
|
|
|
+【本轮产出】你手上有:___
|
|
|
|
|
+【还缺什么】___(指出影响 D2-04 的具体缺口)
|
|
|
|
|
+【下一步】接下来要做 D2-04 三源交叉推理。请先回答:___(只问一个会改变结论的问题)`
|
|
|
|
|
+},
|
|
|
|
|
+
|
|
|
|
|
+d204: {
|
|
|
|
|
+name: 'D2-04 三源交叉推理',
|
|
|
|
|
+text: `【D2-04 三源交叉推理】
|
|
|
|
|
+承接:D2-03 机会及指标初表 + D2-02 四张表 + 本组研发侧对工艺的判断。
|
|
|
|
|
+本组最想先认证的 2 个空白格:(粘贴)。
|
|
|
|
|
+
|
|
|
|
|
+对每个空白格做三源交叉:
|
|
|
|
|
+- 源一 商品事实:同格有哪些商品、价格带、卖点组合(带商品链接);
|
|
|
|
|
+- 源二 用户原声:有哪些原话直接指向这一格(带笔记 ID 与态度);
|
|
|
|
|
+- 源三 工艺条件:这一格做不做得出来(参数、成本、稳定性)——你写你判断的,其余标「待工艺确认」。
|
|
|
|
|
+
|
|
|
|
|
+每张「机会卡」固定 6 个字段:
|
|
|
|
|
+1. 一句话结论(可被推翻的判断);
|
|
|
|
|
+2. 三源证据(每条带来源与编号);
|
|
|
|
|
+3. 反例(什么情况下这个结论不成立);
|
|
|
|
|
+4. 还缺什么(写成「待确认:……」并说明影响哪个结论);
|
|
|
|
|
+5. 下一步验证(先补哪一条证据);
|
|
|
|
|
+6. 工艺注释(研发侧亲手写:参数、条件、风险;AI 不得代写为「可行」)。
|
|
|
|
|
+
|
|
|
|
|
+评级:三源齐全 → 候选;两条线 → 候选(弱);一条线 → 线索。
|
|
|
|
|
+最后输出:候选机会清单 V1.0(2–3 张机会卡)。
|
|
|
|
|
+
|
|
|
|
|
+【推送格式】结束本环节时,在回复最后用这三行总结:
|
|
|
|
|
+【本轮产出】你手上有:___
|
|
|
|
|
+【还缺什么】___(指出下午 D2-05 排序前还差什么)
|
|
|
|
|
+【下一步】先听大课三,然后做 D2-05 机会验证与排序。请先回答:___(只问一个会改变结论的问题)`
|
|
|
|
|
+},
|
|
|
|
|
+
|
|
|
|
|
+d205: {
|
|
|
|
|
+name: 'D2-05 机会验证与排序',
|
|
|
|
|
+text: `【D2-05 机会验证与排序】
|
|
|
|
|
+承接:候选机会清单 V1.0(2–3 张机会卡)。
|
|
|
|
|
+
|
|
|
|
|
+请对每张机会卡打三个维度分(1–3):
|
|
|
|
|
+- 证据强度:三源各有多少条证据;
|
|
|
|
|
+- 可做性:现有产线 / 工艺 / 供应商能不能做;
|
|
|
|
|
+- 商业价值:价格带、毛利、量级(这一项标注「需本组复核」)。
|
|
|
|
|
+每个分数后写一句话依据,并标注依据是「课堂证据」还是「本组经验」。
|
|
|
|
|
+
|
|
|
|
|
+排序规则:任何一维得 1 分的机会,不得排进前三。
|
|
|
|
|
+无法打分的,单独列入「未知项表」:缺什么数据、能用什么方式补、本次能不能补。未知项不是低分项。
|
|
|
|
|
+
|
|
|
|
|
+最后输出:优先级机会清单(含分值、依据、排序理由)+ 未知项单列。
|
|
|
|
|
+
|
|
|
|
|
+【推送格式】结束本环节时,在回复最后用这三行总结:
|
|
|
|
|
+【本轮产出】你手上有:___
|
|
|
|
|
+【还缺什么】___(指出影响 D2-06 的具体缺口)
|
|
|
|
|
+【下一步】接下来要做 D2-06 商业及供应链回推。请先回答:___(只问一个会改变结论的问题)`
|
|
|
|
|
+},
|
|
|
|
|
+
|
|
|
|
|
+d206: {
|
|
|
|
|
+name: 'D2-06 商业及供应链回推',
|
|
|
|
|
+text: `【D2-06 商业及供应链回推】
|
|
|
|
|
+承接:D2-05 优先级机会清单,本组主攻机会:(粘贴)工艺路径:改现有配比(B0)/ 新增并行产品线(O1)/ 两者对比。
|
|
|
|
|
+
|
|
|
|
|
+请对主攻机会做「回推表 + 候选机会清单 V2.0」:
|
|
|
|
|
+1. 两条路:B0 现状、O1 目标方案;只有收入、渠道费用、损耗比例都相同时,两者才可直接比较,否则写明差异;
|
|
|
|
|
+2. 三条费用分开:一次费用 / 资本投入 / 营运资金;
|
|
|
|
|
+3. 成本结构:按知识库行业通行值拆(面饼 34–38% / 调料 24–30% / 包材 12–13%……),换算到单位成本与目标价格带;
|
|
|
|
|
+4. 供应商:代工价 2.1–3.2 元/袋、验厂比例 42%、区域分工;缺装箱/外箱/配送/损耗的标「待确认」;
|
|
|
|
|
+5. 工艺与合规:工艺参数、GB 17400-2015(水分 ≤10%、酸价 ≤1.8、过氧化值 ≤0.25)、GB 2760-2024 添加剂限量;以标准正文为准。
|
|
|
|
|
+
|
|
|
|
|
+所有估算标「课堂估算」;本组经验值标「经验值」;缺的标「待确认」。
|
|
|
|
|
+最后输出:回推表 + V2.0 机会卡(在 V1.0 六字段外增加:成本区间 / 目标价格带 / 两条路对比 / 合规条件)。
|
|
|
|
|
+
|
|
|
|
|
+【推送格式】结束本环节时,在回复最后用这三行总结:
|
|
|
|
|
+【本轮产出】你手上有:___
|
|
|
|
|
+【还缺什么】___(指出影响 D2-07 的具体缺口)
|
|
|
|
|
+【下一步】接下来要做 D2-07 价值主张与核心卖点。请先回答:___(只问一个会改变结论的问题)`
|
|
|
|
|
+},
|
|
|
|
|
+
|
|
|
|
|
+d207: {
|
|
|
|
|
+name: 'D2-07 价值主张与核心卖点',
|
|
|
|
|
+text: `【D2-07 价值主张与核心卖点】
|
|
|
|
|
+承接:候选机会清单 V2.0 + D2-02 痛点库原话。
|
|
|
|
|
+本组主推版本面向的价格带 / 人群 / 场景:(粘贴)。
|
|
|
|
|
+
|
|
|
|
|
+第一步:写价值主张卡
|
|
|
|
|
+- 一句主主张(不超过 20 字,用户能复述);
|
|
|
|
|
+- 三条收益(用户能感知到的好处,不是工艺参数);
|
|
|
|
|
+- 三条证据(对应组件 / 原话 / 商品事实,带 ID);
|
|
|
|
|
+- 证据边界:能说什么 / 不能说什么 / 合规标示。
|
|
|
|
|
+
|
|
|
|
|
+第二步:卖点清单,按价格带 × 人群 × 场景各 2–3 个版本。
|
|
|
|
|
+要求:
|
|
|
|
|
+- 每一句卖点都要对到一条原话或一个商品事实;
|
|
|
|
|
+- 研发术语(非油炸、热风三段控温、含水 8–12%)翻译成市场语言,必要时保留一个“技术背书”小注;
|
|
|
|
|
+- 「健康 / 减脂 / 养胃」等功效宣称在无合规依据时一律不写;
|
|
|
|
|
+- 标出让本组删掉的那些版本,并说明为什么删(例如「技术上说得过去但做不到」)。
|
|
|
|
|
+
|
|
|
|
|
+最后输出:价值主张卡 + 卖点清单(主推版 + 备选版 + 不能说的话)。
|
|
|
|
|
+
|
|
|
|
|
+【推送格式】结束本环节时,在回复最后用这三行总结:
|
|
|
|
|
+【本轮产出】你手上有:___
|
|
|
|
|
+【还缺什么】___(指出影响 D2-08 的具体缺口)
|
|
|
|
|
+【下一步】接下来要做 D2-08 概念提案与分享。请先回答:___(只问一个会改变结论的问题)`
|
|
|
|
|
+},
|
|
|
|
|
+
|
|
|
|
|
+d208: {
|
|
|
|
|
+name: 'D2-08 概念提案与分享',
|
|
|
|
|
+text: `【D2-08 概念提案与分享】
|
|
|
|
|
+承接:候选机会清单 V2.0 + 回推表 + 价值主张卡 + 卖点清单。
|
|
|
|
|
+
|
|
|
|
|
+请按「结论 → 依据 → 风险 → 行动」串成一份提案,并生成三个版本:
|
|
|
|
|
+- 一句话版(决策圈用,不超过 40 字,说清做什么、为什么现在、要什么资源);
|
|
|
|
|
+- 一页版(协同圈用,5 页以内);
|
|
|
|
|
+- 全案版(归档用)。
|
|
|
|
|
+
|
|
|
|
|
+同时输出:
|
|
|
|
|
+1. 质询清单:决策圈 / 协同圈 / 生态圈各 3 个最可能问到的问题,标出哪些本组能答、哪些答不出;
|
|
|
|
|
+2. 矛盾清单:三段分析互相打架的地方,都保留下来,不要删;
|
|
|
|
|
+3. 候选清单 V3.0:质询后更新版本,记录每处修改理由;
|
|
|
|
|
+4. 成果导航:13 份产出物各自的保存位置、一句话用途、结营后第一周先看哪一份。
|
|
|
|
|
+
|
|
|
|
|
+要求:只做减法,每条留给结论的都是支撑结论的那几条证据。示意图类内容标注「生成示意,需设计确认」,不出现任何真实品牌 Logo。
|
|
|
|
|
+
|
|
|
|
|
+【推送格式】结束本环节时,在回复最后用这三行总结:
|
|
|
|
|
+【本轮产出】你手上有:___
|
|
|
|
|
+【还缺什么】___(指出结营后第一周最该补的那个缺口)
|
|
|
|
|
+【下一步】结营后第一周陪练:拿 V3.0 回来先补一个「答不出」的问题。请先回答:___(只问一个会改变结论的问题)`
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+};
|
|
|
|
|
+
|
|
|
|
|
+// m1 · 开场:封面 / 怎么读这本手册 / 三个半天总览 / 产品经理定位 / 八步 SOP / 产出物速查
|
|
|
|
|
+window.SEGS = window.SEGS || [];
|
|
|
|
|
+
|
|
|
|
|
+window.SEGS.push(
|
|
|
|
|
+{
|
|
|
|
|
+kind: 'cover',
|
|
|
|
|
+title: '产品创新工作坊 学员手册',
|
|
|
|
|
+sub: '智研先锋计划 · AI 赋能产品研发实战营 · 学员手册 v3',
|
|
|
|
|
+lead: '三个半天,3 份大课详案,13 个研究环节,13 份写死的产出物。从「我觉得」走到「能讲清楚为什么选它」。',
|
|
|
|
|
+thesis: '这次坐在教室里的,是<b>产品经理</b>——未来的<b>品类负责人</b>。三个半天练的,是同一个产品经理在<b>研发侧、市场侧、经营侧</b>三种视角之间来回切换的能力。',
|
|
|
|
|
+facts: [
|
|
|
|
|
+ ['学员', '研发中心产品经理 · 每组 5–6 人 · 按课题方向分组'],
|
|
|
|
|
+ ['节奏', 'D1 下午 13:30–17:30 · D2 上午 09:00–12:20 · D2 下午 13:30–17:30'],
|
|
|
|
|
+ ['大课', '大课一 90 分钟(战略层 → 组织层 → 个人层)· 大课二 50 分钟 · 大课三 50 分钟'],
|
|
|
|
|
+ ['产出', '13 个环节 = 13 份产出物,每份写明:长什么样 / 干什么用 / 交给谁'],
|
|
|
|
|
+ ['数据', '电商 400 SKU · 用户笔记 260 篇 · 竞品社媒 120 篇 · 工艺知识库 49 条']
|
|
|
|
|
+],
|
|
|
|
|
+note: '本手册引用的所有数字都来自课堂数据包(2026-11-01 单次快照),并已按原始文件复核;平台实时数据以当天实际连接为准。'
|
|
|
|
|
+},
|
|
|
|
|
+
|
|
|
|
|
+{
|
|
|
|
|
+kind: 'meta', id: 'setup', title: '怎么看这本手册', group: '开始之前',
|
|
|
|
|
+lead: '每个环节按同一套七步写:<b>先想清楚 → 这一节要解决什么 → 怎么做 → 拿到什么(产出物规范)→ 小组讨论 → 进度自检 → AI 推送</b>。产出物规范是这一版的重心:名称、真实样卡、用途、流转,四件事缺一不可。',
|
|
|
|
|
+blocks: [
|
|
|
|
|
+{t: '一、这一版新增了什么', html: `
|
|
|
|
|
+<table class="tbl"><thead><tr><th>v2 时的情况</th><th>v3 怎么写</th></tr></thead><tbody>
|
|
|
|
|
+<tr><td>只说「产出机会点卡片」</td><td>每个环节一张<b>产出物规范板</b>:名称 + 形态 + 一张用真实数字写的样卡 + 三块用途 + 交给谁、下一环怎么用</td></tr>
|
|
|
|
|
+<tr><td>大课只讲方法</td><td>大课一扩成 90 分钟四段:宏观趋势 → 战略层 / 组织层 / 个人层 → 新秀与老品牌、市场侧与研发侧 → SOP 与链路</td></tr>
|
|
|
|
|
+<tr><td>环节结束靠学员自己往下推</td><td>每个提示词结尾都带<b>推送格式</b>;每个环节结尾有<b>AI 推送</b>:本轮产出 / 还缺什么 / 下一步</td></tr>
|
|
|
|
|
+<tr><td>按岗位写「研发、市场、供应链分别做什么」</td><td>只有一个角色:<b>产品经理</b>。同一个人要在研发侧、市场侧、经营侧切换视角</td></tr>
|
|
|
|
|
+</tbody></table>`},
|
|
|
|
|
+{t: '二、产出物规范板怎么读', html: `
|
|
|
|
|
+<div class="card-format">
|
|
|
|
|
+<div><b>1 它长什么样</b><span>一张 1:1 复刻的样卡,字段位置与真实交付一致,数字来自课堂数据包</span></div>
|
|
|
|
|
+<div><b>2 它是用来干什么的</b><span>三块用途:支持什么决定 / 拦住什么错 / 沉淀成什么资产</span></div>
|
|
|
|
|
+<div><b>3 它交给谁</b><span>上一环节的哪个产出、下一环节的哪个字段、谁来签字放行</span></div>
|
|
|
|
|
+</div>
|
|
|
|
|
+<p>样卡里的判断对错不重要,<b>格式和证据位置</b>才重要。你组填出来的卡,字段一个都不能少;内容必须来自本组课题,不能用样卡的结论。</p>`},
|
|
|
|
|
+{t: '三、AI 推送怎么读', html: `
|
|
|
|
|
+<p>每个环节结束时,数字分身会主动交回三段,不用你去问:</p>
|
|
|
|
|
+<div class="push"><div class="push-bar"><b>AI 推送</b><span>格式示例</span></div><div class="push-rows">
|
|
|
|
|
+<div class="push-row"><b>【本轮产出】</b><p>你现在手上有:品类全景图谱 v1,三棵树都画完了,但需求树有 2 个分支只有 1 条原话。</p></div>
|
|
|
|
|
+<div class="push-row"><b>【还缺什么】</b><p>缺「≤4 元 × 非油炸」这一格的需求原话;不补上,D2 交叉时这格只能标「待确认」。</p></div>
|
|
|
|
|
+<div class="push-row"><b>【下一步】</b><p class="ask">接下来要做 D1-02 验证纪律。请先回答:本组的价格结论,能不能引用康师傅 ≤4 元 22 个这一说法?</p></div>
|
|
|
|
|
+</div></div>
|
|
|
|
|
+<p>推送的作用是让流程自己往前走:AI 总结你已经做到哪、点出卡在哪、把下一个问题递到你手上。你要做的只有一件事——<b>回答那个问题</b>。</p>`},
|
|
|
|
|
+{t: '四、三种标记', html: `
|
|
|
|
|
+<table class="tbl"><thead><tr><th>标记</th><th>含义</th><th>怎么处理</th></tr></thead><tbody>
|
|
|
|
|
+<tr><td><span class="chip tag">待确认</span></td><td>缺真实数据、企业标准或产品条件,AI 不能编造</td><td>列进缺口清单,能补则补,补不到就带着走</td></tr>
|
|
|
|
|
+<tr><td><span class="chip">未经正式确认</span></td><td>课堂过程成果,不是正式报告</td><td>结营后走正式流程才能对外使用</td></tr>
|
|
|
|
|
+<tr><td><span class="chip">示例</span></td><td>手册给的样卡,不是本组调研结果</td><td>只理解格式,不能当本组证据</td></tr>
|
|
|
|
|
+</tbody></table>`},
|
|
|
|
|
+{t: '五、为什么每节开头都要先填「我还不知道的」', html: `
|
|
|
|
|
+<p>AI 的规则是<b>先复用上下文、能查的自行查,只在会改变结论时才提问</b>。它不会上来问你一堆问题,会先往下走。</p>
|
|
|
|
|
+<p>你填「我不知道」的部分,决定 AI 往哪里使劲补证据,也决定你自己在小组讨论时盯哪里。填不出来,就把「我不知道我该问什么」原样写进提示词,让 AI 帮你把问题列出来。</p>`},
|
|
|
|
|
+{t: '六、Skill 的八条硬规则', html: `
|
|
|
|
|
+<p class="muted">这八条是流程规则,不是注意事项。读懂它,你就知道 AI 什么时候停下来问你、什么时候自己查。</p>
|
|
|
|
|
+<table class="tbl"><thead><tr><th>#</th><th>规则</th><th>你会看到什么</th></tr></thead><tbody>
|
|
|
|
|
+<tr><td>1</td><td>先复用上下文,能查的自行查</td><td>AI 读完本组前序产出才开口</td></tr>
|
|
|
|
|
+<tr><td>2</td><td>只在「会改变结论」时才提问</td><td>问题少而尖,答不上来它先往下走</td></tr>
|
|
|
|
|
+<tr><td>3</td><td>不许编造企业标准、用户选择或产品条件</td><td>缺就写「待确认」</td></tr>
|
|
|
|
|
+<tr><td>4</td><td>资料库不是研究范围的上限</td><td>缺口会改变判断时,可以外部补证</td></tr>
|
|
|
|
|
+<tr><td>5</td><td>没查到 ≠ 没权限 ≠ 数据不存在</td><td>缺口清单分三类报</td></tr>
|
|
|
|
|
+<tr><td>6</td><td>不需要补证时直接成报</td><td>不为凑格式机械采集</td></tr>
|
|
|
|
|
+<tr><td>7</td><td>课堂成果 ≠ 正式成果</td><td>产出物抬头标注「未经正式确认」</td></tr>
|
|
|
|
|
+<tr><td>8</td><td>保存、回读、看板核对、浏览器核对是四个步骤</td><td>四条分开报,不能互相代替</td></tr>
|
|
|
|
|
+</tbody></table>`}
|
|
|
|
|
+]
|
|
|
|
|
+},
|
|
|
|
|
+
|
|
|
|
|
+{
|
|
|
|
|
+kind: 'meta', id: 'overview', title: '三个半天总览', group: '开始之前',
|
|
|
|
|
+lead: '一条链路:<b>定课题 → 看供给 → 看需求 → 找交叉 → 验机会 → 算可行 → 定卖点 → 出方案</b>。每个半天的出口,就是下一个半天的入口。<a href="../overview/index.html">总览图</a>把 13 个环节、3 份大课、13 份产出物和它们之间的箭头画在同一页。',
|
|
|
|
|
+blocks: [],
|
|
|
|
|
+render: function () {
|
|
|
|
|
+ var halves = [
|
|
|
|
|
+ { n: 'D1 下午', t: '13:30–17:30', th: '从「我觉得」到「有证据」', c: 'var(--red)',
|
|
|
|
|
+ steps: [['big1', '大课一 · 产品创新的完整架构(90 分钟)'], ['d101', 'D1-01 品类全景扫描'], ['d102', 'D1-02 验证纪律'], ['d103', 'D1-03 竞品格局'], ['d104', 'D1-04 假设定稿与任务下达'], ['d1n', 'D1-N 第二轮调研(晚间)']],
|
|
|
|
|
+ out: '一个决定 + 三个待答问题 + 一份交给 AI 过夜的任务卡' },
|
|
|
|
|
+ { n: 'D2 上午', t: '09:00–12:20', th: '从「有证据」到「有机会」', c: 'var(--amber)',
|
|
|
|
|
+ steps: [['d201', 'D2-01 调研验收'], ['big2', '大课二 · 机会发现(50 分钟)'], ['d202', 'D2-02 VOC 证词聚类'], ['d203', 'D2-03 风味趋势与矩阵空白'], ['d204', 'D2-04 三源交叉推理']],
|
|
|
|
|
+ out: '候选机会清单 V1.0(2–3 个方向,各带三条证据)' },
|
|
|
|
|
+ { n: 'D2 下午', t: '13:30–17:30', th: '从「有机会」到「能落地」', c: 'var(--teal)',
|
|
|
|
|
+ steps: [['big3', '大课三 · 收敛与表达(50 分钟)'], ['d205', 'D2-05 机会验证与排序'], ['d206', 'D2-06 商业及供应链回推'], ['d207', 'D2-07 价值主张与核心卖点'], ['d208', 'D2-08 概念提案与分享']],
|
|
|
|
|
+ out: '概念提案 + 候选清单 V3.0 + 一份能过会的材料' }
|
|
|
|
|
+ ];
|
|
|
|
|
+ var s = '<h3>三个半天的分工</h3><div class="halves">' + halves.map(function (v) {
|
|
|
|
|
+ return '<div class="half-card" style="--acc:' + v.c + '"><div class="hc-head"><b>' + v.n + '</b><span>' + v.t + '</span></div><h4>' + v.th + '</h4><ol>' +
|
|
|
|
|
+ v.steps.map(function (x) { return '<li><a href="#' + x[0] + '">' + x[1] + '</a></li>'; }).join('') + '</ol><p class="hc-out"><span>离场时</span>' + v.out + '</p></div>';
|
|
|
|
|
+ }).join('') + '</div>';
|
|
|
|
|
+ s += '<h3>课表(时间以现场为准)</h3><div class="tbl-scroll"><table class="tbl compact"><thead><tr><th>时段</th><th>时间</th><th>内容</th><th>类型</th></tr></thead><tbody>' +
|
|
|
|
|
+ [['D1', '13:30–15:00', '开场 + 大课一 · 产品创新的完整架构', '大课'],
|
|
|
|
|
+ ['D1', '15:00–15:40', 'D1-01 品类全景扫描', '练习'],
|
|
|
|
|
+ ['D1', '15:40–16:05', 'D1-02 验证纪律', '练习'],
|
|
|
|
|
+ ['D1', '16:05–16:45', 'D1-03 竞品格局', '练习'],
|
|
|
|
|
+ ['D1', '16:45–17:20', 'D1-04 假设定稿与任务下达', '练习'],
|
|
|
|
|
+ ['D1', '17:20–17:30', '交任务卡、D1 收尾推送', '收尾'],
|
|
|
|
|
+ ['D1 晚', '过夜', 'D1-N 第二轮调研:AI 按任务卡跑', 'AI 自驱'],
|
|
|
|
|
+ ['D2', '09:00–09:25', 'D2-01 调研验收', '练习'],
|
|
|
|
|
+ ['D2', '09:25–10:15', '大课二 · 机会发现', '大课'],
|
|
|
|
|
+ ['D2', '10:15–11:05', 'D2-02 VOC 证词聚类', '练习'],
|
|
|
|
|
+ ['D2', '11:05–11:45', 'D2-03 风味趋势与矩阵空白', '练习'],
|
|
|
|
|
+ ['D2', '11:45–12:20', 'D2-04 三源交叉推理 → 候选清单 V1.0', '练习'],
|
|
|
|
|
+ ['D2', '13:30–14:20', '大课三 · 收敛与表达', '大课'],
|
|
|
|
|
+ ['D2', '14:20–15:05', 'D2-05 机会验证与排序', '练习'],
|
|
|
|
|
+ ['D2', '15:05–15:50', 'D2-06 商业及供应链回推', '练习'],
|
|
|
|
|
+ ['D2', '15:50–16:30', 'D2-07 价值主张与核心卖点', '练习'],
|
|
|
|
|
+ ['D2', '16:30–17:30', 'D2-08 概念提案与分享', '练习 + 展演']
|
|
|
|
|
+ ].map(function (r) { return '<tr><td>' + r[0] + '</td><td class="num">' + r[1] + '</td><td>' + r[2] + '</td><td>' + r[3] + '</td></tr>'; }).join('') +
|
|
|
|
|
+ '</tbody></table></div>';
|
|
|
|
|
+ s += '<h3>每个环节的标准节奏</h3><div class="loop4">' +
|
|
|
|
|
+ [['认知盘点', '3 分钟', ['自己填四栏,尤其「我还不知道的」']],
|
|
|
|
|
+ ['AI 跑任务', '10–25 分钟', ['提示词 + 四栏一起发', 'AI 执行期间,老师讲一个真实数据的反常识发现']],
|
|
|
|
|
+ ['讨论与收尾', '5–10 分钟', ['对照产出物规范补字段', '答 AI 推送里的那个问题', '把卡交给下一环']],
|
|
|
|
|
+ ['展演', '每半天 1 次', ['一组上台讲它手上的产出物', '其他组按产出物规范挑毛病']]
|
|
|
|
|
+ ].map(function (x, i) { return '<div class="loop-step"><div class="ls-no">' + (i + 1) + '</div><h3>' + x[0] + '</h3><p class="ls-sub">' + x[1] + '</p><ul>' + x[2].map(function (y) { return '<li>' + y + '</li>'; }).join('') + '</ul></div>'; }).join('') + '</div>';
|
|
|
|
|
+ s += '<h3>分组:按课题方向,不按部门</h3><p>这次参与的都是研发中心的人,按部门分没有意义。每组 5–6 人,<b>每组自选一个课题方向</b>(例如:居家囤货 × 常备、宿舍夜宵、户外出行、健康轻负担、地域风味、一人食)。方向一旦选定,三个半天都在这个方向上走。</p>' +
|
|
|
|
|
+ '<p class="muted">参考:D1-01 里的六大人群就是六个候选方向——G1 上班族工作餐与加班餐、G2 学生宿舍与夜宵、G3 户外露营与出行、G4 健康控卡、G5 一人食与家庭囤货、G6 地域风味与高端尝鲜。课题卡在课前确认。</p>';
|
|
|
|
|
+ return s;
|
|
|
|
|
+}
|
|
|
|
|
+},
|
|
|
|
|
+
|
|
|
|
|
+{
|
|
|
|
|
+kind: 'meta', id: 'pm', title: '你是谁:产品经理 = 未来品类负责人', group: '开始之前',
|
|
|
|
|
+lead: '这不是一句口号。它决定了三件事:你为什么要学市场侧和经营侧、每个环节为什么追问「卖给谁、卖多少、值不值」,以及这个流程最后会把你放到什么位置上。',
|
|
|
|
|
+blocks: [
|
|
|
|
|
+{t: '一、只有一个角色:产品经理', html: `
|
|
|
|
|
+<div class="pm-hero"><span class="pm-tag">角色定位</span><h3>你不是「只做研发的人」,你是「对这个品类生意负责的人」</h3><p>研发是你的本行。这一轮要补齐的是另外两块:能像市场一样想清楚卖给谁、怎么说;能像经营者一样算清楚毛利、价格带、渠道和生命周期。三块能力长在同一个人身上,各有侧重,不是分工给三个部门。</p></div>
|
|
|
|
|
+<p>所以本手册里不会出现「请市场同事补充」「研发和市场怎么分工」这种说法——那都是同一个你在不同环节切换的视角。常见的切换点:</p>
|
|
|
|
|
+<table class="tbl"><thead><tr><th>环节</th><th>研发侧视角(你的本行)</th><th>市场侧视角(要补的)</th><th>经营侧视角(要建立的)</th></tr></thead><tbody>
|
|
|
|
|
+<tr><td>D1-01 品类全景</td><td>工艺、形态、成本结构</td><td>人群、场景</td><td>价格带分层</td></tr>
|
|
|
|
|
+<tr><td>D1-03 竞品格局</td><td>同一工艺路线做得怎么样</td><td>卖点组合、正反原话</td><td>同一条价格带里谁占位</td></tr>
|
|
|
|
|
+<tr><td>D2-04 三源交叉</td><td>工艺条件支持吗</td><td>用户原话指向吗</td><td>空白格有没有生意</td></tr>
|
|
|
|
|
+<tr><td>D2-06 商业回推</td><td>做不做得出来</td><td>消费者接受吗</td><td>划不划算</td></tr>
|
|
|
|
|
+<tr><td>D2-07 卖点</td><td>证据允许说到哪</td><td>用户听得懂吗</td><td>价格带撑不撑得起这个说法</td></tr>
|
|
|
|
|
+</tbody></table>`},
|
|
|
|
|
+{t: '二、产品经理要具备的三块能力', html: `
|
|
|
|
|
+<div class="caps">
|
|
|
|
|
+<div class="cap" style="--acc:var(--red)"><h4>研发侧</h4><span class="cap-lv">本行</span><ul><li>配方</li><li>工艺</li><li>形态</li><li>成本</li></ul><p class="cap-q">判断问题:这个方案在产线上做不做得出来?成本落在哪个区间?</p></div>
|
|
|
|
|
+<div class="cap" style="--acc:var(--amber)"><h4>市场侧</h4><span class="cap-lv">要补</span><ul><li>人群</li><li>场景</li><li>卖点</li><li>传播</li></ul><p class="cap-q">判断问题:谁在什么场景下买?他听得懂、记得住这句卖点吗?</p></div>
|
|
|
|
|
+<div class="cap" style="--acc:var(--teal)"><h4>经营侧</h4><span class="cap-lv">要建立</span><ul><li>毛利</li><li>价格带</li><li>渠道</li><li>生命周期</li></ul><p class="cap-q">判断问题:这条价格带值不值得进?这个产品活多久、能不能升级?</p></div>
|
|
|
|
|
+</div>
|
|
|
|
|
+<p>三个半天就是练这三块的<b>整合</b>:D1 用研发侧的眼睛看供给、用市场侧的眼睛看竞品;D2 上午把两块拼成机会;D2 下午把经营侧加进来,变成一份算得过账的提案。</p>`},
|
|
|
|
|
+{t: '三、这条能力线通向哪里', html: `
|
|
|
|
|
+<p>品类经营需要一个对全局负责的人,这个人通常叫品类经理或品牌经理。产品经理就是这个位置上的人选——两者的差别不在会不会做研发,而在<b>有没有把整个品类的生意放在自己肩上</b>。</p>
|
|
|
|
|
+<table class="tbl"><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 class="muted">大课一第二段会把品类经营的架构、品牌经理责任制的五层结构和四阶成长路径讲清楚。这里只先立一个判断:<a href="#big1">你现在做的每一步,都在往那个位置靠</a>。</p>`}
|
|
|
|
|
+]
|
|
|
|
|
+},
|
|
|
|
|
+
|
|
|
|
|
+{
|
|
|
|
|
+kind: 'meta', id: 'sop', title: '产品创新八步:这门课的骨架', group: '开始之前',
|
|
|
|
|
+lead: '13 个环节只是这八步的切分。每个环节开头都会标出它对应第几步、回答哪个问题、交出哪份产出物。',
|
|
|
|
|
+blocks: [],
|
|
|
|
|
+render: function () {
|
|
|
|
|
+ var steps = [
|
|
|
|
|
+ ['①', '定课题', '要做什么决定', 'd1', 'D1'],
|
|
|
|
|
+ ['②', '看供给', '市场上有什么', 'd1', 'D1'],
|
|
|
|
|
+ ['③', '看需求', '用户要什么', 'd1', 'D1'],
|
|
|
|
|
+ ['④', '找交叉', '哪里有空白', 'd2a', 'D2 上午'],
|
|
|
|
|
+ ['⑤', '验机会', '这个空白值不值得做', 'd2a', 'D2 上午'],
|
|
|
|
|
+ ['⑥', '算可行', '做不做得出来、划不划算', 'd2p', 'D2 下午'],
|
|
|
|
|
+ ['⑦', '定卖点', '怎么说用户听得懂', 'd2p', 'D2 下午'],
|
|
|
|
|
+ ['⑧', '出方案', '一份能过会的提案', 'd2p', 'D2 下午']
|
|
|
|
|
+ ];
|
|
|
|
|
+ var map = [
|
|
|
|
|
+ ['① 定课题', 'D1-01 定本组要支持的决定', 'd101'], ['② 看供给', 'D1-01 供给树 · D1-03 竞品图谱', 'd103'],
|
|
|
|
|
+ ['③ 看需求', 'D1-03 痛点假设 · D1-N / D2-01 证据收口', 'd1n'], ['④ 找交叉', 'D2-02 聚类 · D2-03 空白 · D2-04 三源交叉', 'd204'],
|
|
|
|
|
+ ['⑤ 验机会', 'D2-04 定证据闭环 · D2-05 排序', 'd205'], ['⑥ 算可行', 'D2-06 商业及供应链回推', 'd206'],
|
|
|
|
|
+ ['⑦ 定卖点', 'D2-07 价值主张与核心卖点', 'd207'], ['⑧ 出方案', 'D2-08 概念提案', 'd208']
|
|
|
|
|
+ ];
|
|
|
|
|
+ var s = '<div class="sop">' + steps.map(function (x) {
|
|
|
|
|
+ return '<div class="sop-step"><span class="sop-no">' + x[0] + '</span><b>' + x[1] + '</b><p class="sop-q">' + x[2] + '</p><span class="sop-d ' + x[3] + '">' + x[4] + '</span></div>';
|
|
|
|
|
+ }).join('') + '</div>';
|
|
|
|
|
+ s += '<p class="sop-legend"><span><i class="l1"></i>D1 下午:① ② ③</span><span><i class="l2"></i>D2 上午:④ ⑤</span><span><i class="l3"></i>D2 下午:⑥ ⑦ ⑧</span></p>';
|
|
|
|
|
+ s += '<h3>八步 × 环节</h3><div class="tbl-scroll"><table class="tbl"><thead><tr><th>步骤</th><th>落在哪个环节</th></tr></thead><tbody>' +
|
|
|
|
|
+ map.map(function (m) { return '<tr><td><b>' + m[0] + '</b></td><td><a href="#' + m[2] + '">' + m[1] + '</a></td></tr>'; }).join('') + '</tbody></table></div>';
|
|
|
|
|
+ s += '<p>两条硬约束:<b>没验证过的机会不能进卖点;没算过商业条件的卖点不能进提案。</b>这也是 D2-04 → D2-06 的版本编号(V1.0 / V2.0 / V3.0)存在的原因——每一版都要比上一版多过一道关。</p>';
|
|
|
|
|
+ s += '<div class="block note"><h3>D1 离场时,你手上会有</h3><ol><li><b>一个明确要做的决定</b>——本组三个半天到底要支持哪个产品决定;</li><li><b>三个待答问题</b>——会改变结论、而资料现在还回答不了的那三个;</li><li><b>一份能跑的研究任务</b>——增强 AI 自驱任务卡,带支持路径、反证路径和停止条件。</li></ol></div>';
|
|
|
|
|
+ return s;
|
|
|
|
|
+}
|
|
|
|
|
+},
|
|
|
|
|
+
|
|
|
|
|
+{
|
|
|
|
|
+kind: 'meta', id: 'index', title: '13 份产出物速查', group: '开始之前',
|
|
|
|
|
+lead: '每个环节一份产出物,形态、用途、流向固定。任何一份缺失或字段不全,下一环的输入就是缺的——AI 推送会在环节结束时点出来。',
|
|
|
|
|
+blocks: [],
|
|
|
|
|
+render: function () {
|
|
|
|
|
+ var rows = [
|
|
|
|
|
+ ['D1-01', '品类全景图谱', '三栏表', '供给树 / 需求树 / 供需缺口', 'd101'],
|
|
|
|
|
+ ['D1-02', '本题验证配置卡', '一页卡', '资料资格 / 统计口径 / 引文规则 / 分歧处理', 'd102'],
|
|
|
|
|
+ ['D1-03', '竞品图谱 + 待验证痛点假设', '矩阵表 + 假设清单', '卖点组合矩阵 / 正反原话 / 2–3 条可证伪假设', 'd103'],
|
|
|
|
|
+ ['D1-04', '增强 AI 自驱任务卡', '一页卡', '假设键 / 支持路径 / 反证路径 / 停止条件', 'd104'],
|
|
|
|
|
+ ['D1-N', '调研战报 + 缺口清单', '报告 + 缺口表', '按假设键的回应 / 三类缺口 / 原件覆盖', 'd1n'],
|
|
|
|
|
+ ['D2-01', '战报验收记录', '检查表', '假设回应率 / 原件覆盖 / 分母口径', 'd201'],
|
|
|
|
|
+ ['D2-02', '聚类表 + 痛点库 + KANO 表 + 人群 × 场景矩阵', '四张表', '人群 → 场景 → JTBD → 痛点,四层不混', 'd202'],
|
|
|
|
|
+ ['D2-03', '产品机会及指标初表', '机会 × 指标表', '结构 / 变化 / 未覆盖三类,各带指标', 'd203'],
|
|
|
|
|
+ ['D2-04', '候选机会清单 V1.0', '机会卡 ×6 字段', '结论 / 三源证据 / 反例 / 未知 / 下一步 / 工艺注释', 'd204'],
|
|
|
|
|
+ ['D2-05', '优先级机会清单 + 未知项单列', '排序表 + 未知项表', '证据强度 × 可做性 × 商业价值', 'd205'],
|
|
|
|
|
+ ['D2-06', '回推表 + 候选机会清单 V2.0', '成本表 + 更新版机会卡', 'B0 / O1 两条路、三条费用、工艺与合规条件', 'd206'],
|
|
|
|
|
+ ['D2-07', '价值主张卡 + 卖点清单', '一页卡 + 卖点表', '一句主张、三条收益、证据边界、多版本表达', 'd207'],
|
|
|
|
|
+ ['D2-08', '概念提案 + 候选清单 V3.0 + 成果导航', '提案文档', '能过会的一页 + 质询记录 + 训后导航', 'd208']
|
|
|
|
|
+ ];
|
|
|
|
|
+ var s = '<div class="jump-grid">' + rows.map(function (r) {
|
|
|
|
|
+ return '<a class="jump" href="#spec-' + r[4] + '"><b>' + r[0] + '</b><span>' + r[1] + '</span><em>形态:' + r[2] + '</em><i>字段:' + r[3] + '</i></a>';
|
|
|
|
|
+ }).join('') + '</div>';
|
|
|
|
|
+ s += '<p class="muted">点任意一份产出物,直接跳到它的规范板(真实样卡 + 用途 + 流转)。</p>';
|
|
|
|
|
+ return s;
|
|
|
|
|
+}
|
|
|
|
|
+}
|
|
|
|
|
+);
|
|
|
|
|
+
|
|
|
|
|
+// m2 · 大课详案:大课一(90 分钟,四段)/ 大课二(50 分钟)/ 大课三(50 分钟)
|
|
|
|
|
+window.SEGS = window.SEGS || [];
|
|
|
|
|
+
|
|
|
|
|
+window.SEGS.push(
|
|
|
|
|
+{
|
|
|
|
|
+kind: 'big', id: 'big1', no: '大课一', title: '产品创新的完整架构', group: '大课详案',
|
|
|
|
|
+meta: [['D1 13:30–15:00 · 90 分钟', 'tag'], ['学员:研发中心产品经理', ''], ['讲法:四段递进,配现场练习', ''], ['附:讲授稿 + 数据速查 + 讲师备忘', '']],
|
|
|
|
|
+lead: '从<b>战略层</b>到<b>组织层</b>,再到<b>个人层</b>:先讲清楚消费环境、创新性质、AI 和方便面行业这四件事发生了什么变化;再讲清楚产品创新长在「品类经营」这张网里、由「品牌经理责任制」落到人身上;最后讲清楚新秀与老品牌、市场侧与研发侧的不同创新逻辑,以及这套 SOP 怎么切进三个半天。',
|
|
|
|
|
+outline: [
|
|
|
|
|
+ ['第一段 · 20 分钟', '宏观趋势与行业变局', '为什么现在要换打法'],
|
|
|
|
|
+ ['第二段 · 30 分钟', '战略层 → 组织层 → 个人层', '创新谁来负责、怎么落到你'],
|
|
|
|
|
+ ['第三段 · 25 分钟', '新秀 vs 老品牌 · 市场侧 vs 研发侧', '康师傅在哪、你从哪一侧切入'],
|
|
|
|
|
+ ['第四段 · 15 分钟', '产品创新 SOP + 三个半天链路', '今天下午从哪一步开始', true]
|
|
|
|
|
+],
|
|
|
|
|
+before: [
|
|
|
|
|
+{t: '这一课的位置', html: `
|
|
|
|
|
+<p>这是三个半天的开场课,也是整个工作坊的「总图」。它不教你某个具体动作,而是把产品创新这件事的四层关系摆给你看:<b>外面发生了什么(宏观)→ 谁该负责这件事(战略与组织)→ 你从哪一侧切入(新秀与老品牌、市场与研发)→ 具体怎么做(SOP)</b>。</p>
|
|
|
|
|
+<p>后两节大课是这一节在方法层面的展开:<a href="#big2">大课二</a>讲怎么发现机会,<a href="#big3">大课三</a>讲怎么收敛、表达和交付。13 个环节则是把第四段的 SOP 拆成可以一步步执行的动作。</p>`},
|
|
|
|
|
+{t: '讲法:四段递进 + 现场练习', html: `
|
|
|
|
|
+<p>如果你需要照着讲,每一段下面都有一个折叠的<b>「讲授稿」</b>,用口语写好了,可以直接念;<b>「数据速查」</b>把这一段要引用的数字和一页板书列出来。四段之间各有一个小练习,学员不用等到 D1-01 才动手:</p>
|
|
|
|
|
+<table class="tbl"><thead><tr><th>时间</th><th>内容</th><th>现场练习</th></tr></thead><tbody>
|
|
|
|
|
+<tr><td>0–20 分</td><td>第一段 宏观趋势与行业变局</td><td>练习一:在 4 × 4 格子里写下你能想到的新品(3 分钟)</td></tr>
|
|
|
|
|
+<tr><td>20–50 分</td><td>第二段 战略层 → 组织层 → 个人层</td><td>练习二:给你的课题定位——哪一类创新、哪一格被卡住(3 分钟)</td></tr>
|
|
|
|
|
+<tr><td>50–75 分</td><td>第三段 新秀与老品牌、市场侧与研发侧</td><td>练习三:拆解「挂面截三段」,写出它倒逼研发的三个问题(5 分钟)</td></tr>
|
|
|
|
|
+<tr><td>75–90 分</td><td>第四段 SOP 与三个半天链路</td><td>练习四:写下本组三步走 + 三个待答问题(5 分钟,直接带进 D1-01)</td></tr>
|
|
|
|
|
+</tbody></table>
|
|
|
|
|
+<p class="muted">练习四的产出不单列成产出物,它写进 D1-01 的认知盘点四栏,作为品类全景图谱的起点。</p>`}
|
|
|
|
|
+],
|
|
|
|
|
+parts: [
|
|
|
|
|
+{
|
|
|
|
|
+ id: 'big1-p1', no: '第一段', title: '宏观趋势与行业变局', time: '20 分钟', goal: '换打法:从抢增量到在存量里找结构',
|
|
|
|
|
+ pts: [
|
|
|
|
|
+ {t: '0–4 分', ti: '开场:先把问题问出来', html: `
|
|
|
|
|
+<p>开场问全场一个问题,收 5 个答案,不评判,写在黑板上:</p>
|
|
|
|
|
+<div class="script"><p class="say">「我们自己的新品,最近一款是在哪个格子里做出来的?」</p><p class="say">「如果让你现在加一句话——方便面还能怎么做——你会说什么?」</p></div>
|
|
|
|
|
+<p>先把答案收上来。等讲完这 90 分钟,大家会发现:多数答案落在的格子,其实已经很挤;真正空着的格子,不在大家习惯看的地方。</p>`},
|
|
|
|
|
+ {t: '4–8 分', ti: '消费环境变了:从「抢增量」到「存量里找结构」', html: `
|
|
|
|
|
+<p>过去三十年,方便面的增长公式很简单:出一个大单品,靠铺货规模把它推成增量。行业现在的位置是:<b>大单品增量时代已经结束,创新不再是抢新客,而是在巨大的存量里把结构做开</b>。</p>
|
|
|
|
|
+<p>结构做开,就是把「谁、在什么场景、花多少钱、要什么」重新组合。课堂数据给了三个切面:</p>
|
|
|
|
|
+<ul>
|
|
|
|
|
+<li><b>按人群切。</b>六组用户笔记里,「口味新鲜」合计命中 106/260 篇,是六组需求中命中最多的一项;「方便/快手」97/260,六组全部进前三——但它是品类前提,不是差异化。</li>
|
|
|
|
|
+<li><b>按场景切。</b>「仪式感」在户外出行组排第一(29 条),在上班族组几乎不出现——同一款面,换个场景,价值完全不同。</li>
|
|
|
|
|
+<li><b>按价格切。</b>125 个有效价里,≤4 元占 42.4%,4–6 元 34.4%,6–9 元 10.4%,>9 元 12.8%。超过四分之一的商品站在 6 元以上——价格带分层已经发生。</li>
|
|
|
|
|
+</ul>
|
|
|
|
|
+<div class="block note"><h3>第一段的第一个判断</h3><p>增量时代,创新是「做出一个更大的单品」;存量时代,创新是「在一个已经很大的盘子里,找到还没被占满的结构格子」。</p></div>`},
|
|
|
|
|
+ {t: '8–12 分', ti: '创新的性质变了:从营销驱动到工艺驱动', html: `
|
|
|
|
|
+<p>以前的产品创新,绝大多数是营销驱动的口味微调:换个口味、换个包装、请个代言人。这套动作用来做防御可以,但它做不到「代际突破」——因为真正决定要不要被替代的,是<b>工艺和形态</b>。</p>
|
|
|
|
|
+<p>方便面行业走过三次代际:<b>油炸 → 非油炸 → 半干鲜熟</b>。每一次,胜负手都从营销端移到了工厂端:</p>
|
|
|
|
|
+<table class="tbl"><thead><tr><th>代际</th><th>代表工艺</th><th>关键参数(知识库,行业通行值)</th><th>难点</th></tr></thead><tbody>
|
|
|
|
|
+<tr><td>油炸</td><td>棕榈油高温脱水</td><td>140–160℃,60–110 秒;含水 3–6%,含油 18–22%</td><td>成熟,成本低;「非油炸」诉求下是短板</td></tr>
|
|
|
|
|
+<tr><td>非油炸</td><td>热风三段控温 / 挤压熟化</td><td>80–90℃/60–70% 湿 → 90–100℃/30–40% 湿 → 70–80℃ 低湿;含水 8–12%</td><td>要专用线;复水口感与蓬松度是核心</td></tr>
|
|
|
|
|
+<tr><td>半干鲜熟</td><td>蒸煮后酸浸保鲜</td><td>pH 4.2–4.6,含水 20–26%,aw 0.85–0.90</td><td>口感接近鲜面;保鲜与渠道温度要求高</td></tr>
|
|
|
|
|
+</tbody></table>
|
|
|
|
|
+<p>谁能在下一代工艺上先做到「成本可控、口感过关」,谁就拿到下一轮的基本盘。你的研发能力在这里是最直接的资本——但这一课要你学会的是:<b>把研发能力翻译成市场语言</b>,而不是停在参数上。</p>`},
|
|
|
|
|
+ {t: '12–16 分', ti: 'AI 带来的变量:不是快一点,是重新划线', html: `
|
|
|
|
|
+<p>关于 AI,最常见的误解是「它能帮我把活干快一点」。真正的变化是:<b>能做和不能做的事,重新划了线。</b></p>
|
|
|
|
|
+<div class="two-col">
|
|
|
|
|
+<div class="col"><h4>以前:抽样推断</h4><ul><li>抽 50 个用户,推断 5000 万</li><li>从少量评论里扒痛点</li><li>结论强弱靠人的经验</li></ul></div>
|
|
|
|
|
+<div class="col"><h4>现在:全量对照</h4><ul><li>所有能拿到的商品、原话、工艺条件放在一起逐格对照</li><li>每条结论都能回到原文、来源、编号</li><li>先画供给树、需求树,再在交叉处找机会</li></ul></div>
|
|
|
|
|
+</div>
|
|
|
|
|
+<p>但有一个必须放在设计前提里的局限:<b>AI 会编。</b>它会给你一个漂亮的共识、一段顺滑的分析,却可能没有证据,或者证据对不上。所以这次真正的功夫是三句话:让 AI <b>说得出证据</b>、<b>说得出反例</b>、<b>说得出它不知道什么</b>。</p>
|
|
|
|
|
+<p>附录 A 放了六个数据反常识:每一个都是 AI 初版结论和人工复核结论的对比。比如「辣」在六组痛点里都排第一,AI 会得出「用户嫌辣,建议全线降辣」——逐条读原文后,39 条里只有 1 条真在嫌辣,29 条是把「辣得过瘾」当卖点夸。课上演示其中两三个,其余请课后自己翻。</p>`},
|
|
|
|
|
+ {t: '16–20 分', ti: '落到方便面行业:三个结构性事实', html: `
|
|
|
|
|
+<p>抬头看行业,长期有效的变化有三条,课堂上直接能看见数据的是后两条:</p>
|
|
|
|
|
+<ol>
|
|
|
|
|
+<li><b>价格带分层。</b>≤4 元仍是最大的一层(53/125),但 4 元以上合计 72/125,超过一半。尤其是 >9 元的 16 个里,日清 5 个、康师傅 3 个、白象 3 个——高端不是没人做。</li>
|
|
|
|
|
+<li><b>形态分化。</b>400 个商品里,标题标「拌面」的 255 个(63.7%);同时非油炸 105 个(26.3%)、地域风味 86 个(21.5%)。拌面和汤面、油炸和非油炸,是不同产线、不同成本结构的生意。</li>
|
|
|
|
|
+<li><b>地域风味崛起。</b>地域风味标签逐条数 109 个(不含日式 59、韩式 55),其中陕西 31、武汉热干面 25、北京 15。但注意:在电商搜索样本里,陕西风味的有效价中位只有 3.38 元/100g(11 个),武汉热干面 3.16 元(3 个)——<b>地域风味在当下的样本里是扎堆的平价带,不是天然的高溢价</b>。</li>
|
|
|
|
|
+</ol>
|
|
|
|
|
+<h4>练习一:画出你脑子里的「4 × 4」(3 分钟)</h4>
|
|
|
|
|
+<p>发给每组一张 4 × 4 格子:横轴是价格带(每 100g ≤4 / 4–6 / 6–9 / >9 元),纵轴是工艺(油炸 / 非油炸 / 半干鲜熟 / 冻干或其他)。<b>把你能想到的、市场上已经有的新品,写进对应的格子。</b></p>
|
|
|
|
|
+<p>课堂数据打出来的 18 个格子里,最扎眼的是这一格:</p>
|
|
|
|
|
+<table class="tbl compact"><thead><tr><th>格子</th><th>有有效价的 SKU</th><th>其中康师傅</th></tr></thead><tbody>
|
|
|
|
|
+<tr><td>≤4 元 × 非油炸</td><td>14 个</td><td class="zero">0 个</td></tr>
|
|
|
|
|
+</tbody></table>
|
|
|
|
|
+<p class="muted">口径:125 条有效价中「工艺 = 非油炸」的 29 条里,≤4 元带 14 条。康师傅 35 个有效价里「工艺 = 非油炸」的 0 个。合计恒为 18 格(4 × 4 加「其他工艺」列)。</p>
|
|
|
|
|
+<p>这一格是空着的,但空白不等于机会——同格已经有 14 个别人家的 SKU,其中大部分是低价散牌。它到底是「没人做得到」还是「做了不划算」,要交给 D1-01 之后的环节去验。这一格本章会反复出现。</p>`}
|
|
|
|
|
+ ],
|
|
|
|
|
+ takeaway: `<p><b>第一段的落点:</b>增量时代结束了,创新的性质从营销驱动变成工艺驱动,AI 重新划了能做与不能做的线;落到方便面,价格带在分层、形态在分化、地域风味在崛起,而我们脑中最熟悉的格子,往往不是最空的那一格。</p>
|
|
|
|
|
+<p>现场接一句:【练习四结束时我会问你们:你组的课题,落在哪一格?】</p>`},
|
|
|
|
|
+{
|
|
|
|
|
+ id: 'big1-p2', no: '第二段', title: '战略层 → 组织层 → 个人层', time: '30 分钟', goal: '把「谁负责创新」讲到底',
|
|
|
|
|
+ pts: [
|
|
|
|
|
+ {t: '0–3 分', ti: '为什么不能只看「产品创新」', html: `
|
|
|
|
|
+<p>单看产品创新,会走进三个僵局:</p>
|
|
|
|
|
+<table class="tbl"><thead><tr><th>僵局</th><th>表现</th><th>根因</th></tr></thead><tbody>
|
|
|
|
|
+<tr><td><b>部门割裂</b></td><td>做出来的卖不动;卖点要的,工艺做不了</td><td>没有人对整个品类的生意负责</td></tr>
|
|
|
|
|
+<tr><td><b>标准错位</b></td><td>用同一套 KPI 考核性质完全不同的创新</td><td>防御型微创新和代际迭代用了同一把尺</td></tr>
|
|
|
|
|
+<tr><td><b>短长失衡</b></td><td>全是改口味换包装,没人做底层代际突破</td><td>考核周期只奖励短期</td></tr>
|
|
|
|
|
+</tbody></table>
|
|
|
|
|
+<p>三个僵局的共同解药是同一件事:<b>有人站在品类的全局,对这个生意负责。</b>这就是为什么下面要分三层讲。</p>`},
|
|
|
|
|
+ {t: '3–13 分', ti: '【战略层】品类经营:创新长在这张网里', html: `
|
|
|
|
|
+<p><b>产品创新不是孤立动作,它长在「品类经营」这张网里。</b>品类经营的结构可以拆成一句话:</p>
|
|
|
|
|
+<div class="case"><h4>品类经营 = 一根主干 + 两个抓手 + 一双眼睛</h4>
|
|
|
|
|
+<table class="tbl"><thead><tr><th>部件</th><th>是什么</th><th>对创新的意义</th></tr></thead><tbody>
|
|
|
|
|
+<tr><td><b>主干</b></td><td>品类全生命周期:导入 → 成长 → 成熟 → 衰退 → 焕新</td><td>决定现在该做防御、该迭代,还是该拓新</td></tr>
|
|
|
|
|
+<tr><td><b>抓手一</b></td><td>品牌资产:一个品类的品牌记忆与信任</td><td>决定新产品能不能挂主品牌,还是必须另起</td></tr>
|
|
|
|
|
+<tr><td><b>抓手二</b></td><td>营销预算:一年投入的分项盘子</td><td>决定创新能拿到多少资源</td></tr>
|
|
|
|
|
+<tr><td><b>眼睛</b></td><td>市场研判:人群、渠道、价格、趋势的变化</td><td>决定创新方向看不看得准</td></tr>
|
|
|
|
|
+</tbody></table>
|
|
|
|
|
+<p class="case-foot">主干回答「现在该做什么」,两个抓手回答「做出来挂谁、花多少钱」,眼睛回答「对不对」。</p></div>
|
|
|
|
|
+<h4>创新分三类,不能用同一把尺</h4>
|
|
|
|
|
+<div class="kind3">
|
|
|
|
|
+<div class="kind"><h4>防御型微创新</h4><dl><dt>周期</dt><dd>3–6 个月</dd><dt>看什么</dt><dd>存量守住率</dd><dt>例子</dt><dd>改口味、换包装、出限定、经典款联动</dd><dt>记号</dt><dd>「别让老客跑」</dd></dl></div>
|
|
|
|
|
+<div class="kind"><h4>代际底层迭代</h4><dl><dt>周期</dt><dd>5–8 年</dd><dt>看什么</dt><dd>专利和产线能力</dd><dt>例子</dt><dd>非油炸热风三段控温、半干鲜熟、锁鲜工艺</dd><dt>记号</dt><dd>「别被下一代替代」</dd></dl></div>
|
|
|
|
|
+<div class="kind"><h4>长尾溢价拓利</h4><dl><dt>周期</dt><dd>1–2 年</dd><dt>看什么</dt><dd>毛利率</dd><dt>例子</dt><dd>地域风味单品、高端线、细分人群专款</dd><dt>记号</dt><dd>「多赚一点、多占一格」</dd></dl></div>
|
|
|
|
|
+</div>
|
|
|
|
|
+<p>这三类产品在报表上长得不一样:防御型看销量和复购,代际迭代三五年里几乎不给利润,长尾拓利单价高、毛利高但量小。用销量 KPI 考核代际迭代,它永远过不了会;用毛利率考核防御型,它会不敢做。</p>
|
|
|
|
|
+<h4>顺手要认清品类边界</h4>
|
|
|
|
|
+<p>方便面的原生心智是<b>便捷、应急、饱腹</b>。创新可以做「<b>相对健康</b>」——少盐少油、非油炸、加蛋白、真材实料;不硬冲「<b>专业健康</b>」——减肥代餐、术后营养、慢病管理,那是和辅食品牌、药企膳食正面相撞的赛道。</p>
|
|
|
|
|
+<p>用户说「想要一款健康方便面」时,要追问一层:他要的是「少油少盐」,还是「养生代餐」?前者品类能承载,后者要换一种生意。</p>
|
|
|
|
|
+<h4>练习二(3 分钟):给你的课题定位</h4>
|
|
|
|
|
+<p>每组把课题写在一张便签上,用三行字回答:<b>① 它属于三类创新里的哪一类?② 它主要动的是哪根主干/哪个抓手?③ 它可能撞在哪根品类边界上?</b>贴到白板上的三个区域。贴完看:三块是否均衡——如果所有课题都挤在「防御型」,说明大家熟悉的分工,本身就偏向守成。</p>
|
|
|
|
|
+<div class="block note"><h3>这一层的落点</h3><p>产品创新是点,品类经营是面。先想清楚这个点是哪类创新、长在哪根主干上。</p></div>`},
|
|
|
|
|
+ {t: '13–24 分', ti: '【组织层】品牌经理责任制:有人对全局负责', html: `
|
|
|
|
|
+<p>战略层说「要对品类生意负责」,组织层回答的是:<b>谁来负责,怎么负责。</b>这里的参照是品牌经理(品类经理)责任制。</p>
|
|
|
|
|
+<h4>五层结构</h4>
|
|
|
|
|
+<div class="tbl-scroll"><table class="tbl"><thead><tr><th>层</th><th>是什么</th><th>对应到产品创新</th><th>落到你身上</th></tr></thead><tbody>
|
|
|
|
|
+<tr><td><b>① 组织载体</b></td><td>品牌经理放在品类组里,按利润中心的方式运行</td><td>每个品类有一个人对生意负责</td><td>你所在的品类组,就是你负责的「经营单元」</td></tr>
|
|
|
|
|
+<tr><td><b>② 角色定位</b></td><td>品类经营第一责任人(三重角色)</td><td>创新由谁统筹、谁拍板</td><td>你是本品类创新的第一责任人</td></tr>
|
|
|
|
|
+<tr><td><b>③ 职责贯穿</b></td><td>四项职责:全生命周期 / 品牌资产 / 营销预算 / 市场研判</td><td>创新在生命周期哪个位置、挂谁、花多少、对不对</td><td>贯穿整个流程,不只是在研发段</td></tr>
|
|
|
|
|
+<tr><td><b>④ 机制层</b></td><td>流程链条 / 分级决策 / 部门协同(穿透圈层)/ 激励 / 人才</td><td>创新怎么被推动、怎么被评价</td><td>你的提报会在哪个圈层被卡</td></tr>
|
|
|
|
|
+<tr><td><b>⑤ 组织成效</b></td><td>市场部重塑、品牌驱动增长</td><td>创新最终变成什么</td><td>不只是出产品,是让品类持续增长</td></tr>
|
|
|
|
|
+</tbody></table></div>
|
|
|
|
|
+<h4>三重角色</h4>
|
|
|
|
|
+<div class="kind3">
|
|
|
|
|
+<div class="kind"><h4>经营责任人</h4><p style="font-size:13px;margin:0">对这个品类的增长、利润、心智负责。创新不是交差,是经营动作。</p></div>
|
|
|
|
|
+<div class="kind"><h4>协同枢纽</h4><p style="font-size:13px;margin:0">把研发、工艺、供应链、渠道拉到一张桌上,用同一套事实说话。</p></div>
|
|
|
|
|
+<div class="kind"><h4>标准唯一出口</h4><p style="font-size:13px;margin:0">对外只说一个口径:卖点怎么说、边界在哪、证据到哪为止,由你统一。</p></div>
|
|
|
|
|
+</div>
|
|
|
|
|
+<h4>四项职责,对应四项权限</h4>
|
|
|
|
|
+<div class="resp">
|
|
|
|
|
+<div class="resp-row"><span class="rh">职责</span><b>品类全生命周期</b><span class="rk">对应权限</span><b>产品分级决策权</b></div>
|
|
|
|
|
+<div class="resp-row"><span class="rh">职责</span><b>品牌资产</b><span class="rk">对应权限</span><b>品牌内容终审权</b></div>
|
|
|
|
|
+<div class="resp-row"><span class="rh">职责</span><b>营销预算</b><span class="rk">对应权限</span><b>分项预算支配权</b></div>
|
|
|
|
|
+<div class="resp-row"><span class="rh">职责</span><b>市场研判</b><span class="rk">对应权限</span><b>品类战略表决权</b></div>
|
|
|
|
|
+</div>
|
|
|
|
|
+<p>责任有多大,权限就要有多大。只有责任没有权限,创新会停在提案上;只有权限没有责任,创新会变成随意的动作。</p>
|
|
|
|
|
+<h4>穿透圈层:你的方案会在哪一圈被卡</h4>
|
|
|
|
|
+<div class="rings">
|
|
|
|
|
+<div class="ring c1"><b>核心圈</b><span>本人 + 品类组<br>你自己拍板</span></div>
|
|
|
|
|
+<div class="ring c2"><b>协同圈</b><span>研发 · 工艺 · 供应链<br>能力提供方:做不做得出来</span></div>
|
|
|
|
|
+<div class="ring c3"><b>决策圈</b><span>分管领导 · 委员会<br>拍板方:值不值得投</span></div>
|
|
|
|
|
+<div class="ring c4"><b>生态圈</b><span>供应商 · 渠道 · 消费者<br>接受度:卖不卖得动</span></div>
|
|
|
|
|
+</div>
|
|
|
|
|
+<p>这个模型给你一个非常实际的用法:<b>每一份产出物写的时候,就问自己一句「它会卡在哪一圈」</b>——卡在协同圈,是工艺和成本没讲清;卡在决策圈,是三类创新的标准用错了;卡在生态圈,是渠道和消费者不接受。</p>
|
|
|
|
|
+<h4>四阶成长:你在这条路上的第几阶</h4>
|
|
|
|
|
+<div class="ladder">
|
|
|
|
|
+<div><b>新品孵化官</b><span>把一个新品从 0 推到 1</span></div>
|
|
|
|
|
+<div class="lv2"><b>整合营销大师</b><span>新品 × 品牌 × 渠道,会讲故事</span></div>
|
|
|
|
|
+<div class="lv3"><b>增长操盘手</b><span>对品类的增长曲线负责</span></div>
|
|
|
|
|
+<div class="lv4"><b>生意领导者</b><span>对整个品类的生意负责</span></div>
|
|
|
|
|
+</div>
|
|
|
|
|
+<div class="block note"><h3>这一层的落点</h3><p>创新的瓶颈,往往不在点子,而在「谁负责、谁拍板、谁为结果买单」。品牌经理责任制解决的正是这个问题。</p></div>`},
|
|
|
|
|
+ {t: '24–30 分', ti: '【个人层】你们不是「研发人员」,是「未来的品类负责人」', html: `
|
|
|
|
|
+<p>把前两层压到一个人身上,就是这一层要说的话:<b>你就是未来要对这个品类负责的人。</b>这次坐在教室里的都是研发中心的人——这不是局限,是起点。研发侧是你的本行,别人很难替代。</p>
|
|
|
|
|
+<p>但一个品类负责人不能只会研发。要补两块:</p>
|
|
|
|
|
+<div class="caps">
|
|
|
|
|
+<div class="cap" style="--acc:var(--red)"><h4>研发侧</h4><span class="cap-lv">本行</span><ul><li>配方、工艺、形态、成本</li></ul><p class="cap-q">这次工作坊里,你是全组最懂这一块的人。</p></div>
|
|
|
|
|
+<div class="cap" style="--acc:var(--amber)"><h4>市场侧</h4><span class="cap-lv">要补</span><ul><li>人群、场景、卖点、传播</li></ul><p class="cap-q">从 D1-03 起,每天都要用市场侧的眼睛看一遍。</p></div>
|
|
|
|
|
+<div class="cap" style="--acc:var(--teal)"><h4>经营侧</h4><span class="cap-lv">要建立</span><ul><li>毛利、价格带、渠道、生命周期</li></ul><p class="cap-q">D2 下午的回推和排序,就是练这一块。</p></div>
|
|
|
|
|
+</div>
|
|
|
|
|
+<p>三个半天,练的就是这三块的整合:D1 用研发侧的眼睛看供给、市场侧的眼睛看竞品;D2 上午把两块拼成机会;D2 下午把经营侧加进来,变成算得过账的提案。</p>
|
|
|
|
|
+<div class="case"><h4>一个提醒:别只做「研发侧的好答案」</h4><p>研发侧最容易做出的,是技术上漂亮、参数漂亮、实验室里做得很好的产品。但品类负责人要回答的是另一个问题:<b>这个漂亮,用户看不看得见、愿不愿意为它多付钱。</b>D2-07 会反复练这个翻译——把「热风三段控温」翻译成用户听得懂的一句话。</p></div>
|
|
|
|
|
+<div class="block note"><h3>这一层的落点</h3><p>你的岗位是研发,你的未来是品类负责人。这次工作坊,就是从「研发人员」往「品类负责人」走的第一步。</p></div>`}
|
|
|
|
|
+ ],
|
|
|
|
|
+ takeaway: `<p><b>第二段的落点:</b>产品创新长在品类经营这张网里(战略层);对品类生意负责的人是品牌经理(组织层);而坐在教室里的你,就是未来那个对品类生意负责的人(个人层)。</p><p>现场可以问一句:【刚才练习二的便签里,有几组选的是代际迭代?如果一组都没有——这就是组织层说的「标准错位」。】</p>`},
|
|
|
|
|
+{
|
|
|
|
|
+ id: 'big1-p3', no: '第三段', title: '新秀 vs 老品牌 · 市场侧 vs 研发侧', time: '25 分钟', goal: '认清康师傅的位置,和你要切换的两侧视角',
|
|
|
|
|
+ pts: [
|
|
|
|
|
+ {t: '0–9 分', ti: '新秀和老品牌:创新逻辑完全不同', html: `
|
|
|
|
|
+<p>同一个「产品创新」,新品牌和成熟企业走的不是同一条路。把两边放在一张表里比:</p>
|
|
|
|
|
+<div class="tbl-scroll"><table class="tbl wide compare"><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>
|
|
|
|
|
+</tbody></table></div>
|
|
|
|
|
+<p>这两条路线最值得对照的是:<b>失败的不是「想错了」,而是「最该发力的一步没发力」。</b>新秀的失败发生在最后一公里——产能和渠道;老品牌的失败发生在最前一公里——没人敢拍板。</p>
|
|
|
|
|
+<p>数据里有一个很能说明问题的切面:康师傅 35 个有有效价的商品,四分位价格是 P25 2.98 / 中位 3.93 / P75 4.24 元每 100g。康师傅的位置非常清楚:<b>主力牢牢站在 4 元以下,大企业,基本盘巨大。</b></p>
|
|
|
|
|
+<div class="case"><h4>康师傅的位置:挑战不是「找不到点子」,是「在巨大存量上做结构性创新」</h4>
|
|
|
|
|
+<p>大企业的优势,恰恰也是它创新的难点:已经做好的基本盘越大,做任何结构性变化要守住的就越多。于是创新容易被压缩成两种:一种是安全的小改动(防御型),一种是等别人先做、再跟进(跟跑)。代际迭代和长尾拓利,反而最容易被推迟。</p>
|
|
|
|
|
+<p>所以对康师傅来说,最稀缺的不是点子——点子在教室里一个下午就能出十个——而是<b>把点子放到三类创新的标准下、拿到协同圈和决策圈去推进的能力</b>。这次工作坊练的就是这个。</p></div>`},
|
|
|
|
|
+ {t: '9–15 分', ti: '市场侧 vs 研发侧:同一个人要切换两侧', html: `
|
|
|
|
|
+<p>不是「市场部门 vs 研发部门」,而是<b>同一个产品经理,在两个视角来回切换</b>。两侧的起点、风险、验证方式都不同:</p>
|
|
|
|
|
+<div class="tbl-scroll"><table class="tbl wide compare"><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>
|
|
|
|
|
+</tbody></table></div>
|
|
|
|
|
+<p><b>最好的创新是两侧交汇:工艺上做得出来,市场上说得通。</b>只会在研发侧发力,容易做出漂亮却卖不动的产品;只会在市场侧发力,容易做出好听却落不了地的概念。这次流程的设计,就是让这两侧在每一步都被对方检验一遍:D1 用市场侧看竞品,D2-06 用研发侧回推能不能做,D2-07 再把研发语言翻译成市场语言。</p>`},
|
|
|
|
|
+ {t: '15–22 分', ti: '案例:挂面截三段——一次典型的市场侧创新', html: `
|
|
|
|
|
+<div class="case"><h4>一把挂面 2 块钱。截成三分之一,装小包,卖给小孩,卖 60 元。</h4>
|
|
|
|
|
+<ul>
|
|
|
|
|
+<li><b>成本没变</b>——还是那些面。</li>
|
|
|
|
|
+<li><b>变的是三件事</b>:规格(长段 → 小段小包)+ 人群(家庭主妇 → 孩子)+ 场景(主食原料 → 儿童零食)。</li>
|
|
|
|
|
+<li><b>从「主食原料」变成「儿童零食」</b>,价格翻 30 倍。</li>
|
|
|
|
|
+<li><b>本质不是产品创新,是品类定义创新。</b></li>
|
|
|
|
|
+<li>这是典型的<b>市场侧创新</b>:工艺没变、原料没变,变的是卖给谁、在什么场景卖、怎么说。</li>
|
|
|
|
|
+</ul>
|
|
|
|
|
+<p class="case-foot">数据参考:任务资料里对高端手工面的观察是「15–20 元/斤普通高端手工面、60 元+/斤婴童面」——「60 元/斤」是行业观察值,课堂数据包不含这条价格,引用时按观察数据对待。</p></div>
|
|
|
|
|
+<p>但故事没完。它会反过来倒逼研发:</p>
|
|
|
|
|
+<ol>
|
|
|
|
|
+<li><b>小包装的防腐与保质。</b>面截短、装小包后,表活比变大,水分活度控制要重新做。</li>
|
|
|
|
|
+<li><b>断条率。</b>挂面截成三段,切口处容易断;要解决断条,就要改配方或改工艺。</li>
|
|
|
|
|
+<li><b>煮制时间。</b>给孩子吃,要更短的煮制时间、更软的口感;这要求调整面筋网络或干燥曲线。</li>
|
|
|
|
|
+</ol>
|
|
|
|
|
+<h4>练习三:倒逼研发的三个问题(5 分钟)</h4>
|
|
|
|
|
+<p>每组结合自己课题的工艺经验,回答:<b>如果你组的课题里也有一个「市场侧创新」,它会倒逼研发解决什么问题?把它写成三个具体的工艺/参数问题。</b>比如:不是「变得更非油炸」,而是「在 X 元成本带内,把非油炸面饼的含水率做到 Y%,同时复水时间 ≤ Z 分钟」。</p>
|
|
|
|
|
+<p>写完交换看一眼:一个听起来很简单的市场侧创意,拆到研发这边,往往需要一串参数。</p>`},
|
|
|
|
|
+ {t: '22–25 分', ti: '本段的三个判断', html: `
|
|
|
|
|
+<ol>
|
|
|
|
|
+<li><b>新秀和老品牌不是比谁更聪明</b>,是比谁把「最该发力的那一步」做到了。</li>
|
|
|
|
|
+<li><b>市场侧和研发侧不是两个部门</b>,是你要来回切换的两个视角;最好的创新在两侧交汇处。</li>
|
|
|
|
|
+<li><b>康师傅真正的挑战,是在巨大存量上做结构性创新。</b>这也是这次 SOP 要从供给、需求和工艺三边同时下手的理由。</li>
|
|
|
|
|
+</ol>`}
|
|
|
|
|
+ ],
|
|
|
|
|
+ takeaway: `<p><b>第三段的落点:</b>新秀输在最后一公里,老品牌输在最前一公里;市场侧和研发侧要在同一个人身上相遇;挂面截三段说明<em>品类定义</em>有时比<em>产品本身</em>更值钱,而它会倒逼研发给出具体参数。</p>`
|
|
|
|
|
+},
|
|
|
|
|
+{
|
|
|
|
|
+ id: 'big1-p4', no: '第四段', title: '产品创新 SOP + 三个半天的链路', time: '15 分钟', goal: '下午就从「定课题」出发',
|
|
|
|
|
+ pts: [
|
|
|
|
|
+ {t: '0–7 分', ti: '完整 SOP:八步', html: `
|
|
|
|
|
+<p>前面三段讲的是「为什么」和「谁负责」,这一段讲「怎么做」。从定课题到出方案,一共八步:</p>
|
|
|
|
|
+<div class="sop">
|
|
|
|
|
+<div class="sop-step"><span class="sop-no">①</span><b>定课题</b><p class="sop-q">要做什么决定</p></div>
|
|
|
|
|
+<div class="sop-step"><span class="sop-no">②</span><b>看供给</b><p class="sop-q">市场上有什么</p></div>
|
|
|
|
|
+<div class="sop-step"><span class="sop-no">③</span><b>看需求</b><p class="sop-q">用户要什么</p></div>
|
|
|
|
|
+<div class="sop-step"><span class="sop-no">④</span><b>找交叉</b><p class="sop-q">哪里有空白</p></div>
|
|
|
|
|
+<div class="sop-step"><span class="sop-no">⑤</span><b>验机会</b><p class="sop-q">这个空白值不值得做</p></div>
|
|
|
|
|
+<div class="sop-step"><span class="sop-no">⑥</span><b>算可行</b><p class="sop-q">做不做得出来、划不划算</p></div>
|
|
|
|
|
+<div class="sop-step"><span class="sop-no">⑦</span><b>定卖点</b><p class="sop-q">怎么说用户听得懂</p></div>
|
|
|
|
|
+<div class="sop-step"><span class="sop-no">⑧</span><b>出方案</b><p class="sop-q">一份能过会的提案</p></div>
|
|
|
|
|
+</div>
|
|
|
|
|
+<p>这八步和第一段、第二段讲的东西一一对应:②③ 需要研发侧和市场侧同时看;④⑤ 要在品类经营的框架里判断「哪一类创新」;⑥ 是经营侧;⑦⑧ 是把整个方案送到穿透圈层里去接受检验。</p>`},
|
|
|
|
|
+ {t: '7–12 分', ti: '三个半天怎么切这八步', html: `
|
|
|
|
|
+<table class="tbl"><thead><tr><th>半天</th><th>负责哪几步</th><th>对应环节</th><th>离场时</th></tr></thead><tbody>
|
|
|
|
|
+<tr><td><b>D1 下午</b></td><td>① 定课题 · ② 看供给 · ③ 看需求(开个头)</td><td>D1-01 → D1-02 → D1-03 → D1-04 → 夜间 D1-N</td><td>一个决定、三个待答问题、一份研究任务</td></tr>
|
|
|
|
|
+<tr><td><b>D2 上午</b></td><td>④ 找交叉 · ⑤ 验机会</td><td>D2-01 → 大课二 → D2-02 → D2-03 → D2-04</td><td>候选机会清单 V1.0</td></tr>
|
|
|
|
|
+<tr><td><b>D2 下午</b></td><td>⑥ 算可行 · ⑦ 定卖点 · ⑧ 出方案</td><td>大课三 → D2-05 → D2-06 → D2-07 → D2-08</td><td>概念提案 + 候选清单 V3.0</td></tr>
|
|
|
|
|
+</tbody></table>
|
|
|
|
|
+<p>三条规矩贯穿始终:<b>没验证过的机会不能进卖点;没算过商业条件的卖点不能进提案;没对照验证配置卡的结论,一律标「待确认」。</b></p>`},
|
|
|
|
|
+ {t: '12–15 分', ti: '练习四 + 收尾:今天下午离场时,你手上会有什么', html: `
|
|
|
|
|
+<h4>练习四:三步走 + 三个待答问题(5 分钟)</h4>
|
|
|
|
|
+<p>每组在纸上写两样:</p>
|
|
|
|
|
+<ol><li><b>三步走</b>:你们的课题今天下午先做哪一步、明确要支持的<em>决定</em>是什么、这件事大概属于三类创新中的哪一类。</li><li><b>三个待答问题</b>:会改变结论、而你目前回答不了的那三个问题。</li></ol>
|
|
|
|
|
+<p>这两样直接写进 D1-01 的认知盘点——「我希望搞清楚的」和「我已经知道的」两栏。</p>
|
|
|
|
|
+<div class="block note"><h3>收尾:今天下午离场时,你手上会有一个明确要做的决定、三个待答问题、和一份能跑的研究任务。</h3><p>然后就交给 AI 跑一整晚。</p></div>
|
|
|
|
|
+<p>AI 推送(大课结束时,数字分身会把下面这三行递到每组):</p>
|
|
|
|
|
+<div class="push"><div class="push-bar"><b>AI 推送</b><span>大课一结束</span></div><div class="push-rows">
|
|
|
|
|
+<div class="push-row"><b>【本轮产出】</b><p>你手上有:练习四纸上写下的「三步走」和「三个待答问题」——它们还不是产出物,是 D1-01 认知盘点的草稿。</p></div>
|
|
|
|
|
+<div class="push-row"><b>【还缺什么】</b><p>缺一个能贴到品类图上的<b>具体格子</b>。只说「我们要做一款更好吃的面」还不够——要落到「哪个人群 × 哪个场景 × 哪个价格带 × 哪种工艺」。</p></div>
|
|
|
|
|
+<div class="push-row"><b>【下一步】</b><p class="ask">接下来要做 D1-01 品类全景扫描。请先回答:你组的课题,想解决的是哪个具体格子的问题?(D1-01 提示词第一行就要填这个)</p></div>
|
|
|
|
|
+</div></div>`}
|
|
|
|
|
+ ],
|
|
|
|
|
+ takeaway: `<p><b>第四段的落点:</b>八步 SOP 是骨架,三个半天是切分,13 份产出物是每步留下的东西。现在就把课题收敛到「一个格子 + 一个决定」。</p>`
|
|
|
|
|
+}
|
|
|
|
|
+],
|
|
|
|
|
+after: [
|
|
|
|
|
+{t: '讲授稿(大课一全文,可直接照着讲)', cls: 'accent', html: `
|
|
|
|
|
+<details class="q"><summary>第一段 宏观趋势与行业变局(约 20 分钟)</summary><div class="script" style="padding:8px 14px 14px">
|
|
|
|
|
+<p>各位,先把手机放一放,回答我一个问题:<b>我们自己的新品,最近一款是在哪个格子里做出来的?</b>(收 5 个答案,写上黑板)</p>
|
|
|
|
|
+<p>再看看这些答案——它们大多落在我们最熟悉的格子里。这是个自然的结果,因为过去三十年,方便面的创新公式就是这样:出一个大单品,靠铺货规模把它推成增量。<b>但大单品增量时代已经结束了。</b></p>
|
|
|
|
|
+<p>结束了意味着什么?意味着创新不再是在增量里抢新客,而是在巨大的存量里把结构做开。谁、在什么场景、愿意花多少钱、要什么——这四个要素重新组合,就是新的增长空间。</p>
|
|
|
|
|
+<p>课堂数据里,人群、场景、价格三个切面都在变。六组笔记里「口味新鲜」命中最多,但「方便/快手」六组全部前三——那是品类前提,不是差异。价格上,四分之一以上的电商商品已经站在 6 元/100g 以上,价格带分层已经发生。</p>
|
|
|
|
|
+<p>第二个变化更深:<b>创新的性质变了。</b>以前是营销驱动的口味微调,现在是工艺驱动的代际突破。方便面行业走过油炸、非油炸、半干鲜熟三代,每一代的胜负手都在工厂端,不在营销端。</p>
|
|
|
|
|
+<p>第三个变量是 AI。大家听到 AI 都会说「快一点」。我想说的不一样:<b>AI 改变的不是速度,是能做和不能做的事。</b>以前是抽样推断,现在是全量对照。但 AI 会编——所以今天真正的功夫,是让它说得出证据、说得出反例、说得出它不知道什么。后面附录里有六个反常识的案例,大家一定会感兴趣。</p>
|
|
|
|
|
+<p>最后落到我们自己的行业:价格带在分层、形态在分化、地域风味在崛起。大家看一眼这 4 × 4 的格子——最有意思的一格是「≤4 元 × 非油炸」:别人有 14 个 SKU,我们康师傅 0 个。这一格是空的,但空不等于机会。记住这一格,后面我们要用一整天来回答它。</p>
|
|
|
|
|
+</p></div></details>
|
|
|
|
|
+<details class="q"><summary>第二段 战略层 → 组织层 → 个人层(约 30 分钟)</summary><div class="script" style="padding:8px 14px 14px">
|
|
|
|
|
+<p>(承接练习二便签)看白板上的便签:大部分课题,都贴在「防御型」这一块。这不是大家的问题,这是分工带来的结果——我们最熟悉的工作,本来就是防御型的。</p>
|
|
|
|
|
+<p><b>为什么产品创新不能单独看?</b>因为它会掉进三个僵局:部门割裂、标准错位、短长失衡。三个僵局的解药是同一个:<b>有人站在品类的全局,对这个生意负责。</b></p>
|
|
|
|
|
+<p><b>战略层:</b>产品创新长在品类经营这张网里。品类经营是一根主干——全生命周期——加两个抓手——品牌资产和营销预算——再加一双眼睛——市场研判。在主干上,创新分三类:防御型微创新看存量守住率,代际底层迭代看专利和产线能力,长尾溢价拓利看毛利率。三类用同一把尺去量,就永远得不出结论。</p>
|
|
|
|
|
+<p><b>组织层:</b>谁来负责?品牌经理。它不是一个头衔,是一套制度:五层结构——组织载体、角色定位、职责贯穿、机制层、组织成效;三重角色——经营责任人、协同枢纽、标准唯一出口;四项职责对四项权限——全生命周期对产品分级决策,品牌资产对品牌内容终审,营销预算对分项预算支配,市场研判对品类战略表决。还要穿过四个圈层:核心圈你自己拍板,协同圈看研发工艺供应链做不做得出来,决策圈看值不值得投,生态圈看卖不卖得动。这条路有四阶:新品孵化官、整合营销大师、增长操盘手、生意领导者。</p>
|
|
|
|
|
+<p><b>个人层:</b>讲到这里,我想对在座的每一位说:<b>你们不是只做研发的,你们是未来的品类负责人。</b>研发侧是你们的本行,市场侧是这次要补的,经营侧是这次要建立的。三个半天练的就是这三个视角的整合。</p>
|
|
|
|
|
+</p></div></details>
|
|
|
|
|
+<details class="q"><summary>第三段 新秀 vs 老品牌 · 市场侧 vs 研发侧(约 25 分钟)</summary><div class="script" style="padding:8px 14px 14px">
|
|
|
|
|
+<p>先说新秀。新秀的优势是快、敢、没包袱;劣势是没产能没渠道。他们最常见的失败,是做出来了铺不出去——输在最后一公里。</p>
|
|
|
|
|
+<p>再说我们。康师傅是大企业,基本盘巨大。我们的优势是产线、渠道、供应链、品牌资产;劣势是组织惯性、不敢担责、考核周期错配。最常见的失败,是谁都不敢拍板,错过窗口——输在最前一公里。</p>
|
|
|
|
|
+<p>所以康师傅的挑战不是「找不到点子」。点子一个下午能出十个。真正的挑战是:<b>在巨大存量上,做结构性创新。</b></p>
|
|
|
|
|
+<p>接下来是同一件事的两张脸。市场侧怎么创新?人群、场景、卖点的重构。研发侧怎么创新?工艺、原料、配方的突破。举个例子——<b>一把挂面两块钱,截成三分之一,装小包,卖给小孩,卖六十块。</b>成本没变,变的是规格、人群、场景;它从主食原料变成了儿童零食;本质不是产品创新,是品类定义创新。</p>
|
|
|
|
|
+<p>但这故事的另一半是研发。截短了会不会断条?装小包了怎么放得住?小孩要煮多软?——一个市场侧的创意,最后逼着研发回答一串参数。这就是我说的:<b>最好的创新是两侧交汇。</b></p>
|
|
|
|
|
+<p>(练习三:5 分钟)</p>
|
|
|
|
|
+</p></div></details>
|
|
|
|
|
+<details class="q"><summary>第四段 SOP 与三个半天链路(约 15 分钟)</summary><div class="script" style="padding:8px 14px 14px">
|
|
|
|
|
+<p>最后,八步:定课题、看供给、看需求、找交叉、验机会、算可行、定卖点、出方案。D1 下午做前三步,D2 上午做中间两步,D2 下午做最后三步。每一步都有一份产出物,每一步结束 AI 都会推你一把:告诉你手上有什么、还缺什么、下一步先回答哪个问题。</p>
|
|
|
|
|
+<p>今天下午离场时,你手上会有一个明确要做的决定、三个待答问题、一份能跑的研究任务。现在花五分钟,把这三样写下来。(练习四)</p>
|
|
|
|
|
+<p>写完了吗?好,抬头笑一下——接下来的三个半天,我们不聊点子好不好,我们聊这个点子<b>有没有证据、做不做得出来、划不划算。</b></p>
|
|
|
|
|
+</div></details>`},
|
|
|
|
|
+{t: '数据速查与板书(备课用)', html: `
|
|
|
|
|
+<p class="muted">讲台上可以照着这张表念数字,口径都在括号里;板书只写括号外的粗体。</p>
|
|
|
|
|
+<div class="tbl-scroll"><table class="tbl compact"><thead><tr><th>段</th><th>板书</th><th>可引用的数字(口径)</th></tr></thead><tbody>
|
|
|
|
|
+<tr><td>一</td><td><b>增量 → 存量结构</b></td><td>口味新鲜 106/260;方便/快手 97/260(词典命中篇次);价格带 ≤4 / 4–6 / 6–9 / >9 = 53 / 43 / 13 / 16(125 个有效价)</td></tr>
|
|
|
|
|
+<tr><td>一</td><td><b>营销 → 工艺</b></td><td>油炸 140–160℃、含油 18–22%;热风三段控温、含水 8–12%;半干 pH 4.2–4.6、含水 20–26%(知识库行业通行值)</td></tr>
|
|
|
|
|
+<tr><td>一</td><td><b>18 格 · 空格</b></td><td>≤4 元 × 非油炸:14 个 SKU(其中非康师傅);康师傅 35 个有效价里非油炸 0 个</td></tr>
|
|
|
|
|
+<tr><td>二</td><td><b>主干 + 2 抓手 + 眼</b></td><td>三类创新:3–6 个月看存量守住率 / 5–8 年看专利产线 / 1–2 年看毛利率</td></tr>
|
|
|
|
|
+<tr><td>二</td><td><b>5 层 · 3 角色 · 4 职责 4 权限 · 4 圈 · 4 阶</b></td><td>—</td></tr>
|
|
|
|
|
+<tr><td>三</td><td><b>最后一公里 vs 最前一公里</b></td><td>康师傅 P25 2.98 / 中位 3.93 / P75 4.24(35 个有效价);挂面 2 元 → 60 元(任务资料示例,按教案案例讲)</td></tr>
|
|
|
|
|
+<tr><td>四</td><td><b>8 步 · 3 半天 · 13 产出</b></td><td>D1:① ② ③;D2 上午:④ ⑤;D2 下午:⑥ ⑦ ⑧</td></tr>
|
|
|
|
|
+</tbody></table></div>`},
|
|
|
|
|
+{t: '讲师备忘', cls: 'note', html: `
|
|
|
|
|
+<ul>
|
|
|
|
|
+<li><b>时间最紧的是第二段</b>(30 分钟要讲三层)。如果练习二超时,把练习二压成「举着手说一句」,不要压三层结构——三层是第一天的骨架。</li>
|
|
|
|
|
+<li><b>品牌经理责任制部分不要照搬客户原文口径</b>:本课引用的是通用的组织参照结构(五层、三重角色、四职责四权限、穿透圈层、四阶成长),用于打开视野,不作康师傅现状描述。若客户追问「我们是不是这样」,答:这是参照坐标,不是诊断。</li>
|
|
|
|
|
+<li><b>挂面案例按教案案例讲</b>,其中的价格(2 元 → 60 元)是任务给定的教学案例;如果学员拿真实数据追问,用「60 元/斤婴童面」一句带过,并说明是行业观察值。</li>
|
|
|
|
|
+<li><b>不要现场评价学员的点子</b>:这一段的目的不是比谁的点子好,是把大家拉进同一个判断框架。</li>
|
|
|
|
|
+<li>课间分发:4 × 4 空格子纸(练习一)、三种颜色便签(练习二)。</li>
|
|
|
|
|
+</ul>`}
|
|
|
|
|
+]
|
|
|
|
|
+},
|
|
|
|
|
+
|
|
|
|
|
+// ======================================================================
|
|
|
|
|
+// 大课二
|
|
|
|
|
+// ======================================================================
|
|
|
|
|
+{
|
|
|
|
|
+kind: 'big', id: 'big2', no: '大课二', title: '机会发现:三条线交叉的地方才是机会', group: '大课详案',
|
|
|
|
|
+meta: [['D2 09:25–10:15 · 50 分钟', 'tag'], ['承接:D1 晚间的调研战报', ''], ['讲法:五个反常识案例 + 一条纪律', '']],
|
|
|
|
|
+lead: '夜间 AI 跑出来的机会清单,不能直接拿来用。这一课讲清楚:<b>AI 有幻觉,这是设计前提不是缺陷</b>;<b>人做什么、AI 做什么</b>;用六个真实数据讲透<b>反常识的发现</b>;最后给出<b>三源交叉</b>——商品事实、用户原声、工艺条件三条线交叉的地方,才是机会。',
|
|
|
|
|
+outline: [
|
|
|
|
|
+ ['0–5 分', '昨天的战报', '先看缺口,再看结论'],
|
|
|
|
|
+ ['5–15 分', 'AI 有幻觉:人做什么,AI 做什么', 'AI 全量扫描,人判断真假'],
|
|
|
|
|
+ ['15–35 分', '六个反常识的数据发现', '同一个数字,换一个读法就反过来'],
|
|
|
|
|
+ ['35–45 分', '三源交叉', '三条线都指向同一个方向'],
|
|
|
|
|
+ ['45–50 分', '布置练习与推送', 'D2-02 从分层编码开始']
|
|
|
|
|
+],
|
|
|
|
|
+before: [
|
|
|
|
|
+{t: '这一课回答的问题', html: `
|
|
|
|
|
+<p>D1 晚间,AI 按任务卡跑了 16 个小时。今天早上,每组面前有一份战报和一张机会清单。大多数人第一反应是「先看清单里有什么」。这一课要你先停下来看两件事:<b>这份清单里哪些是 AI 编的、哪些是数据撑着的</b>;<b>支撑着的那些,是不是三条线都指向同一个方向</b>。</p>
|
|
|
|
|
+<p>课后的 D2-01 先验收战报,D2-02 至 D2-04 用这一课给的三件事——<b>分层编码、三类发现、三源交叉</b>——把战报变成候选机会清单 V1.0。</p>`}
|
|
|
|
|
+],
|
|
|
|
|
+parts: [
|
|
|
|
|
+{
|
|
|
|
|
+ id: 'big2-p1', no: '一', title: '昨天的战报:先看缺口,再看结论', time: '5 分钟', goal: '把「跑完了」和「跑对了」分开',
|
|
|
|
|
+ pts: [{t: '0–5 分', ti: '三句话验收', html: `
|
|
|
|
|
+<p>打开战报,回答三个问题(D2-01 会给正式检查表):</p>
|
|
|
|
|
+<ol>
|
|
|
|
|
+<li><b>三条假设各回应到了什么程度?</b>支持、部分支持、推翻、未回应——四选一,不许写「基本支持」。</li>
|
|
|
|
|
+<li><b>每条结论能不能回到原件?</b>商品链接、笔记标题或 ID。回不去的,当场降级为「假设」。</li>
|
|
|
|
|
+<li><b>分母写没写?</b>「23 篇提到」——是在 260 篇里 23 篇,还是在 40 篇里 23 篇?</li>
|
|
|
|
|
+</ol>
|
|
|
|
|
+<p>昨天布置的任务卡里每条假设都带了<b>停止条件</b>。现在检查一下:每个停止条件是不是按任务卡写的标准停下来的,而不是「跑累了就停」。</p>`}]
|
|
|
|
|
+},
|
|
|
|
|
+{
|
|
|
|
|
+ id: 'big2-p2', no: '二', title: 'AI 有幻觉:人做什么,AI 做什么', time: '10 分钟', goal: '把幻觉当成前提,而不是当成缺陷',
|
|
|
|
|
+ pts: [{t: '5–15 分', ti: '幻觉是设计前提', html: `
|
|
|
|
|
+<p>大模型最擅长的,是「说得像那么回事」。它会给你一个漂亮的共识、一段顺滑的分析,但可能根本没有证据,或者证据对不上。这不是 bug,是这类工具的工作方式——所以<b>既不能不用,也不能直信</b>,要给它设验证纪律。</p>
|
|
|
|
|
+<p>昨天 D1-02 定下的验证配置卡,就是这个纪律。今天早上对它做一次验收:</p>
|
|
|
|
|
+<div class="two-col">
|
|
|
|
|
+<div class="col ok"><h4>AI 做什么</h4><ul><li>全量扫描:400 个商品、260 篇笔记、120 篇竞品社媒逐条过</li><li>初步分类:把原话按人群、场景、痛点先归类</li><li>找模式:统计频次、算中位、拉出价格带分布</li><li>提出待验证假设</li></ul></div>
|
|
|
|
|
+<div class="col bad"><h4>人做什么</h4><ul><li>判断真假:抽读原文,看说的是不是这个意思</li><li>剔除误判:把打标错误、兜售帖、重复内容剔出去</li><li>定权重:哪条重要、哪条可以忽略</li><li>拍板:值不值得做</li></ul></div>
|
|
|
|
|
+</div>
|
|
|
|
|
+<p>有一个细节每次都会碰到:<b>「没查到」「没权限」「数据确实不存在」是三件事。</b>AI 有时会把三种情况都写成「资料库里没有」。验收时逐条核对:是没搜到,是平台不给,还是这个东西确实不存在?</p>
|
|
|
|
|
+<p>这个纪律不是今天才立的。D1-02 的配置卡里已经定好:全部比例写分母、词典打标词必须抽读原文、价格双口径。今天这一课的所有例子,都是照着这套纪律复核出来的。</p>`}]
|
|
|
|
|
+},
|
|
|
|
|
+{
|
|
|
|
|
+ id: 'big2-p3', no: '三', title: '六个反常识的数据发现', time: '20 分钟', goal: '同一个数字,换一个读法就反过来',
|
|
|
|
|
+ pts: [{t: '15–35 分', ti: 'AI 初判 vs 人工复核', html: `
|
|
|
|
|
+<p>下面六个例子,全部来自课堂数据包。每个例子里,AI 看数字给出一个结论,人工读原文后结论反过来了。课上一组一组过,每组约 3 分钟;完整版见 <a href="#appx-a">附录 A</a>。</p>
|
|
|
|
|
+<div class="tbl-scroll"><table class="tbl wide"><thead><tr><th>#</th><th>AI 初判</th><th>人工复核</th><th>这一步用在哪</th></tr></thead><tbody>
|
|
|
|
|
+<tr><td>1</td><td>「辣」在六组都排痛点第一 → <b>用户嫌辣,建议全线降辣</b></td><td>39 条逐条读:正向(「辣得过瘾」「香辣美味」)29 条、读不出 9 条、真嫌辣 1 条(G1「避免重辣重油」)</td><td>D2-02 分层编码</td></tr>
|
|
|
|
|
+<tr><td>2</td><td>「贵」出现 11 次,G6 最多 → <b>地域用户价格敏感</b></td><td>G6 的 9 条里,「贵州」被词典识别成了「贵」(如「为什么在贵州带回来的羊肉粉这么好吃」);另外 2 条一条是高铁外卖配送费、一条无明确价格抱怨</td><td>D2-02 抽读原文</td></tr>
|
|
|
|
|
+<tr><td>3</td><td>「量大」是高频痛点 → <b>推大份量</b></td><td>260 篇里只出现 2 次,都是夸:「便宜量大又好吃」「量大一顿能吃很饱」</td><td>D2-02 频次≠问题</td></tr>
|
|
|
|
|
+<tr><td>4</td><td>≤4 元占 42.4%,康师傅在该带 22 个 → <b>康师傅主战场在 ≤4 元</b></td><td>54 条含「整箱/组合/混合/批发」,剔除后剩 71 条,≤4 元占 47.9%;康师傅 22 个里 15 个是整箱/混合装,剔除后只剩 7 个</td><td>D2-03 矩阵与价格</td></tr>
|
|
|
|
|
+<tr><td>5</td><td>汤达人社媒中位点赞 6,六家最低 → <b>汤达人讨论冷清、品牌老化</b></td><td>20 篇里 10 篇点赞 ≤5,多为海外兜售帖(「洛杉矶汤达人$10/3大包」等);剔除后剩 16 篇,中位从 6 升到 29</td><td>D1-03 / D2-03 竞品比较</td></tr>
|
|
|
|
|
+<tr><td>6</td><td>「答应我,一定要试试这个面条!!!」出现多次 → <b>话题热度高</b></td><td>竞品社媒 120 行里同标题出现 4 次,其中两行正文完全相同;G5 的 Top1 也是同一篇。400 个商品里 11 个标题重复、多出 14 行(去重后 386 个)</td><td>D2-02 去重</td></tr>
|
|
|
|
|
+</tbody></table></div>
|
|
|
|
|
+<p>六个例子里,有四个的结论方向完全反了(1、2、3、5),两个的数字幅度变了(4、6)。但你会发现一条共同的规律:<b>错误的来源不是算错了,而是把「提到」当成了「态度」、把「出现」当成了「存在」、把「样本」当成了「市场」。</b></p>
|
|
|
|
|
+<h4>三句话带走</h4>
|
|
|
|
|
+<ol><li><b>频次说的是「有人提到」,不是「有人不爽」。</b></li><li><b>打标词会命中别的词</b>——贵州、重庆、贵价;抽 5 条读原文是底线。</li><li><b>先要分母,再要结论。</b>没有分母的比例,不叫发现。</li></ol>
|
|
|
|
|
+<p>还有一条写给「空白」的:<b>任何空白,先查同一格的竞品。</b>康师傅在 ≤4 元 × 非油炸是 0,但同一格有 14 个别人家的 SKU——这一格有供给,但用户需求原话是缺的。空白不是机会,是<b>待验证的问题</b>。</p>`}]
|
|
|
|
|
+},
|
|
|
|
|
+{
|
|
|
|
|
+ id: 'big2-p4', no: '四', title: '三源交叉:三条线交叉的地方才是机会', time: '10 分钟', goal: '把「机会」定义成一个可复核的结构',
|
|
|
|
|
+ pts: [{t: '35–45 分', ti: '供给、需求、工艺', html: `
|
|
|
|
|
+<p>一个机会,至少要在三条线上同时成立:</p>
|
|
|
|
|
+<div class="cap" style="--acc:var(--red);margin:6px 0 10px"><h4>一、商品事实</h4><p style="font-size:13.5px;margin:0">市场上有没有人在做?在哪个价格带、形态、工艺上做?做得怎么样?——来自电商商品与竞品社媒。</p></div>
|
|
|
|
|
+<div class="cap" style="--acc:var(--amber);margin:0 0 10px"><h4>二、用户原声</h4><p style="font-size:13.5px;margin:0">有没有人真的在说这件事?说的是夸还是嫌?在什么场景下说?——来自六组用户笔记、竞品评论。</p></div>
|
|
|
|
|
+<div class="cap" style="--acc:var(--teal);margin:0 0 10px"><h4>三、工艺条件</h4><p style="font-size:13.5px;margin:0">工艺上做不做得出来?成本和稳定性在不在范围里?——来自 49 条工艺知识库和你自己的研发经验。</p></div>
|
|
|
|
|
+<p><b>三条线指向同一个方向,才叫机会;两条线指向,叫候选;一条线指向,叫线索;哪条线都没有,是想象。</b></p>
|
|
|
|
|
+<p>今天下午要到 V1.0 候选清单,就是三条线都能各写出至少一条证据的机会。每张机会卡都会有一个「工艺注释」栏——那是你自己的经验在写,AI 只能标「待工艺确认」。</p>
|
|
|
|
|
+<p>还有一层:产品经理本人也要在这三条线上切换视角。看商品事实时切换到市场侧;写用户原声时切换到使用场景里;写工艺注释时回到研发侧的本行。三条线在同一个人身上对齐,就是这次工作坊练的核心。</p>`}]
|
|
|
|
|
+},
|
|
|
|
|
+{
|
|
|
|
|
+ id: 'big2-p5', no: '五', title: '布置练习与推送', time: '5 分钟',
|
|
|
|
|
+ pts: [{t: '45–50 分', ti: '从分层编码开始', html: `
|
|
|
|
|
+<p>接下来 D2-01 先验收战报,然后 D2-02 开始分层编码:<b>人群 → 场景 → JTBD(用户要完成的事)→ 痛点,四层不能混。</b>四层混在一起,就会出现「辣」那样的误判。</p>
|
|
|
|
|
+<p>AI 推送(大课二结束时):</p>
|
|
|
|
|
+<div class="push"><div class="push-bar"><b>AI 推送</b><span>大课二结束</span></div><div class="push-rows">
|
|
|
|
|
+<div class="push-row"><b>【本轮产出】</b><p>你手上有:一套人为规定的复核纪律(频次要读原文、空白要先查同格竞品、比例先要分母)和三源交叉的定义。</p></div>
|
|
|
|
|
+<div class="push-row"><b>【还缺什么】</b><p>还缺把战报验收掉。不验收的清单里,混着 AI 编的和词典误判的,后面所有排序都会被带偏。</p></div>
|
|
|
|
|
+<div class="push-row"><b>【下一步】</b><p class="ask">接下来要做 D2-01 调研验收。请先回答:战报里,哪一条结论你现在最不放心?它是没找到原件,还是原件读出来意思不对?</p></div>
|
|
|
|
|
+</div></div>`}]
|
|
|
|
|
+}
|
|
|
|
|
+],
|
|
|
|
|
+after: [
|
|
|
|
|
+{t: '讲师备忘', cls: 'note', html: `
|
|
|
|
|
+<ul>
|
|
|
|
|
+<li><b>六个例子讲 2–3 个就够</b>(建议 1、2、5),其余让学员对照附录 A 自己看。重点是「为什么同一个数字读法不同,结论会反过来」。</li>
|
|
|
|
|
+<li><b>汤达人那个例子注意口径</b>:剔除后中位是 <b>29</b>(剩 16 篇)。不同的剔除规则(只剔 2 条洛杉矶帖 → 21;只按标题去重 → 5)结果不同——这正是要点:口径不同,结论不同,所以要把口径写下来。</li>
|
|
|
|
|
+<li><b>不要用「总赞」排品牌声量</b>:农心总赞 75,484 里 47,173(62.5%)是一条 aespa 活动帖。</li>
|
|
|
|
|
+<li>三源交叉的三个框,建议用三种颜色的便签占位三次:红 = 白板左边「商品事实」,黄 = 右上「用户原声」,绿 = 右下「工艺条件」。后续每个机会都要求三色便签各一张。</li>
|
|
|
|
|
+</ul>`}
|
|
|
|
|
+]
|
|
|
|
|
+},
|
|
|
|
|
+
|
|
|
|
|
+// ======================================================================
|
|
|
|
|
+// 大课三
|
|
|
|
|
+// ======================================================================
|
|
|
|
|
+{
|
|
|
|
|
+kind: 'big', id: 'big3', no: '大课三', title: '从机会到提案:收敛、表达、交付', group: '大课详案',
|
|
|
|
|
+meta: [['D2 13:30–14:20 · 50 分钟', 'tag'], ['承接:候选机会清单 V1.0', ''], ['讲法:四段,最后落到市场侧延展', '']],
|
|
|
|
|
+lead: '上午结束时,手上是 2–3 个带证据的机会。这一课讲清楚:<b>多个机会怎么排序(收敛的逻辑)</b>;<b>机会怎么变成概念</b>;<b>AI 能帮你做什么</b>——设计示意图、卖点文案、竞品对比、把分析串成提案;<b>提案怎么表达</b>;以及定稿后<b>市场侧还可以延展什么</b>。',
|
|
|
|
|
+outline: [
|
|
|
|
|
+ ['0–10 分', '收敛的逻辑', '多个机会怎么排序'],
|
|
|
|
|
+ ['10–20 分', '从机会到概念', '哪里有空白 → 我要做成什么样'],
|
|
|
|
|
+ ['20–32 分', 'AI 能帮什么、不能替什么', '示意、文案、对比、串联'],
|
|
|
|
|
+ ['32–42 分', '提案的表达层次', '给谁看、讲什么、先讲结论'],
|
|
|
|
|
+ ['42–50 分', '市场侧延展', '定稿之后还能做什么'],
|
|
|
|
|
+],
|
|
|
|
|
+before: [
|
|
|
|
|
+{t: '这一课的位置', html: `
|
|
|
|
|
+<p>大课二把「机会怎么被发现」讲完,大课三把「机会怎么被选择、被说清」讲完。这一课讲完,后面四节就是把课上的内容在你们的机会卡上跑一遍:D2-05 排序 → D2-06 回推 → D2-07 卖点 → D2-08 提案。</p>`}
|
|
|
|
|
+],
|
|
|
|
|
+parts: [
|
|
|
|
|
+{
|
|
|
|
|
+ id: 'big3-p1', no: '一', title: '收敛的逻辑:多个机会怎么排序', time: '10 分钟', goal: '用三个维度,不用一个感觉',
|
|
|
|
|
+ pts: [{t: '0–10 分', ti: '证据强度 × 可做性 × 商业价值', html: `
|
|
|
|
|
+<p>上午可能得出 2–3 个候选机会,也可能更多。一个都不能凭「我觉得」排序,用三个维度:</p>
|
|
|
|
|
+<table class="tbl"><thead><tr><th>维度</th><th>问什么</th><th>怎么打分(1–3)</th><th>数据来源</th></tr></thead><tbody>
|
|
|
|
|
+<tr><td><b>证据强度</b></td><td>三条线(商品事实 / 用户原声 / 工艺条件)各有多少条证据?</td><td>3 = 三线齐全且各有 2 条以上;2 = 三线齐全但薄;1 = 只有一两线</td><td>机会卡 V1.0</td></tr>
|
|
|
|
|
+<tr><td><b>可做性</b></td><td>现在的产线、工艺、供应商能不能做?</td><td>3 = 现有产线可做;2 = 要改线或新增原料;1 = 新工艺 / 新产线</td><td>研发侧自己的判断</td></tr>
|
|
|
|
|
+<tr><td><b>商业价值</b></td><td>价格带、毛利、量级撑不撑得起?</td><td>3 = 高溢价且量级可期;2 = 一般;1 = 低价薄利或量级不明</td><td>D2-06 回推表</td></tr>
|
|
|
|
|
+</tbody></table>
|
|
|
|
|
+<p>最终排序看总分,但更重要的一条规则是:<b>三个维度里任何一个得 1 分的机会,不能排进前三。</b>证据薄、做不出、不赚钱——只要有一项卡死,其他两项再高也是虚的。</p>
|
|
|
|
|
+<p>还要单独列一类:<b>未知项</b>。有些机会现在没法打分,因为缺一个关键数据——比如「这个价格带的消费者接受度没测过」。未知项不是低分项,是今天必须写进 V1.0、但要在后续补证里回答的问题。</p>`}]
|
|
|
|
|
+},
|
|
|
|
|
+{
|
|
|
|
|
+ id: 'big3-p2', no: '二', title: '从机会到概念:哪里有空白 → 我要做成什么样', time: '10 分钟',
|
|
|
|
|
+ pts: [{t: '10–20 分', ti: '概念的四句话', html: `
|
|
|
|
|
+<p>机会是「哪里有空白」,概念是「我要做成什么样」。一个概念,能用四句话讲清楚:</p>
|
|
|
|
|
+<ol>
|
|
|
|
|
+<li><b>给谁:</b>什么人,在什么场景下。</li>
|
|
|
|
|
+<li><b>解决什么:</b>他现在的痛点是什么(带原话)。</li>
|
|
|
|
|
+<li><b>做什么:</b>产品是什么形态、什么工艺、什么价格带。</li>
|
|
|
|
|
+<li><b>凭什么:</b>为什么是我们做得出、别人做不好(工艺 + 供应链 + 品牌)。</li>
|
|
|
|
|
+</ol>
|
|
|
|
|
+<div class="case"><h4>对比:两个都叫「健康面」的概念,差在哪</h4>
|
|
|
|
|
+<div class="tbl-scroll"><table class="tbl wide"><thead><tr><th></th><th>概念 A</th><th>概念 B</th></tr></thead><tbody>
|
|
|
|
|
+<tr><td>四句话</td><td>给想健康但怕胖的轻断食青年 → 在宿舍夜宵场景 → 想吃面怕负罪感 → 做一款荞麦青稞非油炸面</td><td>给想吃非油炸但觉得贵的家庭囤货主妇 → 在日常囤货场景 → 非油炸都卖 6 元以上 → 做一款 ≤4 元带的非油炸汤面</td></tr>
|
|
|
|
|
+<tr><td>机会卡依据</td><td>G4「健康」29/39 篇;G4 中位点赞 467,为六组第二高</td><td>「≤4 元 × 非油炸」格:对手 14 个、康师傅 0 个</td></tr>
|
|
|
|
|
+<tr><td>反例 / 风险</td><td>健康需求是品类可承载的吗?——「少油少盐」可以,「代餐减肥」撞品类边界</td><td>非油炸在 ≤4 元确实做得出吗?——14 个对手里多是低价散牌,要查工艺和成本</td></tr>
|
|
|
|
|
+<tr><td>可以过会吗</td><td>取决于能否把「轻断食」收回到「相对健康」</td><td>取决于成本能不能打进 4 元带</td></tr>
|
|
|
|
|
+</tbody></table></div>
|
|
|
|
|
+<p class="case-foot">概念 A 讲得很诱人,但卡在品类边界;概念 B 听起来朴素,但正好落在第三节讲的「工艺做得出 + 市场上说得通」的交汇处。</p></div>
|
|
|
|
|
+<p>一个好的概念,在四句话之外还要能过三道关:<b>四句话能不能被一句话问倒</b>(比如「凭什么别人做不了?」「凭什么是我们?」「用户为什么比现在更愿意买?」)——<b>能过这三问,再往下做示意图。</b></p>`}]
|
|
|
|
|
+},
|
|
|
|
|
+{
|
|
|
|
|
+ id: 'big3-p3', no: '三', title: 'AI 能帮什么、不能替什么', time: '12 分钟', goal: '把 AI 放进流程,但别让它替你做判断',
|
|
|
|
|
+ pts: [{t: '20–32 分', ti: '四件可以让 AI 做的事', html: `
|
|
|
|
|
+<div class="two-col">
|
|
|
|
|
+<div class="col"><h4>1. 概念可视化:生成产品示意图</h4><p>把「四句话」交给 AI,让它生成包装、形态、使用场景的示意图。可以用在小组展演和提案的第一页,帮助团队对齐「我们说的是同一个东西」。</p><p class="muted">边界:示意图是想象,不是设计稿;不能拿示意图去说服决策,要说清「以下为生成示意,需设计确认」。</p></div>
|
|
|
|
|
+<div class="col"><h4>2. 卖点文案:多版本表达</h4><p>同一个卖点,按不同价格带、不同人群、不同场景各写一版。客户最期待的也是这一块:<b>怎么把产品故事讲得让消费者更想买,让品牌方一听就觉得「不一样」。</b></p><p class="muted">边界:任何一版都不能越过证据边界——说「更少油」可以,说「健康无负担」就要有依据。</p></div>
|
|
|
|
|
+<div class="col"><h4>3. 竞品对比:把机会放回市场里看</h4><p>让 AI 拉一个「我们的概念 vs 同格竞品」的对比表:形态、工艺、价格、卖点组合、证据。找出差异点,也找出看起来一样的地方。</p><p class="muted">边界:AI 的对比只能基于已有的商品和原话数据,它拼不出没采集到的品牌。</p></div>
|
|
|
|
|
+<div class="col"><h4>4. 串联分析:把散落的分析拼成一份材料</h4><p>13 份产出物是散的。让 AI 按「结论 → 依据 → 风险 → 行动」的结构串成提案,你做减法,不做加法。</p><p class="muted">边界:串联不能掩盖矛盾。两段分析互相打架,要写进提案,不要删掉。</p></div>
|
|
|
|
|
+</div>
|
|
|
|
|
+<p>一句话记住:<b>AI 做十版,人挑一版。</b>十版都是草稿,挑那版的理由必须是你的。</p>`}]
|
|
|
|
|
+},
|
|
|
|
|
+{
|
|
|
|
|
+ id: 'big3-p4', no: '四', title: '提案的表达层次', time: '10 分钟',
|
|
|
|
|
+ pts: [{t: '32–42 分', ti: '给谁看、讲什么、先讲结论', html: `
|
|
|
|
|
+<div class="three-col" style="display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:10px 0">
|
|
|
|
|
+<div class="kvcard card" style="border:1px solid var(--line);border-radius:10px;padding:12px 14px;background:var(--card)"><h4 style="margin:0 0 6px;font-size:14px;color:var(--red)">给谁看</h4><ul style="font-size:13.5px;margin:0;padding-left:1.1em"><li>协同圈:工艺、供应链——关心<b>做不做得出来</b></li><li>决策圈:领导、委员会——关心<b>值不值得投、属于哪类创新</b></li><li>生态圈:渠道——关心<b>好不好卖、有没有货架位置</b></li></ul></div>
|
|
|
|
|
+<div class="kvcard card" style="border:1px solid var(--line);border-radius:10px;padding:12px 14px;background:var(--card)"><h4 style="margin:0 0 6px;font-size:14px;color:var(--red)">讲什么</h4><ul style="font-size:13.5px;margin:0;padding-left:1.1em"><li>同一个提案,三份版本:一句话(决策圈)、一页(协同圈)、一份(归档)</li><li>三类创新属性必须写在开头,避免「用同一把尺」</li></ul></div>
|
|
|
|
|
+<div class="kvcard card" style="border:1px solid var(--line);border-radius:10px;padding:12px 14px;background:var(--card)"><h4 style="margin:0 0 6px;font-size:14px;color:var(--red)">先讲结论</h4><ul style="font-size:13.5px;margin:0;padding-left:1.1em"><li>第一页只写三件事:做什么、为什么现在、要什么资源</li><li>证据往后放,顺序是结论 → 依据 → 风险 → 行动</li></ul></div>
|
|
|
|
|
+</div>
|
|
|
|
|
+<p>这份提案的读者,大概率就是你在第二段大课看到的穿透圈层里的人。提到决策圈时,最忌讳的是「用销量考一个代际迭代」。提案里说清「这属于三类创新中的哪一类、看什么指标」,本身就是过会的门票。</p>
|
|
|
|
|
+<p>展演的规矩:一组 5 分钟,不能超过 5 页;其他组每组至少提一个「缺什么」的问题——按 D2-08 的质询记录表来。</p>`}]
|
|
|
|
|
+},
|
|
|
|
|
+{
|
|
|
|
|
+ id: 'big3-p5', no: '五', title: '市场侧延展:定稿之后还能做什么', time: '8 分钟',
|
|
|
|
|
+ pts: [{t: '42–50 分', ti: '三件事可以把一个概念往前推一步', html: `
|
|
|
|
|
+<ol>
|
|
|
|
|
+<li><b>产品示意:</b>概念定稿后,用 AI 生成形态、包装、使用场景示意图;在小组内先对齐,再在对外沟通里用「生成示意,待设计确认」的标注使用。</li>
|
|
|
|
|
+<li><b>卖点表达:</b>定一个「证据允许说到哪」的边界,再在这个边界内按价格带、人群、场景生成多版本。每一版都要能对应到一条原话或一个商品事实。客户最期待的正是这一块——研发人员不是不会讲故事,是需要从证据出发去讲。</li>
|
|
|
|
|
+<li><b>渠道接受度预判:</b>用价格带、形态、毛利去反推:这个产品适合什么渠道?同类商品在那个渠道卖什么价?要多少量才能撑得起进店?——数据里没有渠道端销量的,标「待确认」,用研发经验给出定性判断。</li>
|
|
|
|
|
+</ol>
|
|
|
|
|
+<p>这三件事不改变概念,只是把概念从「一说出来」推到「别人能接住」。做完之后,一份提案就具备了被讨论的基础。</p>
|
|
|
|
|
+<p>AI 推送(大课三结束时):</p>
|
|
|
|
|
+<div class="push"><div class="push-bar"><b>AI 推送</b><span>大课三结束</span></div><div class="push-rows">
|
|
|
|
|
+<div class="push-row"><b>【本轮产出】</b><p>你手上有:一套排序规则(证据强度 × 可做性 × 商业价值,任一维 1 分不进前三)、概念四句话、提案的三层读者和「先讲结论」的写法。</p></div>
|
|
|
|
|
+<div class="push-row"><b>【还缺什么】</b><p>缺把上午的机会卡逐个打分排序。不排序,下午四节就只是把 2–3 个机会都做一遍,最后做不深一个。</p></div>
|
|
|
|
|
+<div class="push-row"><b>【下一步】</b><p class="ask">接下来要做 D2-05 机会验证与排序。请先回答:你组 V1.0 候选里,哪一个机会的「可做性」你最有把握?凭什么?</p></div>
|
|
|
|
|
+</div></div>`}]
|
|
|
|
|
+}
|
|
|
|
|
+],
|
|
|
|
|
+after: [
|
|
|
|
|
+{t: '讲师备忘', cls: 'note', html: `
|
|
|
|
|
+<ul>
|
|
|
|
|
+<li><b>客户最期待卖点部分。</b>23 号课前对齐会上,客户原话大意是:研发人员讲故事的能力相对薄弱,5 块钱的产品讲的时候老觉得受限,要针对不同价位把产品故事讲得让消费者更想买。所以第三段的「2. 卖点文案」和第五段的「2. 卖点表达」要多留时间——如果整体超时,先砍概念对比的例子。</li>
|
|
|
|
|
+<li><b>示意图不要用真实品牌元素</b>,提示词里要求「不出现任何品牌 Logo」,避免在法律和品牌层面出问题。</li>
|
|
|
|
|
+<li>下午四节 + 展演的时间很紧(D2-05 至 D2-08 约 3 小时),展演前 10 分钟要收齐各组提案。</li>
|
|
|
|
|
+</ul>`}
|
|
|
|
|
+]
|
|
|
|
|
+}
|
|
|
|
|
+);
|
|
|
|
|
+
|
|
|
|
|
+// m3 · D1 下午:D1-01 ~ D1-04 + D1-N(产出物样卡在 x2-deliv.js,提示词在 x1-prompts.js)
|
|
|
|
|
+window.SEGS = window.SEGS || [];
|
|
|
|
|
+
|
|
|
|
|
+window.SEGS.push(
|
|
|
|
|
+{
|
|
|
|
|
+kind: 'half', id: 'half-d1', label: 'D1 下午', time: '13:30–17:30',
|
|
|
|
|
+theme: '从「我觉得」到「有证据」',
|
|
|
|
|
+lead: '先听完大课一的完整架构,再把这个品类长什么样、什么数字才算证据、竞品在卖什么、我们怀疑什么,一条线走完;最后把怀疑写成今晚能执行、能停下的任务。',
|
|
|
|
|
+goal: [
|
|
|
|
|
+ '<a href="#d101">品类全景图谱</a> + <a href="#d102">本题验证配置卡</a>',
|
|
|
|
|
+ '<a href="#d103">竞品图谱 + 待验证痛点假设</a> + <a href="#d104">增强 AI 自驱任务卡</a>',
|
|
|
|
|
+ '一个决定、三个待答问题;任务卡交给 AI 过夜(<a href="#d1n">调研战报 + 缺口清单</a>明早验收)'
|
|
|
|
|
+],
|
|
|
|
|
+note: '每个环节对应八步 SOP 的哪一步:D1-01 → ① ② ③ 开场;D1-02 定证据纪律;D1-03 → ② 看供给;D1-04 → ③ 看需求的待答清单。'
|
|
|
|
|
+},
|
|
|
|
|
+
|
|
|
|
|
+{
|
|
|
|
|
+kind: 'section', id: 'd101', no: 'D1-01', title: '品类全景扫描', group: 'D1 下午', type: '八步 ① 定课题 · ② 看供给 · ③ 看需求',
|
|
|
|
|
+time: 'D1 15:00–15:40', from: '本组课题卡(课前确认的课题方向:使用情境 + 产品范围)',
|
|
|
|
|
+prompts: ['d101'],
|
|
|
|
|
+industry: {
|
|
|
|
|
+ title: '读图之前:方便面是由哪些格子组成的',
|
|
|
|
|
+ html: `<p>供给树的分支不是随便分的。方便面的供给有四个真实维度,每个维度背后是不同的工艺和成本:</p>
|
|
|
|
|
+<table class="tbl"><thead><tr><th>维度</th><th>分支(课堂数据里的口径)</th><th>为什么这样分</th></tr></thead><tbody>
|
|
|
|
|
+<tr><td><b>形态</b></td><td>袋装 184 · 桶装 95 · 盒装 22 · 杯装 21 · 碗装 20 · 未标注形态 58(共 400)</td><td>泡的、拌的、炒的准备方式不同;桶装/碗装包材占比 25–35%,袋装 12–13%</td></tr>
|
|
|
|
|
+<tr><td><b>工艺</b></td><td>非油炸 105 · 鲜熟/半干 24 · 未标注 271</td><td>油炸脱水、非油炸(热风三段控温)、半干(酸浸 pH 4.2–4.6)是三条产线,成本结构不同</td></tr>
|
|
|
|
|
+<tr><td><b>价格带</b></td><td>≤4 / 4–6 / 6–9 / >9 元每 100g</td><td>同一形态在不同价格带是不同的生意:≤4 元拼规模,>9 元拼溢价</td></tr>
|
|
|
|
|
+<tr><td><b>地域风味</b></td><td>陕西 31 · 武汉热干面 25 · 北京 15 · 江浙沪 10 · 广东 9 · 新疆 7 · 川渝 6</td><td>差异化主要来源之一,但溢价能力要用有效价验证</td></tr>
|
|
|
|
|
+</tbody></table>
|
|
|
|
|
+<p>需求树来自六大人群(G1 上班族 / G2 学生 / G3 户外 / G4 健康 / G5 一人食囤货 / G6 地域)。供需缺口就是「供给树的某个格子,有没有对应人群在同一格子里的原话」。</p>
|
|
|
|
|
+<p class="muted">提醒:400 个商品是按 16 个关键词搜出来的样本,不是全市场;「未标注」不等于「油炸」,只说明标题里没写。</p>`
|
|
|
|
|
+},
|
|
|
|
|
+pillars: [
|
|
|
|
|
+{name: '我已经知道的', tip: '凭经验、凭已有资料就能判断的。不要写「大概」,写具体:哪个产品、哪个价位、哪个渠道。', sample: '康师傅主力在 4 元以下的经典系列;桶面比袋面贵;近两年非油炸的牌子多起来了。'},
|
|
|
|
|
+{name: '我还不知道的', tip: '意识到自己不懂的。这一栏最值钱——AI 会优先补这里。', sample: '非油炸在 ≤4 元价格带里到底是谁在做、做得怎么样?地域风味是不是真能卖高价?'},
|
|
|
|
|
+{name: '我希望搞清楚的', tip: '想通过 AI 补上的具体问题,最好对应到一个会改变结论的判断。', sample: '我们课题所在的「价格带 × 工艺」格子里,主要玩家是谁、有没有空白。'},
|
|
|
|
|
+{name: '我的真实限制', tip: '预算、现有产线、渠道、合规、时间。写清楚,AI 才不会推荐做不到的方向。', sample: '本课题不考虑自建非油炸产线;不能动用主品牌做高溢价。'}
|
|
|
|
|
+],
|
|
|
|
|
+problem: `<p>打开资料库之前,很少有人知道方便面有这么多分法:泡的和拌的、油炸的和非油炸的、4 元的和 14 元的、陕西的和日式的。不问清楚这个品类<b>由哪些格子组成、每个格子谁在占</b>,后面所有「找机会」都只能在自己熟悉的那几格里打转。</p>
|
|
|
|
|
+<p>这一节要回答:<b>本组课题所在的那几格,长什么样?有没有明显缺位?</b>它不负责判断「哪里是机会」——那是 D2 的事。</p>
|
|
|
|
|
+<p>产出物是<b>品类全景图谱</b>:一张三栏表,左边供给树、右边需求树、中间连供给缺口。这张表是整个三个半天的底座,后面每一张卡都会回到它上面找位置。</p>`,
|
|
|
|
|
+how: `
|
|
|
|
|
+<p><b>发起任务。</b>把提示词连同四栏认知盘点一起发给数字分身。提示词只交代本节要什么(供给树、需求树、供需缺口、来源与覆盖),怎么建树、怎么取证由 Skill 决定。</p>
|
|
|
|
|
+<p><b>AI 会做什么:</b>先看本组前序上下文,在资料库(商品 400 条、用户笔记 260 篇、工艺知识库 49 条)里找你能用的部分;按形态、工艺、价格带、地域味道、人群画出供给树和需求树;在两边之间连上「人群 × 场景 × 需求」的实际命中。</p>
|
|
|
|
|
+<p><b>你该怎么回应:</b></p>
|
|
|
|
|
+<ul>
|
|
|
|
|
+<li>它会先给一版树,再指出「哪里证据薄」。<b>证据薄的分支,正是你「我还不知道的」这一栏要核对的地方。</b></li>
|
|
|
|
|
+<li>当它问你「这个课题要不要把 X 算进来」时,回答要能改变结论:说清「为什么算 / 为什么不算」,而不是「都行」。</li>
|
|
|
|
|
+<li>你答不上来、但不影响结构的,直接让它标「待确认」往下走,不要停下来。</li>
|
|
|
|
|
+</ul>`,
|
|
|
|
|
+deliver: `<p>交付物:<b>品类全景图谱</b>。图上必须同时有:三棵树的分支、每一支的计数与来源、以及最后一栏「空白点 × 缺口」。<b>空白点只写格子,不写结论</b>——结论留给 D2-04。</p>`,
|
|
|
|
|
+discuss: `
|
|
|
|
|
+<ul>
|
|
|
|
|
+<li><b>对齐格子。</b>每组把本组课题落在供给树的哪几格贴出来;看有没有两组的格子重叠。重叠不一定是问题,但要知道。</li>
|
|
|
|
|
+<li><b>挑出「薄格子」。</b>每组说出一个「证据薄、值得后面看」的格子,并说清薄在哪里:是商品少,还是用户原话少。</li>
|
|
|
|
|
+<li><b>写下三个待答问题。</b>从「我还不知道的」和「薄格子」里各挑几条,收敛成 3 条,带到 D1-04。</li>
|
|
|
|
|
+</ul>`,
|
|
|
|
|
+check: ['我们能不能在供给树上指出本组课题所在的格子?', '每个空白的判断有没有对应的计数(不是「感觉很少」)?', '有没有把「未标注 271」直接当成「没有」?'],
|
|
|
|
|
+right: ['把「未标注 271」当「标题没写」,不当「油炸」。', '每个格子都写出一个计数和来源文件。', '认知盘点里的「我还不知道的」至少有一条被这次扫描回答了。'],
|
|
|
|
|
+wrong: ['拿搜索关键词的结构当市场份额(400 个是按 16 个关键词搜出的样本)。', '把淘宝/天猫当可靠比价源(59 条里只有 2 条有效价)。', '扫完就下「哪里是机会」的结论——那是 D2 的事。'],
|
|
|
|
|
+push: {
|
|
|
|
|
+ out: '你手上有:品类全景图谱 v1——供给树按「形态 / 工艺 / 价格带 / 地域」四维拆开,需求树按六大人群拆开,并标出了「有供给、没需求原话」和「有需求、没供给」两大类空白点。',
|
|
|
|
|
+ gap: '但图谱只到格子,还没落到「本组课题的格子是谁在占、占得多满」。比如「≤4 元 × 非油炸」这一格,你只知道康师傅 0 个。缺这一格的主要玩家、价格和卖点,D1-03 才能比。',
|
|
|
|
|
+ next: '【下一步】接下来要做 D1-02 验证纪律。请先回答:这张图里,哪一条结论即使换个统计口径也会成立?哪一条会变?(它会决定验证配置卡要锁哪几条口径。)',
|
|
|
|
|
+ who: '本组数字分身 · D1-01 结束时自动输出'
|
|
|
|
|
+},
|
|
|
|
|
+handoff: '交给 D1-02:品类全景图谱 v1 + 本组 3 个「薄格子」+ 用到的数据口径。D1-02 的第一件事,就是拿验证配置卡回查这张图。'
|
|
|
|
|
+},
|
|
|
|
|
+
|
|
|
|
|
+{
|
|
|
|
|
+kind: 'section', id: 'd102', no: 'D1-02', title: '验证纪律', group: 'D1 下午', type: '证据纪律:锁住「什么叫成立」',
|
|
|
|
|
+time: 'D1 15:40–16:05', from: 'D1-01 的品类全景图谱 + 本组 3 个薄格子',
|
|
|
|
|
+prompts: ['d102'],
|
|
|
|
|
+industry: {
|
|
|
|
|
+ title: '背景:口径一换,结论就变——两个真实例子',
|
|
|
|
|
+ html: `<p><b>价格口径。</b>125 条有效价里,54 条标题含「整箱 / 组合 / 混合 / 批发」。按 125 条算,≤4 元占 42.4%;剔除整箱后剩 71 条,≤4 元占 47.9%,中位从 4.17 降到 4.10。康师傅更明显:≤4 元 22 个,其中 15 个是整箱或混合装,剔除后只剩 7 个。</p>
|
|
|
|
|
+<p><b>统计口径。</b>同一个「中位数」,G1 按通常算法是 48.5,汇总文件里的「上中位数」是 52。数字都对,但没写清用的是哪一种,谁也没法复核。</p>
|
|
|
|
|
+<p>这两个例子说明:<b>不是数字错了,是口径没定。</b>验证纪律就是把口径提前定死,写进配置卡,后面每个环节照这张卡办。</p>`
|
|
|
|
|
+},
|
|
|
|
|
+pillars: [
|
|
|
|
|
+{name: '我已经知道的', tip: '本组现在用的口径:价格怎么算、样本怎么剔、哪几条结论最容易被人反驳。', sample: '百克价是标题推算,不是到手价;康师傅 ≤4 元里很多是整箱。'},
|
|
|
|
|
+{name: '我还不知道的', tip: '不知道哪些数据「不算数」,哪些统计要写分母。', sample: '小红书点赞能不能当热度?社媒中位点赞受不受账号体量影响?'},
|
|
|
|
|
+{name: '我希望搞清楚的', tip: '希望在配置卡里锁定的规则。', sample: '保留还是剔除整箱价;词典打标要不要逐条复核。'},
|
|
|
|
|
+{name: '我的真实限制', tip: '本组能拿到什么数据、拿不到什么。', sample: '没有销量、没有复购、没有满意度;不能调用企业内部数据。'}
|
|
|
|
|
+],
|
|
|
|
|
+problem: `<p>每个组都会产出一堆数:多少条、占比多少、中位多少。但没有验证纪律,这些数会在展演时被一句「这个口径对吗」问倒。</p>
|
|
|
|
|
+<p>这一节只定一件事:<b>本组的结论,按什么标准才算成立。</b>资料资格、统计与引文口径、模型分工、分歧处理——四样写进一张卡,后面 12 个环节都用它。顺带回查 D1-01 的图谱,看有没有违规。</p>`,
|
|
|
|
|
+how: `
|
|
|
|
|
+<p><b>发起任务。</b>提示词要求 AI 先给一张验证配置卡的初稿,再逐条挑 D1-01 图谱里最容易被反驳的主张,用配置卡的标准回查。</p>
|
|
|
|
|
+<p><b>AI 会做什么:</b>读本组图谱,找出「只靠一次点赞快照」「只靠词典打标」「混了两种口径」的主张,逐条给出:怎么改口径、改完结论会不会变。</p>
|
|
|
|
|
+<p><b>你该怎么回应:</b></p>
|
|
|
|
|
+<ul>
|
|
|
|
|
+<li>「模型分工」这一项,AI 会问「哪些判断必须人来定」。把 D1-01 里你们最不放心的一条写进去。</li>
|
|
|
|
|
+<li>涉及企业标准(成本、工艺参数、价格政策)的,一律让它标「待确认」,不要让它猜。</li>
|
|
|
|
|
+<li>当它说「这条结论在两种口径下方向一致」,核对两个数字是不是都写出来了。</li>
|
|
|
|
|
+</ul>`,
|
|
|
|
|
+deliver: `<p>交付物:<b>本题验证配置卡</b>。四块内容缺一不可,另外加一列「回查记录」:拿这张卡回查本组图谱后,哪几条主张被降级了。</p>`,
|
|
|
|
|
+discuss: `
|
|
|
|
|
+<ul>
|
|
|
|
|
+<li><b>比卡片。</b>两组交换配置卡,专挑对方「统计口径」问一句:「如果我换一种口径,你的结论变不变?」</li>
|
|
|
|
|
+<li><b>合并。</b>全班讨论后形成一份通用的最低纪律(建议至少包含:写分母、价格双口径、词典词抽读)。</li>
|
|
|
|
|
+<li><b>回查。</b>各组拿通用纪律回查 D1-01 图谱,改掉违规处。</li>
|
|
|
|
|
+</ul>`,
|
|
|
|
|
+check: ['我们的配置卡能不能拦住「康师傅 ≤4 元 22 个」这种容易被反驳的说法?', '词典打标词(辣、贵、量大)有没有规定必须抽读原文?', '有没有硬性的「三种情况分开报」——没查到 / 没权限 / 不存在?'],
|
|
|
|
|
+right: ['所有比例都写分母;中位数写明是哪一种。', '价格、竞品声量都报两种口径。', '把「课堂成果标未经正式确认」写进卡片。'],
|
|
|
|
|
+wrong: ['把「剔除整箱后」的新数字悄悄替掉旧数字,不说明。', '只锁统计口径,不锁「哪些判断必须人来定」。', '写一张很漂亮但没人会遵守的卡——配置卡要短到能贴在桌上。'],
|
|
|
|
|
+push: {
|
|
|
|
|
+ out: '你手上有:本题验证配置卡——五块内容(资料资格 / 统计口径 / 引文口径 / 模型分工 / 分歧处理)+ 一张回查记录(本组图谱里哪几条被降级为假设)。',
|
|
|
|
|
+ gap: '但配置卡只管「证据成不成立」,还不管「证据该怎么比」。比如竞品的卖点怎么比、声量怎么比、正反原话怎么读——这些还没规则。另外图谱里那 3 个薄格子,谁在占、占得怎么样,还是空的。',
|
|
|
|
|
+ next: '【下一步】接下来要做 D1-03 竞品格局。请先回答:本组最关心的是哪一款竞品的卖点组合?你怀疑它哪里没做透?(小组先把这两个问题答出来,再发提示词。)',
|
|
|
|
|
+ who: '本组数字分身 · D1-02 结束时自动输出'
|
|
|
|
|
+},
|
|
|
|
|
+handoff: '交给 D1-03:验证配置卡 + 回查后修订的图谱。D1-03 的竞品比较必须按这张卡的口径做。'
|
|
|
|
|
+},
|
|
|
|
|
+
|
|
|
|
|
+{
|
|
|
|
|
+kind: 'section', id: 'd103', no: 'D1-03', title: '竞品格局', group: 'D1 下午', type: '八步 ② 看供给 · ③ 看需求(起假设)',
|
|
|
|
|
+time: 'D1 16:05–16:45', from: 'D1-01 图谱 + D1-02 验证配置卡',
|
|
|
|
|
+prompts: ['d103'],
|
|
|
|
|
+pillars: [
|
|
|
|
|
+{name: '我已经知道的', tip: '本组熟悉的产品和品牌,它们卖得怎么样、卖什么价位。', sample: '康师傅 BIG 干拌面主要在 4 元出头;日清、拉面说在 6 元以上。'},
|
|
|
|
|
+{name: '我还不知道的', tip: '不熟的竞品在哪个价格带、哪几层卖点、用户正反怎么评价。', sample: '低价非油炸是谁在卖?用户是在夸还是嫌?'},
|
|
|
|
|
+{name: '我希望搞清楚的', tip: '能推翻本组固有认知的竞品信号。', sample: '6 元以上价格带里,用户原话更多是夸还是嫌?'},
|
|
|
|
|
+{name: '我的真实限制', tip: '本组能查的范围。', sample: '竞品社媒每家只有一个关键词,不能当声量。'}
|
|
|
|
|
+],
|
|
|
|
|
+problem: `<p>竞品格局最容易犯的错,是「比声量」——总赞、篇数、热度。但这批数据里声量不可比:每家各一个关键词、约 20 篇,还混着兜售帖和活动帖。而且你们真正要回答的不是「谁声量大」,而是「本组所在的那一格,谁已经占了、占的是什么卖点组合、用户正反都说了什么」。</p>
|
|
|
|
|
+<p>这一节要产出两样:<b>竞品图谱</b>(同格商品与卖点组合矩阵)和 <b>2–3 条待验证痛点假设</b>(可证伪的)。它们是 D1-04 任务卡的原型。</p>`,
|
|
|
|
|
+industry: {
|
|
|
|
|
+ title: '读矩阵之前:为什么拌面这个形态值得单独看',
|
|
|
|
|
+ html: `<p>拌面和汤面的差别不只是「泡好倒水」:</p>
|
|
|
|
|
+<ul>
|
|
|
|
|
+<li><b>准备方式不同。</b>拌面要么开火煮、要么泡好沥干,多一步;这一步对宿舍、办公室、高铁是门槛,对「想吃更接近现做」的场景反而是价值。</li>
|
|
|
|
|
+<li><b>料包结构不同。</b>汤面的味道主要靠汤底(粉包 + 酱包),拌面靠酱料附着在面上,酱包占比更高,香辛料和油的配比逻辑不一样。</li>
|
|
|
|
|
+<li><b>价格带结构不同。</b>康师傅 BIG 干拌面 12 盒整箱的百克价在 3.59–4.09 元之间;竞品里拉面说、白象的拌面价差很大。拌面天然跨两个价格带的生意。</li>
|
|
|
|
|
+</ul>
|
|
|
|
|
+<p>所以竞品格局不能把汤面和拌面混在一起比——混在一起,比出来的只是关键词命中。</p>`
|
|
|
|
|
+},
|
|
|
|
|
+how: `
|
|
|
|
|
+<p><b>发起任务。</b>提示词交代:商品层面比什么(同格商品的卖点组合),社媒层面比什么(卖点组合 + 正反原话),以及要求「区分商品宣称 / 用户回应 / 你的推断」。</p>
|
|
|
|
|
+<p><b>AI 会做什么:</b>按配置卡口径挑出同格商品,整理卖点组合矩阵;从竞品社媒里找「正反都有」的原话;针对本组最关心的 2–3 个问题,提出可证伪的痛点假设。</p>
|
|
|
|
|
+<p><b>你该怎么回应:</b></p>
|
|
|
|
|
+<ul>
|
|
|
|
|
+<li>看到特别高的单条互动,先问是不是活动帖、表情包或重复抓取——再让它判断。</li>
|
|
|
|
|
+<li>「拌面」是标题词,不等于产品形态。让它说明哪些是真实态、哪些只是关键词。</li>
|
|
|
|
|
+<li>痛点假设必须是<b>能被推翻的句子</b>。「用户想要更非油炸」不算,「≤4 元价格带的非油炸用户,愿意为了非油炸多付 1 元」才算。</li>
|
|
|
|
|
+</ul>`,
|
|
|
|
|
+deliver: `<p>交付物:<b>竞品图谱 + 待验证痛点假设</b>。矩阵表里每一个卖点格子只标三种:<span class="chip">宣称</span> 商品标题/详情写的;<span class="chip">回应</span> 用户原话说的;<span class="chip tag">推断</span> 你们自己的判断——三者不混。</p>`,
|
|
|
|
|
+discuss: `
|
|
|
|
|
+<ul>
|
|
|
|
|
+<li><b>认领假设。</b>每组从假设清单里认领 2–3 条,说清「凭什么这么怀疑」。认领的假设要带编号(H1、H2…)。</li>
|
|
|
|
|
+<li><b>互挑。</b>邻组专挑你组假设里的「不可证伪句」,要求改写。</li>
|
|
|
|
|
+<li><b>对齐。</b>确认每条假设都写清了「什么情况推翻它」——这是下一节任务卡的反证路径。</li>
|
|
|
|
|
+</ul>`,
|
|
|
|
|
+check: ['我们的竞品比较有没有用总赞排品牌声量?', '痛点假设是不是一句能被推翻的话?', '矩阵里区分了「商品宣称 / 用户回应 / 我们的推断」吗?'],
|
|
|
|
|
+right: ['先抽掉兜售帖和重复帖,再比。', '找「正反都有」的原话——那才是活着的需求。', '假设写成「在 X 人群、Y 场景、Z 价格带,用户愿意为 W 付出 N」。'],
|
|
|
|
|
+wrong: ['用「日清中位 11.25 元」说明「高端是趋势」(那批样本多是进口礼盒)。', '把「拌面」关键词数量当形态份额。', '假设写成「用户希望产品更好」——不可证伪。'],
|
|
|
|
|
+push: {
|
|
|
|
|
+ out: '你手上有:竞品图谱(同格商品 × 卖点组合矩阵,标了宣称 / 回应 / 推断)和 2–3 条带编号的可证伪痛点假设。',
|
|
|
|
|
+ gap: '假设有了,但还没有验证计划。没有验证路径,今晚 AI 就不知道先查什么、查到哪算完;没有反证路径,它会把所有证据都往「支持」那边读。',
|
|
|
|
|
+ next: '【下一步】接下来要做 D1-04 假设定稿与任务下达。请先回答:这三条假设里,哪一条如果被推翻,本组课题就要换方向?(把这一条排在最前面。)',
|
|
|
|
|
+ who: '本组数字分身 · D1-03 结束时自动输出'
|
|
|
|
|
+},
|
|
|
|
|
+handoff: '交给 D1-04:竞品图谱 + H1–H3 待验证痛点假设(带各假设的「凭什么怀疑 / 什么情况推翻」)。'
|
|
|
|
|
+},
|
|
|
|
|
+
|
|
|
|
|
+{
|
|
|
|
|
+kind: 'section', id: 'd104', no: 'D1-04', title: '假设定稿与任务下达', group: 'D1 下午', type: '③ 看需求 —— 把假设写成今晚能跑的任务',
|
|
|
|
|
+time: 'D1 16:45–17:20', from: 'D1-01 图谱 · D1-02 配置卡 · D1-03 竞品图谱与假设',
|
|
|
|
|
+prompts: ['d104'],
|
|
|
|
|
+pillars: [
|
|
|
|
|
+{name: '我已经知道的', tip: '三条假设,以及各自的证据现状。', sample: 'H1:≤4 元带非油炸用户愿意多付 1 元——现在只有 3 条原话,证据薄。'},
|
|
|
|
|
+{name: '我还不知道的', tip: 'AI 过夜能跑到什么,有什么不能跑。', sample: '外部补证抓不抓得到商品评论?能不能抓抖音?'},
|
|
|
|
|
+{name: '我希望搞清楚的', tip: '最想让今晚回答的那一个问题。', sample: '用户说的「想吃非油炸但贵」,到底是在说价格,还是在说不值?'},
|
|
|
|
|
+{name: '我的真实限制', tip: '今晚只能在授权范围内跑。', sample: '授权外部补证,但只限公开社媒和电商;不碰内部数据。'}
|
|
|
|
|
+],
|
|
|
|
|
+problem: `<p>前两节攒下的假设,如果原样交给 AI 过夜,它会做什么?大概率是:把所有看起来相关的证据都找回来,然后写一份「支持 H1 的证据有……」——因为它不知道这个任务什么时候算做完,也不知道什么情况该停下来。</p>
|
|
|
|
|
+<p>这一节把假设写成<b>一张增强 AI 自驱任务卡</b>:每条假设给一个编号、一个支持路径、一个反证路径、一个停止条件。这张卡决定了今晚 AI 跑得快不快、准不准、停得下停不下。</p>`,
|
|
|
|
|
+how: `
|
|
|
|
|
+<p><b>发起任务。</b>提示词要求 AI 把三条假设整理成任务卡:字段固定,每条假设一行;最多 3 条主线,其余放「备查」。</p>
|
|
|
|
|
+<p><b>AI 会做什么:</b>补齐每条假设的「支持 / 反证 / 停止条件」字段;指出哪些字段拿不准、需要你们回答;只问「会改变结论」的问题。</p>
|
|
|
|
|
+<p><b>你该怎么回应:</b></p>
|
|
|
|
|
+<ul>
|
|
|
|
|
+<li>停止条件必须是<b>看得见的东西</b>:「找到 5 条反例」「读完 G4 全部 39 篇」——不能写「查得差不多了」。</li>
|
|
|
|
|
+<li>任务边界要写清:只执行这张卡里的假设,不扩展新方向;不需要补证就直接成报。</li>
|
|
|
|
|
+<li>数据来源与权限:先复用资料库;外部补证是否授权、去哪里补,由本组当场决定。</li>
|
|
|
|
|
+</ul>`,
|
|
|
|
|
+deliver: `<p>交付物:<b>增强 AI 自驱任务卡</b>。一页卡,每条假设一行;页面底部三个签字位:<b>本组确认</b>、<b>验证配置卡编号</b>、<b>授权状态</b>(仅资料库 / 可外部补证)。</p>`,
|
|
|
|
|
+discuss: `
|
|
|
|
|
+<ul>
|
|
|
|
|
+<li><b>收齐。</b>每组的任务卡交给助教归档——今晚 AI 就按卡执行,明早按卡验收。</li>
|
|
|
|
|
+<li><b>互查。</b>两组交换任务卡,专挑「停止条件」:它能不能被程序判定?「读完了」「差不多了」打回去。</li>
|
|
|
|
|
+<li><b>定决定。</b>每组用一句话写下<b>本组今天做出的决定</b>——「我们要不要做 X」或「我们选 A 还是 B」。这个决定写进任务卡抬头。</li>
|
|
|
|
|
+</ul>`,
|
|
|
|
|
+check: ['每条假设都有编号、支持路径、反证路径、停止条件吗?', '停止条件能不能被程序判断(数字或清单),而不是「查得差不多」?', '授权状态写清了吗:只跑资料库,还是可以外部补证?'],
|
|
|
|
|
+right: ['主线假设不超过 3 条,其余放「备查」。', '反证路径写得和支持路径一样具体。', '任务卡抬头写清本组的决定——今晚的一切是为它服务的。'],
|
|
|
|
|
+wrong: ['只写支持路径,不写反证路径——AI 会形成偏见。', '停止条件写「调查充分」——没法执行。', '夜里让它「顺便再想想新方向」——范围一扩,什么深度都没有。'],
|
|
|
|
|
+push: {
|
|
|
|
|
+ out: '你手上有:增强 AI 自驱任务卡(H1–H3 + 支持 / 反证 / 停止条件 + 授权状态)和本组今天做出的决定。D1 下午四个环节的产出物齐了。',
|
|
|
|
|
+ gap: '但任务卡还没跑。今晚 AI 要按它跑 16 个小时,明早先验收,而不是先看它找到了什么。',
|
|
|
|
|
+ next: '【下一步】今晚执行 D1-N 第二轮调研。请在交卡前回答:如果今晚只能得到一条答案,你最想要哪一条?(就这一条,写进任务卡抬头。)',
|
|
|
|
|
+ who: '本组数字分身 · D1-04 结束时自动输出'
|
|
|
|
|
+},
|
|
|
|
|
+handoff: '交给 D1-N(晚间执行)与明早 D2-01(验收):任务卡原件 + 验证配置卡编号 + 本组的决定。'
|
|
|
|
|
+},
|
|
|
|
|
+
|
|
|
|
|
+{
|
|
|
|
|
+kind: 'section', id: 'd1n', no: 'D1-N', title: '第二轮调研(晚间执行)', group: 'D1 下午', type: 'AI 自驱 · 人下线',
|
|
|
|
|
+time: 'D1 17:20 – D2 08:00(AI 跑,约 16 小时)', from: 'D1-04 的增强 AI 自驱任务卡 + D1-02 验证配置卡',
|
|
|
|
|
+prompts: ['d1n'],
|
|
|
|
|
+pillars: [
|
|
|
|
|
+{name: '我已经知道的', tip: '今晚要验证的是哪几条假设、用到哪些资料。', sample: 'H1–H3,资料库 + 授权的外部补证。'},
|
|
|
|
|
+{name: '我还不知道的', tip: '明早应该重点看什么。', sample: '三条假设里哪一条证据最薄?'},
|
|
|
|
|
+{name: '我希望搞清楚的', tip: '今晚第一件事做什么。', sample: '先把资料库原件查一遍,再判断要不要补证。'},
|
|
|
|
|
+{name: '我的真实限制', tip: '今晚 AI 只能在这个范围内工作。', sample: '只执行任务卡,不扩方向;找不到的按三类分开报。'}
|
|
|
|
|
+],
|
|
|
|
|
+problem: `<p>今晚不需要人坐在电脑前。AI 按任务卡执行:先复用资料库原件,检查每条假设被支持到什么程度;只对「会改变判断的真实缺口」决定是否外部补证;最后按假设键做 VOC 预聚类,产出战报和缺口清单。</p>
|
|
|
|
|
+<p>这一节的产出物明早 D2-01 第一件事就验收。所以任务卡里的停止条件和授权状态,今晚就会被严格执行——写成什么样,明早就收到什么样。</p>`,
|
|
|
|
|
+how: `
|
|
|
|
|
+<p><b>发起任务。</b>把任务卡编号和验证配置卡编号发给 AI,让它按卡执行。人不在场,AI 按 Skill 规则自行判断是否补证。</p>
|
|
|
|
|
+<p><b>AI 会做什么:</b>按假设键逐条查找、整理、比对证据;按停止条件停;产出战报、缺口清单(三类分开)、VOC 预聚类。</p>
|
|
|
|
|
+<p><b>你该怎么回应(明早):</b></p>
|
|
|
|
|
+<ul>
|
|
|
|
|
+<li>先看缺口,再看结论。缺口是「今晚最重要的发现」也说不定。</li>
|
|
|
|
|
+<li>看到「没查到」先问是哪一类:没搜到、平台不给、还是东西不存在。</li>
|
|
|
|
|
+<li>任何一条结论,先用编号回到原件核对。</li>
|
|
|
|
|
+</ul>`,
|
|
|
|
|
+deliver: `<p>交付物:<b>调研战报 + 缺口清单</b>。战报按假设键一页写:假设 → 结论(支持 / 部分支持 / 推翻 / 未回应)→ 证据(带原件)→ 缺口(三类)→ 对下一步的影响。</p>`,
|
|
|
|
|
+discuss: `
|
|
|
|
|
+<p>明早 D2-01 用。这一节没有现场讨论。</p>`,
|
|
|
|
|
+check: ['战报里每条结论是不是都能回到原件?', '缺口是否分了「没查到 / 没权限 / 不存在」三类?', '每条假设的停止条件是否被尊重?'],
|
|
|
|
|
+right: ['战报抬头写明执行范围(资料库 / 外部补证)与执行时间。', '证据按假设键归档,明早能一条条回读。', '「不支持」比「支持」更值得看——它会让今晚的任务更有价值。'],
|
|
|
|
|
+wrong: ['战报里混着「AI 推测」和「原件证据」,不区分。', '为了「看起来有成果」,把薄证据写成「支持」。', '超出任务卡范围,自己找了 20 个新方向。'],
|
|
|
|
|
+push: {
|
|
|
|
|
+ out: '你手上有:调研战报(按假设键逐条)+ 缺口清单(三类)+ VOC 预聚类。这是三源交叉的第一批结构化的用户原声。',
|
|
|
|
|
+ gap: '但战报是 AI 的初判,不符合验证配置卡的思路。比如「辣」「贵」这类词典打标结果,需要人工抽读;部分结论可能没有对应的原件。',
|
|
|
|
|
+ next: '【下一步】明早先做 D2-01 调研验收。请先回答:晚上跑出来的结论里,你一眼看上去觉得「不对劲」的是哪一条?为什么?',
|
|
|
|
|
+ who: '本组数字分身 · D1-N 结束(凌晨)自动输出;明早一打开就能看到'
|
|
|
|
|
+},
|
|
|
|
|
+handoff: '明早交给 D2-01:调研战报 + 缺口清单 + VOC 预聚类,按假设键归档。'
|
|
|
|
|
+}
|
|
|
|
|
+);
|
|
|
|
|
+
|
|
|
|
|
+// m4 · D2 上午:D2-01 / D2-02 / D2-03 / D2-04(产出物样卡在 x2-deliv.js,提示词在 x1-prompts.js)
|
|
|
|
|
+window.SEGS = window.SEGS || [];
|
|
|
|
|
+
|
|
|
|
|
+window.SEGS.push(
|
|
|
|
|
+{
|
|
|
|
|
+kind: 'half', id: 'half-d2a', label: 'D2 上午', time: '09:00–12:20',
|
|
|
|
|
+theme: '从「有证据」到「有机会」',
|
|
|
|
|
+lead: '先验收昨晚的战报,再听大课二把「机会」定义清楚;然后把用户原声分层,把供给矩阵和需求对上,最后在三条线的交叉处写下候选机会。',
|
|
|
|
|
+goal: [
|
|
|
|
|
+ '<a href="#d201">战报验收记录</a>(含缺口与可用资料集合)',
|
|
|
|
|
+ '<a href="#d202">聚类表 + 痛点库 + KANO 表 + 人群 × 场景矩阵</a>,<a href="#d203">产品机会及指标初表</a>',
|
|
|
|
|
+ '<a href="#d204">候选机会清单 V1.0</a>:2–3 张机会卡,三源证据齐全'
|
|
|
|
|
+],
|
|
|
|
|
+note: '对应八步 SOP:D2-01 收口 ③;D2-02 至 D2-03 是 ④ 找交叉;D2-04 是 ④ 与 ⑤ 的交接——机会成立之后,下午才能排序。'
|
|
|
|
|
+},
|
|
|
|
|
+
|
|
|
|
|
+{
|
|
|
|
|
+kind: 'section', id: 'd201', no: 'D2-01', title: '调研验收', group: 'D2 上午', type: '③ 看需求 —— 先验收,再使用',
|
|
|
|
|
+time: 'D2 09:00–09:25', from: 'D1-N 的调研战报 + 缺口清单,按假设键归档',
|
|
|
|
|
+prompts: ['d201'],
|
|
|
|
|
+pillars: [
|
|
|
|
|
+{name: '我已经知道的', tip: '昨晚任务卡里三条假设,本组最想看哪一条。', sample: 'H1 最想看:≤4 元带的非油炸用户愿不愿意多付 1 元。'},
|
|
|
|
|
+{name: '我还不知道的', tip: '战报里哪些是 AI 推断、哪些有原件。', sample: '「23 篇提到」的 23 条原文在哪?'},
|
|
|
|
|
+{name: '我希望搞清楚的', tip: '最想先核对哪一条结论。', sample: 'G4「健康」29 篇里,有多少是在说方便面?'},
|
|
|
|
|
+{name: '我的真实限制', tip: '验收只能看战报和原件,不能重新跑。', sample: '时间只有 25 分钟。'}
|
|
|
|
|
+],
|
|
|
|
|
+problem: `<p>早上第一件事不是看战报里找到了什么,而是看它<b>能不能被信</b>。昨晚 AI 按任务卡跑了一整夜,它会把「支持」和「没找到」混着写,把「没搜到」和「数据不存在」写成一句话,把词典打标当成用户态度。</p>
|
|
|
|
|
+<p>这一节用一张检查表把战报过一遍:<b>假设回应率、原件覆盖率、分母口径</b>,三项合格,战报才能进入后面的环节。</p>`,
|
|
|
|
|
+how: `
|
|
|
|
|
+<p><b>发起任务。</b>提示词要求 AI 从战报里抽出一张验收记录:每条假设回应到什么程度、支撑结论的原件能不能找到、所有比例的分母写没写;缺口是否分了三类。</p>
|
|
|
|
|
+<p><b>AI 会做什么:</b>逐条核对假设回应;抽读词典打标词条目;把「未回应」的假设标出来,并说明为什么不回应。</p>
|
|
|
|
|
+<p><b>你该怎么回应:</b></p>
|
|
|
|
|
+<ul>
|
|
|
|
|
+<li>随机抽 5 条结论,自己点开原件读一遍——AI 说「支持」,读原文是不是在支持。</li>
|
|
|
|
|
+<li>对于「部分支持」,问清楚剩下没被支持的那部分具体是什么缺口。</li>
|
|
|
|
|
+<li>有「AI 推断」的结论,逐条标记「降级为假设」。</li>
|
|
|
|
|
+</ul>`,
|
|
|
|
|
+deliver: `<p>交付物:<b>战报验收记录</b>。三列检查 + 一张可用资料集合:验收合格、能直接用的原件放「可用」;不合格的降级为「假设」或「待确认」。</p>`,
|
|
|
|
|
+discuss: `
|
|
|
|
|
+<ul>
|
|
|
|
|
+<li><b>报缺口。</b>每组用一句话说「昨晚最重要的一个缺口」——不是最重要的发现,是缺口。</li>
|
|
|
|
|
+<li><b>全班汇总缺口类型。</b>把各组缺口归成三类,看哪一类最多;哪一类是靠更多时间能补上的,哪一类是资料本身就没有。</li>
|
|
|
|
|
+<li><b>确认可用资料集合。</b>这个集合是 D2-02 分层编码的输入。</li>
|
|
|
|
|
+</ul>`,
|
|
|
|
|
+check: ['三条假设的回应率算出来了吗?', '支撑结论的原件,能点开读到吗?', '每个比例都写了分母吗?'],
|
|
|
|
|
+right: ['抽 5 条读原件,从「支持」里找出 1 条误读。', '把「未回应」的假设留下来,并写清缺口是什么。', '可用资料集合里,只放回到原件能读通的条目。'],
|
|
|
|
|
+wrong: ['战报「写得很好看」就通过。', '所有「没找到」合并成一句「资料库里没有」。', '跳过验收,直接开始聚类——错的前提会带偏后面的所有环节。'],
|
|
|
|
|
+push: {
|
|
|
|
|
+ out: '你手上有:战报验收记录——假设回应率、原件覆盖率、分母口径三项合格,外加一份可用资料集合(按假设键归档、能回读原件)。',
|
|
|
|
|
+ gap: '这批资料还是散的——同一句「想吃非油炸但嫌贵」,在不同人群里可能是完全不同的意思。而且你能感觉到「辣」「健康」这些词打标有误读,但还没在资料里统一纠正。',
|
|
|
|
|
+ next: '【下一步】先听大课二,把「机会」定义清楚;然后做 D2-02 VOC 证词聚类。请先回答:你组的可用资料里,最多的是哪一类原话(主妇囤货、学生夜宵、上班加班、户外、健康、地域)?',
|
|
|
|
|
+ who: '本组数字分身 · D2-01 结束时自动输出'
|
|
|
|
|
+},
|
|
|
|
|
+handoff: '交给大课二 + D2-02:战报验收记录 + 可用资料集合(按假设键归档)。'
|
|
|
|
|
+},
|
|
|
|
|
+
|
|
|
|
|
+{
|
|
|
|
|
+kind: 'section', id: 'd202', no: 'D2-02', title: 'VOC 证词聚类', group: 'D2 上午', type: '④ 找交叉 —— 把原话拆成四层',
|
|
|
|
|
+time: 'D2 10:15–11:05', from: 'D2-01 战报验收记录 + 可用资料集合',
|
|
|
|
|
+prompts: ['d202'],
|
|
|
|
|
+pillars: [
|
|
|
|
|
+{name: '我已经知道的', tip: '本组可用资料里,最突出的一两种原话。', sample: '上班族组里反复出现「晚上九点才吃」。'},
|
|
|
|
|
+{name: '我还不知道的', tip: '同一个词,不同人群是不是一个意思。', sample: '「健康」在 G4 里是在说减脂,还是在说少添加?'},
|
|
|
|
|
+{name: '我希望搞清楚的', tip: '哪些痛点是「反复出现但没有被解决」的。', sample: '「想吃非油炸但觉得贵」到底有几个人。'},
|
|
|
|
|
+{name: '我的真实限制', tip: '原话只能用语料原文,不能用 AI 改写的。', sample: '每条原话都带笔记 ID。'}
|
|
|
|
|
+],
|
|
|
|
|
+problem: `<p>「辣」「贵」「量大」这些词,词典打标出来的频次在课堂上都会看到——但大课二已经讲过,同一个数字换一个读法,结论就反了。所以聚类不能从词频开始,要从<b>四个层次</b>开始:<b>人群 → 场景 → JTBD → 痛点</b>。四层混在一起,就会出现「辣是最大痛点」这种明显的误读。</p>
|
|
|
|
|
+<p>这一节要产出四张表:聚类表(每个原话落在哪一层)、痛点库(带态度判定的痛点)、KANO 表(每条痛点属于什么需求类型)、人群 × 场景矩阵。</p>`,
|
|
|
|
|
+industry: {
|
|
|
|
|
+ title: '读原话之前:四层为什么不能混',
|
|
|
|
|
+ html: `<p>拿一句最常见的原话:「晚上九点才吃饭,我只点半碗」。</p>
|
|
|
|
|
+<table class="tbl compact"><thead><tr><th>层</th><th>这一句里对应什么</th><th>如果混了会怎样</th></tr></thead><tbody>
|
|
|
|
|
+<tr><td><b>人群</b></td><td>加班到很晚的上班族</td><td>只看人数,看不出是谁</td></tr>
|
|
|
|
|
+<tr><td><b>场景</b></td><td>晚上九点的加班餐</td><td>看不到「时间晚了」这个条件</td></tr>
|
|
|
|
|
+<tr><td><b>JTBD</b></td><td>想在已经很晚、胃口一般的时候吃一点、不折腾</td><td>被误读成「想要小份量」</td></tr>
|
|
|
|
|
+<tr><td><b>痛点</b></td><td>夜里胃口小,但也担心重辣重油</td><td>「点半碗」「避免重辣重油」被当成两个独立偏好</td></tr>
|
|
|
|
|
+</tbody></table>
|
|
|
|
|
+<p>这是 G1 里唯一一条真在说「辣」有点问题的原话。如果四层混了,它会被并入「辣」的 39 次里,看不出它其实是一个人、一个场景的一句话。</p>`
|
|
|
|
|
+},
|
|
|
|
|
+how: `
|
|
|
|
|
+<p><b>发起任务。</b>提示词要求 AI 把可用资料的原话按四层拆开;对每个痛点词,抽读原文,标注态度(正 / 负 / 读不出);输出四张表。</p>
|
|
|
|
|
+<p><b>AI 会做什么:</b>先把打标词的原话抽出来读;再按人群、场景做矩阵;再给每条痛点贴一个 KANO 类型(基本型 / 期望型 / 兴奋型),标注「频次先验」——意思是这是基于频次的假设,不是问卷调查结果。</p>
|
|
|
|
|
+<p><b>你该怎么回应:</b></p>
|
|
|
|
|
+<ul>
|
|
|
|
|
+<li>如果你在原文里看到和 AI 判定相反的句子,直接写在表格旁边,要求它重新判。</li>
|
|
|
|
|
+<li>KANO 类型拿不准的,先标「待确认」,后面用 D2-05 的验证来补。</li>
|
|
|
|
|
+<li>不要为了让表好看,把「读不出态度」的原话删掉——它们本身是数据的一部分。</li>
|
|
|
|
|
+</ul>`,
|
|
|
|
|
+deliver: `<p>交付物:<b>四张表</b>——聚类表、痛点库、KANO 表(频次先验)、人群 × 场景矩阵。每一格都必须带笔记 ID,能回读原文。</p>`,
|
|
|
|
|
+discuss: `
|
|
|
|
|
+<ul>
|
|
|
|
|
+<li><b>挑三句。</b>每组从痛点库里挑三句最有代表性的原话,贴在白板上——读出来,让别组判断它属于哪个人群、哪个场景。</li>
|
|
|
|
|
+<li><b>对照大课二。</b>你们组里有没有出现「AI 初判」和「人工复核」相反的条目?挑一条讲。</li>
|
|
|
|
|
+<li><b>找空白格。</b>在人群 × 场景矩阵里,找到有原话但没有产品对应的格子——这是 D2-03 的输入。</li>
|
|
|
|
|
+</ul>`,
|
|
|
|
|
+check: ['每一句原话都落在唯一一层(人群/场景/JTBD/痛点)吗?', '打标词都有态度判定(正/负/读不出)吗?', '矩阵每一格都有笔记 ID 吗?'],
|
|
|
|
|
+right: ['把「读不出态度」的原话单独列为一类。', '对「辣」「贵」「量大」先抽读原文,再决定归哪一类。', 'KANO 表标明「频次先验」,不冒充问卷结果。'],
|
|
|
|
|
+wrong: ['把所有含「汤」的原话都归为「想要汤面」。', '按打标频次直接排名次,不抽读。', 'KANO 类型拍脑袋,没有任何依据。'],
|
|
|
|
|
+push: {
|
|
|
|
|
+ out: '你手上有:四张表——聚类表、痛点库、KANO 表(频次先验)、人群 × 场景矩阵,每一格都能回读笔记 ID。',
|
|
|
|
|
+ gap: '这些原点声音还只在「需求」这一侧。它们还没有和「供给」对上——哪一格需求有原话,但市场上没有对应的产品?哪个产品有供给,但需求原话是空的?这个对照还没有做。',
|
|
|
|
|
+ next: '【下一步】接下来要做 D2-03 风味趋势与矩阵空白。请先回答:你组的人群 × 场景矩阵里,哪一个格子「原话最多,但最不知道该买什么」?',
|
|
|
|
|
+ who: '本组数字分身 · D2-02 结束时自动输出'
|
|
|
|
|
+},
|
|
|
|
|
+handoff: '交给 D2-03:四张表 + 3 个「有原话、没产品」的格子。'
|
|
|
|
|
+},
|
|
|
|
|
+
|
|
|
|
|
+{
|
|
|
|
|
+kind: 'section', id: 'd203', no: 'D2-03', title: '风味趋势与矩阵空白', group: 'D2 上午', type: '④ 找交叉 —— 需求对上供给',
|
|
|
|
|
+time: 'D2 11:05–11:45', from: 'D2-02 四张表 + D1 的品类全景图谱',
|
|
|
|
|
+prompts: ['d203'],
|
|
|
|
|
+pillars: [
|
|
|
|
|
+{name: '我已经知道的', tip: '本组课题所在的格子、以及需求最强的格子。', sample: 'G4「健康」29 篇最强,G6「口味新鲜」23 篇最强。'},
|
|
|
|
|
+{name: '我还不知道的', tip: '「空白」到底是别人没做,还是没人要。', sample: '≤4 元 × 非油炸,另外 14 个 SKU 卖得怎么样?'},
|
|
|
|
|
+{name: '我希望搞清楚的', tip: '哪几格是「有需求 + 没供给」或者「有供给 + 没需求」。', sample: '6–9 元价格带里,用户原话是不是多了?'},
|
|
|
|
|
+{name: '我的真实限制', tip: '数据是单次快照,不能判趋势方向。', sample: '没有时间序列,看不到涨跌。'}
|
|
|
|
|
+],
|
|
|
|
|
+problem: `<p>需求侧四张表做完了,现在是 ④ 找交叉:把「需求强度」放到「供给矩阵」上。看到空白时,初学者最容易写「这里是机会」——但大课二已经讲过:<b>空白不是机会,是待验证的问题</b>。</p>
|
|
|
|
|
+<p>这一节要产出<b>产品机会及指标初表</b>:每个机会都要带上它需要验证的指标,而且按「结构 / 变化 / 未覆盖」三类分开——这三类的证据强度完全不同,放进同一张表会互相抬价。</p>`,
|
|
|
|
|
+industry: {
|
|
|
|
|
+ title: '读矩阵之前:三类空白,说法完全不同',
|
|
|
|
|
+ html: `<p>把每次搜索当成一次快照:<b>结构</b>是现在长什么样,<b>变化</b>是过去一段时间往哪走,<b>未覆盖</b>是该有的东西还没有。单次快照能看见结构,看不见变化。</p>
|
|
|
|
|
+<p><b>结构</b>:价格带 53 / 43 / 13 / 16(≤4 / 4–6 / 6–9 / >9),非油炸 105 个 SKU 里 49 个是未识别品牌;拌面是标题词——63.7% 的商品标题含「拌面」,但其中大量是营销词。</p>
|
|
|
|
|
+<p><b>未覆盖</b>:≤4 元 × 非油炸,康师傅 0 个。但同一格有 14 个别人家的有效价 SKU。</p>
|
|
|
|
|
+<p><b>变化</b>:这批数据只有一次快照,<b>不能判</b>「非油炸在涨」「地域风味在火」。要判变化,必须拿同一关键词隔一段时间再采一次。</p>`
|
|
|
|
|
+},
|
|
|
|
|
+how: `
|
|
|
|
|
+<p><b>发起任务。</b>提示词要求 AI 把需求矩阵和供给矩阵叠在一起,按三类(结构 / 变化 / 未覆盖)列出空白,并给每格一个「机会指标」(要验证什么、用什么数据能验证)。</p>
|
|
|
|
|
+<p><b>AI 会做什么:</b>找出「需求有原话 + 供给为空」的格子;找出「供给满、需求原话薄」的格子(这是危险区,可能没人要);把价格带、工艺、形态、地域四个维度交叉。</p>
|
|
|
|
|
+<p><b>你该怎么回应:</b></p>
|
|
|
|
|
+<ul>
|
|
|
|
|
+<li>任何「在涨」的说法,问它有没有时间序列;没有,改写成「现在是 X」。</li>
|
|
|
|
|
+<li>「未覆盖」的格子,先查同格竞品——如果有,空白就不成立,它是「被谁占着」。</li>
|
|
|
|
|
+<li>指标要能在接下来的三个小时内被验证,或明确写「本次不验证」。</li>
|
|
|
|
|
+</ul>`,
|
|
|
|
|
+deliver: `<p>交付物:<b>产品机会及指标初表</b>。一行一个机会,五列:空白格(人群 × 场景 × 价格带 × 工艺)、类别(结构 / 变化 / 未覆盖)、供给证据、需求证据、需要验证的指标。</p>`,
|
|
|
|
|
+discuss: `
|
|
|
|
|
+<ul>
|
|
|
|
|
+<li><b>数一数。</b>每组报「结构 / 未覆盖」各几个、「变化」几个。如果许多组在「变化」上写了判断,一起看时间序列——没有的,全降为「结构」。</li>
|
|
|
|
|
+<li><b>查同格。</b>挑本组一个「未覆盖」格,说出同格已有的其他品牌 SKU 有几个、是什么——有,就写「已有 N 个,其中谁」。</li>
|
|
|
|
|
+<li><b>挑指标。</b>每组从表里选出最关键的 2 个指标,准备 D2-04 用。</li>
|
|
|
|
|
+</ul>`,
|
|
|
|
|
+check: ['表里有没有「在涨」的结论?时间序列在哪?', '每个「未覆盖」格,是否查过同格竞品?', '每个机会都带了「需要验证的指标」吗?'],
|
|
|
|
|
+right: ['「≤4 元 × 非油炸」写成「未覆盖(康师傅 0 个,同格对手 14 个 SKU)」——带条件。', '有原话、没供给 ≠ 机会;有供给、没原话 ≠ 需求。两者都标「待验证」。', '「变化」类单独列一栏,标「本次不验证」。'],
|
|
|
|
|
+wrong: ['把「搜索页找不到」当成市场空白。', '用「日清在 6 元以上」推出「6 元以上是趋势」。', '把三个类别混在一张排序表里,互相比较。'],
|
|
|
|
|
+push: {
|
|
|
|
|
+ out: '你手上有:产品机会及指标初表——每个空白格都带类别(结构 / 变化 / 未覆盖)、供给证据、需求证据、需要验证的指标。',
|
|
|
|
|
+ gap: '这些空白还只是「纸条」,没有一条用户原话直接贴在它上面。D2-04 要求三源交叉,现在只有供给和需求两边,工艺这一边(这一格做不做得出来)还没写。',
|
|
|
|
|
+ next: '【下一步】接下来要做 D2-04 三源交叉推理。请先回答:你组最想先认证的 2 个空白格里,你作为研发人认为哪一个「工艺上最有可能做出来」?为什么?',
|
|
|
|
|
+ who: '本组数字分身 · D2-03 结束时自动输出'
|
|
|
|
|
+},
|
|
|
|
|
+handoff: '交给 D2-04:机会及指标初表 + 2 个关键指标。'
|
|
|
|
|
+},
|
|
|
|
|
+
|
|
|
|
|
+{
|
|
|
|
|
+kind: 'section', id: 'd204', no: 'D2-04', title: '三源交叉推理', group: 'D2 上午', type: '④ 找交叉 · ⑤ 验机会(交接)',
|
|
|
|
|
+time: 'D2 11:45–12:20', from: 'D2-02 四张表 + D2-03 机会及指标初表',
|
|
|
|
|
+prompts: ['d204'],
|
|
|
|
|
+pillars: [
|
|
|
|
|
+{name: '我已经知道的', tip: '本组最想认证的 2 个空白格,以及用户原话在哪。', sample: '≤4 元 × 非油炸;「想吃非油炸但贵」。'},
|
|
|
|
|
+{name: '我还不知道的', tip: '用户原话和商品事实有没有真正对上。', sample: '说「贵」的人,是在嫌哪个价格带贵?'},
|
|
|
|
|
+{name: '我希望搞清楚的', tip: '工艺这一边这一格做不做得出来。', sample: '≤4 元带,非油炸工艺成本能不能撑住。'},
|
|
|
|
|
+{name: '我的真实限制', tip: '数据不含销量、复购、满意度。', sample: '不能写「这种产品一定好卖」。'}
|
|
|
|
|
+],
|
|
|
|
|
+problem: `<p>上午的最后一步:把供给、用户原声、工艺条件三条线交在一起。<b>三条线都指向同一个方向,才写进机会卡;只有两条线指向的,标「候选」;只有一条的,只能写「线索」。</b></p>
|
|
|
|
|
+<p>这一节产出<b>候选机会清单 V1.0</b>:每张机会卡 6 个字段——一句话结论、三源证据、反例、还缺什么、下一步验证、工艺注释。</p>`,
|
|
|
|
|
+industry: {
|
|
|
|
|
+ title: '读机会卡之前:工艺注释怎么写',
|
|
|
|
|
+ html: `<p>机会卡的第六栏「工艺注释」是这张卡里唯一由你(研发侧)亲手写的部分。AI 只能标「待确认」,因为 AI 不知道你们产线的真实条件。</p>
|
|
|
|
|
+<p>好的工艺注释写成这样:<b>「热风三段控温(80–90℃ / 90–100℃ / 70–80℃)在行业通行取值下,可把面饼做到含水 8–12%。但 ≤4 元价格带要求成本压低,非油炸工艺路线的成本能不能撑住,取决于 5 分钟复水时间是否可接受。」</b></p>
|
|
|
|
|
+<p>带具体参数、带条件、带风险——不是「非油炸可行」。</p>`
|
|
|
|
|
+},
|
|
|
|
|
+how: `
|
|
|
|
|
+<p><b>发起任务。</b>提示词要求 AI 对 D2-03 的 2 个空白格做三源交叉;每张机会卡都必须有至少一条供给证据、一条用户原话、一条工艺条件(或标「待工艺确认」);给出一句话结论和一句话反例。</p>
|
|
|
|
|
+<p><b>AI 会做什么:</b>找到支持的机会证据;找反例;列缺口;给出下一步验证方向。工艺注释留给组里填写。</p>
|
|
|
|
|
+<p><b>你该怎么回应:</b></p>
|
|
|
|
|
+<ul>
|
|
|
|
|
+<li>「三条线都指向」的工作由你做:AI 只负责给证据,判断由你拍板。</li>
|
|
|
|
|
+<li>工艺注释写具体参数,不写「可行」「能做」。</li>
|
|
|
|
|
+<li>缺口要写「这会影响哪一个结论」。</li>
|
|
|
|
|
+</ul>`,
|
|
|
|
|
+deliver: `<p>交付物:<b>候选机会清单 V1.0</b>。2–3 张机会卡,每张 6 个字段。结论必须是「一个可被推翻的判断」。</p>`,
|
|
|
|
|
+discuss: `
|
|
|
|
|
+<ul>
|
|
|
|
|
+<li><b>半天展演。</b>一组上台讲它的一张机会卡,其他组提「一句反驳」——反驳可以针对任何一条证据。</li>
|
|
|
|
|
+<li><b>挑最脆弱的证据。</b>每组指出自己卡里最薄弱的一条证据,并说它将如何补强。</li>
|
|
|
|
|
+<li><b>报「未覆盖」。</b>提醒各组的工艺注释:哪一栏是你们写的,哪一栏是 AI 待确认的。</li>
|
|
|
|
|
+</ul>`,
|
|
|
|
|
+check: ['每张机会卡三源各有证据,或明确标「待确认」?', '一句话结论能否被推翻,反例是否写明?', '工艺注释是你们写的,还是 AI 代写的?'],
|
|
|
|
|
+right: ['三源都薄的机会,标为「线索」而不是「候选」。', '反例写得和支持证据一样具体。', '工艺注释写参数和风险,不写「可行」。'],
|
|
|
|
|
+wrong: ['为了让卡好看,把「待工艺确认」删掉。', '把三源证据里的某一个来源反复引用,看起来证据很多。', '结论写「这是一个机会」——不可证伪。'],
|
|
|
|
|
+push: {
|
|
|
|
|
+ out: '你手上有:候选机会清单 V1.0——2–3 张机会卡,每张 6 个字段,三源证据、反例、缺口和工艺注释都写出来了。D2 上午的产出物齐了。',
|
|
|
|
|
+ gap: '这些卡还没有排过序。哪个值得先做、哪个应该放一放、哪个根本做不了,还没有判断;而且「做不做得出来、划不划算」这一块还没算。',
|
|
|
|
|
+ next: '【下一步】下午先听大课三(收敛与表达),再做 D2-05 排序。请先回答:你组这几张卡里,哪一张你最没把握?没把握在哪一条证据上?',
|
|
|
|
|
+ who: '本组数字分身 · D2-04 结束时自动输出'
|
|
|
|
|
+},
|
|
|
|
|
+handoff: '交给大课三 + D2-05:候选机会清单 V1.0(每张卡的 6 个字段)。'
|
|
|
|
|
+}
|
|
|
|
|
+);
|
|
|
|
|
+
|
|
|
|
|
+// m5 · D2 下午:D2-05 / D2-06 / D2-07 / D2-08(产出物样卡在 x2-deliv.js,提示词在 x1-prompts.js)
|
|
|
|
|
+window.SEGS = window.SEGS || [];
|
|
|
|
|
+
|
|
|
|
|
+window.SEGS.push(
|
|
|
|
|
+{
|
|
|
|
|
+kind: 'half', id: 'half-d2p', label: 'D2 下午', time: '13:30–17:30',
|
|
|
|
|
+theme: '从「有机会」到「能落地」',
|
|
|
|
|
+lead: '听大课三把收敛、表达、交付讲清楚;然后把候选机会排序、回推能不能做、把卖点讲成用户听得懂的话,最后交出一份能过会的提案。',
|
|
|
|
|
+goal: [
|
|
|
|
|
+ '<a href="#d205">优先级机会清单 + 未知项单列</a>,<a href="#d206">回推表 + 候选机会清单 V2.0</a>',
|
|
|
|
|
+ '<a href="#d207">价值主张卡 + 卖点清单</a>',
|
|
|
|
|
+ '<a href="#d208">概念提案 + 候选清单 V3.0 + 成果导航</a>'
|
|
|
|
|
+],
|
|
|
|
|
+note: '对应八步 SOP:D2-05 是 ⑤ 验机会;D2-06 是 ⑥ 算可行;D2-07 是 ⑦ 定卖点;D2-08 是 ⑧ 出方案。'
|
|
|
|
|
+},
|
|
|
|
|
+
|
|
|
|
|
+{
|
|
|
|
|
+kind: 'section', id: 'd205', no: 'D2-05', title: '机会验证与排序', group: 'D2 下午', type: '⑤ 验机会 —— 多个机会怎么选',
|
|
|
|
|
+time: 'D2 14:20–15:05', from: '候选机会清单 V1.0(2–3 张机会卡)',
|
|
|
|
|
+prompts: ['d205'],
|
|
|
|
|
+pillars: [
|
|
|
|
|
+{name: '我已经知道的', tip: '每张卡的三源证据和反例。', sample: 'A 卡证据最厚,但工艺注释写「要新产线」。'},
|
|
|
|
|
+{name: '我还不知道的', tip: '哪张卡缺一个关键数据,现在打不了分。', sample: '消费者愿意多付 1 元这件事,没测过。'},
|
|
|
|
|
+{name: '我希望搞清楚的', tip: '排序后谁第一、为什么。', sample: '证据强、能做的,是不是同一个。'},
|
|
|
|
|
+{name: '我的真实限制', tip: '只有 45 分钟。', sample: '先用课堂证据排序,缺的数据写进未知项。'}
|
|
|
|
|
+],
|
|
|
|
|
+problem: `<p>多张机会卡摆在面前,最容易的排序法就是「我觉得」。大课三给了一套规则:<b>证据强度 × 可做性 × 商业价值</b>,三个维度各打 1–3 分;<b>任何一维得 1 分的机会,不能排进前三。</b></p>
|
|
|
|
|
+<p>这一节还要做一件更重要的事:<b>把未知项单独列出来</b>。有些机会打不了分,不是因为它差,是因为缺一个数据——这些要进「未知项表」,而不是被塞进低分。</p>`,
|
|
|
|
|
+how: `
|
|
|
|
|
+<p><b>发起任务。</b>提示词要求 AI 对 V1.0 每张机会卡打三个维度分,并给每个分数写出依据和风险;不能打分的,单独列为未知项,写清缺什么数据。</p>
|
|
|
|
|
+<p><b>AI 会做什么:</b>从每张卡的证据里统计证据强度;按工艺注释判可做性;按价格带和竞品情况初判商业价值(这项最需要你复核)。</p>
|
|
|
|
|
+<p><b>你该怎么回应:</b></p>
|
|
|
|
|
+<ul>
|
|
|
|
|
+<li>商业价值这一维,AI 的初判很可能过于乐观,用你的研发经验和价格带常识逐条复核。</li>
|
|
|
|
|
+<li>能做的机会往往在「≤4 元」这些拥挤的格子——不要因为「容易做」就排第一。</li>
|
|
|
|
|
+<li>如果三张卡都得了 2 分,找出得分原因里的「同一条」——通常是一起缺同一个数据。</li>
|
|
|
|
|
+</ul>`,
|
|
|
|
|
+deliver: `<p>交付物:<b>优先级机会清单 + 未知项单列</b>。排序表里每一行三个维度分值 + 依据一句话;未知项表里写「缺什么数据、能用什么方式补、本次能不能补」。</p>`,
|
|
|
|
|
+discuss: `
|
|
|
|
|
+<ul>
|
|
|
|
|
+<li><b>亮分。</b>各组把每张卡的三个分数贴在白板上,看有没有「任何一维 1 分却排进前三」的情况。</li>
|
|
|
|
|
+<li><b>互问。</b>邻组挑你的最高分,问:「这一分是课堂证据给的,还是你的经验给的?」——经验给的要在表里写明。</li>
|
|
|
|
|
+<li><b>锁定主攻机会。</b>每组确定 1–2 个主攻机会,带到 D2-06。</li>
|
|
|
|
|
+</ul>`,
|
|
|
|
|
+check: ['三个维度的分数都有依据,且写明是「证据」还是「经验」吗?', '有没有任何一维 1 分的机会被排进前三?', '未知项有没有和「低分」分开?'],
|
|
|
|
|
+right: ['每个分数后边写一句话依据。', '商业价值维度的分数逐条由本组复核。', '未知项表里写清「本次能不能补」。'],
|
|
|
|
|
+wrong: ['三个维度都打 3 分,等于没排。', '把证据强但做不出来的机会排第一。', '未知项直接写成 1 分。'],
|
|
|
|
|
+push: {
|
|
|
|
|
+ out: '你手上有:优先级机会清单(1–2 个主攻机会,三维打分带依据)+ 未知项表。',
|
|
|
|
|
+ gap: '排序只回答了「更值得先做」,还没有回答「做起来要花多少、划不划算」。现在主攻机会只有一个「可做性」分,没有成本、价格带和两条路(B0 / O1)的比较。',
|
|
|
|
|
+ next: '【下一步】接下来要做 D2-06 商业及供应链回推。请先回答:你组主攻机会的工艺路径,是「在现有配比上改」,还是「新增一条并行的产品线」?',
|
|
|
|
|
+ who: '本组数字分身 · D2-05 结束时自动输出'
|
|
|
|
|
+},
|
|
|
|
|
+handoff: '交给 D2-06:优先级机会清单 + 主攻机会(1–2 个)+ 未知项表。'
|
|
|
|
|
+},
|
|
|
|
|
+
|
|
|
|
|
+{
|
|
|
|
|
+kind: 'section', id: 'd206', no: 'D2-06', title: '商业及供应链回推', group: 'D2 下午', type: '⑥ 算可行 —— 做不做得出来、划不划算',
|
|
|
|
|
+time: 'D2 15:05–15:50', from: 'D2-05 优先级机会清单 + 主攻机会',
|
|
|
|
|
+prompts: ['d206'],
|
|
|
|
|
+pillars: [
|
|
|
|
|
+{name: '我已经知道的', tip: '主攻机会的形态、工艺路径,以及成本的大致量级。', sample: '非油炸、汤面、袋装,目标 ≤4 元/100g。'},
|
|
|
|
|
+{name: '我还不知道的', tip: 'B0 / O1 两条路的费用结构。', sample: '换线要投多少?新增一条并行产品线的营运资金怎么算?'},
|
|
|
|
|
+{name: '我希望搞清楚的', tip: '这个主攻机会在财务上值不值得立项。', sample: '两条路哪条更值?'},
|
|
|
|
|
+{name: '我的真实限制', tip: '课堂数据不含你们的真实成本。', sample: '用行业值估算,正式数据标「待确认」。'}
|
|
|
|
|
+],
|
|
|
|
|
+problem: `<p>商业可行性不是「算个成本就结束」,而是<b>算哪条路更值</b>。对比两条路:<b>B0</b> 现状(在现有配比上改),<b>O1</b> 改后(按目标方案做)。三条费用要分开算:一次费用、资本投入、营运资金。</p>
|
|
|
|
|
+<p>研发侧在这一节是本行:成本结构、代工价、产线条件、工艺可行性,你们比 AI 清楚得多。AI 负责把数字摆到台面上,你负责判断它们是不是靠谱。</p>`,
|
|
|
|
|
+industry: {
|
|
|
|
|
+ title: '读回推表之前:供应链口径一览',
|
|
|
|
|
+ html: `<table class="tbl"><thead><tr><th>口径</th><th>知识库数值</th><th>怎么用</th></tr></thead><tbody>
|
|
|
|
|
+<tr><td>代工价</td><td>2.1–3.2 元/袋(不含税运),对应零售 4–6 元;2026-10-29 单次 1688 询价</td><td>成本区间估算</td></tr>
|
|
|
|
|
+<tr><td>成本结构(袋装)</td><td>面饼 34–38% / 调料 24–30% / 包材 12–13% / 人工 10% / 能耗 5–7%</td><td>拆解报价</td></tr>
|
|
|
|
|
+<tr><td>成本结构(桶装)</td><td>纸碗 + 盖膜 0.30–0.50 元/个,包材占比升至 25–35%</td><td>判断形态</td></tr>
|
|
|
|
|
+<tr><td>装箱 / 外箱 / 配送 / 损耗</td><td>知识库无条目</td><td>必须向业务方取得,标「待确认」</td></tr>
|
|
|
|
|
+<tr><td>区域分工</td><td>河南 = 面饼 + 调料;四川 = 复合调味;广东 = 非油炸 + 包材;山东 = 调味粉 + 设备;湖北 = 热干面 / 碱水面</td><td>寻源</td></tr>
|
|
|
|
|
+<tr><td>验厂比例</td><td>抽样 60 条货源中仅 42% 为验厂工厂</td><td>供应商风险</td></tr>
|
|
|
|
|
+<tr><td>产线投资</td><td>90g 袋面线 10–13 万元;非油炸挤压熟化机 6.8 万元/台</td><td>资本投入</td></tr>
|
|
|
|
|
+</tbody></table>
|
|
|
|
|
+<p class="muted">代工价不是长期报价;成本结构是行业通行值。合规:GB 17400-2015 对水分 ≤10%、酸价 ≤1.8mg/g、过氧化值 ≤0.25g/100g 有要求;GB 2760-2024 对添加剂有限量——具体以标准正文为准。</p>`
|
|
|
|
|
+},
|
|
|
|
|
+how: `
|
|
|
|
|
+<p><b>发起任务。</b>提示词要求 AI 对主攻机会拆两条路(B0 / O1)、三条费用,并列出工艺与合规条件;所有课堂估算都标「课堂估算」;缺的数据标「待确认」。</p>
|
|
|
|
|
+<p><b>AI 会做什么:</b>用知识库的代工价和成本结构做区间估算;比较两条路的增量;列出合规条件。</p>
|
|
|
|
|
+<p><b>你该怎么回应:</b></p>
|
|
|
|
|
+<ul>
|
|
|
|
|
+<li>「B0 / O1 比较只在收入、渠道费用、损耗比例都相同时才成立」——这个条件不成立的,写清楚。</li>
|
|
|
|
|
+<li>涉及你们真实产线数字的,标「待内部确认」。</li>
|
|
|
|
|
+<li>把 AI 的估算和你的经验对比:差得多的,以你的经验为先,但写清依据。</li>
|
|
|
|
|
+</ul>`,
|
|
|
|
|
+deliver: `<p>交付物:<b>回推表 + 候选机会清单 V2.0</b>。回推表是对主攻机会的成本拆解;V2.0 是加入商业条件后更新过的主攻机会卡——在 V1.0 六字段基础上,加「成本区间 / 价格带 / 两条路对比 / 合规条件」。</p>`,
|
|
|
|
|
+discuss: `
|
|
|
|
|
+<ul>
|
|
|
|
|
+<li><b>亮成本。</b>每组主攻机会的「单位成本估算」和「目标价格带」贴出来。</li>
|
|
|
|
|
+<li><b>互问。</b>邻组问:「你这条成本估算里,哪一项是 AI 拍的,哪一项是你们确认的?」</li>
|
|
|
|
|
+<li><b>更新版本。</b>把 V1.0 的机会卡按回推表修订,标为 V2.0。</li>
|
|
|
|
|
+</ul>`,
|
|
|
|
|
+check: ['B0 / O1 两条路的三条费用都拆开了吗?', '哪些是课堂估算、哪些是经验值、哪些是待确认,分开了吗?', '合规条件(水分、酸价、添加剂)列了吗?'],
|
|
|
|
|
+right: ['成本按区间报,不报单一数字。', '工艺注释写清「换线 / 改线 / 新增产线」哪一条。', '所有 AI 估算都标「课堂估算」。'],
|
|
|
|
|
+wrong: ['把 B0 / O1 比较建立在不同营收假设上。', '把代工价当成长期成本报价。', '合规只写在文末一句,没有落到工艺参数上。'],
|
|
|
|
|
+push: {
|
|
|
|
|
+ out: '你手上有:回推表(两条路、三条费用、工艺与合规条件)+ 候选机会清单 V2.0。主攻机会现在有了成本、价格带和合规约束。',
|
|
|
|
|
+ gap: '有了产品,还没有一句话让用户想买。用户可能根本不知道自己为什么需要它——「这是热风非油炸」不等于「这碗面值 4 块钱」。卖点还没有。',
|
|
|
|
|
+ next: '【下一步】接下来要做 D2-07 价值主张与核心卖点。请先回答:你组用户原话里,哪一句最像「用户希望别人替他说出来的话」?(这一句往往是卖点的起点。)',
|
|
|
|
|
+ who: '本组数字分身 · D2-06 结束时自动输出'
|
|
|
|
|
+},
|
|
|
|
|
+handoff: '交给 D2-07:候选机会清单 V2.0 + 回推表 + 用户原话里最有代表性的一句话。'
|
|
|
|
|
+},
|
|
|
|
|
+
|
|
|
|
|
+{
|
|
|
|
|
+kind: 'section', id: 'd207', no: 'D2-07', title: '价值主张与核心卖点', group: 'D2 下午', type: '⑦ 定卖点 —— 把研发侧翻译成市场侧',
|
|
|
|
|
+time: 'D2 15:50–16:30', from: '候选机会清单 V2.0 + D2-02 痛点库原话',
|
|
|
|
|
+prompts: ['d207'],
|
|
|
|
|
+pillars: [
|
|
|
|
|
+{name: '我已经知道的', tip: '本组主攻产品的关键工艺参数、成本和价格带。', sample: '≤4 元、非油炸热风三段、成本压得住。'},
|
|
|
|
|
+{name: '我还不知道的', tip: '用户最能被打动的是哪一点。', sample: '他更在意「不油」还是「便宜」?'},
|
|
|
|
|
+{name: '我希望搞清楚的', tip: '一条能被复述的卖点。', sample: '能不能一句话说清?'},
|
|
|
|
|
+{name: '我的真实限制', tip: '不能宣传功能、不能夸大。', sample: '不能写「健康」「减脂」「养生」。'}
|
|
|
|
|
+],
|
|
|
|
|
+problem: `<p>客户最期待这一节。课前沟通时原话大意是:<b>研发人员讲故事的能力相对薄弱,5 块钱的产品讲的时候老觉得受限,要针对不同价位把产品故事讲得让消费者更想买、让品牌方一听就觉得不一样。</b></p>
|
|
|
|
|
+<p>讲故事的前提不是写得漂亮,而是<b>证据允许说到哪</b>。这一节先定边界,再在边界内写多版本。研发侧的关键词——「非油炸」「热风三段控温」「含水 8–12%」——要翻译成市场侧能听见、用户能记住的话。</p>`,
|
|
|
|
|
+industry: {
|
|
|
|
|
+ title: '读卖点之前:证据的边界',
|
|
|
|
|
+ html: `<table class="tbl"><thead><tr><th>可以说的</th><th>不能说的</th><th>为什么</th></tr></thead><tbody>
|
|
|
|
|
+<tr><td>「非油炸面饼」「热风干燥工艺」</td><td>「健康」「无负担」「养胃」</td><td>工艺描述是事实;健康宣称需要依据和法规语境</td></tr>
|
|
|
|
|
+<tr><td>「更少油:含油率从 X% 降到 Y%」</td><td>「减脂」「瘦身」</td><td>比较只能基于本产品历史数据,功效词不能碰</td></tr>
|
|
|
|
|
+<tr><td>「面条更筋道」「复水 5 分钟」</td><td>「更好吃」(没有对照测评)</td><td>口感参数、时间参数是客观的;口味判断要有对照</td></tr>
|
|
|
|
|
+<tr><td>「4 元一袋的经典味道」</td><td>「比 XX 品牌好吃」</td><td>比较广告需要合规支撑</td></tr>
|
|
|
|
|
+</tbody></table>
|
|
|
|
|
+<p class="muted">具体宣称以 GB 17400-2015 及现行广告法规为准;课堂只给出边界原则。</p>`
|
|
|
|
|
+},
|
|
|
|
|
+how: `
|
|
|
|
|
+<p><b>发起任务。</b>提示词要求 AI 先写价值主张卡(一句话主张 + 三条收益 + 三条证据 + 证据边界),再按价格带、人群、场景各写 2–3 个版本的卖点。</p>
|
|
|
|
|
+<p><b>AI 会做什么:</b>从 V2.0 机会卡和 D2-02 原话里提取价值主张;把研发语言翻译成用户语言;生成不同价位的版本。</p>
|
|
|
|
|
+<p><b>你该怎么回应:</b></p>
|
|
|
|
|
+<ul>
|
|
|
|
|
+<li>每个版本都要问:「这句话的每一半,有没有证据?」没有的删掉。</li>
|
|
|
|
|
+<li>「健康」「养生」这类词一律换掉,除非客户确认可以合规使用。</li>
|
|
|
|
|
+<li>用你的研发经验判断:AI 生成的卖点里,哪一条在技术上是「说得过去但做不到」——删掉。</li>
|
|
|
|
|
+</ul>`,
|
|
|
|
|
+deliver: `<p>交付物:<b>价值主张卡 + 卖点清单</b>。价值主张卡:一句主主张、三条收益(用户能感知的)、三条证据(组件 + 原话)、三行证据边界(能说什么 / 不能说什么 / 合规标示)。卖点清单:不同版本 × 适合的渠道/人群。</p>`,
|
|
|
|
|
+discuss: `
|
|
|
|
|
+<ul>
|
|
|
|
|
+<li><b>互相听。</b>每组读一句主主张,让别组复述——复述出来的和原句差多少,说明「用户听得懂」这件事。</li>
|
|
|
|
|
+<li><b>找越界。</b>别组从你的卖点里挑出所有「没证据或越界」的说法,标红。</li>
|
|
|
|
|
+<li><b>选版本。</b>确定主推版本 1 个 + 备选版本 1–2 个。</li>
|
|
|
|
|
+</ul>`,
|
|
|
|
|
+check: ['每一条卖点都能对到一条原话或一个商品事实吗?', '有没有出现「健康」「减脂」「养胃」等未经验证的宣称?', '不同价位/人群有没有不同版本?'],
|
|
|
|
|
+right: ['卖点从用户原话起步,再做加工。', '每写一句,用「证据允许说到哪」测一次。', '留一份「不能说的话」清单。'],
|
|
|
|
|
+wrong: ['用行业术语写卖点(「三段控温」)——用户听不懂。', '把「健康」当前缀随便加。', '只写一个版本,然后拿去套所有渠道。'],
|
|
|
|
|
+push: {
|
|
|
|
|
+ out: '你手上有:价值主张卡(一句主张 + 三条收益 + 三条证据 + 证据边界)和卖点清单(主推版 + 备选版 + 不能说的话)。',
|
|
|
|
|
+ gap: '主张和卖点有了,但还没有进入一份完整的提案——决策圈的读者看不到结论,协同圈看不到成本,生态圈看不到渠道适配。',
|
|
|
|
|
+ next: '【下一步】接下来要做 D2-08 概念提案与分享。请先回答:你组一句话能把整个提案讲完吗?写下来,再和已有的价值主张比一比。',
|
|
|
|
|
+ who: '本组数字分身 · D2-07 结束时自动输出'
|
|
|
|
|
+},
|
|
|
|
|
+handoff: '交给 D2-08:价值主张卡 + 卖点清单(主推版 + 备选版)。'
|
|
|
|
|
+},
|
|
|
|
|
+
|
|
|
|
|
+{
|
|
|
|
|
+kind: 'section', id: 'd208', no: 'D2-08', title: '概念提案与分享', group: 'D2 下午', type: '⑧ 出方案 —— 一份能过会的提案',
|
|
|
|
|
+time: 'D2 16:30–17:30', from: '候选机会清单 V2.0 + 价值主张卡 + 卖点清单',
|
|
|
|
|
+prompts: ['d208'],
|
|
|
|
|
+pillars: [
|
|
|
|
|
+{name: '我已经知道的', tip: '本组主攻机会的全部证据和成本。', sample: 'V2.0 + 回推表 + 卖点。'},
|
|
|
|
|
+{name: '我还不知道的', tip: '过会时最可能被问倒的问题。', sample: '这个价格带用户真的接受吗?'},
|
|
|
|
|
+{name: '我希望搞清楚的', tip: '提案要说服谁、先讲什么。', sample: '第一页写一句结论。'},
|
|
|
|
|
+{name: '我的真实限制', tip: '5 分钟、5 页以内。', sample: '结论 → 依据 → 风险 → 行动。'}
|
|
|
|
|
+],
|
|
|
|
|
+problem: `<p>最后一步:把散落的分析串成一份能过会的材料,并且能当着所有人的面讲清楚<b>为什么选这个</b>。</p>
|
|
|
|
|
+<p>这一节产出三样:<b>概念提案</b>(一句话 + 一页纸 + 全案)、<b>候选清单 V3.0</b>(经过质询后更新的版本)、<b>成果导航</b>(每一份产出物分别存在哪里、结营后怎么用)。</p>`,
|
|
|
|
|
+how: `
|
|
|
|
|
+<p><b>发起任务。</b>提示词要求 AI 按「结论 → 依据 → 风险 → 行动」的结构,把 V2.0、回推表、价值主张卡串成提案;同时生成一句话版和一页版。</p>
|
|
|
|
|
+<p><b>AI 会做什么:</b>生成提案草稿;列出质询清单(决策圈、协同圈、生态圈各三个问题);把矛盾处标出来,不删。</p>
|
|
|
|
|
+<p><b>你该怎么回应:</b></p>
|
|
|
|
|
+<ul>
|
|
|
|
|
+<li>你做减法:AI 的草稿一定太长,留下结论和支撑结论的那几条。</li>
|
|
|
|
|
+<li>把矛盾写进提案——两段分析互相打架的地方,往往是最值得在展演里讲的地方。</li>
|
|
|
|
|
+<li>答案必须在第一页:<b>做什么、为什么现在、要什么资源。</b></li>
|
|
|
|
|
+</ul>`,
|
|
|
|
|
+deliver: `<p>交付物:<b>概念提案 + 候选清单 V3.0 + 成果导航</b>。成果导航是一页目录:13 份产出物各自的保存位置、一份对应一句话的用途、结营后第一周先从哪一份开始用。</p>`,
|
|
|
|
|
+discuss: `
|
|
|
|
|
+<ul>
|
|
|
|
|
+<li><b>展演。</b>每组 5 分钟:一句话、一页、结论、风险、行动。</li>
|
|
|
|
|
+<li><b>质询。</b>其他组按「质询记录表」提出至少一个问题;提案组当场回应「答得出 / 待确认 / 答不出」。</li>
|
|
|
|
|
+<li><b>更新 V3.0。</b>质询后,把得到的修正写进 V3.0 机会卡。</li>
|
|
|
|
|
+</ul>`,
|
|
|
|
|
+check: ['第一页能不能用一句话说清「做什么、为什么现在、要什么资源」?', '提案里的每个数字能不能回到产出物?', '质询记录里的「答不出」有没有写进 V3.0?'],
|
|
|
|
|
+right: ['一句话、一页、全案三层都准备。', '把「答不出」的问题保留在提案里,作为下一步。', '成果导航能直接指导结营后第一周。'],
|
|
|
|
|
+wrong: ['堆满证据,结论在最后一页。', '把矛盾藏起来,让展演看起来更顺。', '质询后匆匆改掉数据,不记录修改理由。'],
|
|
|
|
|
+push: {
|
|
|
|
|
+ out: '你手上有:概念提案(一句话 + 一页 + 全案)、候选清单 V3.0、成果导航,以及质询记录。三个半天的产出物全部齐了。',
|
|
|
|
|
+ gap: '结营之后,最大的风险是这份「成果导航」躺在文件柜里。下周一开始、第一项任务,它必须回到真实的工作里。',
|
|
|
|
|
+ next: '【下一步】结营后第一周陪练:拿 V3.0 回来,选一个「答不出」的问题先补。请先回答:哪一份产出物你最想在第一周就回到部门里用?(写在成果导航第一行。)',
|
|
|
|
|
+ who: '本组数字分身 · D2-08 结束时自动输出'
|
|
|
|
|
+},
|
|
|
|
|
+handoff: '交给结营与训后陪练:概念提案 + V3.0 + 成果导航 + 质询记录。'
|
|
|
|
|
+}
|
|
|
|
|
+);
|
|
|
|
|
+
|
|
|
|
|
+// m6 · 附录:A 六个反常识 / B 行业结构速查 / C 常见问题 / D 话术对照
|
|
|
|
|
+window.SEGS = window.SEGS || [];
|
|
|
|
|
+
|
|
|
|
|
+window.SEGS.push(
|
|
|
|
|
+{
|
|
|
|
|
+kind: 'appx', id: 'appx-a', title: '附录 A · 六个反常识的数据发现', group: '附录',
|
|
|
|
|
+lead: '每一个都是课堂数据跑出来的「AI 初版结论」与「人工复核后」的对比。课上演示两三个,其余请自己翻一遍——它们决定了你在每个环节里该对 AI 的哪些数字多想一层。',
|
|
|
|
|
+traps: [
|
|
|
|
|
+{
|
|
|
|
|
+ n: 1, title: '「辣」:39 条里只有 1 条是嫌辣', tag: '词典打标 ≠ 用户态度;必须读原文',
|
|
|
|
|
+ ai: `<p>六组笔记里「辣」共出现 39 次,在 G1/G2/G3/G4/G5/G6 全部排痛点第一;最集中的 G6 有 10 条。「辣味过重是用户最大的痛点,建议全线降低辣度。」</p>`,
|
|
|
|
|
+ human: `<p>39 条逐条读原文:<b>正向(「辣得过瘾」「香辣美味」等当卖点夸)29 条、读不出态度 9 条、明确嫌辣只有 1 条</b>(G1「晚上九点才吃饭,我只点半碗」|「避免重辣重油」)。</p>
|
|
|
|
|
+<p>能写的结论只有:<b>用户高度关注辣味,正反都有</b>——不能写「用户嫌辣」。</p>`,
|
|
|
|
|
+ quote: 'G3「买一盒自热狮子头火锅一个肘子,大吃一顿」正文:「香辣美味,肥而不腻」;G6「一人食就做这个酸汤米线」正文:「酸酸辣辣,开胃又过瘾!」',
|
|
|
|
|
+ where: '看到「辣」「香」「麻」这类口味词,抽 5 条读原文,判正 / 负 / 读不出。',
|
|
|
|
|
+ note: '关联环节:<a href="#d103">D1-03</a>、<a href="#d202">D2-02</a>;<a href="#big2">大课二</a>'
|
|
|
|
|
+},
|
|
|
|
|
+{
|
|
|
|
|
+ n: 2, title: '「贵」:11 条里真正抱怨价格的很少', tag: '机器会犯最低级的错,人必须复核',
|
|
|
|
|
+ ai: `<p>「贵」在六组出现 11 次,G6 地域组 9 次最多——「地域风味用户对价格敏感,建议主打性价比。」</p>`,
|
|
|
|
|
+ human: `<p>G6 的 9 条全是「<b>贵州</b>」被词典识别成「贵」:如「贵州到底想怎样 连速食都那么好吃」「为什么在贵州带回来的羊肉粉这么好吃」「#南山婆贵州酸汤」。G3 的 1 条是高铁外卖配送费。逐条读下来,没有一条是真正在抱怨方便面的价格。</p>`,
|
|
|
|
|
+ quote: 'G6 正文:「贵州到底想怎样 连速食都那么好吃」',
|
|
|
|
|
+ where: '对单字、短词打标,先查它可能是别的词的一部分(贵州 / 贵价,重辣 / 重庆辣……)。',
|
|
|
|
|
+ note: '关联环节:<a href="#d202">D2-02</a>;与第 1 条一起讲'
|
|
|
|
|
+},
|
|
|
|
|
+{
|
|
|
|
|
+ n: 3, title: '「量大」:出现 2 次,都是夸', tag: '频次高不等于问题',
|
|
|
|
|
+ ai: `<p>样本里「量大」是高频词,说明用户很在意份量,建议推出大份量产品。</p>`,
|
|
|
|
|
+ human: `<p>全部 260 篇里「量大」只出现 <b>2 次</b>,都是正面:「山姆必买神仙早餐‼️便宜量大又好吃!」、「面是碱水面…量大一顿能吃很饱」。它不是高频词,更不是痛点。</p>`,
|
|
|
|
|
+ quote: 'G5 标题:「便宜量大又好吃」;G2 正文:「量大一顿能吃很饱」',
|
|
|
|
|
+ where: '看到「量大 / 量小 / 份量」,区分「夸」和「嫌」;频次说的是「有人提到」,不是「有人不满」。',
|
|
|
|
|
+ note: '关联环节:<a href="#d103">D1-03</a>、<a href="#d202">D2-02</a>'
|
|
|
|
|
+},
|
|
|
|
|
+{
|
|
|
|
|
+ n: 4, title: '价格:125 个有效价里 54 条是整箱 / 组合 / 批发', tag: '口径不同,结论会变',
|
|
|
|
|
+ ai: `<p>≤4 元/100g 占 42.4%(53/125),是最大价格带;康师傅在这一带有 22 个 SKU,主战场就在 ≤4 元。</p>`,
|
|
|
|
|
+ human: `<p>54 条标题含「整箱 / 组合 / 混合 / 批发」(整箱 54、批发 6、箱装 5、混合 3,有重叠)。剔除后只剩 71 条:≤4 元 34 条(47.9%)、4–6 元 19 条(26.8%)、6–9 元 6 条(8.5%)、>9 元 12 条(16.9%)。</p>
|
|
|
|
|
+<p>康师傅 ≤4 元的 22 个里,15 个是整箱/混合装,剔除后只剩 7 个。</p>
|
|
|
|
|
+<table><thead><tr><th>价格带</th><th>125 条</th><th>71 条</th></tr></thead><tbody>
|
|
|
|
|
+<tr><td>≤4 元</td><td>53(42.4%)</td><td>34(47.9%)</td></tr>
|
|
|
|
|
+<tr><td>4–6 元</td><td>43(34.4%)</td><td>19(26.8%)</td></tr>
|
|
|
|
|
+<tr><td>6–9 元</td><td>13(10.4%)</td><td>6(8.5%)</td></tr>
|
|
|
|
|
+<tr><td>>9 元</td><td>16(12.8%)</td><td>12(16.9%)</td></tr>
|
|
|
|
|
+<tr><td>中位(元/100g)</td><td>4.17(P25 3.54 / P75 5.86)</td><td>4.10</td></tr>
|
|
|
|
|
+</tbody></table>
|
|
|
|
|
+<p><b>结论方向不因口径改变,但份额和样本量必须按口径说。</b>整箱款的百克价是「总价 ÷ 总克数」摊出来的,不是单包零售价。</p>`,
|
|
|
|
|
+ quote: '康师傅:「经典红烧牛肉面五连包 104g*5」「大食袋红烧牛肉面五连包 138g*5」——同一款,一个算整箱散装、一个算单份。',
|
|
|
|
|
+ where: '任何价格结论,同时写两个分母:125 与 71;品牌结论写「有效价 35 个中 22 个,其中 15 个为整箱」。',
|
|
|
|
|
+ note: '关联环节:<a href="#d101">D1-01</a>、<a href="#d102">D1-02</a>、<a href="#d203">D2-03</a>'
|
|
|
|
|
+},
|
|
|
|
|
+{
|
|
|
|
|
+ n: 5, title: '汤达人:声量被兜售帖稀释,中位从 6 升到 29', tag: '样本污染会误导判断',
|
|
|
|
|
+ ai: `<p>汤达人社媒中位点赞 6,六家竞品最低——「汤达人用户讨论冷清,品牌老化」。</p>`,
|
|
|
|
|
+ human: `<p>20 篇里 10 篇点赞 ≤5,多为海外兜售帖:「洛杉矶汤达人 $10/3 大包」「洛杉矶汤达人一箱 $20/30 袋」「巴黎厨房的面柜可以补起来啦」「华人零食仓库」。</p>
|
|
|
|
|
+<p>剔除正文含「洛杉矶 / 巴黎 / 现货 / 批发 / 零食仓 / 清仓」的帖子后剩 16 篇,<b>中位从 6 升到 29</b>(其余五家剔除后中位不变:阿宽 78、日清 66、农心 321.5、拉面说 115……)。</p>
|
|
|
|
|
+<p class="muted">口径说明:剔除规则不同,结果也不同——只剔 2 条洛杉矶帖剩 17 篇、中位 21;只按标题去重不剔代购剩 19 条、中位 5。所以剔除规则本身要写下来。</p>`,
|
|
|
|
|
+ quote: '汤达人「汤达人吃出虫」(5 赞)——真正有用的质量信号,也埋在这一堆兜售帖里。',
|
|
|
|
|
+ where: '竞品比较前先看「点赞 ≤5」的条数占比;剔除不要只按标题,要读正文。',
|
|
|
|
|
+ note: '关联环节:<a href="#d103">D1-03</a>;<a href="#big2">大课二</a>'
|
|
|
|
|
+},
|
|
|
|
|
+{
|
|
|
|
|
+ n: 6, title: '一条内容被重复算了 4 次', tag: '去重是基本功',
|
|
|
|
|
+ ai: `<p>「答应我,一定要试试这个面条!!!」在多篇内容里出现,说明这个话题热度很高。</p>`,
|
|
|
|
|
+ human: `<p>这条在小红书上以不同标题被多次抓取:竞品社媒 120 行里同标题出现 4 次(阿宽、农心 ×2、拉面说),其中农心与拉面说两行正文完全相同;G5 的 Top1(11,522 赞)也是同一篇。</p>
|
|
|
|
|
+<p class="muted">另外:农心总赞 75,484 里 47,173(62.5%)是一条 aespa 活动帖;电商 400 行里有 11 个标题重复、多出 14 行(去重后 386 个唯一标题)。</p>`,
|
|
|
|
|
+ quote: '「答应我,一定要试试这个面条!!!」——桃桃的做饭日记(日更)',
|
|
|
|
|
+ where: '统计前按标题 / 作者 / 链接去重;看到特别高的单条互动,先查是不是活动、表情包或重复抓取。',
|
|
|
|
|
+ note: '关联环节:<a href="#d103">D1-03</a>、<a href="#d202">D2-02</a>'
|
|
|
|
|
+}
|
|
|
|
|
+],
|
|
|
|
|
+practice: {
|
|
|
|
|
+ title: '现场练习:用第 1 个反常识检验本组',
|
|
|
|
|
+ html: `<p>拿本组 D1-03 竞品图谱里最有把握的一条结论,做三件事:①找出支撑它的原文;②随机抽 5 条读态度;③重写这条结论,看改了多少。改完的结论交给邻组,问一句:「这句话是不是也能被原文推翻?」</p>`
|
|
|
|
|
+}
|
|
|
|
|
+},
|
|
|
|
|
+
|
|
|
|
|
+{
|
|
|
|
|
+kind: 'appx', id: 'appx-b', title: '附录 B · 行业结构速查', group: '附录',
|
|
|
|
|
+lead: '不是知识科普,是每个环节都要挂上的判断依据。数据全部来自课堂数据包或 49 条工艺知识库,口径附在每节末尾。',
|
|
|
|
|
+blocks: [
|
|
|
|
|
+{t: 'B1 形态分化:汤面 / 拌面 / 炒面 / 非油炸', html: `
|
|
|
|
|
+<table class="tbl"><thead><tr><th>形态 / 工艺</th><th>工艺路线</th><th>成本与结构要点</th><th>课堂数据里的样子</th></tr></thead><tbody>
|
|
|
|
|
+<tr><td><b>油炸汤面</b></td><td>油炸脱水:棕榈油 140–160℃,60–110 秒,含水 3–6%,含油 18–22%</td><td>行业最成熟的路径;袋装面饼占成本 34–38%</td><td>未标注工艺的 271 条,大多属于这一类</td></tr>
|
|
|
|
|
+<tr><td><b>拌面 / 干拌</b></td><td>泡好沥干或煮后拌;酱包占比更高</td><td>多一步准备;酱料成本上升</td><td>康师傅 BIG 干拌面 12 盒整箱百克价 3.59–4.09 元</td></tr>
|
|
|
|
|
+<tr><td><b>炒面(UFO 等)</b></td><td>杯面 + 沥水 + 炒面料的组合</td><td>杯装包材;准备步骤多</td><td>按「拌面」关键词搜,UFO 可能被归到拌面里——形态标签不完全可靠</td></tr>
|
|
|
|
|
+<tr><td><b>非油炸</b></td><td>热风三段控温(80–90℃/60–70% 湿 → 90–100℃/30–40% 湿 → 70–80℃ 低湿,含水 8–12%)或挤压熟化</td><td>要换线;代工价 2.1–3.2 元/袋</td><td>105 条,其中 29 条有有效价</td></tr>
|
|
|
|
|
+<tr><td><b>半干 / 鲜熟</b></td><td>蒸煮后酸浸至 pH 4.2–4.6,含水 20–26%,aw 0.85–0.90</td><td>需冷链或高酸保鲜</td><td>鲜熟/半干 24 条,有效价 3 条</td></tr>
|
|
|
|
|
+</tbody></table>
|
|
|
|
|
+<p class="muted">口径:工艺知识库 49 条为行业通行值,不是法定限量;商品工艺以标题标注为准,「未标注」≠「非油炸」。关联:<a href="#d101">D1-01</a>、<a href="#big1-p1">大课一第一段</a>。</p>`},
|
|
|
|
|
+{t: 'B2 价格带结构:谁在哪个带', html: `
|
|
|
|
|
+<table class="tbl"><thead><tr><th>价格带(元/100g)</th><th>125 条有效价</th><th>71 条(剔除整箱)</th><th>康师傅(35 个有效价)</th></tr></thead><tbody>
|
|
|
|
|
+<tr><td>≤4 元</td><td>53(42.4%)</td><td>34(47.9%)</td><td>22 个(其中 15 个为整箱/混合装)</td></tr>
|
|
|
|
|
+<tr><td>4–6 元</td><td>43(34.4%)</td><td>19(26.8%)</td><td>9 个</td></tr>
|
|
|
|
|
+<tr><td>6–9 元</td><td>13(10.4%)</td><td>6(8.5%)</td><td>1 个</td></tr>
|
|
|
|
|
+<tr><td>>9 元</td><td>16(12.8%)</td><td>12(16.9%)</td><td>3 个(御品盛宴小龙虾拌面 ×2、Express 速达面馆红烧半筋半肉面 ×1)</td></tr>
|
|
|
|
|
+</tbody></table>
|
|
|
|
|
+<p>全样本中位 4.17、P25 3.54、P75 5.86;康师傅 P25 2.98 / 中位 3.93 / P75 4.24——四分之三的有效价落在 4 元附近。</p>
|
|
|
|
|
+<table class="tbl compact"><thead><tr><th>品牌</th><th>记录数</th><th>有效价</th><th>中位</th><th>能不能用来比价格</th></tr></thead><tbody>
|
|
|
|
|
+<tr><td>康师傅</td><td>53</td><td>35</td><td>3.93</td><td>可以用,注明整箱混杂</td></tr>
|
|
|
|
|
+<tr><td>统一</td><td>30</td><td>12</td><td>3.97</td><td>参考</td></tr>
|
|
|
|
|
+<tr><td>农心</td><td>35</td><td>15</td><td>4.86</td><td>参考</td></tr>
|
|
|
|
|
+<tr><td>今麦郎</td><td>36</td><td>2</td><td>3.01</td><td>样本太少,不能拿来比</td></tr>
|
|
|
|
|
+<tr><td>五谷道场</td><td>23</td><td>4</td><td>6.82</td><td>样本少;也有 3.18 元低价款</td></tr>
|
|
|
|
|
+<tr><td>拉面说</td><td>30</td><td>3</td><td>9.48</td><td>不能作价格带结论</td></tr>
|
|
|
|
|
+<tr><td>白象</td><td>28</td><td>6</td><td>9.40</td><td>6 个里 4 个是礼盒或混装整箱,不能用</td></tr>
|
|
|
|
|
+<tr><td>日清</td><td>28</td><td>7</td><td>11.25</td><td>含进口礼盒,不能用</td></tr>
|
|
|
|
|
+</tbody></table>
|
|
|
|
|
+<p class="muted">口径:百克价由标题克重与件数推算;京东 123 / 淘宝 2 条有效价,价格结论只代表京东样本。关联:<a href="#d101">D1-01</a>、<a href="#d102">D1-02</a>、<a href="#d203">D2-03</a>。</p>`},
|
|
|
|
|
+{t: 'B3 地域风味:样本里的溢价能力', html: `
|
|
|
|
|
+<p>地域风味标签(不含日式 59、韩式 55)按 CSV 逐条数为 109 条:陕西 31、武汉热干面 25、北京 15、江浙沪 10、广东 9、新疆 7、川渝 6、重庆小面 3、贵州 2、东南亚 1(<code>细分标签汇总.csv</code> 记 86 个,口径无法从 CSV 完全复现,引用 86 时需注明)。</p>
|
|
|
|
|
+<table class="tbl compact"><thead><tr><th>地域</th><th>有有效价的 SKU</th><th>中位(元/100g)</th></tr></thead><tbody>
|
|
|
|
|
+<tr><td>陕西</td><td>11</td><td>3.38</td></tr>
|
|
|
|
|
+<tr><td>武汉热干面</td><td>3</td><td>3.16</td></tr>
|
|
|
|
|
+</tbody></table>
|
|
|
|
|
+<p><b>判断:</b>在电商搜索样本里,地域风味不是高溢价,而是竞争扎堆的低价带;需求侧「正宗/地域」在 260 篇里只有 11 次,远低于「口味新鲜」106 次。另外「地域 速食面」关键词第 1 页 31 条里康师傅 20 条——那是自营店占据搜索页,不是品牌份额。</p>
|
|
|
|
|
+<p class="muted">关联:<a href="#d101">D1-01</a>、<a href="#d203">D2-03</a>。</p>`},
|
|
|
|
|
+{t: 'B4 工艺门槛一览', html: `
|
|
|
|
|
+<table class="tbl"><thead><tr><th>工艺</th><th>关键参数</th><th>判断用</th></tr></thead><tbody>
|
|
|
|
|
+<tr><td>油炸脱水</td><td>棕榈油 140–160℃,60–110 秒;含水 3–6%;含油 18–22%</td><td>成熟、成本低;「非油炸」诉求下是短板</td></tr>
|
|
|
|
|
+<tr><td>热风非油炸</td><td>三段控温:80–90℃ / 60–70% 湿 → 90–100℃ / 30–40% 湿 → 70–80℃ 低湿;含水 8–12%</td><td>非油炸主流路径之一;要专用线</td></tr>
|
|
|
|
|
+<tr><td>挤压熟化</td><td>高温高压 + 剪切,出模泄压膨化</td><td>非油炸另一条路径;单机 6.8 万元/台(知识库)</td></tr>
|
|
|
|
|
+<tr><td>半干 / 鲜熟</td><td>酸浸 pH 4.2–4.6,含水 20–26%</td><td>口感接近鲜面;保鲜难度高</td></tr>
|
|
|
|
|
+<tr><td>真空和面</td><td>−0.06 ~ −0.08 MPa,面团 ≤30℃,含油率可降 1–2 个百分点</td><td>降含油的第一步,不改线</td></tr>
|
|
|
|
|
+<tr><td>蒸煮 α 化</td><td>饱和蒸汽 95–100℃,2.5–3.5 分钟,糊化度 ≥85%</td><td>所有面型的基础环节</td></tr>
|
|
|
|
|
+<tr><td>复合压延</td><td>6–8 道,终轧面带 1.0–1.2mm</td><td>口感与强度</td></tr>
|
|
|
|
|
+</tbody></table>
|
|
|
|
|
+<p class="muted">关联:<a href="#d101">D1-01</a>、<a href="#big1-p1">大课一第一段</a>、<a href="#d204">D2-04</a>、<a href="#d206">D2-06</a>。参数为行业通行值,不是法定限量。</p>`},
|
|
|
|
|
+{t: 'B5 供应链口径:每个数字对应哪一个口径', html: `
|
|
|
|
|
+<table class="tbl"><thead><tr><th>口径</th><th>知识库数值</th><th>用在哪个环节</th></tr></thead><tbody>
|
|
|
|
|
+<tr><td>代工价</td><td>2.1–3.2 元/袋(不含税运),对应零售 4–6 元;2026-10-29 单次 1688 询价</td><td>D2-06 成本区间</td></tr>
|
|
|
|
|
+<tr><td>成本结构(袋装)</td><td>面饼 34–38% / 调料 24–30% / 包材 12–13% / 人工 10% / 能耗 5–7%</td><td>D2-06 拆解报价</td></tr>
|
|
|
|
|
+<tr><td>成本结构(桶装)</td><td>纸碗 + 盖膜 0.30–0.50 元/个,包材占比升至 25–35%</td><td>D2-06 判断形态</td></tr>
|
|
|
|
|
+<tr><td>装箱 / 外箱 / 配送 / 损耗</td><td>知识库无条目</td><td>D2-06 必须向业务方取得,标「待确认」</td></tr>
|
|
|
|
|
+<tr><td>区域分工</td><td>河南 = 面饼 + 调料;四川 = 复合调味;广东 = 非油炸 + 包材;山东 = 调味粉 + 设备;湖北 = 热干面 / 碱水面</td><td>D2-06 寻源</td></tr>
|
|
|
|
|
+<tr><td>验厂比例</td><td>抽样 60 条货源中仅 42% 为验厂工厂</td><td>D2-06 供应商风险</td></tr>
|
|
|
|
|
+<tr><td>产线投资</td><td>90g 袋面线 10–13 万元;非油炸挤压熟化机 6.8 万元/台</td><td>D2-06 资本投入</td></tr>
|
|
|
|
|
+</tbody></table>
|
|
|
|
|
+<p class="muted">关联:<a href="#big3">大课三</a>、<a href="#d206">D2-06</a>。代工价不是长期报价;成本结构是行业通行值。</p>`},
|
|
|
|
|
+{t: 'B6 「≤4 元 × 非油炸」18 格全景', html: `
|
|
|
|
|
+<p>4 个价格带 × 4 种工艺(油炸 / 非油炸 / 半干鲜熟 / 冻干或其他),合计 16 格;再走查一遍,另外还有两类:「工艺未标注」与「有工艺标签但无有效价」——所以实际做判断时,看 18 个区间更稳妥。</p>
|
|
|
|
|
+<div class="mat">
|
|
|
|
|
+<div class="mh corner"></div><div class="mh">≤4 元</div><div class="mh">4–6 元</div><div class="mh">6–9 元</div><div class="mh">>9 元</div>
|
|
|
|
|
+<div class="k">油炸</div><div>未标注 271 中的多数<small>整箱居多</small></div><div>经典系列 + 竞品<small>(见附录 B2)</small></div><div>康师傅 1 个<small>(35 个有效价中)</small></div><div>日清 5 · 康师傅 3 · 白象 3<small>礼盒 / 高端款</small></div>
|
|
|
|
|
+<div class="k">非油炸</div><div class="z0"><b>康师傅 0</b><small>同格对手 14 个 SKU</small></div><div>9 个(多为小香厨 / 有你一面)</div><div>3 个</div><div>3 个(五谷道场 / 拉面说高端款)</div>
|
|
|
|
|
+<div class="k">半干鲜熟</div><div>有效价 3 条(不足以判定)</div><div>—</div><div>—</div><div>—</div>
|
|
|
|
|
+<div class="k">冻干/其他</div><div>数据未覆盖<small>列入「待确认」</small></div><div>—</div><div>—</div><div>—</div>
|
|
|
|
|
+</div>
|
|
|
|
|
+<p class="muted">口径:本表的明细由 <code>全部商品.csv</code>(工艺 / 百克价)与 <code>健康代餐赛道.csv</code>(价格带 × 工艺)联合核对:非油炸 29 条有效价分入 14 / 9 / 3 / 3;≤4 元带的 14 条非油炸中,小香厨一家占 11 条。品牌行据 <code>品牌价格汇总.csv</code>。工艺识别基于标题标注,「未标注」不能归于某一格;「—」表示样本里没有可判定的条目。关联:<a href="#big1-p1">大课一第一段</a>、<a href="#d101">D1-01</a>、<a href="#d203">D2-03</a>。</p>`}
|
|
|
|
|
+]
|
|
|
|
|
+},
|
|
|
|
|
+
|
|
|
|
|
+{
|
|
|
|
|
+kind: 'appx', id: 'appx-c', title: '附录 C · 常见问题', group: '附录',
|
|
|
|
|
+lead: '按四个阶段整理,每条对应一个实际会遇到的情况。',
|
|
|
|
|
+faq: [
|
|
|
|
|
+{g: '课程阶段', qs: [
|
|
|
|
|
+ ['AI 一上来不问我问题,直接开始分析了,正常吗?', '正常。Skill 规定「先复用上下文,能查的自行查」,只在会改变结论时才提问。你想让它多问,就在提示词后补一句「请以提问方式推进,每次只问一个会改变结论的问题」。'],
|
|
|
|
|
+ ['它说「资料库里没有」,是不是就是市场没有?', '不是。没查到、没权限、数据确实不存在,是三件事。看它的缺口清单有没有按三类分开写。'],
|
|
|
|
|
+ ['D1 我们几乎没产出东西,怎么办?', '先看「本组进度自检」:如果三问都能答上,产出就是够的。D1 的交付是一个决定 + 三个待答问题 + 任务卡,不是一份报告。'],
|
|
|
|
|
+ ['它给的结论没有原文,怎么办?', '不要接受。任何结论都要带原文、来源、编号;没有的让它补证据或标「待确认」。']
|
|
|
|
|
+]},
|
|
|
|
|
+{g: '调研与证据', qs: [
|
|
|
|
|
+ ['今晚 AI 会不会自己去找外部数据?', '会,但只在缺口会改变判断时,并且受任务卡里的「授权状态」约束。不希望的话,在任务卡里写明「今晚只复用资料库原件」。'],
|
|
|
|
|
+ ['词典打标的结果能直接用吗?', '不能。至少抽 5 条读原文;「辣」「贵」「量大」是典型误判(见附录 A)。'],
|
|
|
|
|
+ ['竞品样本每家只有 20 篇,够吗?', '不够代表全网声量,但够用来比卖点组合。把它当「哪个关键词下的首屏」,不当「品牌排行」。'],
|
|
|
|
|
+ ['什么时候要区分「资料库原件」和「外部补证」?', '始终区分。两者可信度不同、时效不同,报告里必须分开标注。']
|
|
|
|
|
+]},
|
|
|
|
|
+{g: '机会与提案', qs: [
|
|
|
|
|
+ ['康师傅在 ≤4 元 × 非油炸是 0 个,这是不是现成的机会?', '不是。同格有别人家的 14 个有效价 SKU,这一格有供给、但缺少用户在 4 元带要非油炸的原话。标「待验证」,进 V1.0 之后由 D2-04 三源交叉判断。'],
|
|
|
|
|
+ ['能不能写「多数人更喜欢吃」?', '不能。没有测过的表述不能承诺。改写成可测试的问题。'],
|
|
|
|
|
+ ['两条路(B0 / O1)哪条更好?', '先看本组工艺和供应链的真实约束;三条费用分开算;并行路径要把旧品转移和真正新增销量分开。'],
|
|
|
|
|
+ ['课堂的「预计成本」「预计销量」能用吗?', '只能在课堂内部讨论,标注「未经正式确认」。正式立项要换成业务方提供的真实数据。']
|
|
|
|
|
+]},
|
|
|
|
|
+{g: '保存与交付', qs: [
|
|
|
|
|
+ ['「已经保存好了」能信吗?', '要看它说的是哪一步:保存成功 / 按编号回读通过 / 看板已包含 / 浏览器已核对。四条分开报,不能互相代替。'],
|
|
|
|
|
+ ['候选清单 V1.0 / V2.0 / V3.0 是什么关系?', '同一个清单的三个版本:V1.0 是三源交叉后的全池,V2.0 加入商业与工艺条件后修订,V3.0 是质询后更新版。每一版都保留修改记录。'],
|
|
|
|
|
+ ['结营后 7 周陪练用什么?', '用 D2-08 带走的「成果导航」:拿 V3.0 回到真实工作中,每周回答一个「答不出」的问题,不学新东西。']
|
|
|
|
|
+]}
|
|
|
|
|
+],
|
|
|
|
|
+tips: {title: '五句话带走', items: ['任何数字,先问分母。', '任何结论,先问反例。', '任何「空白」,先查同一格的竞品。', '任何「在涨」,先查有没有时间序列。', '任何「多数人」,先查有没有测过。']}
|
|
|
|
|
+},
|
|
|
|
|
+
|
|
|
|
|
+{
|
|
|
|
|
+kind: 'appx', id: 'appx-d', title: '附录 D · 话术对照:措辞规范', group: '附录',
|
|
|
|
|
+lead: '这一版是研发中心内训,学员全是产品经理。措辞统一按两张表来:一张说哪些口语化、越过岗位分工的说法不再使用、换成什么;一张说同一个产品经理在哪些环节切换哪一侧视角。',
|
|
|
|
|
+blocks: [
|
|
|
|
|
+{t: 'D1 不用的说法,和改用的说法', html: `
|
|
|
|
|
+<table class="tbl say-table"><thead><tr><th>不再使用(问题在哪)</th><th>统一改成</th></tr></thead><tbody>
|
|
|
|
|
+<tr><td class="no">把「补充卖点」交给别人去做<br><span class="muted">把动作分给了别人</span></td><td class="yes">「你自己要从市场角度再想一层」</td></tr>
|
|
|
|
|
+<tr><td class="no">把研发侧和市场侧说成两个岗位<br><span class="muted">默认是两个岗位</span></td><td class="yes">「同一个产品经理要在研发和市场两侧切换视角」</td></tr>
|
|
|
|
|
+<tr><td class="no">按多个岗位拆成几份职责清单<br><span class="muted">分散了责任主体</span></td><td class="yes">只有产品经理一个角色,强调「你要具备的能力」</td></tr>
|
|
|
|
|
+<tr><td class="no">「你怎么证明自己」<br><span class="muted">口语化、带对抗感</span></td><td class="yes">「这条结论的证据是什么、反例是什么」</td></tr>
|
|
|
|
|
+<tr><td class="no">用夸张的动词形容调转结论<br><span class="muted">不庄重</span></td><td class="yes">「反常识 / 反认知 / 颠覆直觉」</td></tr>
|
|
|
|
|
+<tr><td class="no">「研发人员就是不行」<br><span class="muted">贬低学员出身</span></td><td class="yes">「研发侧是你们的本行,市场侧是这一轮要补的」</td></tr>
|
|
|
|
|
+<tr><td class="no">「这个点子太好了」<br><span class="muted">用感觉替代判断</span></td><td class="yes">「这个判断的证据强度 2 分,可做性 3 分」</td></tr>
|
|
|
|
|
+</tbody></table>`},
|
|
|
|
|
+{t: 'D2 产品经理的能力切换表', html: `
|
|
|
|
|
+<p>同一个产品经理,在每个环节都要确认自己站在哪一侧。这不是分工,是<b>视角切换</b>——「研发侧」是你能直接判断的,「市场侧」和「经营侧」是这一轮要刻意用的两副眼镜。</p>
|
|
|
|
|
+<table class="tbl"><thead><tr><th>环节</th><th>研发侧(本行)</th><th>市场侧(要补)</th><th>经营侧(要建立)</th></tr></thead><tbody>
|
|
|
|
|
+<tr><td>D1-01 品类全景</td><td>工艺、形态、成本结构</td><td>人群、场景</td><td>价格带分层</td></tr>
|
|
|
|
|
+<tr><td>D1-03 竞品格局</td><td>同一工艺路线里做得怎么样</td><td>卖点组合、正反原话</td><td>同一条价格带里谁占位</td></tr>
|
|
|
|
|
+<tr><td>D2-02 VOC 聚类</td><td>用户的痛点在工艺上是什么问题</td><td>原话的情绪、表面诉求</td><td>——</td></tr>
|
|
|
|
|
+<tr><td>D2-03 矩阵空白</td><td>这一格做不做得出来</td><td>这一格有没有人说</td><td>这一格值不值得做</td></tr>
|
|
|
|
|
+<tr><td>D2-04 三源交叉</td><td>工艺条件支持吗</td><td>用户原话指向吗</td><td>空白格有没有生意</td></tr>
|
|
|
|
|
+<tr><td>D2-06 商业回推</td><td>做不做得出来</td><td>消费者接受吗</td><td>划不划算</td></tr>
|
|
|
|
|
+<tr><td>D2-07 卖点</td><td>证据允许说到哪</td><td>用户听得懂吗</td><td>价格带撑不撑得起这个说法</td></tr>
|
|
|
|
|
+</tbody></table>
|
|
|
|
|
+<p class="muted">这张表放在手边:在每一个环节开头,读一遍「这一节你要用哪两副眼镜」。</p>`}
|
|
|
|
|
+]
|
|
|
|
|
+},
|
|
|
|
|
+
|
|
|
|
|
+{
|
|
|
|
|
+kind: 'raw', html: `<div class="tips"><h3>结营前,最后记住这一句</h3><p style="font-size:15.5px;margin:0">产品创新从战略层到组织层再到个人层,最后落在一张张写得清「证据、反例、缺口」的卡上。你手里那份手册,不是让你背的;它是让你从「研发人员」往「品类负责人」走的第一步。</p></div>`
|
|
|
|
|
+}
|
|
|
|
|
+);
|
|
|
|
|
+
|
|
|
|
|
+// x2 · 13 份产出物规范:名称 / 形态 / 样卡 / 用途 / 流转
|
|
|
|
|
+// 样卡用课堂数据包的真实数字写成(示范格式与判断方式,不是标准答案)。
|
|
|
|
|
+// 对象字段:name 名称 · form 形态 · owner 谁做 · look 样卡 HTML · legend 图例 · purpose 三块用途 · handoff 下一环用法 · flow 流转链
|
|
|
|
|
+window.DELIV = {
|
|
|
|
|
+
|
|
|
|
|
+d101: {
|
|
|
|
|
+name: '品类全景图谱', form: '三栏表:供给树 / 需求树 / 供需缺口', owner: '本组产品经理 · 每组 1 份',
|
|
|
|
|
+legend: [['#C8102E', '空白点:有供给、没需求原话 / 有需求、没供给']],
|
|
|
|
|
+look: `<div class="doc-scroll"><div class="doc">
|
|
|
|
|
+<div class="doc-bar"><b>品类全景图谱</b><span>第 3 组 · 居家囤货 × 常备</span><span class="doc-tag">未经正式确认</span></div>
|
|
|
|
|
+<div class="doc-h">① 供给树(400 SKU 样本) ② 需求树(G1–G6 用户原话) ③ 供需缺口</div>
|
|
|
|
|
+<div class="doc-body"><table>
|
|
|
|
|
+<thead><tr><th style="width:28%">① 供给树:有什么</th><th style="width:28%">② 需求树:要什么</th><th>③ 供需缺口</th></tr></thead>
|
|
|
|
|
+<tbody>
|
|
|
|
|
+<tr><td><b>形态</b><br>袋装 184 · 桶装 95 · 盒装 22 · 杯装 21 · 碗装 20 · 未标注形态 58</td><td><b>G5 一人食与家庭囤货</b><br>37 篇 · 口味新鲜 16 · 方便/快手 12 · 囤货 8</td><td>囤货场景:袋装供给充足(184),需求原话集中(37 篇)→ <b>接上了</b></td></tr>
|
|
|
|
|
+<tr><td><b>工艺</b><br>非油炸 105 · 鲜熟/半干 24 · 未标注 271</td><td><b>G4 健康控卡</b><br>39 篇 · 健康 29 · 方便/快手 14</td><td>「4 元以下非油炸」:同格对手 14 个 SKU,康师傅 0 个 → <b>待确认</b></td></tr>
|
|
|
|
|
+<tr><td><b>价格带</b>(有效价 125)<br>≤4 元 53 · 4–6 元 43 · 6–9 元 13 · >9 元 16</td><td><b>G2 学生宿舍</b><br>39 篇 · 方便/快手 23 · 口味新鲜 21</td><td>宿舍夜宵 × 6 元以上:有供给、有场景,原话薄 → <b>待确认</b></td></tr>
|
|
|
|
|
+<tr><td><b>地域风味</b><br>陕西 31 · 武汉热干面 25 · 北京 15 · 江浙沪 10</td><td><b>G6 地域与高端尝鲜</b><br>40 篇 · 口味新鲜 23 · 正宗/地域 8</td><td>地域风味的溢价能力:≥6 元带原话 <5 条 → <b>缺</b></td></tr>
|
|
|
|
|
+</tbody></table>
|
|
|
|
|
+<p class="doc-micro">来源:<code>全部商品.csv</code>(400 条)、<code>G1–G6-用户笔记-原文.csv</code>(260 篇)、<code>品牌价格汇总.csv</code>。计数可按原文逐条复核;空白点的判断待 D1-03 起逐格核查。</p></div>
|
|
|
|
|
+</div></div>`,
|
|
|
|
|
+purpose: [
|
|
|
|
|
+['支持什么决定', '确定本组三个半天在哪个「格子」上工作:哪个人群 × 哪个场景 × 哪个价格带 × 哪种工艺。它是后面 12 个环节的地图。'],
|
|
|
|
|
+['拦住什么错', '拦住「在自己熟悉的格子里找机会」。没有这张图,竞品比较、空白判断、机会卡都会缺一个坐标,最后所有结论都长在同一个惯常方向上。'],
|
|
|
|
|
+['沉淀什么资产', '一次扫描之后,这张图可以复用到任何同品类的新项目:换课题,只换「①②③」里打钩的格子。']
|
|
|
|
|
+],
|
|
|
|
|
+handoff: [
|
|
|
|
|
+'<b>D1-02 验证配置卡:</b>把图谱里最容易被反驳的 3 条主张(例如「康师傅有效价 35 个」「非油炸 105 个」「地域风味的是平价带」)作为回查对象,逐条定口径。',
|
|
|
|
|
+'<b>D1-03 竞品格局:</b>按图谱圈定「同格商品」的范围——只比较落在本组格子和邻格里的品牌,不做群体声量比较。',
|
|
|
|
|
+'<b>D2-03 矩阵空白:</b>把「③ 供需缺口」的空白点直接带入,按结构 / 变化 / 未覆盖三类重新判一次。'
|
|
|
|
|
+],
|
|
|
|
|
+flow: ['D1-01', '品类全景图谱', 'D1-02 回查口径', 'D1-03 圈定同格', 'D2-03 空白三类']
|
|
|
|
|
+},
|
|
|
|
|
+
|
|
|
|
|
+d102: {
|
|
|
|
|
+name: '本题验证配置卡', form: '一页卡:资料资格 + 统计口径 + 引文规则 + 分歧处理(+ 回查记录)', owner: '本组产品经理 · 每组 1 份,全班共享一份最低纪律',
|
|
|
|
|
+legend: [['#C8102E', '回查记录:拿配置卡回查出问题的图谱条目']],
|
|
|
|
|
+look: `<div class="doc-scroll"><div class="doc">
|
|
|
|
|
+<div class="doc-bar"><b>本题验证配置卡</b><span>本组:居家囤货 × 常备 · 生效至结营</span><span class="doc-tag">全场通用最低纪律附后</span></div>
|
|
|
|
|
+<div class="doc-h">五块内容 · 缺一不可</div>
|
|
|
|
|
+<div class="doc-body">
|
|
|
|
|
+<div class="rulerow"><b>资料资格</b><span>只认百克价非空的有效价(125 / 400);社媒只认能读到原文的笔记;竞品社媒按 20 篇 / 品牌的样本对待,不当声量。</span></div>
|
|
|
|
|
+<div class="rulerow"><b>统计口径</b><span>比例必须写分母;中位数用均值中位数;价格双报(125 条 / 剔除整箱 71 条);跨平台分开报(本批有效价京东 123、淘宝 2)。</span></div>
|
|
|
|
|
+<div class="rulerow"><b>引文口径</b><span>原文带笔记标题或 ID;词典打标词(辣、贵、量大)必须抽读原文,至少 5 条;「AI 推断」与「原件证据」分开写。</span></div>
|
|
|
|
|
+<div class="rulerow"><b>模型分工</b><span>证据方向由 AI 给;「值不值得做」「这一格是不是我们的」由本组拍板。</span></div>
|
|
|
|
|
+<div class="rulerow"><b>分歧处理</b><span>两种口径不一致 → 都列出来;都列不出证据 → 标「待确认」;三者分开:没查到 / 没权限 / 确实不存在。</span></div>
|
|
|
|
|
+<div class="rulerow mark"><b>回查记录</b><span>图谱主张「≤4 元是最大价格带,康师傅在这一带 22 个」→ 换 71 条口径后康师傅只剩 7 个 → <span class="warn">降级</span>为「整箱口径下成立,单份口径待确认」。</span></div>
|
|
|
|
|
+</div></div></div>`,
|
|
|
|
|
+purpose: [
|
|
|
|
|
+['支持什么决定', '决定「什么算证据」。D1 之后每一张卡上的结论,都会按这张卡来判断:能成立、要降级、还是标待确认。'],
|
|
|
|
|
+['拦住什么错', '拦住「换一个口径结论就反转」和「词典打标当用户态度」这两类错——附录 A 的第一和第四个反常识。'],
|
|
|
|
|
+['沉淀什么资产', '这张卡是整组的研究纪律,结营后遇到新项目可以直接复用;全班合并后的「最低纪律」可以成为产品中心的通用规范。']
|
|
|
|
|
+],
|
|
|
|
|
+handoff: [
|
|
|
|
|
+'<b>D1-03:</b>竞品比较先按本卡剔除兜售帖、活动帖与重复内容,再比较卖点组合;宁可少比,不可错比。',
|
|
|
|
|
+'<b>D1-04:</b>每一条假设的「反证路径」,就是按本卡的口径去找能推翻它的证据。',
|
|
|
|
|
+'<b>D2 全段:</b>V1.0、V2.0、V3.0 的每一次升级都要过一遍这张卡;卡片有冲突时由本组业务判断收口。'
|
|
|
|
|
+],
|
|
|
|
|
+flow: ['D1-02', '验证配置卡', 'D1-03 竞品比较', 'D1-04 反证路径', 'D2-01 验收', '全过程']
|
|
|
|
|
+},
|
|
|
|
|
+
|
|
|
|
|
+d103: {
|
|
|
|
|
+name: '竞品图谱 + 待验证痛点假设', form: '矩阵表(卖点组合)+ 假设清单(H1–H3)', owner: '本组产品经理 · 每组 1 矩阵 + 2–3 条假设',
|
|
|
|
|
+legend: [['#C8102E', 'H 假设行:可证伪的怀疑']],
|
|
|
|
|
+look: `<div class="doc-scroll"><div class="doc">
|
|
|
|
|
+<div class="doc-bar"><b>竞品图谱 + 待验证痛点假设</b><span>本组:居家囤货 × 常备 · 同格竞品</span><span class="doc-tag">宣称 / 回应 / 推断 分开</span></div>
|
|
|
|
|
+<div class="doc-h">一、卖点组合矩阵(示例:4 元以下的非油炸 / 袋装 / 拌面格)</div>
|
|
|
|
|
+<div class="doc-body"><table>
|
|
|
|
|
+<thead><tr><th>品牌 · 商品</th><th>百克价</th><th>卖点组合</th><th>正反原话</th><th>我们判断</th></tr></thead>
|
|
|
|
|
+<tbody>
|
|
|
|
|
+<tr><td>康师傅 · 经典红烧牛肉面五连包</td><td class="r">整箱 / 五连包</td><td>【宣称】经典 · 红烧 · 大食袋</td><td>G1「晚上九点才吃饭,我只点半碗」</td><td>【推断】口味信任强,健康诉求无回应</td></tr>
|
|
|
|
|
+<tr><td>今麦郎 · 拉面范(安徽板面)</td><td class="r">3.01</td><td>【宣称】非油炸 · 宽面 · 桶装</td><td>G2「能囤在宿舍当饭吃的速食食品」</td><td>【推断】低价非油炸已有供给,但卖点集中在“非油炸”功能词</td></tr>
|
|
|
|
|
+<tr><td>小香厨(散牌)· 兰州牛肉面</td><td class="r">1.56–3.99</td><td>【宣称】地域 · 低价 · 多种口味</td><td>—</td><td>【推断】区域低价竞争,不构成心智</td></tr>
|
|
|
|
|
+</tbody></table>
|
|
|
|
|
+<p class="doc-micro">竞品社媒:康师傅 20 条(关键词「地域 速食面」)、今麦郎 20 条,1–2 个关键词,不作声量比较。</p>
|
|
|
|
|
+<div class="doc-h" style="margin-top:6px">二、待验证痛点假设</div>
|
|
|
|
|
+<table style="margin-top:6px">
|
|
|
|
|
+<thead><tr><th>编号</th><th>可证伪的假设</th><th>凭什么怀疑</th><th>什么情况推翻</th></tr></thead>
|
|
|
|
|
+<tbody>
|
|
|
|
|
+<tr class="mark"><td><b>H1</b></td><td>在 4 元以下价格带的非油炸用户,愿意为“非油炸”多付 1 元</td><td>G4 健康 29 / 39 篇;≤4 元 × 非油炸同格对手 14 个</td><td>≥10 条原话明确说“非油炸也得好吃才值 / 太贵了不会买”</td></tr>
|
|
|
|
|
+<tr><td><b>H2</b></td><td>囤货用户最在意的不是口味,而是“拆包后放得住”</td><td>G5 囤货 8 篇(37 篇中)</td><td>拆包/存放相关原话在 G5 中 < 3 条</td></tr>
|
|
|
|
|
+<tr><td><b>H3</b></td><td>同一款面,学生宿舍更在意“方便”,加班族更在意“吃得少一点”</td><td>G1「只点半碗」;G2 方便/快手 23 / 39 篇</td><td>两组的场景化原话占比无显著差异</td></tr>
|
|
|
|
|
+</tbody></table></div>
|
|
|
|
|
+</div></div>`,
|
|
|
|
|
+purpose: [
|
|
|
|
|
+['支持什么决定', '决定「本组最怀疑什么」。竞品图谱给出的是「谁在卖什么」,假设清单给出的是「我们猜哪里没被满足」——下一步要拿证据去验证。'],
|
|
|
|
|
+['拦住什么错', '拦住「拿总赞排品牌声量」和「假设无法被证伪」。用样本量换结论,用可证伪换安慰。'],
|
|
|
|
|
+['沉淀什么资产', '卖点组合矩阵可以按品类复用;三类明确(宣称 / 回应 / 推断)的写法,是可迁移的判断习惯。']
|
|
|
|
|
+],
|
|
|
|
|
+handoff: [
|
|
|
|
|
+'<b>D1-04 增强 AI 自驱任务卡:</b>每条假设直接变成任务卡一行,补上支持路径、反证路径、停止条件。',
|
|
|
|
|
+'<b>D1-N 调研:</b>按假设编号执行,不再漫游搜索。',
|
|
|
|
|
+'<b>D2-04 三源交叉:</b>H1–H3 在早上的证据结论,是机会卡「反例 / 还缺什么」两栏的起点。'
|
|
|
|
|
+],
|
|
|
|
|
+flow: ['D1-03', '竞品图谱 + 假设', 'D1-04 任务卡', 'D1-N 验证', 'D2-04 反例']
|
|
|
|
|
+},
|
|
|
|
|
+
|
|
|
|
|
+d104: {
|
|
|
|
|
+name: '增强 AI 自驱任务卡', form: '一页卡:假设键 + 支持路径 + 反证路径 + 停止条件', owner: '本组产品经理 + 助教归档',
|
|
|
|
|
+legend: [['#C8102E', '停 止 条 件:最容易被写糊、也最决定成败的一栏']],
|
|
|
|
|
+look: `<div class="doc-scroll"><div class="doc">
|
|
|
|
|
+<div class="doc-bar"><b>增强 AI 自驱任务卡</b><span>本组决定:4 元带要不要做非油炸</span><span class="doc-tag">今晚执行范围:仅资料库 + 授权外部补证</span></div>
|
|
|
|
|
+<div class="doc-h">一页卡 · 每条主线假设一行</div>
|
|
|
|
|
+<div class="doc-body"><table>
|
|
|
|
|
+<thead><tr><th>假设键</th><th>支持路径</th><th>反证路径</th><th>停止条件(程序可判定)</th></tr></thead>
|
|
|
|
|
+<tbody>
|
|
|
|
|
+<tr><td><b>H1</b><br>≤4 元非油炸用户愿多付 1 元</td><td>G4 全部 39 篇中,非油炸 + 价格相关原话</td><td>G4 / G2 / G5 中“非油炸但…”的转折句</td><td class="warn">找到 ≥10 条反证 或 读完 G4 全部 39 篇</td></tr>
|
|
|
|
|
+<tr><td><b>H2</b><br>囤货在意拆包存放</td><td>G5 全部 37 篇命中“囤 / 放 / 存”</td><td>G5 中“囤”只为“便宜”的原话</td><td class="warn">读完全部命中篇目,无新增</td></tr>
|
|
|
|
|
+<tr><td><b>H3</b><br>两组用户关注点不同</td><td>G1 与 G2 场景化原话对照表</td><td>同一条原话同时出现在两组</td><td class="warn">两侧各 ≥10 条对照后停止</td></tr>
|
|
|
|
|
+</tbody></table>
|
|
|
|
|
+<p class="doc-micro">签字:本组已确认 ☑ 配置卡编号:CFG-03 授权:外部补证 □(未授权,今晚只跑资料库) 备查:H4、H5 暂不执行</p></div>
|
|
|
|
|
+</div></div>`,
|
|
|
|
|
+purpose: [
|
|
|
|
|
+['支持什么决定', '决定今晚 AI 跑什么、跑多久、什么时候停。它是机器能读懂的「研究指令」,不是给学员自己看的笔记。'],
|
|
|
|
|
+['拦住什么错', '拦住三种失败:只写支持不写反证(AI 形成偏见);停止条件不可执行(AI 不停);授权不清(AI 乱抓或不敢抓)。'],
|
|
|
|
|
+['沉淀什么资产', '这张卡的模板,是研究外包给 AI 时最核心的接口。一个任务卡格式,可以套到任何新项目上。']
|
|
|
|
|
+],
|
|
|
|
|
+handoff: [
|
|
|
|
|
+'<b>D1-N 执行:</b>AI 只执行卡内假设,按停止条件结束,缺口按三类分报。',
|
|
|
|
|
+'<b>D2-01 验收:</b>验收正是按这张卡逐项核对——回应率对不对、原件有没有、停止条件有没有被尊重。',
|
|
|
|
|
+'<b>D2-05 排序:</b>「哪条假设被推翻」直接决定哪些机会被踢出或降级。'
|
|
|
|
|
+],
|
|
|
|
|
+flow: ['D1-04', '自驱任务卡', 'D1-N 夜间执行', 'D2-01 验收']
|
|
|
|
|
+},
|
|
|
|
|
+
|
|
|
|
|
+d1n: {
|
|
|
|
|
+name: '调研战报 + 缺口清单', form: '报告(按假设键一页)+ 缺口表(三类)', owner: 'AI 自动生成 · 明早本组验收',
|
|
|
|
|
+legend: [['#C8102E', '「不支持 / 未回应」在战报里比「支持」更值钱']],
|
|
|
|
|
+look: `<div class="doc-scroll"><div class="doc">
|
|
|
|
|
+<div class="doc-bar"><b>调研战报 + 缺口清单</b><span>D1-N · 按任务卡 CFG-03 执行</span><span class="doc-tag">AI 初稿 · 未经人工验收</span></div>
|
|
|
|
|
+<div class="doc-h">战报 · 按假设键</div>
|
|
|
|
|
+<div class="doc-body"><table>
|
|
|
|
|
+<thead><tr><th>假设键</th><th>结论</th><th>证据(带原件)</th><th>缺口</th><th>对下一步的影响</th></tr></thead>
|
|
|
|
|
+<tbody>
|
|
|
|
|
+<tr><td>H1</td><td><b>部分支持</b></td><td>G4 健康 29 / 39 篇;非油炸原话 9 条,其中 7 条读不出态度</td><td>价格相关原话 <3 条</td><td>V1.0 中<strong>不能</strong>写「愿多付 1 元」</td></tr>
|
|
|
|
|
+<tr class="mark"><td>H2</td><td><b>不支持</b></td><td>G5 命中「囤」8 篇,全部指向「便宜 / 一次买够」,无一条讲存放</td><td>—</td><td>「拆包存放」降为线索</td></tr>
|
|
|
|
|
+<tr><td>H3</td><td><b>支持(弱)</b></td><td>G1「只点半碗」1 条;G2 方便/快手 23 / 39 篇</td><td>G2 缺同类原话</td><td>可作为 D2-02 的初始聚类</td></tr>
|
|
|
|
|
+</tbody></table>
|
|
|
|
|
+<div class="doc-h" style="margin-top:6px">缺口清单 · 三类分开</div>
|
|
|
|
|
+<table style="margin-top:6px">
|
|
|
|
|
+<thead><tr><th>没查到</th><th>没权限</th><th>数据确实不存在</th></tr></thead>
|
|
|
|
|
+<tbody><tr><td>≤4 元非油炸商品评论(标题有、评论没采到)</td><td>山姆 / 盒马等 To B 渠道</td><td>销量、复购、满意度(采集字段中无)</td></tr></tbody></table>
|
|
|
|
|
+<p class="doc-micro">停止条件遵守情况:H1 停在「读完 G4 全部 39 篇」;H2 停在「原文无新增」;H3 停在「两侧各 ≥10 条」。</p></div>
|
|
|
|
|
+</div></div>`,
|
|
|
|
|
+purpose: [
|
|
|
|
|
+['支持什么决定', '决定「哪些假设留下、哪些降级、哪些扔掉」。它把昨晚的证据按假设键整理好,今天早上直接进入验收,而不是重新读一堆散乱的搜索记录。'],
|
|
|
|
|
+['拦住什么错', '拦住「AI 说支持就支持」。战报把不支持、未回应、没查到三类写在同一页,很难被「看起来很有收获」掩盖。'],
|
|
|
|
|
+['沉淀什么资产', '按假设键归档的战报,是研究过程的可追溯记录。结营后补证,直接在这份记录上续写,不用重新开始。']
|
|
|
|
|
+],
|
|
|
|
|
+handoff: [
|
|
|
|
|
+'<b>D2-01 验收:</b>抽样回读原件,核验「部分支持 / 支持」是否成立,补齐分母。',
|
|
|
|
|
+'<b>D2-02 聚类:</b>VOC 预聚类作为四张表的起点,但要重新抽读、重新分层。',
|
|
|
|
|
+'<b>D2-04 机会卡:</b>「不支持」的 H2 是「反例」栏的最好素材——它说明为什么一个直觉不成立。'
|
|
|
|
|
+],
|
|
|
|
|
+flow: ['D1-N 输出', '战报 + 缺口', 'D2-01 验收', 'D2-02 预聚类起点']
|
|
|
|
|
+},
|
|
|
|
|
+
|
|
|
|
|
+d201: {
|
|
|
|
|
+name: '战报验收记录', form: '检查表:假设回应率 + 原件覆盖 + 分母口径', owner: '本组产品经理 · 每组 1 份',
|
|
|
|
|
+legend: [['#C8102E', '标注「待补证」的条目不进可用资料集合']],
|
|
|
|
|
+look: `<div class="doc-scroll"><div class="doc">
|
|
|
|
|
+<div class="doc-bar"><b>战报验收记录</b><span>D2-01 · 本组 3 条假设</span><span class="doc-tag">可用 / 待补证 / 降级</span></div>
|
|
|
|
|
+<div class="doc-h">三项检查 · 以假设为单位</div>
|
|
|
|
|
+<div class="doc-body"><table>
|
|
|
|
|
+<thead><tr><th>假设</th><th>假设回应率</th><th>原件覆盖</th><th>分母口径</th><th>判定</th></tr></thead>
|
|
|
|
|
+<tbody>
|
|
|
|
|
+<tr><td>H1</td><td>部分支持</td><td class="warn">3 / 9 条原话可回读</td><td>缺</td><td><span class="warn">降为假设</span></td></tr>
|
|
|
|
|
+<tr><td>H2</td><td>不支持</td><td class="good">8 / 8 可回读</td><td>写「37 篇中 8 篇」</td><td><span class="good">可用</span></td></tr>
|
|
|
|
|
+<tr><td>H3</td><td>支持(弱)</td><td>6 / 10 可回读</td><td class="warn">未写分母</td><td><span class="warn">补分母后可用</span></td></tr>
|
|
|
|
|
+</tbody></table>
|
|
|
|
|
+<div class="doc-h" style="margin-top:6px">可用资料集合(能回读的原件)</div>
|
|
|
|
|
+<div class="doc-body" style="padding:6px 12px"><div class="doc-grid2">
|
|
|
|
|
+<div class="doc-box"><h5>G2 · 学生宿舍(39 篇)</h5><ul><li>#G2-07 方便/快手原话 ×3</li><li>#G2-12 「少一点」原话</li></ul></div>
|
|
|
|
|
+<div class="doc-box"><h5>G5 · 一人食囤货(37 篇)</h5><ul><li>「囤」8 篇:全部指向便宜 / 买够</li><li>#G5-03 「五连包刚刚好」</li></ul></div>
|
|
|
|
|
+</div></div></div>
|
|
|
|
|
+</div></div>`,
|
|
|
|
|
+purpose: [
|
|
|
|
|
+['支持什么决定', '决定「能用的资料是什么」。只有通过验收的原件,才能进入 D2-02 的聚类;不合格的,降级为假设、待补证,或者直接删掉。'],
|
|
|
|
|
+['拦住什么错', '拦住「好看的结论」。三项检查像门口的门卫:没有原件的、没有分母的、AI 推断冒充证据的,全部拦在门外。'],
|
|
|
|
|
+['沉淀什么资产', '验收记录本身就是「引用规范」的执行样本,可以拿去做新人培训。']
|
|
|
|
|
+],
|
|
|
|
|
+handoff: [
|
|
|
|
|
+'<b>D2-02 聚类:</b>接收「可用资料集合」,逐条编号。',
|
|
|
|
|
+'<b>D2-04 机会卡:</b>「降级为假设」的条目,进「还缺什么」栏。',
|
|
|
|
|
+'<b>D2-08 提案:</b>验收记录里的「待补证」清单,就是提案最后「下一步行动」的来源之一。'
|
|
|
|
|
+],
|
|
|
|
|
+flow: ['D2-01', '战报验收记录', 'D2-02 可用资料', 'D2-08 待补证']
|
|
|
|
|
+},
|
|
|
|
|
+
|
|
|
|
|
+d202: {
|
|
|
|
|
+name: '聚类表 + 痛点库 + KANO 表 + 人群 × 场景矩阵', form: '四张表:分层编码 / 痛点 / 需求类型 / 矩阵', owner: '本组产品经理 · 每组 1 套四表',
|
|
|
|
|
+legend: [['#C8102E', 'K A N O 类型标注「频次先验」:不是问卷结果']],
|
|
|
|
|
+look: `<div class="doc-scroll"><div class="doc">
|
|
|
|
|
+<div class="doc-bar"><b>VOC 四张表</b><span>本组:六大人群笔记本 260 篇</span><span class="doc-tag">每一格带笔记 ID</span></div>
|
|
|
|
|
+<div class="doc-h">① 聚类表(人群 → 场景 → JTBD → 痛点)</div>
|
|
|
|
|
+<div class="doc-body"><table>
|
|
|
|
|
+<thead><tr><th>原话</th><th>人群</th><th>场景</th><th>JTBD</th><th>痛点</th></tr></thead>
|
|
|
|
|
+<tbody>
|
|
|
|
|
+<tr><td>「晚上九点才吃饭,我只点半碗」(G1)</td><td>G1 加班族</td><td>晚上九点半 · 加班餐</td><td>想在没胃口时也能吃一点、不折腾</td><td>夜里胃口小、怕重辣重油</td></tr>
|
|
|
|
|
+<tr><td>「晚上九点,办公室终于安静了,我才发现晚饭又拖过去了」(G1)</td><td>G1 加班族</td><td>晚上九点 · 办公室</td><td>想把晚饭补上</td><td>晚饭一再往后拖</td></tr>
|
|
|
|
|
+</tbody></table>
|
|
|
|
|
+<div class="doc-h" style="margin-top:6px">② 痛点库</div>
|
|
|
|
|
+<table style="margin-top:6px">
|
|
|
|
|
+<thead><tr><th>痛点词</th><th>频次</th><th>态度分布</th><th>代表原话</th></tr></thead>
|
|
|
|
|
+<tbody>
|
|
|
|
|
+<tr class="mark"><td>辣</td><td>39</td><td>正 29 · 读不出 9 · 负 1</td><td>G1「避免重辣重油」是唯一否定</td></tr>
|
|
|
|
|
+<tr><td>贵</td><td>11</td><td>「贵州」误判 9 条</td><td>G6「贵州到底想怎样」</td></tr>
|
|
|
|
|
+</tbody></table>
|
|
|
|
|
+<div class="doc-grid2" style="margin-top:8px">
|
|
|
|
|
+<div><div class="doc-h">③ KANO 表</div><table style="margin-top:4px"><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></tbody></table></div>
|
|
|
|
|
+<div><div class="doc-h">④ 人群 × 场景矩阵</div><table style="margin-top:4px"><thead><tr><th></th><th>宿舍夜宵</th><th>加班餐</th></tr></thead><tbody><tr><td><b>G2</b></td><td>23 篇</td><td>5 篇</td></tr><tr><td><b>G1</b></td><td>0 篇</td><td>14 篇</td></tr></tbody></table></div>
|
|
|
|
|
+</div></div>
|
|
|
|
|
+</div></div>`,
|
|
|
|
|
+purpose: [
|
|
|
|
|
+['支持什么决定', '决定「用户到底在说什么」。聚类决定哪些原话是同一件事,痛点库决定哪些是真痛点,KANO 表决定痛点的性质,矩阵决定它在哪个人群、在哪个场景。'],
|
|
|
|
|
+['拦住什么错', '拦住「辣 39 次 = 用户嫌辣」这种被打标带偏的判断,也拦住四层混杂导致的「一句话当整个需求」。'],
|
|
|
|
|
+['沉淀什么资产', '四张表是下一次选题的「用户资产库」:未来任何一个新品,先从这里取,再补新证据。']
|
|
|
|
|
+],
|
|
|
|
|
+handoff: [
|
|
|
|
|
+'<b>D2-03:</b>矩阵的每一格直接进入「需求矩阵」,与供给矩阵交叉。',
|
|
|
|
|
+'<b>D2-04:</b>机会卡的「用户原声」一栏,要从痛点库里挑,不从搜索结果里现抓。',
|
|
|
|
|
+'<b>D2-07:</b>卖点的「用户语言」,直接从原话里取,不用 AI 另编。'
|
|
|
|
|
+],
|
|
|
|
|
+flow: ['D2-02', '四张表', 'D2-03 需求矩阵', 'D2-04 用户原声', 'D2-07 用户语言']
|
|
|
|
|
+},
|
|
|
|
|
+
|
|
|
|
|
+d203: {
|
|
|
|
|
+name: '产品机会及指标初表', form: '机会 × 指标表:空白格 / 类别 / 供给证据 / 需求证据 / 指标', owner: '本组产品经理 · 每组 1 张',
|
|
|
|
|
+legend: [['#C8102E', '「未覆盖」必须有同格竞品说明,否则不算空白']],
|
|
|
|
|
+look: `<div class="doc-scroll"><div class="doc">
|
|
|
|
|
+<div class="doc-bar"><b>产品机会及指标初表</b><span>本组:四维交叉</span><span class="doc-tag">结构 / 变化 / 未覆盖 分列</span></div>
|
|
|
|
|
+<div class="doc-h">一行一个机会 · 五列</div>
|
|
|
|
|
+<div class="doc-body"><table>
|
|
|
|
|
+<thead><tr><th>空白格<br><span class="doc-micro">人群 × 场景 × 价格 × 工艺</span></th><th>类别</th><th>供给证据</th><th>需求证据</th><th>需要验证的指标</th></tr></thead>
|
|
|
|
|
+<tbody>
|
|
|
|
|
+<tr><td>健康控卡 × 夜宵 × ≤4 元 × 非油炸</td><td><b>未覆盖</b><br>(康师傅 0 个,同格对手 14 个)</td><td>非油炸 105 个 SKU,29 个有有效价,其中 ≤4 元带 14 个</td><td>G4 健康 29 / 39 篇;≤4 元带价格原话 <3 条</td><td>① ≤4 元带非油炸的真实单价水平;② 价格敏感性原话</td></tr>
|
|
|
|
|
+<tr><td>学生宿舍 × 夜宵 × 4–6 元 × 拌面</td><td><b>结构</b></td><td>拌面标题词 255 个(含营销词)</td><td>G2 方便/快手 23 / 39 篇</td><td>① 拌面搜索里真实形态的占比</td></tr>
|
|
|
|
|
+<tr><td>地域风味 × 6 元以上</td><td><b>未覆盖(待查同格)</b></td><td>陕西 11 个有效价,中位 3.38</td><td>G6 正宗/地域 8 / 40 篇</td><td>① ≥6 元地域风味商品的真实 SKU 数</td></tr>
|
|
|
|
|
+<tr><td>—</td><td class="warn">变化(本次不验证)</td><td>—</td><td>—</td><td>需要同一关键词的两次快照</td></tr>
|
|
|
|
|
+</tbody></table>
|
|
|
|
|
+<p class="doc-micro">判定原则:有原话、没供给 ≠ 机会;有供给、没原话 ≠ 需求;两者都标「待验证」,交 D2-04。</p></div>
|
|
|
|
|
+</div></div>`,
|
|
|
|
|
+purpose: [
|
|
|
|
|
+['支持什么决定', '决定「哪几个空白格值得进入三源交叉」。它把需求与供给放到同一张表上,并为每一格写明验证指标。'],
|
|
|
|
|
+['拦住什么错', '拦住把结构、变化、未覆盖混为一谈——尤其是「在涨」和「空白」这两个最容易被误读的结论。'],
|
|
|
|
|
+['沉淀什么资产', '四维交叉表是品类结构资产:每季度更新一次,就能看到自己家的覆盖是否在扩。']
|
|
|
|
|
+],
|
|
|
|
|
+handoff: [
|
|
|
|
|
+'<b>D2-04:</b>选 2 个空白格进入三源交叉,并带上对应指标。',
|
|
|
|
|
+'<b>D2-05:</b>「需要验证的指标」直接作为排序时的依据之一。',
|
|
|
|
|
+'<b>D2-06:</b>「成本带能否达成」的指标,进入回推表。'
|
|
|
|
|
+],
|
|
|
|
|
+flow: ['D2-03', '机会及指标表', 'D2-04 选 2 格', 'D2-05 打分', 'D2-06 回推']
|
|
|
|
|
+},
|
|
|
|
|
+
|
|
|
|
|
+d204: {
|
|
|
|
|
+name: '候选机会清单 V1.0', form: '机会卡,每张 6 字段:结论 / 三源证据 / 反例 / 缺什么 / 下一步 / 工艺注释', owner: '本组产品经理 · 每组 2–3 张',
|
|
|
|
|
+legend: [['#C8102E', '一句话结论必须能被推翻;工艺注释只由研发侧写']],
|
|
|
|
|
+look: `<div class="doc-scroll"><div class="doc">
|
|
|
|
|
+<div class="doc-bar"><b>机会卡 #03</b><span>候选机会清单 V1.0 · 证据强度 2 / 3</span><span class="doc-tag">候选(三源齐全但薄)</span></div>
|
|
|
|
|
+<div class="doc-h">6 字段</div>
|
|
|
|
|
+<div class="doc-body">
|
|
|
|
|
+<dl class="doc-kv">
|
|
|
|
|
+<dt>一句话结论</dt><dd><b>4 元以下非油炸汤面可能是个空缺;但「愿意多付」尚未被证实。</b></dd>
|
|
|
|
|
+<dt>三源证据</dt><dd>· 商品:电商 125 个有效价里 ≤4 元占 42.4%;非油炸有效价 29 个里 ≤4 元带 14 个<br>· 用户:G4 健康需求 29 / 39 篇;价格相关原话 <3 条<br>· 工艺:非油炸热风三段控温 80–90℃ / 90–100℃ / 70–80℃,含水 8–12%(待工艺确认)</dd>
|
|
|
|
|
+<dt>反例</dt><dd>非油炸在 4 元以下成本可能做不出;同格 14 个对手多是低价散牌,说明这一格可能以「低价」取胜而非「非油炸」。</dd>
|
|
|
|
|
+<dt>还缺什么</dt><dd>待确认:≤4 元带非油炸的真实单包价、用户价格敏感性原话。</dd>
|
|
|
|
|
+<dt>下一步验证</dt><dd>先补:≤4 元带同类商品评论 10 条,验证价格敏感。</dd>
|
|
|
|
|
+<dt>工艺注释</dt><dd><b>研发侧手写:</b>换线成本取决于现有产线是否能切热风干燥段;若走挤压熟化,单机投入低,但复水口感待测。</dd>
|
|
|
|
|
+</dl>
|
|
|
|
|
+</div></div></div>`,
|
|
|
|
|
+purpose: [
|
|
|
|
|
+['支持什么决定', '决定「哪几个方向进入下午」。每张卡要么达成三源交叉,要么写明缺的是什么,不能含混。'],
|
|
|
|
|
+['拦住什么错', '拦住「只有一条线就写机会」和「把 AI 的工艺判断当自己的判断」。工艺注释一栏逼着研发侧亲手写。'],
|
|
|
|
|
+['沉淀什么资产', '机会卡是后续整个产品流程的通用母卡;V2.0、V3.0 都是在它上面迭代的版本。']
|
|
|
|
|
+],
|
|
|
|
|
+handoff: [
|
|
|
|
|
+'<b>D2-05:</b>每张卡先打三个维度的分,再定主攻 1–2 个。',
|
|
|
|
|
+'<b>D2-06:</b>主攻卡进回推,单包价与成本两条缺一不可。',
|
|
|
|
|
+'<b>D2-08:</b>全案里的机会部分,直接引用机会卡的结论与你自己的工艺注释。'
|
|
|
|
|
+],
|
|
|
|
|
+flow: ['D2-04', '候选清单 V1.0', 'D2-05 排序', 'D2-06 回推 → V2.0', 'D2-08 → V3.0']
|
|
|
|
|
+},
|
|
|
|
|
+
|
|
|
|
|
+d205: {
|
|
|
|
|
+name: '优先级机会清单 + 未知项单列', form: '排序表(三维分值 + 依据)+ 未知项表', owner: '本组产品经理 · 每组 1 张排序表 + 1 张未知项表',
|
|
|
|
|
+legend: [['#C8102E', '任何一维 1 分的机会不得排进前三']],
|
|
|
|
|
+look: `<div class="doc-scroll"><div class="doc">
|
|
|
|
|
+<div class="doc-bar"><b>优先级机会清单</b><span>三维:证据强度 × 可做性 × 商业价值</span><span class="doc-tag">每题注明:课堂证据 / 本组经验</span></div>
|
|
|
|
|
+<div class="doc-h">排序表 · 1–3 分</div>
|
|
|
|
|
+<div class="doc-body"><table>
|
|
|
|
|
+<thead><tr><th>机会</th><th>证据强度</th><th>可做性</th><th>商业价值</th><th>依据一句话</th><th>排序</th></tr></thead>
|
|
|
|
|
+<tbody>
|
|
|
|
|
+<tr><td>#03 ≤4 元非油炸汤面</td><td class="c"><span class="score s2">2</span></td><td class="c"><span class="score s1">1</span></td><td class="c"><span class="score s2">2</span></td><td>三源薄;需改线(经验);≤4 元带大但毛利薄</td><td class="down">第 3</td></tr>
|
|
|
|
|
+<tr><td>#05 6–9 元地域风味拌面</td><td class="c"><span class="score s2">2</span></td><td class="c"><span class="score s3">3</span></td><td class="c"><span class="score s3">3</span></td><td>现有线可做;6–9 元 13 个有效价;地域原话 8 / 40</td><td class="up">第 1</td></tr>
|
|
|
|
|
+<tr><td>#02 宿舍夜宵小包</td><td class="c"><span class="score s3">3</span></td><td class="c"><span class="score s3">3</span></td><td class="c"><span class="score s2">2</span></td><td>G2 方便/快手 23 / 39;包材 + 小克重</td><td class="up">第 2</td></tr>
|
|
|
|
|
+</tbody></table>
|
|
|
|
|
+<div class="doc-h" style="margin-top:6px">未知项表 · 不是低分项</div>
|
|
|
|
|
+<table style="margin-top:6px">
|
|
|
|
|
+<thead><tr><th>机会</th><th>缺什么数据</th><th>怎么补</th><th>本次能补吗</th></tr></thead>
|
|
|
|
|
+<tbody><tr class="mark"><td>#03</td><td>≤4 元带非油炸用户的支付意愿</td><td>概念测试 / 价格测试</td><td>本次不补,随 V3.0 带走</td></tr></tbody></table></div>
|
|
|
|
|
+</div></div>`,
|
|
|
|
|
+purpose: [
|
|
|
|
|
+['支持什么决定', '决定「先做哪个、放哪个,以及哪个根本做不了」。三个维度、一个硬性规则,让排序有据可依。'],
|
|
|
|
|
+['拦住什么错', '拦住「凭感觉,「我觉得」的排序」;也拦住把「不知道」硬写成「不好」。'],
|
|
|
|
|
+['沉淀什么资产', '三维打分表可以复用;未知项表把它变成一个活的待验证清单。']
|
|
|
|
|
+],
|
|
|
|
|
+handoff: [
|
|
|
|
|
+'<b>D2-06:</b>主攻机会进回推表,其余机会留在清单里备查。',
|
|
|
|
|
+'<b>D2-07:</b>价值主张只服务主攻机会,避免一个卖点服务多个机会。',
|
|
|
|
|
+'<b>D2-08:</b>排序依据直接进入提案结论页「为什么选这个」。'
|
|
|
|
|
+],
|
|
|
|
|
+flow: ['D2-05', '优先级清单', 'D2-06 主攻机会', 'D2-08 为什么选它']
|
|
|
|
|
+},
|
|
|
|
|
+
|
|
|
|
|
+d206: {
|
|
|
|
|
+name: '回推表 + 候选机会清单 V2.0', form: '成本表(B0 / O1 · 三条费用)+ 更新版机会卡', owner: '本组产品经理 · 研发侧主笔',
|
|
|
|
|
+legend: [['#C8102E', 'V 2 . 0 新增栏:成本区间 / 价格带 / 两条路 / 合规']],
|
|
|
|
|
+look: `<div class="doc-scroll"><div class="doc">
|
|
|
|
|
+<div class="doc-bar"><b>回推表 · 主攻机会 #05</b><span>6–9 元地域风味拌面</span><span class="doc-tag">课堂估算 · 待内部确认</span></div>
|
|
|
|
|
+<div class="doc-h">两条路 · 三条费用(元/千包,课堂估算)</div>
|
|
|
|
|
+<div class="doc-body"><table>
|
|
|
|
|
+<thead><tr><th>口径</th><th>B0 现状(现有配比)</th><th>O1 方案(地域风味)</th><th>来源</th></tr></thead>
|
|
|
|
|
+<tbody>
|
|
|
|
|
+<tr><td>代工价(袋装)</td><td>2.1–3.2 / 袋</td><td>2.1–3.2 / 袋</td><td>知识库 · 2026-10-29 1688 询价</td></tr>
|
|
|
|
|
+<tr><td>一次费用</td><td>—</td><td>配方开发 + 感官测试</td><td class="warn">本组经验值</td></tr>
|
|
|
|
|
+<tr><td>资本投入</td><td>0</td><td>改线(无新增)</td><td class="warn">待内部确认</td></tr>
|
|
|
|
|
+<tr><td>营运资金</td><td>—</td><td>包材 / 新品铺货</td><td class="warn">待确认</td></tr>
|
|
|
|
|
+<tr><td>合规</td><td>现有品类标准覆盖</td><td>GB 17400-2015(水分 ≤10% / 酸价 ≤1.8 / 过氧化值 ≤0.25);GB 2760-2024 添加剂</td><td>标准正文</td></tr>
|
|
|
|
|
+</tbody></table>
|
|
|
|
|
+<div class="doc-h" style="margin-top:6px">V2.0 机会卡新增栏</div>
|
|
|
|
|
+<div class="doc-body" style="padding:6px 12px"><div class="doc-box"><ul>
|
|
|
|
|
+<li><b>成本区间:</b>课堂估算 —— 视觉设计上袋装成本结构中,面饼 34–38%、调料 24–30%、包材 12–13%</li>
|
|
|
|
|
+<li><b>目标价格带:</b>6–9 元 / 100g,对应 B2 数据中 13 个有效价</li>
|
|
|
|
|
+<li><b>两条路:</b>B0 改配方 vs O1 全新地域配方,B0 更省、O1 更差异</li>
|
|
|
|
|
+<li><b>合规:</b>配料合规通过,宣称词全部走中性描述</li>
|
|
|
|
|
+</ul></div></div></div>
|
|
|
|
|
+</div></div>`,
|
|
|
|
|
+purpose: [
|
|
|
|
|
+['支持什么决定', '决定「做起来要花多少、划不划算」。它把机会从「值得做」推进到「值得立项或进一步论证」。'],
|
|
|
|
|
+['拦住什么错', '拦住「只谈成本不谈路线」和「用不同收入假设比较两条路」。三条费用拆开之后,含糊就很难蒙混了。'],
|
|
|
|
|
+['沉淀什么资产', '回推表的框架是成本判断的模板;V2.0 机会卡的增量字段,可以直接套进产品立项报告。']
|
|
|
|
|
+],
|
|
|
|
|
+handoff: [
|
|
|
|
|
+'<b>D2-07:</b>卖点表达要跟价格带、成本带匹配——6 元的卖点不能按 3 元的成本说。',
|
|
|
|
|
+'<b>D2-08:</b>回推表的成本与合规,进提案的「风险」部分。',
|
|
|
|
|
+'<b>结营后:</b>「待确认」项需要拿到内部真实数据后才能正式立项。'
|
|
|
|
|
+],
|
|
|
|
|
+flow: ['D2-06', '回推表 + V2.0', 'D2-07 卖点匹配', 'D2-08 风险页']
|
|
|
|
|
+},
|
|
|
|
|
+
|
|
|
|
|
+d207: {
|
|
|
|
|
+name: '价值主张卡 + 卖点清单', form: '一页卡(主张 + 收益 + 证据 + 边界)+ 卖点表(多版本)', owner: '本组产品经理 · 每组 1 卡 + 1 清单',
|
|
|
|
|
+legend: [['#C8102E', '「不能说的话」也进清单,防止越界']],
|
|
|
|
|
+look: `<div class="doc-scroll"><div class="doc">
|
|
|
|
|
+<div class="doc-bar"><b>价值主张卡 · #05</b><span>主攻:6–9 元地域风味拌面</span><span class="doc-tag">主推版</span></div>
|
|
|
|
|
+<div class="doc-h">一句主张 · 三条收益 · 三条证据 · 证据边界</div>
|
|
|
|
|
+<div class="doc-body">
|
|
|
|
|
+<dl class="doc-kv">
|
|
|
|
|
+<dt>主主张</dt><dd><b>「一碗像家里做的面。」</b></dd>
|
|
|
|
|
+<dt>三条收益</dt><dd>① 面宽有嚼劲 · ② 地域风味(如陕西油泼)· ③ 不用等很久</dd>
|
|
|
|
|
+<dt>三条证据</dt><dd>① 工艺:复合压延 6–8 道、终轧 1.0–1.2mm(技术背书)<br>② 商品事实:6–9 元带 13 个有效价,竞品较少<br>③ 用户原话:G6「口味新鲜」23 / 40 篇</dd>
|
|
|
|
|
+<dt>能说</dt><dd>「宽面」「地道风味」「泡 5 分钟」——带参数或可验证信息</dd>
|
|
|
|
|
+<dt>不能说</dt><dd>「健康」「无添加」「比 X 好吃」(无对照测评或无合规依据)</dd>
|
|
|
|
|
+</dl>
|
|
|
|
|
+<div class="doc-h" style="margin-top:6px">卖点清单 · 按渠道</div>
|
|
|
|
|
+<table style="margin-top:6px">
|
|
|
|
|
+<thead><tr><th>渠道 / 人群</th><th>版本</th><th>说明</th></tr></thead>
|
|
|
|
|
+<tbody>
|
|
|
|
|
+<tr><td>全家便利店 · 上班族</td><td>「加班回家,煮个面像点了一份外卖。」</td><td>便利店需要“快 + 情绪”</td></tr>
|
|
|
|
|
+<tr class="mark"><td>线上 · 学生宿舍</td><td>「深夜宿舍一碗油泼面,不用开火。」</td><td>宿舍场景 + 不用开火</td></tr>
|
|
|
|
|
+<tr><td colspan="3" class="muted">已删版本:「健康好面」——无合规依据;「比泡面更好吃」——无对照测评</td></tr>
|
|
|
|
|
+</tbody></table></div>
|
|
|
|
|
+</div></div>`,
|
|
|
|
|
+purpose: [
|
|
|
|
|
+['支持什么决定', '决定「用户为什么买它」。这是研发语言向市场语言的最后一次翻译:参数变成感知,工艺变成故事,同时不越过证据边界。'],
|
|
|
|
|
+['拦住什么错', '拦住「研发人员讲故事的老毛病」——把参数当卖点,或者为了好听越界。边界写在同一页上,越过就看见了。'],
|
|
|
|
|
+['沉淀什么资产', '价值主张卡的格式可以复用到每一款新品;多版本卖点清单可以直接提供给渠道与品牌团队共创。']
|
|
|
|
|
+],
|
|
|
|
|
+handoff: [
|
|
|
|
|
+'<b>D2-08:</b>提案第一页的一句话,用的就是价值主张卡的主主张。',
|
|
|
|
|
+'<b>展演:</b>每组要能读出主主张,让别组复述——复述差异本身就是测试。',
|
|
|
|
|
+'<b>结营后:</b>卖点清单进入与品牌方的共创,不需要重新从零开始写。'
|
|
|
|
|
+],
|
|
|
|
|
+flow: ['D2-07', '价值主张卡 + 卖点', 'D2-08 提案首句', '展演复述', '品牌共创']
|
|
|
|
|
+},
|
|
|
|
|
+
|
|
|
|
|
+d208: {
|
|
|
|
|
+name: '概念提案 + 候选清单 V3.0 + 成果导航', form: '提案文档(一句话 / 一页 / 全案)+ 更新版机会卡 + 导航页', owner: '本组产品经理 · 每组 1 套',
|
|
|
|
|
+legend: [['#C8102E', '质询记录里「答不出」的问题必须留在 V 3 . 0 里,作为下一步']],
|
|
|
|
|
+look: `<div class="doc-scroll"><div class="doc">
|
|
|
|
|
+<div class="doc-bar"><b>概念提案 · 第 3 组</b><span>6–9 元地域风味拌面</span><span class="doc-tag">课堂成果 · 未经正式确认</span></div>
|
|
|
|
|
+<div class="doc-h">提案首屏:结论先讲</div>
|
|
|
|
|
+<div class="doc-body">
|
|
|
|
|
+<p class="doc-title">做什么:做一款 6–9 元带的陕西风味拌面,现有产线可做。<br>为什么现在:6–9 元带只有 13 个有效价,竞品集中度低。<br>要什么资源:配方开发 + 一轮概念测试。</p>
|
|
|
|
|
+<div class="doc-grid2">
|
|
|
|
|
+<div class="doc-box"><h5>决策圈可能问</h5><ul><li>这条带的用户接受度测过吗?<span class="warn">答不出</span></li><li>属于三类创新中的哪一类?→ 长尾溢价拓利</li></ul></div>
|
|
|
|
|
+<div class="doc-box"><h5>协同圈可能问</h5><ul><li>现有产线改不改?→ 不改</li><li>成本能否落在 6–9 元?→ 课堂估算,待确认</li></ul></div>
|
|
|
|
|
+</div>
|
|
|
|
|
+<div class="doc-h" style="margin-top:6px">候选清单 V3.0 · 质询后修改记录</div>
|
|
|
|
|
+<table style="margin-top:6px"><thead><tr><th>字段</th><th>V2.0</th><th>V3.0 修改</th><th>理由</th></tr></thead><tbody>
|
|
|
|
|
+<tr><td>一句话结论</td><td>空缺需填补</td><td>同口味“陕西油泼 xx”已有 1 个 SKU</td><td>质询时邻组指出</td></tr>
|
|
|
|
|
+<tr><td>反例</td><td>价格带未被占满</td><td>同格对手集中度高,可能挤压新品</td><td>决策圈问题的回答</td></tr>
|
|
|
|
|
+</tbody></table>
|
|
|
|
|
+<div class="doc-h" style="margin-top:6px">成果导航</div>
|
|
|
|
|
+<table style="margin-top:6px"><thead><tr><th>产出物</th><th>位置</th><th>结营后第一周先看哪一份</th></tr></thead><tbody><tr><td>V3.0 + 提案</td><td>本组项目目录 / D2-08</td><td class="mark"><b>先看 V3.0「答不出」的问题</b></td></tr></tbody></table></div>
|
|
|
|
|
+</div></div>`,
|
|
|
|
|
+purpose: [
|
|
|
|
|
+['支持什么决定', '决定「这个产品能不能进入下一步」——展演中答得出来的问题,就是可以推进的部分;答不出的问题,就是需要补的部分。'],
|
|
|
|
|
+['拦住什么错', '拦住「堆证据不讲结论」「藏起矛盾」「质询后悄悄改数」三种常见错误。'],
|
|
|
|
|
+['沉淀什么资产', '提案本身、V3.0 和成果导航,是结营后 7 周陪练以及未来新项目的交接物。']
|
|
|
|
|
+],
|
|
|
|
|
+handoff: [
|
|
|
|
|
+'<b>结营与陪练:</b>V3.0 的「答不出」清单就是第一周的任务。',
|
|
|
|
|
+'<b>下一次立项:</b>这次提案的结论页与风险页,可以直接作为立项报告的前两页草稿。',
|
|
|
|
|
+'<b>组织沉淀:</b>成果导航可以合并进产品中心的「创新资产目录」。'
|
|
|
|
|
+],
|
|
|
|
|
+flow: ['D2-08', '提案 + V3.0 + 导航', '结营展演', '训后第一周']
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+};
|
|
|
|
|
+
|
|
|
|
|
+// 渲染 + 交互:原生 JS,无依赖。v3 在 v2 基础上新增:大课分段、产出物规范板、推送语、三层架构。
|
|
|
|
|
+(function () {
|
|
|
|
|
+ 'use strict';
|
|
|
|
|
+
|
|
|
|
|
+ var SEGS = window.SEGS || [];
|
|
|
|
|
+ var PROMPTS = window.PROMPTS || {};
|
|
|
|
|
+ var DELIV = window.DELIV || {};
|
|
|
|
|
+ function esc(s) {
|
|
|
|
|
+ return String(s == null ? '' : s).replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"');
|
|
|
|
|
+ }
|
|
|
|
|
+ function promptBlock(id) {
|
|
|
|
|
+ var p = PROMPTS[id];
|
|
|
|
|
+ if (!p) return '<p class="muted">[提示词缺失:' + esc(id) + ']</p>';
|
|
|
|
|
+ return '<div class="prompt" data-id="' + id + '">' +
|
|
|
|
|
+ '<div class="prompt-bar"><span class="prompt-label">提示词 · ' + esc(p.name) + '</span>' +
|
|
|
|
|
+ '<button class="copy" type="button" data-copy="' + id + '">复制</button></div>' +
|
|
|
|
|
+ '<pre class="prompt-body">' + esc(p.text) + '</pre></div>';
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ var HTML = [];
|
|
|
|
|
+ var NAV = []; // {kind,id,title,group}
|
|
|
|
|
+ var SEC_IDS = []; // 13 个环节
|
|
|
|
|
+ var HALVES = []; // {id,label,theme,sections:[]}
|
|
|
|
|
+ var DELIV_COUNT = 0;
|
|
|
|
|
+
|
|
|
|
|
+ function h(s) { HTML.push(s); }
|
|
|
|
|
+
|
|
|
|
|
+ // ---------- 封面 ----------
|
|
|
|
|
+ function renderCover(s) {
|
|
|
|
|
+ h('<header class="cover" id="top">' +
|
|
|
|
|
+ '<div class="cover-mark">康师傅 · 智研先锋计划 · 学员手册 v3</div>' +
|
|
|
|
|
+ '<h1>' + s.title + '</h1>' +
|
|
|
|
|
+ '<p class="cover-sub">' + esc(s.sub) + '</p>' +
|
|
|
|
|
+ '<p class="cover-lead">' + s.lead + '</p>' +
|
|
|
|
|
+ '<div class="cover-thesis">' + s.thesis + '</div>' +
|
|
|
|
|
+ '<div class="cover-facts">' + s.facts.map(function (f) { return '<div><span>' + esc(f[0]) + '</span><b>' + esc(f[1]) + '</b></div>'; }).join('') + '</div>' +
|
|
|
|
|
+ '<div class="cover-cta"><a href="#overview" class="btn primary">三个半天总览</a><a href="#pm" class="btn">你是未来品类负责人</a><a href="#sop" class="btn">八步 SOP</a><a class="btn" href="../overview/index.html">总览图 ↗</a></div>' +
|
|
|
|
|
+ '</header>');
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // ---------- 通用块段 ----------
|
|
|
|
|
+ function renderMeta(s) {
|
|
|
|
|
+ NAV.push({ kind: 'meta', id: s.id, title: s.title, group: s.group });
|
|
|
|
|
+ h('<section class="seg sec" id="' + s.id + '"><h2 class="seg-title">' + esc(s.title) + '</h2>');
|
|
|
|
|
+ if (s.lead) h('<p class="lead">' + s.lead + '</p>');
|
|
|
|
|
+ (s.blocks || []).forEach(function (b) {
|
|
|
|
|
+ h('<div class="block' + (b.cls ? ' ' + b.cls : '') + '"><h3>' + esc(b.t) + '</h3>' + (b.html || ''));
|
|
|
|
|
+ });
|
|
|
|
|
+ if (s.render) h(s.render());
|
|
|
|
|
+ h('</section>');
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // ---------- 半天头 ----------
|
|
|
|
|
+ function renderHalf(s) {
|
|
|
|
|
+ HALVES.push({ id: s.id, label: s.label, theme: s.theme, sections: [] });
|
|
|
|
|
+ h('<section class="half" id="' + s.id + '"><div class="half-head">' +
|
|
|
|
|
+ '<div class="half-top"><span class="half-label">' + esc(s.label) + '</span><span class="half-time">' + esc(s.time) + '</span></div>' +
|
|
|
|
|
+ '<h2>' + esc(s.theme) + '</h2><p>' + esc(s.lead) + '</p>' +
|
|
|
|
|
+ '<div class="half-goal"><b>本半天结束,每组应该有:</b><ol>' + s.goal.map(function (g) { return '<li>' + g + '</li>'; }).join('') + '</ol></div>' +
|
|
|
|
|
+ '<div class="band-note">' + (s.note || '') + '</div></div></section>');
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // ---------- 大课详案 ----------
|
|
|
|
|
+ function renderBig(s) {
|
|
|
|
|
+ NAV.push({ kind: 'big', id: s.id, title: s.title, group: s.group });
|
|
|
|
|
+ h('<article class="seg big" id="' + s.id + '">' +
|
|
|
|
|
+ '<div class="big-head"><span class="big-no">' + esc(s.no) + '</span><h2>' + esc(s.title) + '</h2></div>' +
|
|
|
|
|
+ '<div class="meta-row">' + s.meta.map(function (m) { return '<span class="chip' + (m[1] ? ' ' + m[1] : '') + '">' + esc(m[0]) + '</span>'; }).join('') + '</div>' +
|
|
|
|
|
+ '<p class="lead">' + s.lead + '</p>');
|
|
|
|
|
+ if (s.outline) {
|
|
|
|
|
+ h('<div class="segments">' + s.outline.map(function (o) {
|
|
|
|
|
+ return '<div class="seg-row' + (o[3] ? ' onair' : '') + '"><span class="sr-t">' + esc(o[0]) + '</span><b>' + esc(o[1]) + '</b><span class="sr-q">' + esc(o[2]) + '</span></div>';
|
|
|
|
|
+ }).join('') + '</div>');
|
|
|
|
|
+ }
|
|
|
|
|
+ if (s.before) s.before.forEach(function (b) { h('<div class="block' + (b.cls ? ' ' + b.cls : '') + '"><h3>' + esc(b.t) + '</h3>' + (b.html || '')); });
|
|
|
|
|
+ (s.parts || []).forEach(function (p) {
|
|
|
|
|
+ h('<section class="lecture" id="' + p.id + '"><div class="lecture-head"><span class="lecture-no">' + esc(p.no) + '</span><h3>' + esc(p.title) + '</h3>' +
|
|
|
|
|
+ '<span class="chip">' + esc(p.time) + '</span>' + (p.goal ? '<span class="chip tag">' + esc(p.goal) + '</span>' : '') + '</div><div class="lecture-body">');
|
|
|
|
|
+ (p.pts || []).forEach(function (pt) {
|
|
|
|
|
+ h('<div class="lp"><div class="lp-head"><span class="lp-time">' + esc(pt.t) + '</span><h4>' + esc(pt.ti) + '</h4></div>' +
|
|
|
|
|
+ (pt.html || '') + (pt.prompt ? promptBlock(pt.prompt) : '') + '</div>');
|
|
|
|
|
+ });
|
|
|
|
|
+ if (p.blocks) p.blocks.forEach(function (b) { h('<div class="block' + (b.cls ? ' ' + b.cls : '') + '"><h3>' + esc(b.t) + '</h3>' + (b.html || '')); });
|
|
|
|
|
+ if (p.takeaway) h('<div class="block note"><h3>这一段的落点</h3>' + p.takeaway + '</div>');
|
|
|
|
|
+ h('</div></section>');
|
|
|
|
|
+ });
|
|
|
|
|
+ if (s.after) s.after.forEach(function (b) { h('<div class="block' + (b.cls ? ' ' + b.cls : '') + '"><h3>' + esc(b.t) + '</h3>' + (b.html || '')); });
|
|
|
|
|
+ h('</article>');
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // ---------- 环节 ----------
|
|
|
|
|
+ function specHTML(id) {
|
|
|
|
|
+ var d = DELIV[id];
|
|
|
|
|
+ if (!d) return '<p class="muted">[产出物规范缺失:' + esc(id) + ']</p>';
|
|
|
|
|
+ DELIV_COUNT++;
|
|
|
|
|
+ var flow = d.flow.map(function (f, i) {
|
|
|
|
|
+ return (i ? '<i>→</i>' : '') + '<span>' + (f[0] ? '<b>' + esc(f) + '</b>' : esc(f)) + '</span>';
|
|
|
|
|
+ }).join('');
|
|
|
|
|
+ return '<div class="spec" id="spec-' + id + '">' +
|
|
|
|
|
+ '<div class="spec-head"><span class="spec-k">产出物规范</span><h3>' + esc(d.name) + '</h3><span class="spec-meta">' + esc(d.form) + ' · ' + esc(d.owner) + '</span></div>' +
|
|
|
|
|
+ '<div class="spec-body">' +
|
|
|
|
|
+ '<div class="spec-block"><h4><span class="spec-n">1</span>它长什么样<span class="spec-form">' + esc(d.form) + '</span></h4>' + d.look +
|
|
|
|
|
+ '<p class="spec-legend">' + (d.legend || []).map(function (l) { return '<span><em style="background:' + l[0] + '"></em>' + esc(l[1]) + '</span>'; }).join('') +
|
|
|
|
|
+ '<span><em style="background:#1F1F1F"></em>黑条 = 文档抬头(谁做的、给谁用、什么状态)</span></p>' +
|
|
|
|
|
+ '<p class="muted">样卡用课堂数据包的真实数字写成,示范的是格式与判断方式,不是本组答案。</p></div>' +
|
|
|
|
|
+ '<div class="spec-block"><h4><span class="spec-n">2</span>它是用来干什么的</h4><div class="uses">' +
|
|
|
|
|
+ d.purpose.map(function (p) { return '<div class="use"><b>' + esc(p[0]) + '</b>' + p[1] + '</div>'; }).join('') + '</div></div>' +
|
|
|
|
|
+ '<div class="spec-block"><h4><span class="spec-n">3</span>它交给谁、怎么被下一环用</h4>' +
|
|
|
|
|
+ '<div class="flow-mini">' + flow + '</div><div class="handoff-box"><span class="hb">下一环具体用法</span><ul>' +
|
|
|
|
|
+ d.handoff.map(function (x) { return '<li>' + x + '</li>'; }).join('') + '</ul></div></div>' +
|
|
|
|
|
+ '</div></div>';
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ function pushHTML(s) {
|
|
|
|
|
+ var p = s.push;
|
|
|
|
|
+ return '<div class="push"><div class="push-bar"><b>AI 推送</b><span>' + esc(p.who || '本组数字分身 · 环节结束自动输出') + '</span></div><div class="push-rows">' +
|
|
|
|
|
+ '<div class="push-row"><b>【本轮产出】</b><p>' + p.out + '</p></div>' +
|
|
|
|
|
+ '<div class="push-row"><b>【还缺什么】</b><p>' + p.gap + '</p></div>' +
|
|
|
|
|
+ '<div class="push-row"><b>【下一步】</b><p class="ask">' + p.next + '</p></div>' +
|
|
|
|
|
+ '</div></div>';
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ function renderSection(s) {
|
|
|
|
|
+ NAV.push({ kind: 'sec', id: s.id, title: s.no + ' · ' + s.title, group: s.group });
|
|
|
|
|
+ SEC_IDS.push(s.id);
|
|
|
|
|
+ var cur = HALVES[HALVES.length - 1];
|
|
|
|
|
+ if (cur) cur.sections.push(s.id);
|
|
|
|
|
+ var dl = DELIV[s.id] || {};
|
|
|
|
|
+ h('<article class="seg sec" id="' + s.id + '">' +
|
|
|
|
|
+ '<div class="sec-head"><div class="sec-no">' + esc(s.no) + '</div><div><h2>' + esc(s.title) + '</h2>' +
|
|
|
|
|
+ '<div class="meta-row"><span class="chip">⏱ ' + esc(s.time) + '</span>' +
|
|
|
|
|
+ '<span class="chip deliver">产出物:' + esc(dl.name || '') + '</span>' +
|
|
|
|
|
+ '<span class="chip">形态:' + esc(dl.form || '') + '</span>' +
|
|
|
|
|
+ (s.type ? '<span class="chip tag">' + esc(s.type) + '</span>' : '') + '</div></div></div>' +
|
|
|
|
|
+ '<div class="from">↑ 承接:' + s.from + '</div>');
|
|
|
|
|
+
|
|
|
|
|
+ h('<div class="block"><h3><span class="step-no">一</span>先想清楚(3 分钟,自己填)</h3>' +
|
|
|
|
|
+ '<div class="pillars">' + s.pillars.map(function (p, i) {
|
|
|
|
|
+ return '<div class="pillar' + (i === 1 ? ' key' : '') + '"><div class="p-head"><b>' + esc(p.name) + '</b>' + (i === 1 ? '<span class="p-flag">最值钱</span>' : '') + '</div>' +
|
|
|
|
|
+ '<p class="p-tip">' + esc(p.tip) + '</p><p class="p-sample"><span>示例</span>' + esc(p.sample) + '</p>' +
|
|
|
|
|
+ '<div class="p-lines" aria-hidden="true"><i></i><i></i><i></i></div></div>';
|
|
|
|
|
+ }).join('') + '</div></div>');
|
|
|
|
|
+
|
|
|
|
|
+ h('<div class="block"><h3><span class="step-no">二</span>这一节要解决什么</h3>' + s.problem + '</div>');
|
|
|
|
|
+ if (s.industry) h('<div class="block industry"><h3><span class="step-no">背景</span>' + esc(s.industry.title) + '</h3>' + s.industry.html + '</div>');
|
|
|
|
|
+
|
|
|
|
|
+ h('<div class="block"><h3><span class="step-no">三</span>怎么做</h3>' +
|
|
|
|
|
+ (s.prompts || []).map(function (id) { return promptBlock(id); }).join('') + s.how + '</div>');
|
|
|
|
|
+
|
|
|
|
|
+ h('<div class="block"><h3><span class="step-no">四</span>你会拿到什么</h3>' + (s.deliver || '') + specHTML(s.id) + '</div>');
|
|
|
|
|
+
|
|
|
|
|
+ if (s.discuss) h('<div class="block"><h3><span class="step-no">五</span>小组讨论</h3>' + s.discuss + '</div>');
|
|
|
|
|
+ if (s.check) h('<div class="block check"><h3><span class="step-no">六</span>本组进度自检</h3><ol>' +
|
|
|
|
|
+ s.check.map(function (q) { return '<li><label><input type="checkbox"><span>' + esc(q) + '</span></label></li>'; }).join('') + '</ol>' +
|
|
|
|
|
+ '<p class="muted">三条都能打勾,才算这一节真推进了;有一项打不了勾,回到对应部分补,不要硬往下走。</p></div>');
|
|
|
|
|
+ if (s.right) h('<div class="right-wrong"><div class="rw ok"><h3>✓ 这样做是对的</h3><ul>' + s.right.map(function (x) { return '<li>' + x + '</li>'; }).join('') + '</ul></div>' +
|
|
|
|
|
+ '<div class="rw bad"><h3>✗ 常见的错法</h3><ul>' + s.wrong.map(function (x) { return '<li>' + x + '</li>'; }).join('') + '</ul></div></div>');
|
|
|
|
|
+ h('<div class="block"><h3><span class="step-no">七</span>环节收尾:AI 推送</h3>' + pushHTML(s) + '</div>');
|
|
|
|
|
+ if (s.handoff) h('<div class="handoff"><span>↓ 交给下一环节</span><p>' + s.handoff + '</p></div>');
|
|
|
|
|
+ h('</article>');
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // ---------- 附录 ----------
|
|
|
|
|
+ function renderAppx(s) {
|
|
|
|
|
+ NAV.push({ kind: 'appx', id: s.id, title: s.title.replace(/^附录 [A-D] · /, ''), group: '附录' });
|
|
|
|
|
+ h('<section class="seg sec appx" id="' + s.id + '"><h2 class="seg-title">' + esc(s.title) + '</h2>');
|
|
|
|
|
+ if (s.lead) h('<p class="lead">' + s.lead + '</p>');
|
|
|
|
|
+ if (s.traps) {
|
|
|
|
|
+ h('<div class="traps">' + s.traps.map(function (t) {
|
|
|
|
|
+ return '<div class="trap"><div class="trap-head"><span class="trap-no">反常识 ' + t.n + '</span><h3>' + esc(t.title) + '</h3><span class="trap-tag">' + esc(t.tag) + '</span></div>' +
|
|
|
|
|
+ '<div class="trap-cols"><div class="tc ai"><h4>AI 初版结论</h4>' + tp(t.ai) + '</div><div class="arrow">→</div><div class="tc human"><h4>人工复核后</h4>' + tp(t.human) + '</div></div>' +
|
|
|
|
|
+ '<div class="trap-foot"><p><b>原文</b> ' + esc(t.quote) + '</p><p><b>照这样做</b> ' + esc(t.where) + '</p><p class="muted">' + t.note + '</p></div></div>';
|
|
|
|
|
+ }).join('') + '</div>');
|
|
|
|
|
+ if (s.practice) h('<div class="block accent"><h3>' + esc(s.practice.title) + '</h3>' + s.practice.html + '</div>');
|
|
|
|
|
+ }
|
|
|
|
|
+ (s.blocks || []).forEach(function (b) {
|
|
|
|
|
+ h('<div class="block' + (b.cls ? ' ' + b.cls : '') + '"><h3>' + esc(b.t) + '</h3>' + (b.html || '') + (b.prompt ? promptBlock(b.prompt) : ''));
|
|
|
|
|
+ });
|
|
|
|
|
+ if (s.faq) {
|
|
|
|
|
+ h('<div class="faq">' + s.faq.map(function (g) {
|
|
|
|
|
+ return '<div class="faq-group"><h3>' + esc(g.g) + '</h3>' + g.qs.map(function (q) {
|
|
|
|
|
+ return '<details class="q"><summary>' + esc(q[0]) + '</summary><p>' + q[1] + '</p></details>';
|
|
|
|
|
+ }).join('') + '</div>';
|
|
|
|
|
+ }).join('') + '</div>');
|
|
|
|
|
+ }
|
|
|
|
|
+ if (s.tips) h('<div class="tips"><h3>' + esc(s.tips.title) + '</h3><ol>' + s.tips.items.map(function (x) { return '<li>' + esc(x) + '</li>'; }).join('') + '</ol></div>');
|
|
|
|
|
+ h('</section>');
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ function tp(html) {
|
|
|
|
|
+ var t = String(html).trim();
|
|
|
|
|
+ if (t.charAt(0) !== '<') return '<p>' + esc(t) + '</p>';
|
|
|
|
|
+ return t;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // ---------- 主渲染 ----------
|
|
|
|
|
+ SEGS.forEach(function (s) {
|
|
|
|
|
+ switch (s.kind) {
|
|
|
|
|
+ case 'cover': renderCover(s); break;
|
|
|
|
|
+ case 'meta': renderMeta(s); break;
|
|
|
|
|
+ case 'half': renderHalf(s); break;
|
|
|
|
|
+ case 'big': renderBig(s); break;
|
|
|
|
|
+ case 'section': renderSection(s); break;
|
|
|
|
|
+ case 'appx': renderAppx(s); break;
|
|
|
|
|
+ case 'raw': h(s.html); break;
|
|
|
|
|
+ }
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
|
|
+ h('<footer class="foot"><p><b>康师傅 · 产品创新工作坊 学员手册 v3</b> · 产品经理 = 未来品类负责人</p>' +
|
|
|
|
|
+ '<p>数据口径:课堂数据包 2026-11-01 单次快照(电商 400 SKU、用户笔记 260 篇、竞品社媒 120 篇、工艺知识库 49 条),手册中的数字均可在 <a href="#appx-a">附录 A</a> 找到出处与复核方法。</p>' +
|
|
|
|
|
+ '<p>课堂过程成果一律标注「未经正式确认」,不代替正式研究报告。</p><a href="#top">回到顶部 ↑</a></footer>');
|
|
|
|
|
+
|
|
|
|
|
+ var content = document.getElementById('content');
|
|
|
|
|
+ content.innerHTML = HTML.join('')
|
|
|
|
|
+ .replace(/<table class="tbl((?:" [^>]*|)(?: )?)>/g, function (_, cls) {
|
|
|
|
|
+ return '<div class="tbl-scroll"><table class="tbl' + (cls || '') + '">';
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
|
|
+ // ---------- 目录 ----------
|
|
|
|
|
+ var GROUP_ORDER = ['开始之前', '大课详案', 'D1 下午', 'D2 上午', 'D2 下午', '附录'];
|
|
|
|
|
+ var tocHTML = '', lastGroup = '';
|
|
|
|
|
+ NAV.forEach(function (n) {
|
|
|
|
|
+ var g = n.group || '其他';
|
|
|
|
|
+ if (g !== lastGroup) { tocHTML += '<div class="toc-group">' + esc(g) + '</div>'; lastGroup = g; }
|
|
|
|
|
+ tocHTML += '<a href="#' + n.id + '" data-toc="' + n.id + '" class="toc-' + n.kind + '">' + esc(n.title) + '</a>';
|
|
|
|
|
+ });
|
|
|
|
|
+ document.getElementById('toc-list').innerHTML = tocHTML;
|
|
|
|
|
+
|
|
|
|
|
+ // ---------- 进度 ----------
|
|
|
|
|
+ var prog = document.getElementById('progress');
|
|
|
|
|
+ var TOTAL = SEC_IDS.length;
|
|
|
|
|
+ prog.innerHTML = HALVES.map(function (hv) {
|
|
|
|
|
+ return '<a href="#' + hv.id + '" class="pg" data-half="' + hv.id + '" title="' + esc(hv.theme) + '"><span class="pg-bar"><i></i></span><span class="pg-label">' + esc(hv.label) + '</span></a>';
|
|
|
|
|
+ }).join('') + '<span class="pg-count" id="pg-count">0 / ' + TOTAL + '</span>';
|
|
|
|
|
+
|
|
|
|
|
+ // ---------- 滚动 ----------
|
|
|
|
|
+ var tocLinks = {};
|
|
|
|
|
+ Array.prototype.forEach.call(document.querySelectorAll('[data-toc]'), function (a) { tocLinks[a.getAttribute('data-toc')] = a; });
|
|
|
|
|
+ var progBars = Array.prototype.slice.call(document.querySelectorAll('.pg'));
|
|
|
|
|
+ var ticking = false;
|
|
|
|
|
+ function navActive() {
|
|
|
|
|
+ var y = window.scrollY + 140, cur = null;
|
|
|
|
|
+ NAV.forEach(function (n) { var el = document.getElementById(n.id); if (el && el.offsetTop <= y) cur = n.id; });
|
|
|
|
|
+ return cur;
|
|
|
|
|
+ }
|
|
|
|
|
+ function onScroll() {
|
|
|
|
|
+ if (ticking) return; ticking = true;
|
|
|
|
|
+ requestAnimationFrame(function () {
|
|
|
|
|
+ ticking = false;
|
|
|
|
|
+ var a = navActive();
|
|
|
|
|
+ Object.keys(tocLinks).forEach(function (k) { tocLinks[k].classList.toggle('active', k === a); });
|
|
|
|
|
+ var halfPos = -1, secPos = 0;
|
|
|
|
|
+ HALVES.forEach(function (hv, i) {
|
|
|
|
|
+ if (document.getElementById(hv.id).offsetTop <= window.scrollY + 200) halfPos = i;
|
|
|
|
|
+ hv.sections.forEach(function (id) {
|
|
|
|
|
+ var el = document.getElementById(id);
|
|
|
|
|
+ if (el && el.offsetTop <= window.scrollY + window.innerHeight * 0.5) secPos = Math.max(secPos, SEC_IDS.indexOf(id) + 1);
|
|
|
|
|
+ });
|
|
|
|
|
+ });
|
|
|
|
|
+ progBars.forEach(function (b, i) {
|
|
|
|
|
+ b.classList.toggle('active', i === halfPos);
|
|
|
|
|
+ b.classList.toggle('done', i < halfPos);
|
|
|
|
|
+ b.querySelector('i').style.width = i < halfPos ? '100%' : (i === halfPos ? '35%' : '0');
|
|
|
|
|
+ });
|
|
|
|
|
+ document.getElementById('pg-count').textContent = secPos + ' / ' + TOTAL;
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+ window.addEventListener('scroll', onScroll, { passive: true });
|
|
|
|
|
+ window.addEventListener('resize', onScroll);
|
|
|
|
|
+ onScroll();
|
|
|
|
|
+ if (location.hash) {
|
|
|
|
|
+ var ht = document.getElementById(decodeURIComponent(location.hash.slice(1)));
|
|
|
|
|
+ if (ht) ht.scrollIntoView();
|
|
|
|
|
+ onScroll();
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // ---------- 复制 ----------
|
|
|
|
|
+ function copyText(text) {
|
|
|
|
|
+ if (navigator.clipboard && window.isSecureContext) return navigator.clipboard.writeText(text);
|
|
|
|
|
+ return new Promise(function (resolve, reject) {
|
|
|
|
|
+ var ta = document.createElement('textarea');
|
|
|
|
|
+ ta.value = text; ta.style.position = 'fixed'; ta.style.opacity = '0';
|
|
|
|
|
+ document.body.appendChild(ta); ta.select();
|
|
|
|
|
+ try { document.execCommand('copy') ? resolve() : reject(); } catch (e) { reject(e); }
|
|
|
|
|
+ document.body.removeChild(ta);
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+ document.addEventListener('click', function (e) {
|
|
|
|
|
+ var btn = e.target.closest && e.target.closest('[data-copy]');
|
|
|
|
|
+ if (!btn) return;
|
|
|
|
|
+ var p = PROMPTS[btn.getAttribute('data-copy')];
|
|
|
|
|
+ if (!p) return;
|
|
|
|
|
+ copyText(p.text).then(function () {
|
|
|
|
|
+ btn.textContent = '已复制 ✓'; btn.classList.add('ok');
|
|
|
|
|
+ setTimeout(function () { btn.textContent = '复制'; btn.classList.remove('ok'); }, 1600);
|
|
|
|
|
+ }, function () {
|
|
|
|
|
+ btn.textContent = '复制失败,请长按选择';
|
|
|
|
|
+ setTimeout(function () { btn.textContent = '复制'; }, 2200);
|
|
|
|
|
+ });
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
|
|
+ // ---------- 主题 ----------
|
|
|
|
|
+ var root = document.documentElement;
|
|
|
|
|
+ var saved = null;
|
|
|
|
|
+ try { saved = localStorage.getItem('ksf3-theme'); } catch (e) {}
|
|
|
|
|
+ if (saved) root.setAttribute('data-theme', saved);
|
|
|
|
|
+ document.getElementById('theme-toggle').addEventListener('click', function () {
|
|
|
|
|
+ var next = root.getAttribute('data-theme') === 'dark' ? 'light' : 'dark';
|
|
|
|
|
+ root.setAttribute('data-theme', next);
|
|
|
|
|
+ try { localStorage.setItem('ksf3-theme', next); } catch (e) {}
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
|
|
+ // ---------- 抽屉 ----------
|
|
|
|
|
+ var drawer = document.getElementById('drawer');
|
|
|
|
|
+ var scrim = document.getElementById('scrim');
|
|
|
|
|
+ function closeDrawer() { document.body.classList.remove('nav-open'); }
|
|
|
|
|
+ document.getElementById('menu-btn').addEventListener('click', function () { document.body.classList.toggle('nav-open'); });
|
|
|
|
|
+ document.getElementById('drawer-close').addEventListener('click', closeDrawer);
|
|
|
|
|
+ scrim.addEventListener('click', closeDrawer);
|
|
|
|
|
+ drawer.addEventListener('click', function (e) {
|
|
|
|
|
+ var a = e.target.closest('a[href^="#"]');
|
|
|
|
|
+ if (!a) return;
|
|
|
|
|
+ e.preventDefault(); closeDrawer();
|
|
|
|
|
+ var t = document.getElementById(a.getAttribute('href').slice(1));
|
|
|
|
|
+ if (t) t.scrollIntoView({ behavior: 'auto' });
|
|
|
|
|
+ });
|
|
|
|
|
+ window.addEventListener('keydown', function (e) { if (e.key === 'Escape') closeDrawer(); });
|
|
|
|
|
+ document.getElementById('toc-list').addEventListener('click', function (e) {
|
|
|
|
|
+ var a = e.target.closest('a[href^="#"]');
|
|
|
|
|
+ if (!a) return;
|
|
|
|
|
+ var t = document.getElementById(a.getAttribute('href').slice(1));
|
|
|
|
|
+ if (!t) return;
|
|
|
|
|
+ e.preventDefault(); t.scrollIntoView({ behavior: 'smooth' });
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
|
|
+ // ---------- 搜索:过滤目录 + 搜正文 ----------
|
|
|
|
|
+ var search = document.getElementById('search');
|
|
|
|
|
+ var results = document.createElement('div');
|
|
|
|
|
+ results.className = 'toc';
|
|
|
|
|
+ results.id = 'search-results';
|
|
|
|
|
+ results.style.display = 'none';
|
|
|
|
|
+ document.getElementById('toc-list').parentNode.insertBefore(results, document.getElementById('toc-list'));
|
|
|
|
|
+ var INDEX = NAV.map(function (n) {
|
|
|
|
|
+ var el = document.getElementById(n.id);
|
|
|
|
|
+ var text = '';
|
|
|
|
|
+ if (el) {
|
|
|
|
|
+ var walk = el;
|
|
|
|
|
+ for (var i = 0; i < 3 && walk; i++) {
|
|
|
|
|
+ if (/^(ARTICLE|SECTION)$/.test(walk.tagName)) { text = walk.textContent; break; }
|
|
|
|
|
+ walk = walk.nextElementSibling;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ return { id: n.id, title: n.title, text: (n.title + ' ' + (text || '').replace(/\s+/g, ' ')).toLowerCase() };
|
|
|
|
|
+ });
|
|
|
|
|
+ function runSearch() {
|
|
|
|
|
+ var q = search.value.trim().toLowerCase();
|
|
|
|
|
+ Array.prototype.forEach.call(document.querySelectorAll('.toc-group, [data-toc]'), function (x) { x.style.display = q ? 'none' : ''; });
|
|
|
|
|
+ document.querySelectorAll('.toc-group').forEach(function (g) { g.style.display = q ? 'none' : ''; });
|
|
|
|
|
+ if (!q) { results.style.display = 'none'; results.innerHTML = ''; return; }
|
|
|
|
|
+ var hits = [];
|
|
|
|
|
+ INDEX.forEach(function (it) {
|
|
|
|
|
+ var t = it.text, from = 0, k;
|
|
|
|
|
+ while ((k = t.indexOf(q, from)) >= 0 && hits.length < 60) {
|
|
|
|
|
+ var s0 = Math.max(0, k - 18), e0 = Math.min(t.length, k + q.length + 28);
|
|
|
|
|
+ hits.push({ id: it.id, title: it.title, snip: (s0 > 0 ? '…' : '') + t.slice(s0, e0).replace(/</g, '<') + (e0 < t.length ? '…' : '') });
|
|
|
|
|
+ from = k + q.length;
|
|
|
|
|
+ if (hits.length >= 60) break;
|
|
|
|
|
+ }
|
|
|
|
|
+ });
|
|
|
|
|
+ results.style.display = 'block';
|
|
|
|
|
+ results.innerHTML = '<div class="toc-group">找到 ' + hits.length + ' 处' + (hits.length >= 60 ? '(显示前 60 处)' : '') + '</div>' +
|
|
|
|
|
+ hits.map(function (x) { return '<a href="#' + x.id + '">' + esc(x.title) + '<br><span style="color:var(--ink-3);font-size:12px;white-space:normal">' + x.snip + '</span></a>'; }).join('');
|
|
|
|
|
+ }
|
|
|
|
|
+ if (search) search.addEventListener('input', runSearch);
|
|
|
|
|
+
|
|
|
|
|
+ window.__manual = { sections: SEC_IDS.slice(), nav: NAV.length, deliverables: DELIV_COUNT };
|
|
|
|
|
+})();
|
|
|
|
|
+
|
|
|
|
|
+</script>
|
|
|
|
|
+</body>
|
|
|
|
|
+</html>
|