report.template.html 63 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  1. <!doctype html>
  2. <html lang="zh-CN">
  3. <head>
  4. <meta charset="utf-8">
  5. <meta name="viewport" content="width=device-width,initial-scale=1">
  6. <meta name="color-scheme" content="light">
  7. <meta name="description" content="康师傅产品创新工作坊流程与交付报告:员工识别、Skill能力、资料入库、S1至S5阶段成果、看板展示和验收状态。">
  8. <title>康师傅产品创新工作坊|流程与交付全景报告</title>
  9. <style>
  10. :root{--paper:#f5f3ef;--card:#fff;--ink:#212934;--muted:#65717e;--line:#e2e4e7;--red:#b72f39;--red-soft:#f8e9e9;--green:#24674f;--green-soft:#eaf3ed;--amber:#89601c;--amber-soft:#fcf2df;--blue:#355778;--blue-soft:#edf2f7;--r:16px;--side:224px}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:28px}body{margin:0;background:var(--paper);color:var(--ink);font:15px/1.8 "Microsoft YaHei","PingFang SC",system-ui,sans-serif;word-break:normal;overflow-wrap:break-word}a{color:var(--red);text-underline-offset:4px}button,input{font:inherit}button,a,input,summary{-webkit-tap-highlight-color:transparent}button:focus-visible,a:focus-visible,input:focus-visible,summary:focus-visible{outline:3px solid #95adca;outline-offset:3px}[hidden]{display:none!important}.skip{position:fixed;top:-80px;left:16px;background:#fff;padding:12px;z-index:99}.skip:focus{top:12px}.sidebar{position:fixed;inset:0 auto 0 0;width:var(--side);background:#fff;border-right:1px solid var(--line);padding:30px 20px;display:flex;flex-direction:column;overflow-y:auto;z-index:20}.brand{display:flex;align-items:center;gap:12px;margin-bottom:28px}.brand-mark{width:40px;height:40px;display:grid;place-items:center;background:var(--red);color:#fff;border-radius:12px;font-size:21px;font-weight:700}.brand strong{font-size:15px;display:block}.brand small{display:block;color:var(--muted);font-size:11px}.nav-label,.eyebrow{font-size:11px;letter-spacing:2px;color:var(--red);font-weight:700}.nav-label{color:var(--muted);margin:10px 12px}.sidebar nav{display:grid;gap:5px}.sidebar nav a{color:var(--muted);text-decoration:none;font-size:13px;display:flex;gap:12px;align-items:center;padding:10px 12px;border-radius:8px;line-height:1.5}.sidebar nav a span{color:#9da5ad;font-size:11px;font-variant-numeric:tabular-nums}.sidebar nav a:hover{background:#f4f4f4;color:var(--ink)}.sidebar nav a[aria-current=true]{background:var(--red-soft);color:var(--red);font-weight:700}.sidebar nav a[aria-current=true] span{color:var(--red)}.sidebar-foot{margin-top:auto;padding:28px 12px 0;font-size:11px;color:var(--muted)}.sidebar-foot b{display:block;color:var(--ink);font-size:12px}.shell{margin-left:var(--side);padding:26px 42px 60px;max-width:1664px}.toolbar{display:flex;justify-content:space-between;align-items:center;gap:14px;margin-bottom:22px;color:var(--muted);font-size:12px}.tools{display:flex;gap:8px;flex-wrap:wrap}.btn{border:1px solid #d7dce1;background:#fff;border-radius:8px;padding:7px 13px;font-size:12px;cursor:pointer;color:var(--ink);text-decoration:none;display:inline-flex;align-items:center;justify-content:center;line-height:1.6}.btn:hover{border-color:var(--red);color:var(--red)}.btn.primary{background:var(--red);border-color:var(--red);color:#fff}.hero{background:#fff;border:1px solid var(--line);border-radius:22px;overflow:hidden;position:relative}.hero-main{padding:38px 40px 30px;display:grid;grid-template-columns:minmax(0,1.4fr) minmax(220px,.6fr);gap:32px;align-items:center}.hero h1{font-size:clamp(27px,2.9vw,44px);line-height:1.35;letter-spacing:-1px;margin:14px 0 18px;font-weight:750}.hero h1 em{color:var(--red);font-style:normal}.hero p{max-width:720px;color:var(--muted);margin:0 0 18px}.hero-visual{border-left:1px solid var(--line);padding:6px 0 6px 30px}.hero-visual .v-row{display:flex;align-items:center;gap:12px;padding:9px 0;font-size:13px}.hero-visual i{font-style:normal;font-size:11px;display:grid;place-items:center;width:27px;height:27px;border:1px solid var(--line);border-radius:8px;color:var(--red);font-weight:700;flex:none}.hero-visual b{font-weight:600}.hero-visual small{display:block;color:var(--muted);font-size:11px}.hero-bottom{padding:13px 40px;border-top:1px solid var(--line);font-size:12px;background:#fbfaf8;display:flex;gap:20px;flex-wrap:wrap;color:var(--muted)}.hero-bottom strong{color:var(--ink)}.badges{display:flex;flex-wrap:wrap;gap:7px}.badge{font-size:11px;line-height:1.6;padding:4px 9px;border-radius:6px;display:inline-flex;align-items:center;gap:5px;background:var(--blue-soft);color:var(--blue);vertical-align:middle}.badge.ok{color:var(--green);background:var(--green-soft)}.badge.warn{color:var(--amber);background:var(--amber-soft)}.badge.red{color:var(--red);background:var(--red-soft)}.badge.neutral{background:#f0f2f4;color:var(--muted)}section{margin-top:44px}section>.section-head{display:flex;gap:13px;align-items:flex-start;margin:0 0 20px}.section-no{font-size:12px;font-weight:700;color:var(--red);margin-top:5px;border-top:2px solid var(--red);padding-top:2px;min-width:24px}.section-head h2{font-size:24px;line-height:1.4;margin:0 0 5px;letter-spacing:-.4px}.section-head p{font-size:13px;color:var(--muted);margin:0}.grid{display:grid;gap:16px}.cols2{grid-template-columns:repeat(2,minmax(0,1fr))}.cols3{grid-template-columns:repeat(3,minmax(0,1fr))}.cols6{grid-template-columns:repeat(6,minmax(0,1fr))}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:22px;min-width:0}.card h3{font-size:17px;line-height:1.5;margin:0 0 9px}.card h4{font-size:14px;line-height:1.6;margin:18px 0 7px}.card p{margin:6px 0;font-size:13px;color:var(--muted)}.card ul{padding-left:18px;margin:8px 0;font-size:13px;color:var(--muted)}.card li{margin:5px 0}.card li b{color:var(--ink);font-weight:600}.metric{padding:18px 16px}.metric .val{font-size:32px;line-height:1.3;font-weight:720;font-variant-numeric:tabular-nums;letter-spacing:-1px}.metric .name{font-size:12px;color:var(--muted);margin-top:6px}.metric .unit{font-size:12px;color:var(--muted);font-weight:400;letter-spacing:0;margin-left:5px}.note{padding:14px 18px;border:1px solid #e5d5b8;background:#fffbf3;border-radius:10px;font-size:12px;color:#785f36;margin-top:16px;line-height:1.8}.note.blue{background:var(--blue-soft);color:var(--blue);border-color:#d7e2ec}.note.green{background:var(--green-soft);color:var(--green);border-color:#d1e4d9}.note b{font-weight:700}.flow{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px}.flow-step{background:white;border:1px solid var(--line);border-radius:12px;padding:18px 14px;position:relative}.flow-step:not(:last-child):after{content:'→';position:absolute;right:-13px;top:42px;color:#b5bac1;z-index:1;font-size:17px}.flow-step small{color:var(--red);font-weight:700;font-size:11px}.flow-step h3{font-size:14px;margin:8px 0}.flow-step p{font-size:12px;color:var(--muted);margin:0}.flow-output{border-top:1px dashed var(--line);margin-top:12px;padding-top:8px;font-size:11px;color:var(--muted)}.table-wrap{overflow-x:auto;background:#fff;border:1px solid var(--line);border-radius:var(--r)}table{border-collapse:collapse;width:100%;font-size:12px;line-height:1.75}th,td{padding:13px 17px;text-align:left;vertical-align:top;border-bottom:1px solid var(--line)}thead th{font-size:11px;color:var(--muted);background:#fafbfc;font-weight:600}tbody tr:last-child td{border-bottom:0}td strong{font-size:13px;color:var(--ink);display:block;margin-bottom:3px}td small{color:var(--muted);font-size:11px;display:block}td a{white-space:nowrap}.wide-table table{min-width:760px}.bar-row{display:grid;grid-template-columns:140px minmax(40px,1fr) 36px;align-items:center;gap:12px;font-size:12px;margin:13px 0}.bar-track{height:8px;background:#f0f1f3;border-radius:8px;overflow:hidden}.bar-fill{height:100%;width:var(--pct);background:var(--red);border-radius:8px}.bar-row:nth-child(2n) .bar-fill{background:#cf6970}.bar-row b{text-align:right;font-variant-numeric:tabular-nums}.searchbar{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin-bottom:14px}.searchbar input{flex:1;min-width:180px;border:1px solid #d7dce1;border-radius:8px;padding:9px 12px;background:#fff;font-size:12px}.searchbar label{font-size:12px;color:var(--muted)}.searchbar output{font-size:12px;color:var(--muted);min-width:90px}.micro{font-size:11px;color:var(--muted);line-height:1.8}.schedule{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.schedule .card{padding:19px;border-top:3px solid var(--red)}.schedule .card.night{border-top-color:#7c8b9d;background:#f6f8fa}.schedule h3{font-size:15px;margin-top:8px}.schedule .deliver{margin-top:14px;padding-top:10px;border-top:1px dashed var(--line);font-size:12px;color:var(--ink)}.stage-card{display:grid;grid-template-columns:70px minmax(0,1fr);gap:18px;padding:24px;margin-bottom:13px}.stage-code{background:var(--red-soft);color:var(--red);border-radius:12px;display:flex;align-items:center;justify-content:center;flex-direction:column;height:70px;font-size:24px;font-weight:700;line-height:1.3}.stage-code small{font-size:10px;font-weight:400}.stage-body h3{margin:0 0 10px;font-size:19px}.stage-content{display:grid;grid-template-columns:1fr 1fr 1.1fr;gap:18px}.stage-content .label{font-size:11px;letter-spacing:.5px;color:var(--red);font-weight:700;display:block;margin-bottom:5px}.stage-content p{font-size:12px;margin:0;color:var(--muted)}.stage-rule{margin-top:14px;padding-top:10px;border-top:1px dashed var(--line);font-size:12px;color:var(--muted)}.stage-rule b{color:var(--ink)}.board-card{position:relative;padding-top:22px}.board-card .route{font-size:11px;font-family:Consolas,monospace;color:#8a939e}.board-card h3{margin-top:6px}.board-card .question{font-size:13px;color:var(--ink);margin:8px 0 10px}.board-card .btn{margin-top:14px}.board-icon{width:32px;height:32px;background:var(--red-soft);color:var(--red);display:grid;place-items:center;border-radius:9px;font-size:12px;float:right}.evidence-map{display:flex;gap:9px;flex-wrap:wrap;align-items:center;padding:18px;background:#fafbfc;border:1px dashed #d2d8df;border-radius:12px;margin:16px 0}.evidence-map .node{padding:9px 13px;background:white;border:1px solid var(--line);border-radius:8px;font-size:12px}.evidence-map .arr{color:#939da7;font-size:14px}.identity-demo{background:#f8faf9;border:1px solid #d8e4dc;border-radius:12px;padding:20px;margin-top:15px}.person{display:flex;gap:12px;align-items:center}.avatar{width:44px;height:44px;display:grid;place-items:center;border-radius:50%;background:var(--green);color:white;font-size:20px}.person strong{font-size:18px}.person small{display:block;color:var(--green);font-size:11px}.identity-numbers{display:flex;gap:24px;font-size:12px;color:var(--muted);margin-top:15px;padding-top:13px;border-top:1px solid #d8e4dc;flex-wrap:wrap}.identity-numbers b{font-size:20px;color:var(--ink);margin-right:5px}.number-band{display:grid;grid-template-columns:1fr 1fr;background:#fff;border:1px solid var(--line);border-radius:var(--r);overflow:hidden}.number-band>div{padding:24px}.number-band>div+div{border-left:1px solid var(--line)}.number-band .big{font-size:38px;font-weight:700;line-height:1.3}.number-band .big small{font-size:12px;font-weight:400;color:var(--muted);margin-left:8px}.number-band p{font-size:12px;color:var(--muted);margin:7px 0 0}.case-label{font-size:11px;font-weight:700;color:var(--red);letter-spacing:1px}.case-card h3{font-size:16px;margin-top:8px}.case-card .path{font-size:12px;padding-top:12px;border-top:1px dashed var(--line);margin-top:12px;color:var(--ink)}details{border:1px solid var(--line);background:#fff;border-radius:12px;margin-top:14px;overflow:hidden}summary{cursor:pointer;padding:15px 20px;font-size:13px;font-weight:600;list-style-position:inside}details[open]>summary{border-bottom:1px solid var(--line);background:#fafbfc}.detail-body{padding:18px 20px}.detail-body p{font-size:12px;color:var(--muted);margin:0 0 10px}.detail-body .table-wrap{border-radius:8px}code{font-family:Consolas,"SFMono-Regular",monospace;font-size:11px;overflow-wrap:anywhere;background:#f1f3f5;padding:2px 5px;border-radius:4px}.source-list{padding-left:18px;margin:0;font-size:12px}.source-list li{margin:10px 0;color:var(--muted)}.source-list strong{color:var(--ink)}.source-list a{overflow-wrap:anywhere}.footer{padding:26px 0 0;border-top:1px solid #d7dbdf;margin-top:42px;color:var(--muted);font-size:11px;display:flex;justify-content:space-between;gap:15px;flex-wrap:wrap}.status-line{display:flex;gap:8px;align-items:center;margin-bottom:10px}.status-line strong{font-size:13px}.status-dot{width:7px;height:7px;border-radius:50%;background:var(--green);flex:none}.status-dot.warn{background:#a67d37}.rule-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.rule{padding:16px;border-radius:10px;background:#fafbfc;border:1px solid var(--line)}.rule b{font-size:13px;display:block}.rule p{font-size:12px;margin:6px 0 0;color:var(--muted)}.scroll-top{position:fixed;bottom:20px;right:22px;z-index:10;border:1px solid var(--line);background:#fff;color:var(--red);font-size:12px;padding:8px 13px;border-radius:20px;text-decoration:none;box-shadow:0 3px 18px #14212d0a}noscript p{padding:12px;background:var(--amber-soft);font-size:12px}.print-only{display:none}
  11. @media(min-width:1600px){.shell{padding-left:60px;padding-right:60px}.hero-main{padding:48px}.hero-bottom{padding-left:48px}}@media(max-width:1250px){:root{--side:198px}.shell{padding:22px 26px 45px}.cols6{grid-template-columns:repeat(3,minmax(0,1fr))}.flow{grid-template-columns:repeat(3,minmax(0,1fr))}.flow-step:nth-child(3):after{display:none}.hero-main{padding:30px}.hero-bottom{padding:12px 30px}.cols3{grid-template-columns:repeat(2,minmax(0,1fr))}.schedule{grid-template-columns:repeat(2,minmax(0,1fr))}.stage-content{gap:14px}.sidebar{padding:26px 14px}}@media(max-width:900px){.sidebar{position:sticky;top:0;width:100%;height:auto;padding:10px 18px;border-right:0;border-bottom:1px solid var(--line);gap:4px}.brand{margin:0}.brand-mark{width:30px;height:30px;font-size:16px;border-radius:8px}.brand small,.sidebar-foot,.nav-label{display:none}.brand strong{font-size:13px}.sidebar nav{display:flex;overflow-x:auto;gap:4px;padding-top:5px}.sidebar nav a{white-space:nowrap;padding:6px 9px;font-size:11px}.sidebar nav a span{display:none}.shell{margin:0;padding:20px 22px 40px;max-width:none}html{scroll-padding-top:106px}.hero h1{font-size:32px}.hero-main{grid-template-columns:1fr}.hero-visual{border-left:0;border-top:1px solid var(--line);padding:14px 0 0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.hero-visual .v-row{padding:0}.hero-visual i{display:none}.toolbar{flex-wrap:wrap}.stage-content{grid-template-columns:1fr}.rule-grid{grid-template-columns:1fr}.stage-card{grid-template-columns:55px 1fr;padding:20px;gap:13px}.stage-code{height:55px;font-size:21px;border-radius:9px}.stage-body h3{font-size:17px}}@media(max-width:560px){body{font-size:14px}.shell{padding:16px 14px 35px}.hero-main{padding:24px 20px;gap:20px}.hero h1{font-size:28px;letter-spacing:-.6px}.hero p{font-size:13px}.hero-visual{grid-template-columns:1fr}.hero-visual .v-row{display:grid;grid-template-columns:85px 1fr;gap:8px}.hero-visual small{display:inline}.hero-bottom{padding:12px 20px;gap:8px;font-size:11px}.cols6{grid-template-columns:repeat(2,minmax(0,1fr))}.cols2,.cols3{grid-template-columns:1fr}.metric .val{font-size:29px}.metric{padding:15px}.card{padding:18px}.flow{grid-template-columns:repeat(2,minmax(0,1fr))}.flow-step:nth-child(3):after{display:block}.flow-step:nth-child(2n):after{display:none}.schedule{grid-template-columns:1fr}.section-head h2{font-size:21px}section{margin-top:34px}.number-band{grid-template-columns:1fr}.number-band>div+div{border-left:0;border-top:1px solid var(--line)}th,td{padding:11px 12px}.stage-card{padding:18px 15px}.bar-row{grid-template-columns:116px 1fr 28px;gap:8px;font-size:11px}.scroll-top{right:12px;bottom:12px}.tools{gap:6px}.btn{padding:7px 10px;font-size:11px}.toolbar{font-size:11px}.identity-numbers{gap:16px}.print-only{display:none}}
  12. @page{size:A4;margin:16mm 14mm}@media print{html{scroll-behavior:auto}body{background:#fff;font-size:10pt;line-height:1.65}.sidebar,.toolbar,.searchbar,.scroll-top,.btn,.no-print{display:none!important}.shell{margin:0;padding:0;max-width:none}.hero{border-radius:0}.hero-main{padding:20px;grid-template-columns:1fr}.hero h1{font-size:25pt}.hero-visual{display:none}.hero-bottom{padding:10px 20px;font-size:8pt}.eyebrow{font-size:8pt}.cols6{grid-template-columns:repeat(3,1fr)}.cols2{grid-template-columns:1fr 1fr}.cols3{grid-template-columns:1fr 1fr}.metric .val{font-size:24pt}section{margin-top:25px}.section-head h2{font-size:17pt}.card{padding:15px;break-inside:avoid;box-shadow:none}.card p,.card li{font-size:9pt}.flow{grid-template-columns:repeat(3,1fr)}.flow-step:nth-child(3):after{display:none}.flow-step{break-inside:avoid}.schedule{grid-template-columns:1fr 1fr}.stage-card{break-inside:avoid;grid-template-columns:50px 1fr;gap:12px}.stage-code{height:50px;font-size:19pt}.stage-content{grid-template-columns:1fr 1fr 1fr;gap:12px}.stage-content p{font-size:8pt}.stage-body h3{font-size:13pt}.note{font-size:8pt;break-inside:avoid}.table-wrap{overflow:visible;border-radius:0}.wide-table table{min-width:0}table{font-size:8pt;table-layout:auto}thead{display:table-header-group}tr{break-inside:avoid}td,th{padding:8px}td strong{font-size:9pt}details{break-inside:auto}details>summary{font-size:10pt}details::details-content{content-visibility:visible}.number-band{break-inside:avoid}.number-band .big{font-size:27pt}.rule-grid{grid-template-columns:repeat(3,1fr)}.bar-row{font-size:9pt;margin:8px 0}.footer{font-size:8pt}.print-only{display:block}a{color:inherit;text-decoration:none}.source-list a{text-decoration:underline}.badge{font-size:8pt}*{-webkit-print-color-adjust:exact;print-color-adjust:exact}}
  13. </style>
  14. </head>
  15. <body id="top">
  16. <a class="skip" href="#main">跳到报告正文</a>
  17. <aside class="sidebar" aria-label="报告目录">
  18. <div class="brand"><div class="brand-mark" aria-hidden="true">康</div><div><strong>产品创新工作坊</strong><small>流程 · 数据 · 能力 · 交付</small></div></div>
  19. <div class="nav-label">报告目录</div>
  20. <nav>
  21. <a href="#overview" aria-current="true"><span>01</span>交付概况</a>
  22. <a href="#workflow"><span>02</span>工作坊流程</a>
  23. <a href="#skill"><span>03</span>Skill 技能说明</a>
  24. <a href="#data"><span>04</span>入库数据分类</a>
  25. <a href="#stages"><span>05</span>阶段报告与成果</a>
  26. <a href="#boards"><span>06</span>看板展示与入口</a>
  27. <a href="#identity"><span>07</span>员工称呼与归属</a>
  28. <a href="#demo"><span>08</span>模拟数据与案例</a>
  29. <a href="#delivery"><span>09</span>验收与后续事项</a>
  30. <a href="#sources"><span>10</span>依据与技术附录</a>
  31. </nav>
  32. <div class="sidebar-foot"><b>2026.11.04 · 交付整理版</b>单文件 · 可离线阅读<br>生产数据按快照展示</div>
  33. </aside>
  34. <main class="shell" id="main">
  35. <div class="toolbar"><span>康师傅研发中心 / 产品创新工作坊 / 分类汇报</span><div class="tools"><button class="btn" id="expand" type="button" aria-expanded="false">展开技术细节</button><button class="btn" id="print" type="button">打印 / 保存 PDF</button><a class="btn primary" href="https://kangshifu.fmode.cn/" target="_blank" rel="noopener noreferrer">打开生产看板 ↗</a></div></div>
  36. <header class="hero">
  37. <div class="hero-main"><div><div class="eyebrow">工作坊流程与交付全景报告</div><h1>从一份材料,<br>走到<em>可追溯的产品机会。</em></h1><p>把员工在企业微信中的资料、讨论和阶段成果接进同一条产品创新流程:有来源、有归属、有版本、有验证问题,也能在看板上回看每一步。</p><div class="badges"><span class="badge ok">Skill 与配套服务已部署</span><span class="badge ok">昵称链路已通过真实消息验证</span><span class="badge warn">部分生产浏览器验收待完成</span></div></div><div class="hero-visual" aria-label="三个交付层次"><div class="v-row"><i>1</i><div><b>员工与数字人</b><small>自然对话 · 识别发送者 · 记住称呼</small></div></div><div class="v-row"><i>2</i><div><b>资料与业务对象</b><small>来源 · 证据 · 报告 · 机会 · 项目</small></div></div><div class="v-row"><i>3</i><div><b>看板与决策</b><small>进度 · 缺口 · 分工 · 成果 · 回查</small></div></div></div></div>
  38. <div class="hero-bottom"><span><strong>范围</strong> 面类创新,重点拌面</span><span><strong>业务主线</strong> S1—S5</span><span><strong>最新源码</strong> a68bfe1</span><span><strong>公开数据核对</strong> __SNAPSHOT_TIME__</span></div>
  39. </header>
  40. <noscript><p>正文可完整离线阅读;目录搜索、细节展开和打印按钮需要 JavaScript。也可直接使用浏览器打印。</p></noscript>
  41. <section id="overview" aria-labelledby="overview-title">
  42. <div class="section-head"><span class="section-no">01</span><div><h2 id="overview-title">当前交付:流程能跑,数据能回查</h2><p>以下数量来自生产公开看板同一次完整查询,不代表全部是已核验的真实研究。</p></div></div>
  43. <div class="grid cols6">__PUBLIC_KPIS__</div>
  44. <div class="grid cols2" style="margin-top:16px"><article class="card"><h3>已经串起来的业务链</h3><ul><li><b>企微入口:</b>按当前消息识别员工和执行数字人,保留稳定归属。</li><li><b>资料处理:</b>检索、精确查重、入库、逐项回读,资料可被后续成果引用。</li><li><b>创新推进:</b>阶段报告 → 机会卡 → 项目 → 评估 → 产品方案版本。</li><li><b>公开展示:</b>工作台、机会卡池、阶段产出、报告、证据台账、成员。</li><li><b>运营交接:</b>开发提交源码和部署包,运维发布,真实员工消息做验收。</li></ul></article><article class="card"><h3>读这些数字时,需要知道</h3><p>生产接口中的“成果”包含历史测试、构造样例和标为在线取得的材料。成果数、来源数和机会卡数是不同对象,不能直接相加当作产品数。</p><div class="note blue" style="margin-top:12px">__DATA_QUALITY__</div><p class="micro" style="margin-top:12px">当前模型形成 __MEMBER_COUNT__ 个成员归属条目;其中含历史标签与测试身份,不能据此宣布有 __MEMBER_COUNT__ 名已核验真实员工。</p></article></div>
  45. </section>
  46. <section id="workflow" aria-labelledby="workflow-title">
  47. <div class="section-head"><span class="section-no">02</span><div><h2 id="workflow-title">沿着一次真实工作,把动作和交付连起来</h2><p>员工提供业务信息,数字人协助整理与推进;关键判断和正式确认仍由人完成。</p></div></div>
  48. <div class="flow">
  49. <article class="flow-step"><small>STEP 01</small><h3>进入工作坊</h3><p>识别当前发送者、Agent、小组及已有会话;需要时问一次公开称呼。</p><div class="flow-output">留下:稳定身份与会话绑定</div></article>
  50. <article class="flow-step"><small>STEP 02</small><h3>搜集与入库</h3><p>整理访谈、线上原文、竞品、规格、工艺资料;先检索再查重。</p><div class="flow-output">留下:来源原文与结构化资料</div></article>
  51. <article class="flow-step"><small>STEP 03</small><h3>分析需求</h3><p>分清事实、假设和待补证据,形成品类、用户和场景分析。</p><div class="flow-output">留下:S1/S2 报告与证据关联</div></article>
  52. <article class="flow-step"><small>STEP 04</small><h3>选机会立项目</h3><p>写清人群、场景和需求;选中已有机会卡后建立课堂项目。</p><div class="flow-output">留下:机会卡与 S3 项目基线</div></article>
  53. <article class="flow-step"><small>STEP 05</small><h3>验证与修订</h3><p>检查证据、成本和制备约束;有冲突就记录受阻及补证任务。</p><div class="flow-output">留下:S4 评估、缺口与新版本</div></article>
  54. <article class="flow-step"><small>STEP 06</small><h3>交付与展示</h3><p>形成概念、场景与卖点;回读成果编号,在看板按产品和人员展示。</p><div class="flow-output">留下:S5 方案与后续行动</div></article>
  55. </div>
  56. <h3 style="font-size:17px;margin:26px 0 12px">三个半天:当前项目采用的工作坊安排</h3>
  57. <div class="schedule">
  58. <article class="card"><span class="badge red">第一半天</span><h3>问题与研究方法</h3><p>建立市场与竞品图谱,梳理痛点假设,把创意转为可以分工的研究问题。</p><div class="deliver">交付:市场分析、假设清单、夜间采集计划。</div></article>
  59. <article class="card night"><span class="badge neutral">夜间任务 · 承接课堂</span><h3>带着问题取资料</h3><p>采集原文、商品规格、价格和使用条件,记录来源、失败项与待补材料。</p><div class="deliver">交付:来源原件、逐字引文、采集回执。</div></article>
  60. <article class="card"><span class="badge red">第二半天</span><h3>洞察与机会选题</h3><p>验收资料、整理用户声音,形成机会卡并选择产品方向,保存项目基线。</p><div class="deliver">交付:需求洞察、机会卡、S3 项目。</div></article>
  61. <article class="card"><span class="badge red">第三半天</span><h3>评估与产品路演</h3><p>完成桌面评估,处理反例与约束,形成概念和卖点,明确后续验证条件。</p><div class="deliver">交付:S4/S5 报告、方案、路演与行动计划。</div></article>
  62. </div>
  63. <div class="note">夜间任务不是额外的第四个半天;课堂完成不等于企业正式立项、量产可行或真实用户验证通过。上述排程来自项目已整理的课程方案,不代表所有小组已完成这些任务。</div>
  64. </section>
  65. <section id="skill" aria-labelledby="skill-title">
  66. <div class="section-head"><span class="section-no">03</span><div><h2 id="skill-title">Skill:把对话转成有归属的业务动作</h2><p>主技能为 ksf-workshop-runtime;业务行为走固定命令、已有服务合同和加密执行入口。</p></div></div>
  67. <div class="grid cols3">
  68. <article class="card"><h3>识别人,再做事</h3><p>读取当前消息的可信发送者,核对员工、数字人和已有会话。名字只用于展示,归属由稳定员工键控制。</p><span class="badge ok">真实消息已验证</span></article>
  69. <article class="card"><h3>称呼只问一次</h3><p>首次入库或上传前没有可用称呼时,自然询问姓名或昵称。保存后复用,可改名;明确跳过也会记住。</p><span class="badge ok">“小智”已保存并回读</span></article>
  70. <article class="card"><h3>查重后再入库</h3><p>先检索旧资料、比较原文和结构化内容。完全重复复用真实编号,内容变化留下新版本或快照。</p><span class="badge">能力已实现</span></article>
  71. <article class="card"><h3>带着阶段产出推进</h3><p>保存报告、机会卡、项目进度和方案版本。项目按阶段推进,受阻时记录依据与未决问题。</p><span class="badge">S1—S5 业务命令</span></article>
  72. <article class="card"><h3>保存后能回读</h3><p>按返回的真实来源、成果、项目编号核对。请求键保持稳定,失败保留现场,不通过换键制造“成功”。</p><span class="badge">回执与版本留痕</span></article>
  73. <article class="card"><h3>正式报告单独确认</h3><p>课堂过程成果可展示;正式报告沿用“预览 → 员工确认 → 提交”的路径,不由数字人代替本人确认。</p><span class="badge warn">生产全流程需另行验收</span></article>
  74. </div>
  75. <div class="note blue"><b>职责边界:</b>Skill 负责理解任务、整理材料、编排已有工具和核对结果。采集原文使用实际可用的采集工具;服务端负责权限、数据校验和写入,看板负责展示。Skill 本身不保证每个平台都能采集,也不补造缺失数据。</div>
  76. <details><summary>查看命令分类与部署位置</summary><div class="detail-body"><p>运行目录:<code>/opt/data/skills/ksf-workshop-runtime</code>;本地状态:<code>/opt/data/ksf-workshop-state/</code>。服务凭据逐命令在内存中加载,凭据绑定文件不包含在交付源码中。</p><div class="table-wrap"><table><thead><tr><th>业务类别</th><th>命令</th><th>作用</th></tr></thead><tbody>__SKILL_COMMANDS__</tbody></table></div><p style="margin-top:12px">当前消息登记另由无参数工具 <code>ksf_register_current_employee</code> 完成。<code>employee-read</code> 是可选通讯录查询,当前目录配置缺失;正常昵称与上传流程不依赖它。</p></div></details>
  77. </section>
  78. <section id="data" aria-labelledby="data-title">
  79. <div class="section-head"><span class="section-no">04</span><div><h2 id="data-title">哪些数据入库,分别解决什么问题</h2><p>按业务对象分类。支持导入的类型与当前生产公开接口能统计到的数量,分别说明。</p></div></div>
  80. <div class="searchbar no-print"><label for="data-search">查数据分类</label><input id="data-search" type="search" placeholder="输入关键词:例如 原料、报价、用户声音、方案" autocomplete="off"><output id="data-match" aria-live="polite">全部分类</output></div>
  81. <div class="table-wrap wide-table"><table id="data-table"><thead><tr><th style="width:16%">数据分类</th><th style="width:31%">保存的内容</th><th style="width:27%">用于什么环节</th><th>当前可核对范围</th></tr></thead><tbody>
  82. <tr data-search><td><strong>来源与原件</strong><small>先有原文,才有引用</small></td><td>标题、来源类型、平台/URL、完整原文、取得模式、内容指纹与采集回执。</td><td>让报告、洞察和机会卡能回到同一份实际材料;后续采集可精确查重。</td><td>公开接口:__SOURCE_COUNT__ 个来源。来源存在不等于内容已核验。</td></tr>
  83. <tr data-search><td><strong>用户声音与证据</strong><small>原话与归纳分别保存</small></td><td>平台原始评论/帖子、逐字引文、定位、来源编号、证据关联、洞察及待验证解释。</td><td>S2 需求归纳、S3 机会依据、S4 支持与反例对照。</td><td>公开接口:__INSIGHT_COUNT__ 条洞察。引文和原始平台表总量不在本次公开查询范围,不能填 0。</td></tr>
  84. <tr data-search><td><strong>品类与竞品</strong><small>产品和规格不混算</small></td><td>面类分类及关系、产品、SKU、规格、单次价格观察、渠道与观察时间。</td><td>S1 市场与竞品图谱、同规格对照;为机会讨论提供价格和产品依据。</td><td>导入合同支持;各结构化表的生产存量未逐表盘点。</td></tr>
  85. <tr data-search><td><strong>原料、工艺与标准</strong><small>研发约束有落点</small></td><td>原料、工艺路线、工序、执行标准及关联材料;未知参数保持空值或待查。</td><td>S4 可行性检查、S5 配料与生产路线。无法用常识替代产线和原材料依据。</td><td>导入合同支持;不能据此宣称已有完整可投产配方。</td></tr>
  86. <tr data-search><td><strong>供应链与成本依据</strong><small>报价需要条件</small></td><td>供应商、报价、计量口径、规格与来源;保留观察条件和快照。</td><td>成本假设、供给可得性、方案取舍和后续追问。</td><td>导入合同支持;真实报价覆盖度和成本结论待业务复核。</td></tr>
  87. <tr data-search><td><strong>阶段报告与成果</strong><small>可读正文与结构同时保留</small></td><td>阶段、标题、任务键、版本、完整正文、摘要、章节、表格、证据引用及未决问题。</td><td>S1—S5 课堂作业、成果回读、报告阅读和证据台账。</td><td>公开接口:__ARTIFACT_COUNT__ 份成果,类型分布见下一节。</td></tr>
  88. <tr data-search><td><strong>机会卡</strong><small>把假设写到可讨论</small></td><td>目标人群、使用场景、需求、候选方向、关联报告/证据、状态及评议信息。</td><td>S3 选题、多人讨论、候选/选入/否决状态、后续项目创建。</td><td>公开接口:__OPPORTUNITY_COUNT__ 张独立机会卡。报告里的“机会卡成果”数量是另一个口径。</td></tr>
  89. <tr data-search><td><strong>项目与推进记录</strong><small>机会有负责人和阶段</small></td><td>关联机会、当前阶段、负责人、参与小组、进度状态、受阻原因、阶段事件。</td><td>多人同时做不同产品;按项目串起报告、评估与方案版本。</td><td>公开接口:__PROJECT_COUNT__ 个项目;历史阶段字段存在缺失,不能强行套入模拟分布。</td></tr>
  90. <tr data-search><td><strong>方案、配料与验证</strong><small>每次修订留下理由</small></td><td>概念方案版本、规格、配料条目、工艺步骤、评估维度、证据缺口和验证建议。</td><td>S4 评估、S5 场景卖点与产品提案;区分桌面判断和真实试验。</td><td>业务命令与合同已支持;生产方案/配料/评估表总量本次未逐表读取。</td></tr>
  91. <tr data-search><td><strong>员工、Agent 与会话</strong><small>称呼不决定身份</small></td><td>稳定员工键、执行 Agent、工作坊参与键、小组、会话绑定;称呼单独保存。</td><td>成果归属、跨消息复用、跨工作坊显示一致、成员看板。</td><td>公开接口:__SESSION_COUNT__ 个会话;“小智”跨两个会话的归属已核对。</td></tr>
  92. <tr data-search><td><strong>作业、任务与协作</strong><small>演示覆盖运营细节</small></td><td>小组作业、研究任务、验证任务、评论、分工、版本变化与交付关联。</td><td>三个半天的排课、多人协作和教练支持清单。</td><td>模拟数据与演示交互已覆盖;不能当作生产任务系统已全部贯通的证明。</td></tr>
  93. </tbody></table></div>
  94. <p id="data-empty" class="note" hidden>没有匹配分类,请换一个关键词。</p>
  95. <div class="evidence-map" aria-label="数据关联路径"><span class="node">来源原件</span><span class="arr" aria-hidden="true">→</span><span class="node">逐字证据 / 洞察</span><span class="arr" aria-hidden="true">→</span><span class="node">阶段报告</span><span class="arr" aria-hidden="true">→</span><span class="node">机会卡</span><span class="arr" aria-hidden="true">→</span><span class="node">项目 / 方案 / 验证</span></div>
  96. <div class="rule-grid"><div class="rule"><b>原文与结论分开</b><p>引用需要对应已保存的来源和逐字原话。没有证据的判断标为假设或待验证。</p></div><div class="rule"><b>完全重复复用编号</b><p>内容、作用域与取得模式相同才复用;价格、规格、正文变化保留新快照。</p></div><div class="rule"><b>样例与实际材料分开</b><p>sample / live / manual / mixed / unknown 记录取得方式,不自动代表研究质量。</p></div></div>
  97. <details><summary>查看数据对象名称与导入边界</summary><div class="detail-body"><div class="table-wrap"><table><thead><tr><th>业务类型</th><th>对应数据对象</th></tr></thead><tbody>
  98. <tr><td>来源、执行与原始平台数据</td><td><code>KfSource</code>;采集执行及平台原始数据表(按现有合同白名单)</td></tr>
  99. <tr><td>品类、关系、产品、规格、观察价</td><td><code>KfCategory</code> <code>KfCategoryRelation</code> <code>KfProduct</code> <code>KfSku</code> <code>KfRetailPriceSnapshot</code></td></tr>
  100. <tr><td>证据与洞察</td><td><code>KfEvidence</code> <code>KfEvidenceLink</code> <code>KfInsight</code></td></tr>
  101. <tr><td>原料、工艺、工序、标准</td><td><code>KfMaterial</code> <code>KfProcess</code> <code>KfProcessStep</code> <code>KfStandard</code></td></tr>
  102. <tr><td>供应链、市场指标与评估</td><td><code>KfSupplier</code> <code>KfSupplyQuote</code> <code>KfMarketMetric</code> <code>KfAssessment</code></td></tr>
  103. <tr><td>报告、机会、项目、概念、配料、会话、阶段事件</td><td><code>KfArtifact</code> <code>KfOpportunity</code> <code>KfProject</code> <code>KfConcept</code> <code>KfFormulaItem</code> <code>KfSession</code> <code>KfStageEvent</code></td></tr>
  104. </tbody></table></div><p style="margin-top:12px">通用资料经 workshop-import;报告、机会、项目和方案使用各自工作坊命令。通用导入批次可能部分成功,失败时按已返回编号回读,不自动清理。公开看板仅返回六类展示集合,本报告没有把它当作整个数据库的全表盘点。</p></div></details>
  105. </section>
  106. <section id="stages" aria-labelledby="stages-title">
  107. <div class="section-head"><span class="section-no">05</span><div><h2 id="stages-title">每个阶段应该形成什么报告</h2><p>围绕同一产品持续推进。报告有正文,证据有来源,缺项有下一步。</p></div></div>
  108. <article class="card stage-card"><div class="stage-code">S1<small>市场与品类</small></div><div class="stage-body"><h3>品类市场分析:先知道市场里有什么</h3><div class="stage-content"><div><span class="label">输入材料</span><p>品类分类、竞品产品与SKU、价格观察、渠道、原料与工艺底稿。</p></div><div><span class="label">报告与成果</span><p>品类研究报告、竞品对照、市场趋势与已知缺口;形成后续研究问题。</p></div><div><span class="label">看板上看到</span><p>报告中心的品类/竞品分类、S1阶段成果、资料台账与来源回查。</p></div></div><div class="stage-rule"><b>判定边界:</b>没有真实来源时不填市场规模或销量;不同规格与时点价格不能直接作同口径比较。</div></div></article>
  109. <article class="card stage-card"><div class="stage-code">S2<small>需求与痛点</small></div><div class="stage-body"><h3>用户需求分析:原话能说明什么</h3><div class="stage-content"><div><span class="label">输入材料</span><p>用户原文、访谈与追问、使用条件、评论、场景和逐字引文。</p></div><div><span class="label">报告与成果</span><p>用户声音报告、场景洞察、痛点清单;分清事实、解释和假设。</p></div><div><span class="label">看板上看到</span><p>用户声音/痛点分类、结论与证据入口、证据台账中的来源关系。</p></div></div><div class="stage-rule"><b>判定边界:</b>一句“喜欢加蛋”不能直接证明“需要高蛋白”;标签、词频与KANO建议不等于已完成真实用户验证。</div></div></article>
  110. <article class="card stage-card"><div class="stage-code">S3<small>机会与选题</small></div><div class="stage-body"><h3>机会识别:把创意写成可讨论的卡片</h3><div class="stage-content"><div><span class="label">输入材料</span><p>人群、使用场景、需求、赛道、已有证据与缺少的使用条件。</p></div><div><span class="label">报告与成果</span><p>机会卡报告、独立机会卡、选中机会后的课堂项目基线。</p></div><div><span class="label">看板上看到</span><p>机会卡池、候选/选入/否决状态、详情、评分和后续项目关联。</p></div></div><div class="stage-rule"><b>判定边界:</b>“改为已选入”与“真实创建项目”是不同动作;缺少评分数据时展示待补,不编造分值。</div></div></article>
  111. <article class="card stage-card"><div class="stage-code">S4<small>验证与评估</small></div><div class="stage-body"><h3>验证评估:把反例和约束摆出来</h3><div class="stage-content"><div><span class="label">输入材料</span><p>支持与相反证据、原料/产线条件、规格、成本、标准及待追问问题。</p></div><div><span class="label">报告与成果</span><p>评估报告、评分依据、受阻原因、补证清单与验证建议。</p></div><div><span class="label">看板上看到</span><p>项目阶段与卡点、评估报告、未决问题;模拟页提供冲突对照示范。</p></div></div><div class="stage-rule"><b>判定边界:</b>桌面评估不等于已做物理试验;没有原料、成本和产线依据时不宣布量产可行。</div></div></article>
  112. <article class="card stage-card"><div class="stage-code">S5<small>场景与卖点</small></div><div class="stage-body"><h3>产品概念:讲清为谁、何时、为什么选</h3><div class="stage-content"><div><span class="label">输入材料</span><p>选定机会、评估结论、目标人群与场景、版本修订理由和保留问题。</p></div><div><span class="label">报告与成果</span><p>产品概念与场景卖点方案、规格/配料/路线版本、路演材料与后续行动。</p></div><div><span class="label">看板上看到</span><p>方案类报告、S5成果、项目版本及课堂完成;完成后仍可查看未决问题。</p></div></div><div class="stage-rule"><b>判定边界:</b>课堂完成仅说明当前课堂链路完成;正式报告、企业审批和真实市场验证分别验收。</div></div></article>
  113. <div class="grid cols2" style="margin-top:18px"><article class="card"><h3>生产成果类型分布</h3><p>按公开接口 artifactType 实算,共 __ARTIFACT_COUNT__ 份;这是业务类型,不是五个阶段的完成率。</p>__REPORT_BARS__</article><article class="card"><h3>一份报告应该能回查的内容</h3><ul><li><b>摘要:</b>核心发现、已知事实与未决问题。</li><li><b>章节:</b>段落、表格、矩阵、结论块及对应阶段。</li><li><b>证据:</b>原文、来源编号、定位和引用关系。</li><li><b>归属:</b>是谁、哪个 Agent、通过什么方式、何时产出。</li><li><b>版本:</b>任务键、版本号、关联项目和下一步。</li></ul><div class="note">公开快照有 __OPPORTUNITY_REPORTS__ 份“机会卡类成果”,另有 __OPPORTUNITY_COUNT__ 张独立机会卡。两者属于不同集合,报告数不要求等于卡池数。</div></article></div>
  114. </section>
  115. <section id="boards" aria-labelledby="boards-title">
  116. <div class="section-head"><span class="section-no">06</span><div><h2 id="boards-title">看板展示:从总览走到具体报告与证据</h2><p>按现有主导航组织,不增加固定端数或新的业务入口。</p></div></div>
  117. <div class="grid cols3">
  118. <article class="card board-card"><span class="board-icon" aria-hidden="true">01</span><span class="route">/</span><h3>工作台</h3><p class="question">我做了什么,现场哪里卡住?</p><p>按现有成员与阶段汇总成果;支持“给我的”、机会池与现场进度等视角,发现已有活动但迟迟无新成果的成员。</p><a class="btn" href="https://kangshifu.fmode.cn/" target="_blank" rel="noopener noreferrer">打开工作台 ↗</a></article>
  119. <article class="card board-card"><span class="board-icon" aria-hidden="true">02</span><span class="route">/pool</span><h3>机会卡池</h3><p class="question">有哪些方向,先讨论哪一张?</p><p>卡片摘要、状态、评分、排序与详情;保留证据入口和上传信息。生产卡池数量来自独立机会对象。</p><a class="btn" href="https://kangshifu.fmode.cn/pool" target="_blank" rel="noopener noreferrer">打开机会卡池 ↗</a></article>
  120. <article class="card board-card"><span class="board-icon" aria-hidden="true">03</span><span class="route">/stages</span><h3>五阶段产出</h3><p class="question">每个阶段交了什么,谁交的?</p><p>沿 S1—S5 查看对应成果和产出人,进入具体报告。缺失阶段不会自动补成完成。</p><a class="btn" href="https://kangshifu.fmode.cn/stages" target="_blank" rel="noopener noreferrer">打开阶段产出 ↗</a></article>
  121. <article class="card board-card"><span class="board-icon" aria-hidden="true">04</span><span class="route">/reports</span><h3>分析报告与阅读</h3><p class="question">研究结果是什么,依据在哪里?</p><p>按品类、竞品、用户声音、痛点和方案分类阅读;报告内可查看章节、结论、引用和原文。其他类型保留相应归类说明。</p><a class="btn" href="https://kangshifu.fmode.cn/reports" target="_blank" rel="noopener noreferrer">打开报告中心 ↗</a></article>
  122. <article class="card board-card"><span class="board-icon" aria-hidden="true">05</span><span class="route">/ledger</span><h3>证据台账</h3><p class="question">这条判断用了什么材料?</p><p>六维筛选与检索,追踪成果与结论的双向引用关系,区分原始材料、整理结论和被引用升级的成果。</p><a class="btn" href="https://kangshifu.fmode.cn/ledger" target="_blank" rel="noopener noreferrer">打开证据台账 ↗</a></article>
  123. <article class="card board-card"><span class="board-icon" aria-hidden="true">06</span><span class="route">/members</span><h3>成员与成果归属</h3><p class="question">是谁做的,现在进行到哪?</p><p>成员称呼、小组、阶段、消息/成果/机会数量及活动信息;自报称呼带来源说明,同名按稳定身份区分。</p><a class="btn" href="https://kangshifu.fmode.cn/members" target="_blank" rel="noopener noreferrer">打开成员页 ↗</a></article>
  124. </div>
  125. <div class="note blue">这些地址是生产看板入口;本报告是离线整理文件,不会自动连接生产或触发写入。上列说明来自当前源码与已发布文件,具体页面渲染及全部交互不能仅凭接口 200 宣布验收通过。</div>
  126. <details><summary>已完成的功能演示与系统介绍页面</summary><div class="detail-body"><p>另有介绍页与模拟交互页,用于讨论创新管理、情报、共创、评审和课堂运营。它们使用隔离的模拟数据,未新增到现有主导航中,也不代表生产已拥有同等规模的业务记录。</p><div class="table-wrap"><table><thead><tr><th>功能主题</th><th>模拟页面</th><th>介绍页</th><th>主要展示</th></tr></thead><tbody>
  127. <tr><td>创新总览</td><td><a href="https://kangshifu.fmode.cn/cockpit" target="_blank" rel="noopener noreferrer">/cockpit ↗</a></td><td><a href="https://kangshifu.fmode.cn/showcase/leadership" target="_blank" rel="noopener noreferrer">创新驾驶舱 ↗</a></td><td>项目组合、小组进度、受阻支持事项</td></tr>
  128. <tr><td>情报与洞察</td><td><a href="https://kangshifu.fmode.cn/intel" target="_blank" rel="noopener noreferrer">/intel ↗</a></td><td><a href="https://kangshifu.fmode.cn/showcase/research" target="_blank" rel="noopener noreferrer">情报研究 ↗</a></td><td>原始来源、用户声音、商品观察、证据</td></tr>
  129. <tr><td>共创协作</td><td><a href="https://kangshifu.fmode.cn/coop" target="_blank" rel="noopener noreferrer">/coop ↗</a></td><td><a href="https://kangshifu.fmode.cn/showcase/collaboration" target="_blank" rel="noopener noreferrer">产品共创 ↗</a></td><td>机会选题、分工、评论与方案版本</td></tr>
  130. <tr><td>验证评审</td><td><a href="https://kangshifu.fmode.cn/review" target="_blank" rel="noopener noreferrer">/review ↗</a></td><td><a href="https://kangshifu.fmode.cn/showcase/validation" target="_blank" rel="noopener noreferrer">验证评估 ↗</a></td><td>冲突、反例、未决问题与补证任务</td></tr>
  131. <tr><td>课堂与成果</td><td><a href="https://kangshifu.fmode.cn/class" target="_blank" rel="noopener noreferrer">/class ↗</a></td><td><a href="https://kangshifu.fmode.cn/showcase/classroom" target="_blank" rel="noopener noreferrer">课堂运营 ↗</a></td><td>三个半天、作业、完成度与成果墙</td></tr>
  132. </tbody></table></div><p style="margin-top:12px">设计预览图由 HTML 与浏览器渲染制作,不能标为 skill-image 出图;图像生成凭据缺失这一历史边界不影响当前工作坊 Skill 的资料、报告和昵称流程。</p></div></details>
  133. </section>
  134. <section id="identity" aria-labelledby="identity-title">
  135. <div class="section-head"><span class="section-no">07</span><div><h2 id="identity-title">身份与称呼:能识别人,也能自然地称呼人</h2><p>自动取得发送者标识;显示姓名或昵称由本人提供,后续按同一稳定身份复用。</p></div></div>
  136. <div class="grid cols2"><article class="card"><h3>员工实际体验</h3><ol style="padding-left:20px;font-size:13px;color:var(--muted)"><li>员工直接在企微向数字人发资料或开展工作。</li><li>数字人识别当前发送者,核对已有会话归属。</li><li>首次入库或上传前没有称呼时问一次:<br><b style="color:var(--ink)">“这份成果会显示在公开看板上,希望怎么称呼你?姓名或昵称都可以,也可以先跳过。”</b></li><li>本人回答后保存,再回读;后续直接复用。</li><li>可主动改名,也可跳过;同名员工分别归属。</li></ol><p>称呼不会覆盖原始身份档案,也不会为改名新建会话或重复上传报告。</p></article><article class="card"><h3>已完成的真实消息验证</h3><p>当前员工回答“小智”,保存与回读一致;生产公开接口和前端模型的归属核对也一致。</p><div class="identity-demo"><div class="person"><span class="avatar" aria-hidden="true">智</span><div><strong>小智</strong><small>本人提供的称呼 · 未经通讯录核验</small></div></div><div class="identity-numbers"><span><b>2</b>个会话</span><span><b>15</b>份成果</span><span><b>2</b>个项目</span><span><b>2</b>张机会卡</span></div></div><p class="micro" style="margin-top:12px">这是依据生产接口制作的显示示意,不是生产页面截图。昵称 source=self_reported、nameVerified=false;页面实看仍待验收。</p></article></div>
  137. <div class="evidence-map" aria-label="称呼展示逻辑"><span class="node">当前消息的稳定员工身份</span><span class="arr" aria-hidden="true">→</span><span class="node">称呼注册表</span><span class="arr" aria-hidden="true">→</span><span class="node">公开查询生成展示字段</span><span class="arr" aria-hidden="true">→</span><span class="node">原有成果显示“小智”</span></div>
  138. <div class="note green"><b>为什么业务记录里没有 employee.displayName?</b>它由公开看板查询时生成,昵称存放在独立称呼注册表。原始报告、项目和会话快照保持不变,不需要新增员工业务表,也不需要重存报告。</div>
  139. <div class="note"><b>通讯录实名仍是可选能力:</b>企微入站消息目前只有发送者标识,不带姓名。通讯录查询入口已接通,但缺管理员配置与已核实映射。当前采用本人称呼,不把它冒称为已认证实名。</div>
  140. </section>
  141. <section id="demo" aria-labelledby="demo-title">
  142. <div class="section-head"><span class="section-no">08</span><div><h2 id="demo-title">用丰富模拟数据展示多人、多产品流程</h2><p>用于演示容量与业务细节;全体明确标为模拟,不能当作真实调研、交易或量产结论。</p></div></div>
  143. <div class="number-band"><div><span class="badge red">原始演示基线</span><div class="big">__BASELINE_TOTAL__<small>条 / 12 个集合</small></div><p>6 组、36 人、72 条创意、24 张机会卡、12 个项目。项目阶段 S3/S4/S5 = 2/6/4,状态进行中/受阻/课堂完成 = 7/3/2。</p></div><div><span class="badge">独立模拟扩展</span><div class="big">__EXT_TOTAL__<small>条 / 6 个集合</small></div><p>扩大用户声音、商品观察、价格、引文、研究任务和协作记录的密度;基线与扩展分别计数,不改变原始口径。</p></div></div>
  144. <div class="grid cols2" style="margin-top:16px"><article class="card"><h3>原始基线包括哪些</h3><div class="table-wrap"><table><thead><tr><th>对象</th><th>数量</th><th>对象</th><th>数量</th></tr></thead><tbody>__BASELINE_ROWS__</tbody></table></div></article><article class="card"><h3>扩展数据补足哪些细节</h3><div class="table-wrap"><table><thead><tr><th>数据</th><th>数量</th><th>展示用途</th></tr></thead><tbody>__EXT_ROWS__</tbody></table></div><p class="micro" style="margin-top:10px">基础 6 条引文与扩展 __EXT_CITATIONS__ 条合计 360 条;全是构造示例。模拟表格中的价格和用户原话不能作为真实业务证据。</p></article></div>
  145. <h3 style="font-size:17px;margin:26px 0 12px">三条产品故事线</h3>
  146. <div class="grid cols3"><article class="card case-card"><span class="case-label">P01 · 完整推进</span><h3>工位轻香葱油拌面</h3><p>围绕工位午餐,从原话与条件走到机会、评估和方案版本。课堂完成后仍保留气味、制备和沥水条件的待验证问题。</p><div class="path">创意 → 依据 → 机会 → 项目 → 报告 → 方案 → 保留问题</div></article><article class="card case-card"><span class="case-label">P03 · 制备条件受阻</span><h3>宿舍轻辣番茄拌面</h3><p>目标用户无灶具,而面体需要煮制。把场景和制备条件的冲突显性化,列出补证材料与负责人。</p><div class="path">使用条件 → 设计冲突 → 补证问题 → 验证任务</div></article><article class="card case-card"><span class="case-label">P10 · 证据不足</span><h3>一人食酱香大满足</h3><p>加蛋加菜可能是习惯,也可能与用餐目的有关。正餐、加餐和习惯搭配未区分时,保留不同解释。</p><div class="path">已知原话 → 其他解释 → 继续追问 → 下一步验证</div></article></div>
  147. <div class="note blue"><b>写入隔离:</b>模拟页面读取静态种子;状态、评分和评论只写独立的本机存储空间。操作模拟卡片不会更新生产机会卡。真实工作坊上传仍走授权服务,二者不混用。</div>
  148. </section>
  149. <section id="delivery" aria-labelledby="delivery-title">
  150. <div class="section-head"><span class="section-no">09</span><div><h2 id="delivery-title">交付到哪,下一步由谁完成</h2><p>安装、部署、API 返回和浏览器实际展示是不同验收层次,分别留结论。</p></div></div>
  151. <div class="grid cols2"><article class="card"><h3>已交付并有证据的部分</h3><div class="status-line"><span class="status-dot"></span><strong>源码与补丁提交</strong><span class="badge ok">a68bfe1</span></div><p>工作坊 Skill、称呼服务、看板投影、来源说明及部署/回退工具已提交到仓库。</p><div class="status-line" style="margin-top:17px"><span class="status-dot"></span><strong>运维部署回执</strong><span class="badge ok">已完成</span></div><p>更新公开读函数,新增称呼函数;发布一个静态文件;Skill 六项文件升级。凭据绑定、既有档案和会话索引保留。</p><div class="status-line" style="margin-top:17px"><span class="status-dot"></span><strong>真实昵称与公开查询</strong><span class="badge ok">已核对</span></div><p>“小智”保存和回读一致,公开查询与前端模型将原有成果归并为同一成员;没有重传旧成果。</p><div class="badges" style="margin-top:14px"><span class="badge neutral">114 项测试通过</span><span class="badge neutral">13 项静态检查通过</span><span class="badge neutral">Skill 10/10 文件哈希通过</span></div></article><article class="card"><h3>仍需单列的事项</h3><div class="status-line"><span class="status-dot warn"></span><strong>生产浏览器验收</strong><span class="badge warn">待完成</span></div><p>昵称来源标注、实际行布局及关键交互需在生产页面实看;API 与文件哈希通过不能替代这一项。</p><div class="status-line" style="margin-top:17px"><span class="status-dot warn"></span><strong>真实研究与业务完整性</strong><span class="badge warn">持续补充</span></div><p>补充可信来源、阶段字段、验证材料、真实报价和产线条件;不能把已有样例与缺字段记录包装成完整真实数据。</p><div class="status-line" style="margin-top:17px"><span class="status-dot warn"></span><strong>通讯录实名与正式确认</strong><span class="badge warn">按需验收</span></div><p>通讯录待配置;不影响本人昵称。正式员工确认及报告提交的生产全流程须另按实际账号权限完成。</p></article></div>
  152. <div class="table-wrap wide-table" style="margin-top:16px"><table><thead><tr><th>责任角色</th><th>负责事项</th><th>交付结果</th></tr></thead><tbody><tr><td><strong>业务员工 / 小组</strong></td><td>提供真实材料、回答业务追问、选择称呼、判断机会与确认正式报告。</td><td>业务事实、本人答复、研究依据与决策。</td></tr><tr><td><strong>王刚001</strong></td><td>加载 Skill,按当前员工归属执行课堂任务,上传后回读,回报真实结果。</td><td>成果编号、任务回执、未决问题和消息验收。</td></tr><tr><td><strong>Codex / 开发</strong></td><td>实现与维护源码、Skill 合同、数据模型、测试、交付包及看板核对。</td><td>可审阅源码、测试结果、部署说明和独立核对。</td></tr><tr><td><strong>运维001</strong></td><td>核验交付包,预检、部署、回读与回退,保护原有配置和业务记录。</td><td>部署回执、版本哈希、公开可达性和回退材料。</td></tr></tbody></table></div>
  153. </section>
  154. <section id="sources" aria-labelledby="sources-title">
  155. <div class="section-head"><span class="section-no">10</span><div><h2 id="sources-title">报告依据与技术附录</h2><p>这份报告描述当前交付事实和能力边界;数量采用本次快照,后续业务新增会变化。</p></div></div>
  156. <div class="card"><ol class="source-list"><li><strong>生产公开接口:</strong><code>POST https://kangshifu.fmode.cn/api/functions</code>,函数 <code>ksfGetPublicBoard</code>,完整分页核对。快照时间:__SNAPSHOT_TIME__。</li><li><strong>当前技能:</strong><code>skills/ksf-workshop-runtime/SKILL.md</code>、<code>references/identity.md</code>、<code>references/workshop-tasks.md</code>、<code>references/write-tasks.md</code>。</li><li><strong>当前看板:</strong><code>src/layout/kf-nav.js</code>、<code>src/utils/router.js</code>、<code>src/pages/view-members.js</code>、<code>src/core/kfs/employee.js</code> 与数据服务。</li><li><strong>模拟演示:</strong><code>data/preview-seed.json</code>、<code>src/assets/showcase/demo-extension.json</code>、<code>src/pages/showcase-content.js</code>、<code>docs/showcase/schema.md</code>。</li><li><strong>部署与验收:</strong>运维001的称呼补丁 r1 部署回执、王刚001的真实消息回报,以及 Codex 对生产公开接口、前端模型和发布文件的独立核对。</li><li><strong>开发规范参考:</strong><a href="https://git.fmode.cn/fmode/fmode-code-lit" target="_blank" rel="noopener noreferrer">fmode-code-lit ↗</a>、<a href="https://git.fmode.cn/fmode/fmode-code-agent" target="_blank" rel="noopener noreferrer">fmode-code-agent ↗</a>。当前前端为原生 ESM + Lit,核心逻辑、服务与页面分层。</li><li><strong>课程参考:</strong><a href="https://fmode.cn/lesson/avatar-workshop/index.html" target="_blank" rel="noopener noreferrer">数据本体与数字分身课程 ↗</a>。该链接当前内容为通用企业业务建模与数字分身课程;本报告的面类 S1—S5、三个半天安排依据项目资料,不把参考页当作课堂执行完成证明。</li></ol></div>
  157. <details><summary>技术执行路径、版本和口径</summary><div class="detail-body"><p><b>称呼路径:</b>当前可信发送者 → employee-name → 私有运行配置 workshopDisplayNames → ksfGetPublicBoard 投影 employee.displayName → 前端稳定员工归并。公开 employee.name 保持空值,称呼写 displayName;已有有效通讯录实名优先。</p><p><b>版本:</b>源码提交 <code>a68bfe1e8166b58854f0d8c3b07c7d99aff14580</code>;称呼补丁 <code>ksf-employee-name-patch-20261103-r1.zip</code>,162,396 字节,包清单 27/27 核验通过。</p><p><b>环境:</b>公开生产站点 <code>https://kangshifu.fmode.cn</code>;Skill 位于王刚001运行容器。报告不包含服务凭据、原始发送者ID、私有账户、电话或 Secret。</p><p><b>统计:</b>公开集合数量是快照内记录数;成果类型按artifactType分类。阶段、取得模式缺失按缺失记录,不自行推定。演示334条基线与16,446条扩展分别统计。字段支持不等于生产已填满;部署完成不等于全流程业务验收完成。</p><p><b>报告形式:</b>这是可离线打开的单文件 HTML;图表由已核对数量生成,无外部脚本、字体或图片依赖,无自动网络请求,无业务写入。右上角可打印或保存PDF;浏览器未提供实际渲染验收时,不标记browserVerified=true。</p></div></details>
  158. </section>
  159. <footer class="footer"><span>康师傅产品创新工作坊 · 流程与交付分类报告</span><span>快照:__SNAPSHOT_TIME__ · 内容随业务与验收更新</span></footer>
  160. </main>
  161. <a class="scroll-top no-print" href="#top">返回顶部 ↑</a>
  162. <script type="application/json" id="report-snapshot">__SNAPSHOT_JSON__</script>
  163. <script>
  164. 'use strict';
  165. const allDetails=[...document.querySelectorAll('details')],expand=document.getElementById('expand');
  166. expand.addEventListener('click',()=>{const next=expand.getAttribute('aria-expanded')!=='true';allDetails.forEach(d=>d.open=next);expand.setAttribute('aria-expanded',String(next));expand.textContent=next?'收起技术细节':'展开技术细节';});
  167. document.getElementById('print').addEventListener('click',()=>window.print());
  168. const search=document.getElementById('data-search'),rows=[...document.querySelectorAll('#data-table tbody tr[data-search]')],count=document.getElementById('data-match');
  169. search.addEventListener('input',()=>{const query=search.value.trim().toLocaleLowerCase();let shown=0;rows.forEach(row=>{const hit=!query||row.textContent.toLocaleLowerCase().includes(query);row.hidden=!hit;if(hit)shown++;});count.textContent=query?`${shown} / ${rows.length} 类匹配`:'全部分类';document.getElementById('data-empty').hidden=shown>0;});
  170. const nav=[...document.querySelectorAll('.sidebar nav a')];
  171. if('IntersectionObserver' in window){const visible=new Map(),observer=new IntersectionObserver(entries=>{entries.forEach(e=>visible.set(e.target.id,e));const candidates=[...visible.values()].filter(e=>e.isIntersecting).sort((a,b)=>a.boundingClientRect.top-b.boundingClientRect.top);if(candidates[0])nav.forEach(a=>a.setAttribute('aria-current',String(a.hash==='#'+candidates[0].target.id)));},{rootMargin:'-12% 0px -55% 0px',threshold:0});document.querySelectorAll('main section[id]').forEach(s=>observer.observe(s));}
  172. let printState=null;
  173. window.addEventListener('beforeprint',()=>{if(printState)return;printState={details:allDetails.map(d=>d.open),rows:rows.map(r=>r.hidden),empty:document.getElementById('data-empty').hidden};allDetails.forEach(d=>d.open=true);rows.forEach(r=>r.hidden=false);document.getElementById('data-empty').hidden=true;});
  174. window.addEventListener('afterprint',()=>{if(!printState)return;allDetails.forEach((d,i)=>d.open=printState.details[i]);rows.forEach((r,i)=>r.hidden=printState.rows[i]);document.getElementById('data-empty').hidden=printState.empty;printState=null;});
  175. </script>
  176. </body>
  177. </html>