Archived
资料文件真产出来了;E04/I01 补到验收线,顺手填了几个「墙拦住却不给路」的坑
**资料文件全链**(用户:审核资料这一步要真产出 word/excel/md/html,前端能渲、点资料名能开)
接手时这一步一个文件都产不出来 —— S3 剧本白纸黑字写着「file_ref 本 MVP 阶段可留空」。
文件是台账那一行的投影,不另存一份:
· 声明 `file:{titleColumn,bodyColumn,formatColumn}`,它同时是授权面(没声明就点不开)
· 现造真字节 —— docx/xlsx 是自己打的 OOXML 包(zip-write:store+CRC32,零依赖)
· 读回来渲 —— 解的就是造出来那份字节,渲得出来才证明文件是真的
· 件上 `data-file-of` → 工作区二级界面(Word 纸面/Excel 网格/渲好的 md/沙箱 html)+ 下载原件
放行落地前把每一份冻进 `sys.task_asset_file`(迁移 0029):归档件点开的必须是签字那一刻
那一份,而资料落在主数据上、试跑单不落正式表 —— 不存这一份,收工后一个都点不开。
工作成果里「产出的资料」自成一摞。Markdown 富文本渲染顺带销账(仍零依赖)。
**Harness**
· 画面按「这一拍办完之后」在办的那一步挑 —— 从前拿拍首的局面决定拍尾的事:
收掉 S4、发出 S5 的卡,而屏上还摆着 S4 的只读件,人无处可填(墙要配路第四次现形)
· 验收「重做」真能退回重做,且打回后台账没动就不许再提交(软硬两段,不锁死单子)
· 立监听的授权面是清单声明;发卡的授权面是调人预算,不是计划项
· 读工具同参重调有兜底;空转写身后还有行动就不废串;finish 的 doneWhen 按写完后的草稿算
**界面**
· 翻件与翻页各归各位(从前二选一,多卡多页时页翻不动);没得翻写「—」不写 0/0
· 工作成果详情能翻份;表宽超出能横滑(E04/I01 抄版式时把 overflow-x 抄丢了)
· 查看面灰底滚过一屏变白 —— 两条独立的路都治了(沙箱内不同色 / 弹性子项不长个)
· 测试台「取不到」不再当成「还活着」
**活动**
E04 关系覆盖、I01 品牌内容各自补到验收线:判据全读基座数、判据指向的东西摆上卡面、
样例满载且名字 ≤14 字;提交前要裁的判据搬进说明书(模型会压拍,压过之后只有说明书还在)。
验收:e2e i01 4/4、e04 3/3 全部 released,资料在办中渲得出、放行后存了档点得开;
门禁 typecheck/lint/depcruise/1628 测全绿。
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EEJX8Z7CHejvwmDQyPQuBX
This commit is contained in:
@@ -113,6 +113,23 @@
|
||||
| `data-col="台账列名"` | 可改格子(与 `data-slot` 同元素) | 渲染时多渲一个孪生 `<input class="jc-cell">`;写的是**台账列名**不是表头文字(表头改说法不该让写回错位) |
|
||||
| `data-edit="域.对象"` | 可改表的行容器 | 这组行可就地改;保存按它认地址 |
|
||||
| `data-value` | `<input>` | 值进 value 属性(孪生件用,模版一般不手写) |
|
||||
| `data-file-of="主键列"` | 行内任意元素 | 这一格**点开是一份资料文件**:渲成 `data-file="域.对象/主键值"`,外层接住就跳到查看面。那一列空着就整个属性去掉 —— 没有文件的行不该长得像能点开 |
|
||||
|
||||
**资料文件**(2026-08-23):一行台账还可以是一份**真文件**。台账声明里写
|
||||
`file: { titleColumn, bodyColumn, formatColumn }`(它同时是授权面 —— 不声明就点不开),
|
||||
正文一律 Markdown 原文写在 `bodyColumn`,格式列写 `md` / `html` / `docx` / `xlsx`;
|
||||
基座按声明**现造**字节(`file-compose.ts`),再读回来渲(`file-doc.ts`)——
|
||||
下载到的是真 .docx / .xlsx,屏上渲的就是那份字节读回来的样子。
|
||||
件这一侧只管挂 `data-file-of`,「点了去哪」不在 HTML 里。
|
||||
|
||||
**在办中现造,放行那一刻存档**(2026-08-23 补齐):在办期间文件是台账那一行的投影,
|
||||
台账改一格文件跟着变 —— 那时这样最好,两处永远一致。**放行落地之前**基座把每一份
|
||||
造成字节冻进 `sys.task_asset_file`,取文件那条路**存档优先**:归档件上点开的必须是
|
||||
他签字那一刻的那一份,而不是台账后来被下一单改成的样子。
|
||||
非存不可还有一条硬理由:资料常落在**主数据**上,而试跑单放行时主数据只留在活动缓存、
|
||||
不落正式表 —— 不存这一份,试跑单一放行,工作成果那一屏就什么都点不开。
|
||||
工作成果里「产出的资料」自成一摞(与定稿报告分开:报告是「叫人办的那件事办完长什么样」,
|
||||
资料是**办出来的东西本身**)。
|
||||
|
||||
取数约定:`mine:域.对象` = 本单草稿行(成果表**只用它** —— 别单放行过的记录不混进来);
|
||||
裸键 = 摊平字段 + **基座读数**(`域_对象_rows` / `_missing` / `_missing_keys` /
|
||||
@@ -279,3 +296,6 @@ A1 两份报告是 1:1 平移 PRD 目标件:样式表整段搬(`prd-style.ts`
|
||||
| 人保存后一行的值被另一行盖掉 | **主键格没挂 `data-col`** —— 收上去的行没有钥匙,服务端按「全表一致列」补键,多行对到同一行 | 主键列必挂 `data-col`(它不是编辑面,是行的钥匙);e2e 走 API 自带主键测不出,只有件上真按保存才现形(A2 走查逮过) |
|
||||
| 逐行卡片克隆成套娃(第二行长进第一行里) | 渲染器按**第一个同名闭合标签**截行内容 —— `<div data-rows>` 的行模版里嵌了别的 `<div>`,行在半截被断开 | **行容器的标签名不得在行模版内部再出现**:容器换 `<section>`/`<tbody>` 这类行内不会嵌的标签(A2 选型档案卡逮过) |
|
||||
| 空格胶囊比同行的数字**往下坠几像素** | 裸 inline-flex 胶囊按 baseline 挂:盒(字 + 内距 + 边框)比字的基线深,行高也随之忽高忽低 | 空格子(`:empty`)转 flex + `align-items:center` + `min-height` 撑住文字那份盒高,胶囊中线对数字中线(A1 逮过,2026-08-03) |
|
||||
| 查看面的灰底**滚过一屏就变白** | 画背景的那一格是弹性子项(`flex:0 1 auto`),高度被「看得见的那一屏」封住;内容比一屏长时溢出盒子继续排,而**背景只画在盒子里** | `flex: 1 0 auto`(不许被压 → 盒子至少和内容一样高;内容短时能长满 → 下方不留白边)。同一症状可能有两条独立的路(沙箱内的底色、父文档里的底色),治完一条把另一条也走一遍(2026-08-23 用户报了两次) |
|
||||
| 表宽超出屏宽,列被裁掉且**滑不动** | `.jc-tbl-wrap` 写成 `overflow: hidden`(本意是让圆角裁住表头)—— 横向一并封死;列一多、或某列为放下下拉框加宽,人就再也看不到右边那几列 | `overflow-x: auto; overflow-y: hidden`(件是整篇跟着外层滚的,竖向不该再套一层)。抄别包版式时最容易抄丢这一条 —— quote-* 六包一直是 auto,E04/I01 抄漏(2026-08-23 用户报) |
|
||||
| 改了 `prd-style.ts`,esbuild 报 `Expected ";" but found …`,报错行离改动处很远 | 整段 CSS 是 **TS 模版字符串**,注释里写了一个反引号就把字符串在那儿截断,后面的 CSS 变成 TS 代码 | **视图文件的注释里不写反引号**(要引 CSS 属性名就裸写 `overflow-x: auto`)。本轮同一处踩了三次 |
|
||||
|
||||
@@ -0,0 +1,626 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Demo:E04 关系覆盖与关键人 × I01 品牌与工具包 · 台账设计</title>
|
||||
<style>
|
||||
:root { --bg:#fff; --text:#1a202c; --light:#4a5568; --border:#e2e8f0; --card:#f7fafc; }
|
||||
* { margin:0; padding:0; box-sizing:border-box; }
|
||||
body { font-family:-apple-system,"Segoe UI","Microsoft YaHei","PingFang SC",sans-serif; color:var(--text); background:var(--bg); line-height:1.7; font-size:14px; max-width:1200px; margin:0 auto; padding:40px 30px; }
|
||||
.doc-header { text-align:center; margin-bottom:36px; padding-bottom:20px; border-bottom:2px solid #1a365d; }
|
||||
.doc-header h1 { font-size:24px; color:#1a365d; margin-bottom:8px; }
|
||||
.doc-header .subtitle { font-size:15px; color:var(--light); }
|
||||
.doc-header .meta { font-size:12px; color:#a0aec0; margin-top:12px; }
|
||||
.doc-header .meta span { margin:0 8px; }
|
||||
h2.section-title { font-size:18px; color:#1a365d; margin:40px 0 16px; padding-bottom:8px; border-bottom:2px solid #1a365d; }
|
||||
.note-box { background:#fffaf0; border:1px solid #fefcbf; border-radius:6px; padding:12px 16px; margin:16px 0; font-size:13px; color:#975a16; }
|
||||
.note-box strong { color:#c05621; }
|
||||
.legend { display:flex; gap:20px; flex-wrap:wrap; margin:12px 0 16px; font-size:12px; color:var(--light); }
|
||||
.legend-item { display:flex; align-items:center; gap:6px; }
|
||||
.legend-box { width:22px; height:18px; display:inline-block; text-align:center; line-height:18px; font-weight:600; font-size:11px; border-radius:3px; }
|
||||
.cell-r { background:#EBF8FF; color:#185FA5; font-weight:600; text-align:center; }
|
||||
.cell-w { background:#F0FFF4; color:#276749; font-weight:600; text-align:center; }
|
||||
.cell-rw { background:#FAF5FF; color:#6B46C1; font-weight:700; text-align:center; }
|
||||
.cell-none { color:#E2E8F0; text-align:center; }
|
||||
.matrix-wrap { overflow-x:auto; }
|
||||
table { width:100%; border-collapse:collapse; margin:14px 0; font-size:13px; }
|
||||
th { background:#1a365d; color:#fff; padding:7px 10px; text-align:left; font-size:12px; white-space:nowrap; }
|
||||
td { padding:7px 10px; border-bottom:1px solid var(--border); vertical-align:top; }
|
||||
tr:nth-child(even) td { background:#fafbfc; }
|
||||
.matrix-table { font-size:11px; }
|
||||
.matrix-table th { text-align:center; padding:5px 3px; }
|
||||
.matrix-table td { padding:5px 3px; }
|
||||
.matrix-table td.act-name { text-align:left; white-space:nowrap; font-weight:600; font-size:12px; }
|
||||
.hl-col { outline:2px solid #C05621; outline-offset:-1px; }
|
||||
.activity-card { background:var(--card); border:1px solid var(--border); border-left:4px solid #2c5282; border-radius:6px; padding:14px 18px; margin-bottom:16px; }
|
||||
.activity-card .a-title { font-size:15px; font-weight:700; color:#1a365d; margin-bottom:6px; }
|
||||
.activity-card .a-desc { font-size:13px; color:var(--light); }
|
||||
.activity-card .a-tags { margin-top:8px; }
|
||||
.tag { display:inline-block; font-size:11px; padding:2px 10px; border-radius:10px; margin-right:6px; font-weight:600; }
|
||||
.tag-blue { background:#EBF8FF; color:#185FA5; }
|
||||
.tag-orange { background:#FEEBC8; color:#B7791F; }
|
||||
.ledger-card { border:1px solid var(--border); border-left:4px solid #185FA5; border-radius:6px; margin-bottom:16px; overflow:hidden; }
|
||||
.ledger-head { background:#EBF8FF; padding:10px 16px; display:flex; justify-content:space-between; align-items:center; }
|
||||
.ledger-head .l-id { font-size:13px; font-weight:700; color:#185FA5; }
|
||||
.ledger-head .l-name { font-size:14px; font-weight:600; }
|
||||
.ledger-head .l-owner { font-size:12px; color:var(--light); }
|
||||
.ledger-body { padding:12px 16px; }
|
||||
.ledger-body .l-position { font-size:13px; font-weight:600; margin-bottom:6px; }
|
||||
.ledger-body .l-desc { font-size:12px; color:var(--light); margin-bottom:10px; }
|
||||
.field-table td { font-size:12px; }
|
||||
.fid { font-weight:600; color:#2b6cb0; white-space:nowrap; }
|
||||
.rel-row { display:flex; gap:14px; flex-wrap:wrap; margin:10px 0; }
|
||||
.rel-box { flex:1; min-width:280px; background:var(--card); border:1px solid var(--border); border-radius:6px; padding:12px 16px; }
|
||||
.rel-box .rel-title { font-weight:600; font-size:13px; margin-bottom:6px; }
|
||||
.rel-box ul { margin-left:18px; font-size:12px; color:var(--light); }
|
||||
.excel-note { background:#F0FFF4; border:1px solid #C6F6D5; border-radius:6px; padding:12px 16px; margin:14px 0; font-size:13px; }
|
||||
.excel-note strong { color:#276749; }
|
||||
.footer { margin-top:48px; padding-top:16px; border-top:1px solid var(--border); font-size:12px; color:#a0aec0; text-align:center; }
|
||||
|
||||
/* ===== Work chain (工作链条) styles ===== */
|
||||
.chain-note {
|
||||
background:#EBF8FF; border:1px solid #BEE3F8; border-radius:6px;
|
||||
padding:12px 16px; margin:14px 0; font-size:13px; color:#2C5282;
|
||||
}
|
||||
.chain-note strong { color:#2B6CB0; }
|
||||
.chain-card {
|
||||
border:1px solid var(--border); border-left:4px solid #185FA5;
|
||||
border-radius:6px; margin-bottom:20px; overflow:hidden;
|
||||
}
|
||||
.chain-head {
|
||||
background:#F7FAFC; padding:12px 16px; display:flex; align-items:center; gap:12px;
|
||||
border-bottom:1px solid var(--border);
|
||||
}
|
||||
.chain-id {
|
||||
color:#fff; font-size:13px; font-weight:700; padding:4px 10px; border-radius:4px; flex-shrink:0;
|
||||
}
|
||||
.chain-name { font-weight:600; font-size:14px; color:var(--text); }
|
||||
.chain-meta { display:flex; gap:8px; flex-wrap:wrap; margin-top:5px; }
|
||||
.chain-tag { font-size:11px; padding:2px 10px; border-radius:10px; font-weight:500; }
|
||||
.chain-tag.owner { background:#E6FFFA; color:#234E52; }
|
||||
.chain-tag.trigger { background:#FEFCBF; color:#975A16; }
|
||||
.chain-tag.p0 { background:#FED7D7; color:#C53030; }
|
||||
.chain-trigger {
|
||||
padding:10px 16px; background:#FFFAF0; border-bottom:1px solid var(--border);
|
||||
font-size:12px; color:#744210; line-height:1.7;
|
||||
}
|
||||
.chain-trigger strong { color:#C05621; }
|
||||
.chain-steps { list-style:none; margin:0; padding:16px 16px 6px 16px; }
|
||||
.chain-steps li { display:flex; gap:12px; margin-bottom:14px; position:relative; }
|
||||
.chain-steps li::before {
|
||||
content:""; position:absolute; left:12px; top:28px; bottom:-14px;
|
||||
width:2px; background:#E2E8F0;
|
||||
}
|
||||
.chain-steps li:last-child::before { display:none; }
|
||||
.step-num {
|
||||
flex-shrink:0; width:26px; height:26px; border-radius:50%; background:#185FA5;
|
||||
color:#fff; font-size:12px; font-weight:700; display:flex; align-items:center;
|
||||
justify-content:center; z-index:1;
|
||||
}
|
||||
.chain-card[style*="2F855A"] .step-num { background:#2F855A; }
|
||||
.step-body { flex:1; padding-bottom:2px; }
|
||||
.step-title { font-size:13px; font-weight:600; color:var(--text); margin-bottom:3px; }
|
||||
.step-role {
|
||||
font-size:11px; font-weight:500; color:#fff; background:#718096;
|
||||
padding:1px 8px; border-radius:10px; margin-left:6px;
|
||||
}
|
||||
.step-desc { font-size:12px; color:var(--light); line-height:1.7; }
|
||||
.step-ledger {
|
||||
font-size:11px; color:#4A5568; margin-top:5px; background:#F7FAFC;
|
||||
border-left:3px solid #CBD5E0; padding:4px 8px; border-radius:0 4px 4px 0;
|
||||
}
|
||||
.chain-end {
|
||||
padding:10px 16px; background:#F0FFF4; border-top:1px solid var(--border);
|
||||
font-size:12px; color:#276749; line-height:1.7;
|
||||
}
|
||||
.chain-end strong { color:#22543D; }
|
||||
@media print { body { max-width:none; padding:10px; font-size:12px; } }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="doc-header">
|
||||
<h1>Demo:E04 关系覆盖与关键人 × I01 品牌与工具包</h1>
|
||||
<div class="subtitle">CloudCore 云拓芯科 · AI-Native 业务操作系统 · SS01 客户与市场情报子系统 · Activity 台账关联与字段设计</div>
|
||||
<div class="meta">
|
||||
<span>版本:v1.0 (Demo)</span>
|
||||
<span>日期:2026-08-14</span>
|
||||
<span>作者:丁子乔 (Zane Ding)</span>
|
||||
<span>基准:台账体系全景 v6.0(44 台账)</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- ========== 一、Demo 说明 ========== -->
|
||||
<h2 class="section-title">一、Demo 目标与范围</h2>
|
||||
<div class="note-box">
|
||||
<strong>Demo 目的:</strong>选择 2 个 Activity 展示「Activity × 台账」完整链路——先看 Activity 读写哪些台账,再把关联台账的字段结构设计出来,为系统实现提供可落地依据。<br>
|
||||
<strong>选择逻辑:</strong>E04 与 I01 分别代表两类典型模式——<strong>E04 是"关系经营型"Activity</strong>(核心是客户侧对象主数据 L-02/L-08 的读写),<strong>I01 是"内容生产型"Activity</strong>(核心是内容资产库 L-05 的读写 + 市场洞察 L-01 的输入)。
|
||||
</div>
|
||||
|
||||
<div class="activity-card">
|
||||
<div class="a-title">E04 关系覆盖与关键人经营 <span class="tag tag-blue">P0</span></div>
|
||||
<div class="a-desc">人的核心 Activity——围绕客户的关系网络持续经营:关键人识别与覆盖、关系亲密度维护、决策链更新、影响力经营。Richard 强调"你还没开口,你想要的我已经给你了",关系覆盖是预判需求的前提。</div>
|
||||
<div class="a-tags"><span class="tag tag-blue">读写:L-02 客户主台账(R+W)</span><span class="tag tag-blue">读写:L-08 联系人台账(R+W)</span></div>
|
||||
</div>
|
||||
<div class="activity-card" style="border-left-color:#2F855A;">
|
||||
<div class="a-title">I01 品牌形象与销售工具包管理 <span class="tag tag-blue">P0</span></div>
|
||||
<div class="a-desc">公司对外呈现的内容资产统一管理:公司介绍、能力声明、销售工具包、案例集、品牌调性标准,多语言版本受控发布。Richard 强调"气质"——对外形象是第一印象的载体。</div>
|
||||
<div class="a-tags"><span class="tag tag-orange">读:L-01 宏观市场台账(R)</span><span class="tag tag-orange">读写:L-05 品牌内容库(R+W)</span></div>
|
||||
</div>
|
||||
|
||||
<!-- ========== 二、Activity × 台账关联矩阵 ========== -->
|
||||
<h2 class="section-title">二、Activity × 台账关联矩阵(E04 / I01 抽取)</h2>
|
||||
<div class="legend">
|
||||
<div class="legend-item"><span class="legend-box cell-r">R</span> 读取</div>
|
||||
<div class="legend-item"><span class="legend-box cell-w">W</span> 写入</div>
|
||||
<div class="legend-item"><span class="legend-box cell-rw">R+W</span> 读写</div>
|
||||
<div class="legend-item"><span class="legend-box cell-none">—</span> 不涉及</div>
|
||||
<div class="legend-item"><span class="legend-box" style="background:#C05621;color:#fff;">◉</span> 本 Demo 关联台账(高亮边框)</div>
|
||||
</div>
|
||||
<div class="matrix-wrap">
|
||||
<table class="matrix-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="width:170px;">Activity</th>
|
||||
<th class="hl-col" class="th-sys">L-01市场</th>
|
||||
<th class="hl-col" class="th-sys">L-02客户</th>
|
||||
<th class="th-sys">L-03触达</th>
|
||||
<th class="th-sys">L-04攻坚</th>
|
||||
<th class="hl-col" class="th-sys">L-05品牌</th>
|
||||
<th class="th-sys">L-06知识</th>
|
||||
<th class="th-sys">L-07情报源</th>
|
||||
<th class="hl-col" class="th-sys">L-08联系人</th>
|
||||
<th class="th-sys">P-01需求任务</th>
|
||||
<th class="th-sys">P-02报价商务</th>
|
||||
<th class="th-sys">P-03PriceList</th>
|
||||
<th class="th-sys">P-04框架承诺</th>
|
||||
<th class="th-sys">P-05客户项目</th>
|
||||
<th class="th-sys">P-06样品验证</th>
|
||||
<th class="th-sys">P-07FAE资产</th>
|
||||
<th class="th-sys">P-08芯片主数据</th>
|
||||
<th class="th-sys">P-09技术档案</th>
|
||||
<th class="th-sys">P-10原厂资料</th>
|
||||
<th class="th-sys">P-11替代批准</th>
|
||||
<th class="th-sys">P-12技术沉淀</th>
|
||||
<th class="th-sys">S-01供应链战略</th>
|
||||
<th class="th-sys">S-02品类覆盖</th>
|
||||
<th class="th-sys">S-03供应商主数据</th>
|
||||
<th class="th-sys">S-04询价决策</th>
|
||||
<th class="th-sys">S-05采购基准</th>
|
||||
<th class="th-sys">S-06知识库</th>
|
||||
<th class="th-sys">D-01交易执行</th>
|
||||
<th class="th-sys">D-02Forecast</th>
|
||||
<th class="th-sys">D-03库存</th>
|
||||
<th class="th-sys">D-04回款</th>
|
||||
<th class="th-sys">D-05RMA</th>
|
||||
<th class="th-sys">D-06知识</th>
|
||||
<th class="th-sys">D-07样品库存</th>
|
||||
<th class="th-sys">D-08质保</th>
|
||||
<th class="th-sys">D-09条款监控</th>
|
||||
<th class="th-sys">D-10履约主数据</th>
|
||||
<th class="th-sys">D-11出口单证</th>
|
||||
<th class="th-sys">D-12出口退税</th>
|
||||
<th class="th-sys">D-13制裁筛查</th>
|
||||
<th class="th-sys">D-14服务水平</th>
|
||||
<th class="th-sys">D-15采购计划</th>
|
||||
<th class="th-sys">D-16采购订单</th>
|
||||
<th class="th-sys">D-17结算核销</th>
|
||||
<th class="th-sys">D-18采购异常</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="act-name">E04 关系覆盖与关键人</td>
|
||||
<td class="hl-col cell-none">—</td>
|
||||
<td class="hl-col cell-rw">R+W</td>
|
||||
<td class="cell-none">—</td>
|
||||
<td class="cell-none">—</td>
|
||||
<td class="hl-col cell-none">—</td>
|
||||
<td class="cell-none">—</td>
|
||||
<td class="cell-none">—</td>
|
||||
<td class="hl-col cell-rw">R+W</td>
|
||||
<td class="cell-none">—</td>
|
||||
<td class="cell-none">—</td>
|
||||
<td class="cell-none">—</td>
|
||||
<td class="cell-none">—</td>
|
||||
<td class="cell-none">—</td>
|
||||
<td class="cell-none">—</td>
|
||||
<td class="cell-none">—</td>
|
||||
<td class="cell-none">—</td>
|
||||
<td class="cell-none">—</td>
|
||||
<td class="cell-none">—</td>
|
||||
<td class="cell-none">—</td>
|
||||
<td class="cell-none">—</td>
|
||||
<td class="cell-none">—</td>
|
||||
<td class="cell-none">—</td>
|
||||
<td class="cell-none">—</td>
|
||||
<td class="cell-none">—</td>
|
||||
<td class="cell-none">—</td>
|
||||
<td class="cell-none">—</td>
|
||||
<td class="cell-none">—</td>
|
||||
<td class="cell-none">—</td>
|
||||
<td class="cell-none">—</td>
|
||||
<td class="cell-none">—</td>
|
||||
<td class="cell-none">—</td>
|
||||
<td class="cell-none">—</td>
|
||||
<td class="cell-none">—</td>
|
||||
<td class="cell-none">—</td>
|
||||
<td class="cell-none">—</td>
|
||||
<td class="cell-none">—</td>
|
||||
<td class="cell-none">—</td>
|
||||
<td class="cell-none">—</td>
|
||||
<td class="cell-none">—</td>
|
||||
<td class="cell-none">—</td>
|
||||
<td class="cell-none">—</td>
|
||||
<td class="cell-none">—</td>
|
||||
<td class="cell-none">—</td>
|
||||
<td class="cell-none">—</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="act-name">I01 品牌与工具包</td>
|
||||
<td class="hl-col cell-r">R</td>
|
||||
<td class="hl-col cell-none">—</td>
|
||||
<td class="cell-none">—</td>
|
||||
<td class="cell-none">—</td>
|
||||
<td class="hl-col cell-rw">R+W</td>
|
||||
<td class="cell-none">—</td>
|
||||
<td class="cell-none">—</td>
|
||||
<td class="hl-col cell-none">—</td>
|
||||
<td class="cell-none">—</td>
|
||||
<td class="cell-none">—</td>
|
||||
<td class="cell-none">—</td>
|
||||
<td class="cell-none">—</td>
|
||||
<td class="cell-none">—</td>
|
||||
<td class="cell-none">—</td>
|
||||
<td class="cell-none">—</td>
|
||||
<td class="cell-none">—</td>
|
||||
<td class="cell-none">—</td>
|
||||
<td class="cell-none">—</td>
|
||||
<td class="cell-none">—</td>
|
||||
<td class="cell-none">—</td>
|
||||
<td class="cell-none">—</td>
|
||||
<td class="cell-none">—</td>
|
||||
<td class="cell-none">—</td>
|
||||
<td class="cell-none">—</td>
|
||||
<td class="cell-none">—</td>
|
||||
<td class="cell-none">—</td>
|
||||
<td class="cell-none">—</td>
|
||||
<td class="cell-none">—</td>
|
||||
<td class="cell-none">—</td>
|
||||
<td class="cell-none">—</td>
|
||||
<td class="cell-none">—</td>
|
||||
<td class="cell-none">—</td>
|
||||
<td class="cell-none">—</td>
|
||||
<td class="cell-none">—</td>
|
||||
<td class="cell-none">—</td>
|
||||
<td class="cell-none">—</td>
|
||||
<td class="cell-none">—</td>
|
||||
<td class="cell-none">—</td>
|
||||
<td class="cell-none">—</td>
|
||||
<td class="cell-none">—</td>
|
||||
<td class="cell-none">—</td>
|
||||
<td class="cell-none">—</td>
|
||||
<td class="cell-none">—</td>
|
||||
<td class="cell-none">—</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<!-- ========== 三、台账字段设计 ========== -->
|
||||
<h2 class="section-title">三、关联台账字段设计(4 个台账)</h2>
|
||||
|
||||
<div class="ledger-card">
|
||||
<div class="ledger-head">
|
||||
<span class="l-id">L-01</span><span class="l-name">宏观市场台账</span>
|
||||
<span class="l-owner">属主:SS01 · AM | 本 Demo:I01 读(R)</span>
|
||||
</div>
|
||||
<div class="ledger-body">
|
||||
<div class="l-position">定位:市场层数据底座——外部信号与市场评分沉淀</div>
|
||||
<div class="l-desc">抓取宏观市场数据、行业分析报告、政策趋势情报;I01 品牌内容制作时读取本台账获取市场洞察输入(如俄罗斯市场白皮书的产业数据),T01 目标市场扫描维护(写)。</div>
|
||||
<table class="field-table">
|
||||
<tr><th style="width:130px;">字段名</th><th style="width:110px;">中文名</th><th style="width:60px;">类型</th><th>说明</th><th style="width:150px;">维护来源</th></tr>
|
||||
<tr><td class="fid">signal_id</td><td>信号ID</td><td>文本</td><td>市场信号唯一标识(主键)</td><td>系统自动</td></tr>
|
||||
<tr><td class="fid">signal_type</td><td>信号类型</td><td>枚举</td><td>宏观经济 / 产业趋势 / 竞争动态 / 政策法规 / 客户市场</td><td>I02 采集</td></tr>
|
||||
<tr><td class="fid">title / content</td><td>标题 / 详情</td><td>文本</td><td>信号摘要与全文</td><td>I02 采集</td></tr>
|
||||
<tr><td class="fid">source</td><td>信号来源</td><td>文本</td><td>公开数据 / 行业报告 / 订阅 / 人脉网络</td><td>L-07 情报源</td></tr>
|
||||
<tr><td class="fid">signal_date</td><td>信号日期</td><td>日期</td><td>信号发生/采集日期</td><td>系统</td></tr>
|
||||
<tr><td class="fid">market_region</td><td>所属市场</td><td>枚举</td><td>俄罗斯 / 中东 / 东南亚 / 欧洲 / 全球</td><td>人工</td></tr>
|
||||
<tr><td class="fid">industry</td><td>细分行业</td><td>枚举</td><td>ADAS / 5G / 工业自动化 / 汽车电子 / 消费</td><td>人工</td></tr>
|
||||
<tr><td class="fid">chip_category</td><td>关联芯片品类</td><td>文本</td><td>关联品类(MCU / 电源 / 模拟等)</td><td>人工</td></tr>
|
||||
<tr><td class="fid">importance</td><td>重要性评分</td><td>整数</td><td>1-5</td><td>人工评估</td></tr>
|
||||
<tr><td class="fid">impact_dir</td><td>影响方向</td><td>枚举</td><td>机会 / 威胁 / 中性</td><td>人工评估</td></tr>
|
||||
<tr><td class="fid">signal_status</td><td>信号状态</td><td>枚举</td><td>待评估 / 已评估 / 已入库 / 已过期</td><td>AM</td></tr>
|
||||
<tr><td class="fid">version</td><td>版本号</td><td>文本</td><td>季度版本,支持趋势对比</td><td>系统</td></tr>
|
||||
<tr><td class="fid">review_note</td><td>复盘备注</td><td>长文本</td><td>信号对业务影响的判断记录</td><td>AM</td></tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="ledger-card">
|
||||
<div class="ledger-head">
|
||||
<span class="l-id">L-02</span><span class="l-name">客户主台账</span>
|
||||
<span class="l-owner">属主:SS01 · AM Lead | 本 Demo:E04 读写(R+W)</span>
|
||||
</div>
|
||||
<div class="ledger-body">
|
||||
<div class="l-position">定位:唯一客户 ID 锚点——画像 + 决策链 + 全生命周期状态</div>
|
||||
<div class="l-desc">客户主数据唯一权威源,客户 ID 是全链路锚点(联系人 L-08、需求 P-01、报价 P-02、交易 D-01 等全部通过客户 ID 关联)。E04 关系覆盖与关键人经营直接读写本台账:关系覆盖度、决策链、互动时间线是 E04 的核心产出。</div>
|
||||
<table class="field-table">
|
||||
<tr><th style="width:130px;">字段名</th><th style="width:110px;">中文名</th><th style="width:60px;">类型</th><th>说明</th><th style="width:150px;">维护来源</th></tr>
|
||||
<tr><td class="fid">customer_id</td><td>客户ID</td><td>文本</td><td>全链路唯一客户锚点(主键)</td><td>系统自动</td></tr>
|
||||
<tr><td class="fid">name_cn/en/local</td><td>客户名称</td><td>文本</td><td>中文 / 英文 / 本地语名称</td><td>T01/T02 建档</td></tr>
|
||||
<tr><td class="fid">cust_type</td><td>客户类型</td><td>枚举</td><td>Tier1 OEM / 模组厂 / 方案商 / 贸易商 / 终端</td><td>T02 评估</td></tr>
|
||||
<tr><td class="fid">industry / region</td><td>行业 / 区域</td><td>枚举</td><td>细分行业与国家/区域</td><td>T02 评估</td></tr>
|
||||
<tr><td class="fid">portfolio_tags</td><td>360°画像标签</td><td>多值</td><td>技术栈 / 品牌偏好 / 价格敏感度 / 文化特征</td><td>E01 维护</td></tr>
|
||||
<tr><td class="fid">decision_chain</td><td>决策链地图</td><td>结构</td><td>决策链节点,关联 L-08 联系人</td><td>E04 维护</td></tr>
|
||||
<tr><td class="fid">coverage_score</td><td>关系覆盖度</td><td>整数</td><td>0-100,E04 关系经营产出</td><td>E04 维护</td></tr>
|
||||
<tr><td class="fid">interaction_timeline</td><td>互动时间线</td><td>结构</td><td>最近互动日期/频率</td><td>E05 回写</td></tr>
|
||||
<tr><td class="fid">health_score</td><td>健康评分</td><td>整数</td><td>0-100,E07 健康监控回写</td><td>E07 回写</td></tr>
|
||||
<tr><td class="fid">status</td><td>客户状态机</td><td>枚举</td><td>潜在→已建档→已激活→正式→升降级→退出</td><td>T02/E08 更新</td></tr>
|
||||
<tr><td class="fid">bt_level</td><td>BT 层级</td><td>枚举</td><td>BT-01 / BT-02 / BT-03</td><td>E03 判定</td></tr>
|
||||
<tr><td class="fid">coop_history</td><td>合作历史摘要</td><td>长文本</td><td>聚合报价/样品/交易/回款/质量事实</td><td>E01 聚合</td></tr>
|
||||
<tr><td class="fid">version</td><td>版本号</td><td>文本</td><td>画像版本,支持回溯</td><td>系统</td></tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="ledger-card">
|
||||
<div class="ledger-head">
|
||||
<span class="l-id">L-05</span><span class="l-name">品牌内容库</span>
|
||||
<span class="l-owner">属主:SS01 · AM | 本 Demo:I01 读写(R+W)</span>
|
||||
</div>
|
||||
<div class="ledger-body">
|
||||
<div class="l-position">定位:对外呈现内容资产——公司介绍、能力声明、销售工具包、案例集、品牌调性标准</div>
|
||||
<div class="l-desc">公司对外呈现的所有内容资产统一管理:多语言版本、版本受控、审核发布。I01 品牌形象与销售工具包管理是本台账的唯一读写者;E04 关系覆盖、T03 触达、T04 攻坚从本库调用内容(读)。</div>
|
||||
<table class="field-table">
|
||||
<tr><th style="width:130px;">字段名</th><th style="width:110px;">中文名</th><th style="width:60px;">类型</th><th>说明</th><th style="width:150px;">维护来源</th></tr>
|
||||
<tr><td class="fid">content_id</td><td>内容ID</td><td>文本</td><td>内容资产唯一标识(主键)</td><td>系统自动</td></tr>
|
||||
<tr><td class="fid">content_type</td><td>内容类型</td><td>枚举</td><td>公司介绍 / 能力声明 / 销售工具包 / 案例集 / 品牌调性标准 / 方案模板</td><td>I01 定义</td></tr>
|
||||
<tr><td class="fid">title</td><td>内容标题</td><td>文本</td><td></td><td>I01</td></tr>
|
||||
<tr><td class="fid">language</td><td>语言版本</td><td>枚举</td><td>中文 / English / Русский / العربية</td><td>I01</td></tr>
|
||||
<tr><td class="fid">version</td><td>版本号</td><td>文本</td><td>版本受控,发布留痕</td><td>I01</td></tr>
|
||||
<tr><td class="fid">scene</td><td>适用场景</td><td>枚举</td><td>首触 / 方案 / 攻坚 / 展会 / 报价</td><td>I01</td></tr>
|
||||
<tr><td class="fid">content_status</td><td>内容状态</td><td>枚举</td><td>草稿 / 已审核 / 已发布 / 已废弃</td><td>I01</td></tr>
|
||||
<tr><td class="fid">brand_tone</td><td>品牌调性标签</td><td>多值</td><td>专业 / 可信赖 / 高效 / 本土化</td><td>I01</td></tr>
|
||||
<tr><td class="fid">target_customer</td><td>定向客户版本</td><td>文本</td><td>为特定客户定制的版本(关联 L-02)</td><td>I01</td></tr>
|
||||
<tr><td class="fid">file_ref</td><td>文件位置</td><td>文本</td><td>附件路径/链接</td><td>I01</td></tr>
|
||||
<tr><td class="fid">reviewer</td><td>审核人</td><td>文本</td><td>发布前审核</td><td>I01</td></tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="ledger-card">
|
||||
<div class="ledger-head">
|
||||
<span class="l-id">L-08</span><span class="l-name">客户联系人信息台账</span>
|
||||
<span class="l-owner">属主:SS01 · AM | 本 Demo:E04 读写(R+W)</span>
|
||||
</div>
|
||||
<div class="ledger-body">
|
||||
<div class="l-position">定位:联系人(Contact)明细——一人一记录,一客户多人,挂客户 ID(L-02)</div>
|
||||
<div class="l-desc">B2B 关系经营的核心对象库:每个客户多个联系人(采购/研发/质量/决策者),记录职位、角色、影响力、关系亲密度、沟通偏好。E04 关系覆盖与关键人经营是核心读写者;E01 画像维护、E02 情报捕捉变动、T03 触达/T04 攻坚调用。联系方式属敏感数据,X02 脱敏管控。</div>
|
||||
<table class="field-table">
|
||||
<tr><th style="width:130px;">字段名</th><th style="width:110px;">中文名</th><th style="width:60px;">类型</th><th>说明</th><th style="width:150px;">维护来源</th></tr>
|
||||
<tr><td class="fid">contact_id</td><td>联系人ID</td><td>文本</td><td>联系人唯一标识(主键)</td><td>系统自动</td></tr>
|
||||
<tr><td class="fid">customer_id</td><td>所属客户ID</td><td>文本</td><td>关联 L-02 客户主台账</td><td>T02 建档</td></tr>
|
||||
<tr><td class="fid">name / name_en</td><td>姓名</td><td>文本</td><td>本地语 + 英文名</td><td>T02 调研</td></tr>
|
||||
<tr><td class="fid">title / department</td><td>职位 / 部门</td><td>文本</td><td>采购 / 研发 / 质量 / 财务 / 管理层</td><td>T02 调研</td></tr>
|
||||
<tr><td class="fid">role</td><td>角色</td><td>枚举</td><td>采购 / 研发 / 质量 / 决策者 / 技术决策人</td><td>E04 标注</td></tr>
|
||||
<tr><td class="fid">decision_node</td><td>决策链节点</td><td>文本</td><td>对应 L-02 决策链地图节点</td><td>E04 维护</td></tr>
|
||||
<tr><td class="fid">influence</td><td>影响力评级</td><td>枚举</td><td>高 / 中 / 低</td><td>E04 评估</td></tr>
|
||||
<tr><td class="fid">relationship</td><td>关系亲密度</td><td>整数</td><td>1-5,E04 关系经营维护</td><td>E04 维护</td></tr>
|
||||
<tr><td class="fid">comm_pref</td><td>沟通偏好</td><td>枚举</td><td>Telegram / WhatsApp / Email / LinkedIn / 语言</td><td>E04 维护</td></tr>
|
||||
<tr><td class="fid">email / phone</td><td>联系方式</td><td>文本</td><td>脱敏管控(X02 隐藏)</td><td>T02 调研</td></tr>
|
||||
<tr><td class="fid">key_person</td><td>关键人标记</td><td>布尔</td><td>是否关键决策人</td><td>E04 标注</td></tr>
|
||||
<tr><td class="fid">change_log</td><td>变动记录</td><td>长文本</td><td>入职/离职/调岗留痕</td><td>E02 写入</td></tr>
|
||||
<tr><td class="fid">version</td><td>版本号</td><td>文本</td><td></td><td>系统</td></tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- ========== 四、读写关系 ========== -->
|
||||
<h2 class="section-title">四、Activity × 台账读写关系与工作链条</h2>
|
||||
<div class="rel-row">
|
||||
<div class="rel-box">
|
||||
<div class="rel-title">E04 关系覆盖与关键人经营</div>
|
||||
<ul>
|
||||
<li><strong>读 L-02</strong>:客户画像、决策链地图、关系覆盖现状——判断覆盖缺口</li>
|
||||
<li><strong>写 L-02</strong>:关系覆盖度(coverage_score)、决策链更新(decision_chain)、互动时间线</li>
|
||||
<li><strong>读 L-08</strong>:现有联系人清单、角色/影响力/亲密度——识别关键人</li>
|
||||
<li><strong>写 L-08</strong>:角色标注、影响力评级、关系亲密度、沟通偏好、关键人标记</li>
|
||||
<li><strong>触发 E02</strong>:关键人变动(离职/调岗)写入 change_log</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="rel-box">
|
||||
<div class="rel-title">I01 品牌形象与销售工具包管理</div>
|
||||
<ul>
|
||||
<li><strong>读 L-01</strong>:宏观市场信号、产业趋势——内容创作的市场依据</li>
|
||||
<li><strong>写 L-05</strong>:内容资产新增/版本更新/状态流转(草稿→审核→发布)</li>
|
||||
<li><strong>读 L-05</strong>:品牌调性标准、已有内容资产——维护一致性</li>
|
||||
<li><strong>对外供给</strong>:发布后的内容被 E04/T03/T04 触达与攻坚调用</li>
|
||||
<li><strong>品牌调性</strong>:Richard 关注的"气质"由 I01 定义并落库为标准</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- ========== 4.2 工作链条 ========== -->
|
||||
<div class="chain-note">
|
||||
<strong>工作链条说明:</strong>以下为 E04 / I01 从触发到完结的完整执行链条——标注每步负责人、触发方式、动作内容与台账读写。所有步骤原则上均为"人 + AI 结合"执行,AI 承担信息汇总、记录与初稿生成,人负责判断与决策(具体分工边界后续讨论)。
|
||||
</div>
|
||||
|
||||
<!-- E04 工作链条 -->
|
||||
<div class="chain-card" style="border-left-color:#185FA5;">
|
||||
<div class="chain-head">
|
||||
<span class="chain-id" style="background:#185FA5;">E04</span>
|
||||
<div>
|
||||
<div class="chain-name">客户关系覆盖与关键人经营</div>
|
||||
<div class="chain-meta">
|
||||
<span class="chain-tag owner">负责:AM Lead(策略)/ AM(执行)</span>
|
||||
<span class="chain-tag trigger">触发:月度例行 + 事件驱动</span>
|
||||
<span class="chain-tag p0">优先级 P0</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="chain-trigger">
|
||||
<strong>如何触发:</strong>① 月度例行——每月对重点客户做一轮关系覆盖维护;② 事件驱动——新客户建立合作、关键人离职/调岗、重大商机启动、攻坚项目(T04)立项。触发后由 AM Lead 确认本次覆盖范围与优先级。
|
||||
</div>
|
||||
<ol class="chain-steps">
|
||||
<li>
|
||||
<span class="step-num">1</span>
|
||||
<div class="step-body">
|
||||
<div class="step-title">启动与覆盖范围确认 <span class="step-role">AM Lead</span></div>
|
||||
<div class="step-desc">确认本次要做的客户清单与场景类型(例行月度维护 / 新客户 / 关键人变动 / 商机联动),判断需要的覆盖深度。</div>
|
||||
<div class="step-ledger">读:L-02(客户清单与状态)</div>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<span class="step-num">2</span>
|
||||
<div class="step-body">
|
||||
<div class="step-title">读取覆盖现状 <span class="step-role">AM Lead + AM</span></div>
|
||||
<div class="step-desc">调出客户画像、决策链地图(decision_chain)、关系覆盖度(coverage_score)、历史互动时间线,以及联系人清单与各人角色/影响力/亲密度评级——形成当前覆盖全景。</div>
|
||||
<div class="step-ledger">读:L-02(画像/决策链/覆盖度)、L-08(联系人/角色/影响力/亲密度)</div>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<span class="step-num">3</span>
|
||||
<div class="step-body">
|
||||
<div class="step-title">覆盖缺口分析 <span class="step-role">AM Lead</span></div>
|
||||
<div class="step-desc">对照决策链地图识别每个决策节点的覆盖状态:谁已被覆盖、关系深度如何、谁是空白节点。按 BT 层级确认需要覆盖的角色——BT-01 采购/供应链层、BT-02 技术层(R&D/质量)、BT-03 高层(产品总监/VP)。</div>
|
||||
<div class="step-ledger">读:L-02(决策链)、L-08(联系人覆盖状态)</div>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<span class="step-num">4</span>
|
||||
<div class="step-body">
|
||||
<div class="step-title">制定关系经营计划 <span class="step-role">AM Lead</span></div>
|
||||
<div class="step-desc">为每个关键人设计经营动作:沟通频率、互动方式(拜访/技术交流/行业活动/价值传递)、传递的价值点。按"影响力 × 亲密度缺口"排序关键人优先级,明确每人的下一步动作与时间点。</div>
|
||||
<div class="step-ledger">读:L-08(影响力/亲密度评级,用于排序)</div>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<span class="step-num">5</span>
|
||||
<div class="step-body">
|
||||
<div class="step-title">执行经营动作 <span class="step-role">AM</span></div>
|
||||
<div class="step-desc">执行互动:拜访、技术交流、行业活动邀约、价值传递(行业情报、样品支持、案例分享等)。AI 辅助准备沟通素材与纪要,互动过程与客户反馈即时记录。</div>
|
||||
<div class="step-ledger">写:L-02(互动时间线)</div>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<span class="step-num">6</span>
|
||||
<div class="step-body">
|
||||
<div class="step-title">更新关系台账 <span class="step-role">AM</span></div>
|
||||
<div class="step-desc">重新计算并写入关系覆盖度(coverage_score)、更新决策链地图(decision_chain);更新联系人档案(角色标注、影响力评级、关系亲密度、沟通偏好、关键人标记)。若发现关键人变动(离职/调岗),触发 E02 情报监测写入 change_log。</div>
|
||||
<div class="step-ledger">写:L-02(coverage_score/decision_chain)、L-08(角色/影响力/亲密度/关键人标记);关键人变动 → 触发 E02 写 change_log</div>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<span class="step-num">7</span>
|
||||
<div class="step-body">
|
||||
<div class="step-title">复盘与完结 <span class="step-role">AM Lead</span></div>
|
||||
<div class="step-desc">覆盖度达标检查:决策链关键节点是否全覆盖、空白是否关闭、计划动作是否全部执行。输出更新后的关系覆盖地图,供给 E05 互动与拜访 / E06 账户计划作为输入。</div>
|
||||
<div class="step-ledger">输出:关系覆盖地图 → E05 / E06</div>
|
||||
</div>
|
||||
</li>
|
||||
</ol>
|
||||
<div class="chain-end">
|
||||
<strong>Activity 完结标志:</strong>决策链上所有关键节点的覆盖状态已更新、本月计划经营动作全部执行完毕、L-02/L-08 台账数据最新、无遗留待办动作。下次触发由月度例行或新事件启动。
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- I01 工作链条 -->
|
||||
<div class="chain-card" style="border-left-color:#2F855A;">
|
||||
<div class="chain-head">
|
||||
<span class="chain-id" style="background:#2F855A;">I01</span>
|
||||
<div>
|
||||
<div class="chain-name">品牌形象与销售工具包管理</div>
|
||||
<div class="chain-meta">
|
||||
<span class="chain-tag owner">负责:AM(内容运营)/ AM Lead(调性把关)</span>
|
||||
<span class="chain-tag trigger">触发:战略调整/新市场/工具过期/使用方请求</span>
|
||||
<span class="chain-tag p0">优先级 P0</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="chain-trigger">
|
||||
<strong>如何触发:</strong>① 主动——公司战略定位调整、进入新市场、销售工具缺失或过期、月度定期内容更新;② 被动——使用方发起内容请求(T03 触达需要材料、E03 商机需要方案支撑、T04 攻坚需要定制内容、E04 关系经营需要价值传递素材)。触发后由内容运营 AM 受理并判断需求类型与优先级。
|
||||
</div>
|
||||
<ol class="chain-steps">
|
||||
<li>
|
||||
<span class="step-num">1</span>
|
||||
<div class="step-body">
|
||||
<div class="step-title">需求识别与受理 <span class="step-role">AM(内容运营)</span></div>
|
||||
<div class="step-desc">识别内容需求来源(战略调整 / 新市场 / 工具过期 / 使用方请求),判断需求类型(公司介绍、能力声明、选型指南、替代对照表、案例集等)与优先级,确认目标客户类型与使用场景。</div>
|
||||
<div class="step-ledger">无台账读写(需求受理)</div>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<span class="step-num">2</span>
|
||||
<div class="step-body">
|
||||
<div class="step-title">市场依据采集 <span class="step-role">AM</span></div>
|
||||
<div class="step-desc">读取宏观市场信号与产业趋势,作为内容创作的市场依据;确认内容要传递的价值主张与差异化定位(对应 Richard"从你这能得到什么特别想要的东西")。</div>
|
||||
<div class="step-ledger">读:L-01(宏观市场信号/产业趋势)</div>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<span class="step-num">3</span>
|
||||
<div class="step-body">
|
||||
<div class="step-title">内容创作与工具建设 <span class="step-role">AM 创作 + FAE 技术支持</span></div>
|
||||
<div class="step-desc">按 BT 层级与使用场景创作并适配——BT-01 侧重供货能力/资质文件/渠道政策、BT-02 侧重技术规格书/替代对照表/认证报告、BT-03 侧重系统方案白皮书/参考设计/成功案例;维护多语言版本(俄/英/中)。</div>
|
||||
<div class="step-ledger">读:L-05(已有资产,避免重复、保持调性一致)</div>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<span class="step-num">4</span>
|
||||
<div class="step-body">
|
||||
<div class="step-title">内部审核与调性把关 <span class="step-role">AM Lead + FAE</span></div>
|
||||
<div class="step-desc">品牌调性与"气质"一致性检查(AM Lead 把关)、技术内容准确性(FAE 审核)、合规检查、多语言校对。未通过则退回修改,通过则进入发布。</div>
|
||||
<div class="step-ledger">写:L-05(状态流转:草稿 → 审核中 → 待发布)</div>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<span class="step-num">5</span>
|
||||
<div class="step-body">
|
||||
<div class="step-title">发布入库 <span class="step-role">AM</span></div>
|
||||
<div class="step-desc">内容资产正式发布:版本号更新(内容受控)、状态流转为"已发布"、登记适用场景与 BT 标签,供全系统调用。</div>
|
||||
<div class="step-ledger">写:L-05(发布/版本更新/状态流转)</div>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<span class="step-num">6</span>
|
||||
<div class="step-body">
|
||||
<div class="step-title">分发与使用追踪 <span class="step-role">AM</span></div>
|
||||
<div class="step-desc">内容供给 E04 关系经营 / T03 触达 / T04 攻坚 / E03 方案生成调用;收集使用反馈(使用频次、客户接受度、触达效果),作为迭代输入。</div>
|
||||
<div class="step-ledger">读:L-05(版本与使用情况)</div>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<span class="step-num">7</span>
|
||||
<div class="step-body">
|
||||
<div class="step-title">复盘迭代与完结 <span class="step-role">AM Lead</span></div>
|
||||
<div class="step-desc">内容效果复盘:使用频次、客户反馈、过时内容识别;失效内容下架或更新版本,新需求进入下一轮内容计划。</div>
|
||||
<div class="step-ledger">写:L-05(下架/版本更新)</div>
|
||||
</div>
|
||||
</li>
|
||||
</ol>
|
||||
<div class="chain-end">
|
||||
<strong>Activity 完结标志:</strong>本次需求的内容已发布入库并登记版本、使用方已取用、无过期内容遗留、复盘结论已沉淀。新需求或定期更新触发下一轮。
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- ========== 五、Excel 交付 ========== -->
|
||||
<h2 class="section-title">五、Excel 台账设计文件(4 个)</h2>
|
||||
<div class="excel-note">
|
||||
<strong>交付说明:</strong>4 个 Excel 工作簿,每个包含 3 个 sheet——① 台账信息(编号/定位/属主/治理规则)② 字段设计(字段名/类型/必填/主键/说明/示例/维护来源/脱敏等级)③ 示例数据(2 行真实场景样例)。
|
||||
</div>
|
||||
<table>
|
||||
<tr><th style="width:240px;">文件</th><th>内容</th></tr>
|
||||
<tr><td>L-01-宏观市场台账.xlsx</td><td>18 字段(信号 ID 主键、信号类型/标题/来源/日期、重要性评分、影响方向、信号状态、版本号等)+ 2 行示例</td></tr>
|
||||
<tr><td>L-02-客户主台账.xlsx</td><td>20 字段(客户 ID 主键、多语言名称、类型/行业/区域、决策链、关系覆盖度、健康评分、状态机、BT 层级等)+ 1 行示例</td></tr>
|
||||
<tr><td>L-05-品牌内容库.xlsx</td><td>15 字段(内容 ID 主键、类型、语言、版本、状态、调性标签、定向客户、审核人等)+ 2 行示例</td></tr>
|
||||
<tr><td>L-08-客户联系人信息台账.xlsx</td><td>19 字段(联系人 ID 主键、客户 ID、姓名/职位/角色/影响力/亲密度/沟通偏好/联系方式/关键人标记/变动记录等)+ 2 行示例</td></tr>
|
||||
</table>
|
||||
|
||||
<div class="footer">
|
||||
CloudCore 云拓芯科 · Demo:E04 关系覆盖与关键人 × I01 品牌与工具包 · 台账设计 v1.0 · 2026-08-14<br>
|
||||
关联矩阵基准:SS01-02-03-04 台账体系全景 v6.0(44 台账)
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,197 @@
|
||||
<!doctype html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>执行工单 1 · 覆盖范围确认 · E04 关系覆盖与关键人经营</title>
|
||||
<style>
|
||||
:root{
|
||||
--ink:#1f2329; --ink-2:#41464e; --ink-3:#646a73; --ink-4:#8f959e;
|
||||
--line:#dee0e3; --line-soft:#e8eaed; --soft:#f8f9fb;
|
||||
--brand:#3370ff; --brand-deep:#245bdb; --brand-soft:#e1eaff; --brand-wash:#f0f4ff;
|
||||
--human:#a9711e; --human-soft:#f6ecd8; --human-line:#e6d3a8;
|
||||
--ok:#278717; --ok-soft:#e8f8e4; --danger:#d83931; --danger-soft:#feeae9;
|
||||
--mono:"SF Mono",Menlo,Consolas,monospace;
|
||||
}
|
||||
*{box-sizing:border-box}
|
||||
html,body{margin:0;padding:0}
|
||||
body{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;background:#eef1f6;color:var(--ink);font-size:14px;line-height:1.7;-webkit-font-smoothing:antialiased}
|
||||
.page{margin:0;padding:0}
|
||||
.card{background:#fff;overflow:hidden;border:0;border-radius:0;box-shadow:none}
|
||||
.card-head{display:flex;align-items:center;gap:14px;padding:18px 22px;border-bottom:2px solid var(--ink);background:linear-gradient(120deg,#fffaf1 0%,#fff 55%,#fbf6ea 100%)}
|
||||
.badge{flex:none;width:44px;height:44px;border-radius:10px;display:grid;place-items:center;background:var(--human);color:#fff;font-weight:800;font-size:13px;box-shadow:0 6px 16px rgba(169,113,30,.25)}
|
||||
.tit{flex:1;min-width:0}
|
||||
.tit .kick{font-size:11px;letter-spacing:.08em;color:var(--ink-4);font-weight:700}
|
||||
.tit h1{margin:2px 0 0;font-size:19px;font-weight:800;line-height:1.3}
|
||||
.tit .sub{font-size:12px;color:var(--ink-3);margin-top:3px}
|
||||
.side{display:flex;flex-direction:column;align-items:flex-end;gap:6px;flex:none}
|
||||
.tag{font-size:11px;font-weight:800;padding:2px 10px;border-radius:999px;color:var(--human);background:var(--human-soft);border:1px solid var(--human-line)}
|
||||
.step{font-size:12px;color:var(--ink-3)}
|
||||
.deadline{font-size:12px;color:var(--ink-3)}
|
||||
.deadline b{color:var(--danger)}
|
||||
.card-bd{padding:20px 22px}
|
||||
.zone{font-size:11px;font-weight:800;letter-spacing:.12em;color:var(--ink-4);margin:0 0 8px}
|
||||
.zone b{color:var(--ink-3)}
|
||||
.note{border:1px solid var(--line);border-left:3px solid var(--human);border-radius:8px;background:var(--soft);padding:14px 16px;margin-bottom:16px}
|
||||
.note p{margin:0;font-size:13px;color:var(--ink-2)}
|
||||
.note b{color:var(--ink)}
|
||||
.note .done{color:var(--ok);font-weight:700}
|
||||
.note .need{color:var(--human);font-weight:700}
|
||||
.jc-editgate{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:14px 0 10px;padding:9px 12px;border-radius:9px;background:var(--soft);border:1px solid var(--line-soft);font-size:12px;color:var(--ink-3)}
|
||||
.jc-editgate-t{flex:1 1 auto;min-width:0}
|
||||
.jc-editgate-t b{color:var(--ink-2);font-weight:700}
|
||||
.jc-egbtn{flex:none;display:inline-flex;align-items:center;gap:5px;cursor:pointer;border:1px solid var(--line);border-radius:7px;padding:6px 13px;font:inherit;font-size:12px;font-weight:700;color:var(--ink-2);background:#fff;transition:border-color .16s,color .16s,background .16s}
|
||||
.jc-egbtn:hover{border-color:var(--brand);color:var(--brand)}
|
||||
.jc-egbtn.save{color:#fff;background:var(--human);border-color:var(--human)}
|
||||
.jc-egbtn.save:hover{filter:brightness(1.06);color:#fff}
|
||||
.jc-editgate .eg-cancel,.jc-editgate .eg-save{display:none}
|
||||
.jc-editgate.on{background:var(--human-soft);border-color:var(--human-line);color:#7c4a12}
|
||||
.jc-editgate.on .eg-open{display:none}
|
||||
.jc-editgate.on .eg-cancel,.jc-editgate.on .eg-save{display:inline-flex}
|
||||
.tbl-wrap{border:1px solid var(--line-soft);border-radius:10px;overflow:hidden}
|
||||
table{width:100%;border-collapse:collapse;font-size:12.5px}
|
||||
th{text-align:left;background:var(--soft);font-size:11px;letter-spacing:.03em;font-weight:800;color:var(--ink-3);padding:9px 10px;border-bottom:1px solid var(--line)}
|
||||
th.req::after{content:" *";color:var(--danger);font-size:11px}
|
||||
td{padding:8px 10px;border-bottom:1px solid var(--line-soft);vertical-align:middle}
|
||||
tr:last-child td{border-bottom:0}
|
||||
td.rn{position:relative;width:38px;white-space:nowrap;font-family:var(--mono);font-size:11px;color:var(--ink-4);text-align:center}
|
||||
.jc-vcell{display:block;font-size:12.5px;color:var(--ink);line-height:1.5;overflow-wrap:anywhere}
|
||||
.jc-vcell.mono{font-family:var(--mono);font-size:11.5px;color:var(--ink-2)}
|
||||
.jc-cell{display:none;width:100%;min-width:60px;border:1px solid var(--line);border-radius:6px;padding:6px 8px;font:inherit;font-size:12.5px;color:var(--ink);background:#fff}
|
||||
.jc-cell.mono{font-family:var(--mono);font-size:11.5px}
|
||||
.jc-cell:focus{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-wash);outline:none}
|
||||
table.on td>.jc-vcell{display:none}
|
||||
table.on td>.jc-cell{display:block}
|
||||
td.rn .jc-rowdel{display:none;width:22px;height:22px;margin:0 auto;cursor:pointer;border:1px solid var(--line);border-radius:6px;padding:0;font:inherit;font-size:14px;line-height:1;color:var(--ink-3);background:#fff}
|
||||
td.rn .jc-rowdel:hover{border-color:var(--danger);color:var(--danger);background:var(--danger-soft)}
|
||||
table.on td.rn .jc-rn-num{display:none}
|
||||
table.on td.rn .jc-rowdel{display:block}
|
||||
.jc-addrow{display:none;margin:8px 0 0;padding:8px 12px;border-radius:9px;background:var(--soft);border:1px dashed var(--line);font-size:12px;color:var(--ink-3)}
|
||||
.jc-addrow.show{display:flex;align-items:center;gap:8px}
|
||||
.jc-addrow button{cursor:pointer;border:1px solid var(--brand-soft);border-radius:7px;padding:5px 12px;font:inherit;font-size:12px;font-weight:700;color:var(--brand-deep);background:var(--brand-wash)}
|
||||
.jc-addrow button:hover{background:var(--brand-soft)}
|
||||
.jc-addrow em{font-style:normal;font-size:11.5px;color:var(--ink-4)}
|
||||
.flow{margin-top:16px;padding:9px 12px;border-radius:8px;background:var(--soft);border:1px dashed var(--line);font-size:12px;color:var(--ink-3)}
|
||||
.flow b{color:var(--ink)}
|
||||
.card-foot{padding:13px 22px;border-top:1px solid var(--line-soft);font-size:11.5px;color:var(--ink-4);display:flex;justify-content:space-between;flex-wrap:wrap;gap:8px}
|
||||
@media(max-width:600px){.card-head{flex-wrap:wrap}.side{align-items:flex-start}}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="page">
|
||||
<div class="card">
|
||||
|
||||
<header class="card-head">
|
||||
<div class="badge">执行</div>
|
||||
<div class="tit">
|
||||
<div class="kick">E04 关系覆盖与关键人经营 · 执行工单 1/2</div>
|
||||
<h1>覆盖范围确认</h1>
|
||||
<div class="sub">收件人:<span data-slot="meta.task.owner">AM Lead(负责人)</span> · 关联任务:<span data-slot="meta.task.id">TASK-xxx</span></div>
|
||||
</div>
|
||||
<div class="side">
|
||||
<span class="tag">执行工单</span>
|
||||
<span class="step" data-slot="meta.phase">步骤 ① 启动与覆盖范围确认</span>
|
||||
<span class="deadline">最迟交回:<b data-slot="card.deadline">1 个工作日</b></span>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<div class="card-bd">
|
||||
|
||||
<p class="zone"><b>【做什么】</b>—— 确认本轮覆盖范围</p>
|
||||
<div class="note">
|
||||
<p><span class="done">AI 已完成</span>:按台账规则识别本轮触发口径与覆盖范围,产出下方客户清单(<b>候选基线</b>)。</p>
|
||||
<p><span class="need">需要你查漏补缺</span>:点「编辑」直接在清单上增删改——<b>加一行 = 额外纳入</b>(AI 未识别但你有价值判断的客户)、<b>删一行 = 排除</b>(AI 纳入但实际应排除)、<b>改单元格 = 修正</b> AI 识别的内容。没有要补的直接在对话区卡里提交。</p>
|
||||
</div>
|
||||
|
||||
<p class="zone"><b>【交回什么】</b>—— 核对后的覆盖范围客户清单(*为必填)</p>
|
||||
|
||||
<div class="jc-editgate" id="editgate">
|
||||
<span class="jc-editgate-t"><b data-slot="sd.customer_count">AI 已识别 2 个客户</b>,点「编辑」增删改</span>
|
||||
<button class="jc-egbtn eg-open" type="button">编辑</button>
|
||||
<button class="jc-egbtn eg-cancel" type="button">取消</button>
|
||||
<button class="jc-egbtn eg-save" type="button">保存</button>
|
||||
</div>
|
||||
|
||||
<div class="tbl-wrap">
|
||||
<table id="tbl">
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="width:38px">#</th>
|
||||
<th class="req" data-h="客户编号">客户编号</th>
|
||||
<th class="req" data-h="客户名称">客户名称</th>
|
||||
<th data-h="客户类型">客户类型</th>
|
||||
<th data-h="BT 层级">BT 层级</th>
|
||||
<th data-h="状态">状态</th>
|
||||
<th data-h="识别依据">识别依据 / 纳入原因</th>
|
||||
<th data-h="覆盖深度">覆盖深度</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody data-rows="out.customer_list">
|
||||
<tr>
|
||||
<td class="rn"><span class="jc-rn-num">1</span><button class="jc-rowdel" type="button" title="删除此行">×</button></td>
|
||||
<td data-field="customer_id"><span class="jc-vcell mono">CUS-2025-0012</span><input class="jc-cell mono" value="CUS-2025-0012"></td>
|
||||
<td data-field="customer_name"><span class="jc-vcell">AvtoKom 汽车电子</span><input class="jc-cell" value="AvtoKom 汽车电子"></td>
|
||||
<td data-field="cust_type"><span class="jc-vcell mono">Tier1 OEM</span><input class="jc-cell mono" value="Tier1 OEM"></td>
|
||||
<td data-field="bt_level"><span class="jc-vcell mono">BT-02</span><input class="jc-cell mono" value="BT-02"></td>
|
||||
<td data-field="status"><span class="jc-vcell">正式</span><input class="jc-cell" value="正式"></td>
|
||||
<td data-field="basis"><span class="jc-vcell">月度例行 + T04 攻坚联动</span><input class="jc-cell" value="月度例行 + T04 攻坚联动"></td>
|
||||
<td data-field="coverage_depth"><span class="jc-vcell">决策链全节点</span><input class="jc-cell" value="决策链全节点"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="rn"><span class="jc-rn-num">2</span><button class="jc-rowdel" type="button" title="删除此行">×</button></td>
|
||||
<td><span class="jc-vcell mono">CUS-2025-0027</span><input class="jc-cell mono" value="CUS-2025-0027"></td>
|
||||
<td><span class="jc-vcell">Boreas 工业控制</span><input class="jc-cell" value="Boreas 工业控制"></td>
|
||||
<td><span class="jc-vcell mono">模组厂</span><input class="jc-cell mono" value="模组厂"></td>
|
||||
<td><span class="jc-vcell mono">BT-02</span><input class="jc-cell mono" value="BT-02"></td>
|
||||
<td><span class="jc-vcell">正式</span><input class="jc-cell" value="正式"></td>
|
||||
<td><span class="jc-vcell">月度例行</span><input class="jc-cell" value="月度例行"></td>
|
||||
<td><span class="jc-vcell">维持性覆盖</span><input class="jc-cell" value="维持性覆盖"></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="jc-addrow" id="addrow">
|
||||
<button type="button">+ 加一行(额外纳入客户)</button>
|
||||
<em>新加行的「客户编号」「客户名称」为必填;「识别依据」栏填你纳入它的原因</em>
|
||||
</div>
|
||||
|
||||
<div class="flow"><b>审批 / 提交:</b>本工单只承载内容;「提交回执」请在对话区的【执行卡】中进行。</div>
|
||||
|
||||
</div>
|
||||
|
||||
<footer class="card-foot">
|
||||
<span>E04 关系覆盖与关键人经营 · 执行工单 1/2 · 覆盖范围确认</span>
|
||||
<span style="font-family:'SF Mono',Menlo,Consolas,monospace">工单类型:执行 · <span data-slot="card.id">WO-E04-01</span></span>
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
(function(){
|
||||
var gate = document.getElementById('editgate');
|
||||
var tbl = document.getElementById('tbl');
|
||||
var addrow = document.getElementById('addrow');
|
||||
var tbody = tbl.querySelector('tbody');
|
||||
function setEdit(on){ gate.classList.toggle('on',on); tbl.classList.toggle('on',on); addrow.classList.toggle('show',on); }
|
||||
gate.querySelector('.eg-open').addEventListener('click', function(){ setEdit(true); });
|
||||
gate.querySelector('.eg-cancel').addEventListener('click', function(){
|
||||
tbody.querySelectorAll('tr').forEach(function(tr){ tr.querySelectorAll('td').forEach(function(td){ var v=td.querySelector('.jc-vcell'),c=td.querySelector('.jc-cell'); if(v&&c){c.value=v.textContent;} }); });
|
||||
setEdit(false);
|
||||
});
|
||||
gate.querySelector('.eg-save').addEventListener('click', function(){
|
||||
tbody.querySelectorAll('tr').forEach(function(tr){ tr.querySelectorAll('td').forEach(function(td){ var v=td.querySelector('.jc-vcell'),c=td.querySelector('.jc-cell'); if(v&&c){v.textContent=c.value;} }); });
|
||||
renumber(); setEdit(false);
|
||||
});
|
||||
addrow.querySelector('button').addEventListener('click', function(){
|
||||
var tr=document.createElement('tr');
|
||||
tr.innerHTML='<td class="rn"><span class="jc-rn-num"></span><button class="jc-rowdel" type="button" title="删除此行">×</button></td>'+'<td><span class="jc-vcell mono"></span><input class="jc-cell mono" placeholder="客户编号"></td>'+'<td><span class="jc-vcell"></span><input class="jc-cell" placeholder="客户名称"></td>'+'<td><span class="jc-vcell mono"></span><input class="jc-cell mono" placeholder="客户类型"></td>'+'<td><span class="jc-vcell mono"></span><input class="jc-cell mono" placeholder="BT 层级"></td>'+'<td><span class="jc-vcell"></span><input class="jc-cell" placeholder="状态"></td>'+'<td><span class="jc-vcell"></span><input class="jc-cell" placeholder="纳入原因"></td>'+'<td><span class="jc-vcell"></span><input class="jc-cell" placeholder="覆盖深度"></td>';
|
||||
tbody.appendChild(tr); renumber();
|
||||
});
|
||||
tbody.addEventListener('click', function(e){ if(e.target.classList.contains('jc-rowdel')){ e.target.closest('tr').remove(); renumber(); } });
|
||||
function renumber(){ tbody.querySelectorAll('tr').forEach(function(tr,i){ tr.querySelector('.jc-rn-num').textContent=i+1; }); }
|
||||
})();
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,150 @@
|
||||
<!doctype html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>执行工单 2 · 经营计划执行回执 · E04 关系覆盖与关键人经营</title>
|
||||
<style>
|
||||
:root{
|
||||
--ink:#1f2329; --ink-2:#41464e; --ink-3:#646a73; --ink-4:#8f959e;
|
||||
--line:#dee0e3; --line-soft:#e8eaed; --soft:#f8f9fb;
|
||||
--brand:#3370ff; --brand-deep:#245bdb; --brand-soft:#e1eaff; --brand-wash:#f0f4ff;
|
||||
--human:#a9711e; --human-soft:#f6ecd8; --human-line:#e6d3a8;
|
||||
--ok:#278717; --ok-soft:#e8f8e4; --danger:#d83931; --danger-soft:#feeae9;
|
||||
--mono:"SF Mono",Menlo,Consolas,monospace;
|
||||
}
|
||||
*{box-sizing:border-box}
|
||||
html,body{margin:0;padding:0}
|
||||
body{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;background:#eef1f6;color:var(--ink);font-size:14px;line-height:1.7;-webkit-font-smoothing:antialiased}
|
||||
.page{margin:0;padding:0}
|
||||
.card{background:#fff;overflow:hidden;border:0;border-radius:0;box-shadow:none}
|
||||
.card-head{display:flex;align-items:center;gap:14px;padding:18px 22px;border-bottom:2px solid var(--ink);background:linear-gradient(120deg,#fffaf1 0%,#fff 55%,#fbf6ea 100%)}
|
||||
.badge{flex:none;width:44px;height:44px;border-radius:10px;display:grid;place-items:center;background:var(--human);color:#fff;font-weight:800;font-size:13px;box-shadow:0 6px 16px rgba(169,113,30,.25)}
|
||||
.tit{flex:1;min-width:0}
|
||||
.tit .kick{font-size:11px;letter-spacing:.08em;color:var(--ink-4);font-weight:700}
|
||||
.tit h1{margin:2px 0 0;font-size:19px;font-weight:800;line-height:1.3}
|
||||
.tit .sub{font-size:12px;color:var(--ink-3);margin-top:3px}
|
||||
.side{display:flex;flex-direction:column;align-items:flex-end;gap:6px;flex:none}
|
||||
.tag{font-size:11px;font-weight:800;padding:2px 10px;border-radius:999px;color:var(--human);background:var(--human-soft);border:1px solid var(--human-line)}
|
||||
.step{font-size:12px;color:var(--ink-3)}
|
||||
.deadline{font-size:12px;color:var(--ink-3)}
|
||||
.deadline b{color:var(--danger)}
|
||||
.card-bd{padding:20px 22px}
|
||||
.zone{font-size:11px;font-weight:800;letter-spacing:.12em;color:var(--ink-4);margin:0 0 8px}
|
||||
.zone b{color:var(--ink-3)}
|
||||
.note{border:1px solid var(--line);border-left:3px solid var(--human);border-radius:8px;background:var(--soft);padding:14px 16px;margin-bottom:16px}
|
||||
.note p{margin:0;font-size:13px;color:var(--ink-2)}
|
||||
.note b{color:var(--ink)}
|
||||
.note .need{color:var(--human);font-weight:700}
|
||||
.tbl-wrap{border:1px solid var(--line-soft);border-radius:10px;overflow:hidden}
|
||||
table{width:100%;border-collapse:collapse;font-size:13px}
|
||||
th{text-align:left;background:var(--soft);font-size:11px;letter-spacing:.05em;font-weight:800;color:var(--ink-3);padding:9px 12px;border-bottom:1px solid var(--line)}
|
||||
th.req::after{content:" *";color:var(--danger);font-size:11px}
|
||||
th.opt::after{content:" 选填";color:var(--ink-4);font-size:10px;font-weight:600}
|
||||
td{padding:10px 12px;border-bottom:1px solid var(--line-soft);vertical-align:top}
|
||||
tr:last-child td{border-bottom:0}
|
||||
.num{font-family:var(--mono);color:var(--ink-4);white-space:nowrap}
|
||||
.cust{font-weight:700}
|
||||
input[type=text],textarea,select{font:inherit;font-size:12.5px;border:1px solid var(--line);border-radius:6px;padding:6px 8px;background:#fff;color:var(--ink);width:100%}
|
||||
input:focus,textarea:focus,select:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-wash)}
|
||||
textarea{min-height:40px;resize:vertical}
|
||||
.fixed{font-size:12.5px;color:var(--ink-2)}
|
||||
.flow{margin-top:16px;padding:9px 12px;border-radius:8px;background:var(--soft);border:1px dashed var(--line);font-size:12px;color:var(--ink-3)}
|
||||
.flow b{color:var(--ink)}
|
||||
.card-foot{padding:13px 22px;border-top:1px solid var(--line-soft);font-size:11.5px;color:var(--ink-4);display:flex;justify-content:space-between;flex-wrap:wrap;gap:8px}
|
||||
@media(max-width:600px){.card-head{flex-wrap:wrap}.side{align-items:flex-start}}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="page">
|
||||
<div class="card">
|
||||
|
||||
<header class="card-head">
|
||||
<div class="badge">执行</div>
|
||||
<div class="tit">
|
||||
<div class="kick">E04 关系覆盖与关键人经营 · 执行工单 2/2</div>
|
||||
<h1>经营计划执行回执</h1>
|
||||
<div class="sub">收件人:<span data-slot="meta.task.owner">AM(执行)</span> · 关联任务:<span data-slot="meta.task.id">TASK-xxx</span></div>
|
||||
</div>
|
||||
<div class="side">
|
||||
<span class="tag">执行工单</span>
|
||||
<span class="step" data-slot="meta.phase">步骤 ⑤⑥ 执行经营动作</span>
|
||||
<span class="deadline">最迟交回:<b data-slot="card.deadline">2026-08-28</b></span>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<div class="card-bd">
|
||||
|
||||
<p class="zone"><b>【做什么】</b>—— 执行计划动作</p>
|
||||
<div class="note">
|
||||
<p><b>经营计划已验收通过</b>。以下是需要你<b class="need">到场执行</b>的动作(物理拜访、技术交流、递送实物——都是 AI 做不到、需要人去干的)。每项动作执行后,在下方回执。</p>
|
||||
</div>
|
||||
|
||||
<p class="zone"><b>【交回什么】</b>—— 逐项回执(*为必填)</p>
|
||||
<div class="tbl-wrap">
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="width:36px">#</th>
|
||||
<th style="width:140px" data-h="计划动作">计划动作</th>
|
||||
<th style="width:120px" data-h="对象">对象</th>
|
||||
<th class="req" style="width:100px" data-h="完成状态">完成状态</th>
|
||||
<th class="req" data-h="结果摘要">结果摘要</th>
|
||||
<th class="opt" data-h="客户反馈">客户反馈</th>
|
||||
<th class="req" style="width:90px" data-h="关键人变动">关键人变动</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody data-rows="out.plan">
|
||||
<tr>
|
||||
<td class="num">1</td>
|
||||
<td data-field="action" class="fixed">拜访 + 方案交流</td>
|
||||
<td data-field="target" class="cust">AvtoKom · 产品 VP</td>
|
||||
<td data-field="status"><select><option>完成</option><option>部分完成</option><option>未完成</option></select></td>
|
||||
<td><textarea placeholder="见到的关键人、谈了什么、达成什么"></textarea></td>
|
||||
<td><textarea placeholder="客户态度 / 诉求 / 下一步信号"></textarea></td>
|
||||
<td><select><option>否</option><option>是</option></select></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="num">2</td>
|
||||
<td class="fixed">技术交流</td>
|
||||
<td class="cust">AvtoKom · 质量负责人</td>
|
||||
<td><select><option>完成</option><option>部分完成</option><option>未完成</option></select></td>
|
||||
<td><textarea placeholder="见到的关键人、谈了什么、达成什么"></textarea></td>
|
||||
<td><textarea placeholder="客户态度 / 诉求 / 下一步信号"></textarea></td>
|
||||
<td><select><option>否</option><option>是</option></select></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="num">3</td>
|
||||
<td class="fixed">价值传递(递样品)</td>
|
||||
<td class="cust">AvtoKom · 研发负责人</td>
|
||||
<td><select><option>完成</option><option>部分完成</option><option>未完成</option></select></td>
|
||||
<td><textarea placeholder="见到的关键人、谈了什么、达成什么"></textarea></td>
|
||||
<td><textarea placeholder="客户态度 / 诉求 / 下一步信号"></textarea></td>
|
||||
<td><select><option>否</option><option>是</option></select></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="num">4</td>
|
||||
<td class="fixed">维持性经营</td>
|
||||
<td class="cust">Boreas · 采购经理</td>
|
||||
<td><select><option>完成</option><option>部分完成</option><option>未完成</option></select></td>
|
||||
<td><textarea placeholder="见到的关键人、谈了什么、达成什么"></textarea></td>
|
||||
<td><textarea placeholder="客户态度 / 诉求 / 下一步信号"></textarea></td>
|
||||
<td><select><option>否</option><option>是</option></select></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="flow"><b>审批 / 提交:</b>本工单只承载内容;「提交回执」请在对话区的【执行卡】中进行。若「关键人变动」标「是」,将触发 E02 写 change_log。</div>
|
||||
|
||||
</div>
|
||||
|
||||
<footer class="card-foot">
|
||||
<span>E04 关系覆盖与关键人经营 · 执行工单 2/2 · 经营计划执行回执</span>
|
||||
<span style="font-family:'SF Mono',Menlo,Consolas,monospace">工单类型:执行 · <span data-slot="card.id">WO-E04-03</span></span>
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,177 @@
|
||||
# E04 关系覆盖与关键人经营 · 活动流程与工单说明
|
||||
|
||||
> 所属子系统:SS01 客户与市场 | 优先级:P0 | 类型:关系经营型活动
|
||||
> 本说明总结 E04 活动的整体流程、工单产出的设计逻辑,以及每一步做了什么。配套工单 HTML 见本目录。
|
||||
|
||||
---
|
||||
|
||||
## 一、活动定位
|
||||
|
||||
**E04 关系覆盖与关键人经营**是围绕客户关系网络的持续经营活动:关键人识别与覆盖、关系亲密度维护、决策链更新、影响力经营。核心理念是「你还没开口,你想要的我已经给你了」——关系覆盖是预判需求的前提。
|
||||
|
||||
**消费的台账**(读):L-02 客户主台账(画像/决策链/覆盖度)、L-08 联系人台账(角色/影响力/亲密度)。
|
||||
**产出的台账**(写):L-02 的 coverage_score / decision_chain / interaction_timeline、L-08 的角色标注 / 影响力 / 亲密度 / 关键人标记。
|
||||
|
||||
**触发方式**:① 月度例行(每月对重点客户做一轮覆盖维护);② 事件驱动(新客户建档 / 关键人变动 / 重大商机启动 / 攻坚项目 T04 立项)。
|
||||
|
||||
---
|
||||
|
||||
## 二、整体流程(7 步)
|
||||
|
||||
E04 的完整工作链条共 7 步,AI 与人的分工原则是:**AI 承担信息汇总、记录与初稿生成,人负责判断与决策**。
|
||||
|
||||
| 步骤 | 名称 | 谁在做 | 干什么 |
|
||||
|---|---|---|---|
|
||||
| ① | 启动与覆盖范围确认 | AM Lead(审) | 确认本轮覆盖哪些客户、场景类型、覆盖深度 |
|
||||
| ② | 读取覆盖现状 | AI 汇总 | 调出客户画像、决策链地图、覆盖度、联系人清单,形成覆盖全景 |
|
||||
| ③ | 覆盖缺口分析 | AM Lead(审) | 对照决策链识别空白节点,按 BT 层级确定需覆盖的角色 |
|
||||
| ④ | 制定关系经营计划 | AM Lead(审) | 按「影响力 × 亲密度缺口」排序,草拟每个关键人的经营动作 |
|
||||
| ⑤ | 执行经营动作 | AM(执行) | 拜访 / 技术交流 / 价值传递等线下动作(AI 做不到) |
|
||||
| ⑥ | 更新关系台账 | AM(办理) | 重算 coverage_score、更新决策链、更新联系人档案 |
|
||||
| ⑦ | 复盘与完结(门禁) | AM Lead(审) | 覆盖度达标检查,输出更新后的关系覆盖地图 |
|
||||
|
||||
---
|
||||
|
||||
## 三、为什么这样产出工单(核心设计逻辑)
|
||||
|
||||
7 步不是 7 个工单。按「AI 能不能独立完成」把 7 步收敛成 **2 张执行工单 + 2 张验收工单**:
|
||||
|
||||
| 工单 | 覆盖步骤 | 类型 | 依据 |
|
||||
|---|---|---|---|
|
||||
| 执行工单 1 | ① | 执行 | AI 识别出了覆盖范围,但「规则之外」的信息需要人来补 |
|
||||
| 验收工单 1 | ②③④ | 验收 | AI 算出了经营计划,需要人判断计划是否合理 |
|
||||
| 执行工单 2 | ⑤⑥ | 执行 | 计划要人去线下执行(AI 做不到),执行完要回执 |
|
||||
| 验收工单 2 | ⑥⑦ | 验收 | AI 收到回执后更新台账,需要人确认无误后入库 |
|
||||
|
||||
### 两条工单的本质区别
|
||||
|
||||
**执行工单 = AI 产出 + 人填内容**
|
||||
- AI 先列出它产出的结论(候选基线),人在这基础上**查漏补缺 / 填写内容**(可以不填)。
|
||||
- 用于「AI 做不到、需要人去做」的事——如物理拜访、线下交流、补充 AI 识别规则之外的信息。
|
||||
|
||||
**验收工单 = AI 结论展示 + 人只做审批**
|
||||
- AI 展示它计算出的结论(只读),人**只做「通过 / 驳回」**,不能修改结论;驳回带意见,AI 重做。
|
||||
- 用于「AI 算出了结论、需要人拍板」的事——如经营计划是否合理、台账更新是否无误。
|
||||
|
||||
### 三条硬约束
|
||||
|
||||
1. **工单不承载审批动作**:工单里不放「提交回执 / 通过 / 驳回」按钮,审批动作统一放在对话区的卡(执行卡 / 验收卡)里。
|
||||
2. **工单要完整**:每个工单必须包含「做什么 / 交回什么 / 期限 / 判据(验收工单)/ 提交后去向」。
|
||||
3. **交回内容可校验**:执行工单的回执字段标注必填(*)/ 选填,验收工单给明确的判据清单,让人知道凭什么通过或驳回。
|
||||
|
||||
---
|
||||
|
||||
## 四、每个工单详细说明
|
||||
|
||||
### 执行工单 1 · 覆盖范围确认(步骤 ①)
|
||||
|
||||
- **做什么**:确认本轮覆盖范围。
|
||||
- **AI 产出**:按台账规则识别出的候选客户清单(如 AvtoKom、Boreas)+ 场景类型、覆盖深度。
|
||||
- **人填什么(查漏补缺)**:在 AI 清单上直接增删改——加一行 = 额外纳入(AI 没识别但人了解有价值)、删一行 = 排除(AI 纳入了但实际应排除)、改单元格 = 修正 AI 识别内容。
|
||||
- **为什么是执行工单**:AI 只能按台账规则判断,有些「数据里没有、但人线下知道」的信息(如某贸易商掌握关键渠道)需要人补充录入。
|
||||
- **交回**:核对后的覆盖范围客户清单(客户编号、客户名称必填)。
|
||||
|
||||
### 验收工单 1 · 关系经营计划审批(步骤 ②③④)
|
||||
|
||||
- **做什么**:审批 AI 制定的关系经营计划。
|
||||
- **AI 产出**:经过「读覆盖现状 → 缺口分析 → 制定计划」三步计算,得出经营计划(经营哪些关键人、建议动作、建议优先级、理由),按「影响力 × 亲密度缺口」排序。
|
||||
- **人怎么审**:只读展示,不可修改。按判据核对后「通过」或「驳回+意见」(驳回 AI 重做)。
|
||||
- **验收判据**:① 关键人覆盖是否完整;② 优先级排序是否合理;③ 动作是否可执行、有时间点。
|
||||
- **为什么是验收工单**:计划是 AI 算出来的结论,人对结论只做肯定或否定,不自己改。
|
||||
|
||||
### 执行工单 2 · 经营计划执行回执(步骤 ⑤⑥)
|
||||
|
||||
- **做什么**:执行已验收通过的计划动作。
|
||||
- **AI 产出**:验收通过后的计划动作清单(拜访谁、做什么)。
|
||||
- **人填什么(回执)**:逐项填完成状态(必填)、结果摘要(必填)、客户反馈(选填)、关键人变动(必填)。
|
||||
- **为什么是执行工单**:拜访、技术交流、递送实物都是 AI 做不到、需要人到场执行的事;人执行后把回执填回来。
|
||||
- **交回**:每项计划动作的执行回执。
|
||||
|
||||
### 验收工单 2 · 关系台账更新确认(步骤 ⑥⑦)
|
||||
|
||||
- **做什么**:确认 AI 拟更新的台账,无误后入库。
|
||||
- **AI 产出**:收到执行回执后,重算 coverage_score、更新决策链、更新 L-08 联系人档案、追加互动时间线,产出「更新前 → 更新后」明细。
|
||||
- **人怎么审**:只读展示,不可修改。按判据核对后「通过入库」或「驳回+意见」。
|
||||
- **验收判据**:① 更新是否有依据(每条更新能否在回执里找到对应事实);② 数值是否合理;③ 有无漏更或误更。
|
||||
- **为什么是验收工单**:台账更新是 AI 的落账动作,人确认无误后入库,是「终局唯放行」的最后一道确认。
|
||||
|
||||
---
|
||||
|
||||
## 五、文件对应关系
|
||||
|
||||
| 工单文件 | 类型 | 覆盖步骤 | 一句话 |
|
||||
|---|---|---|---|
|
||||
| `E04-执行工单-01-覆盖范围确认.html` | 执行 | ① | 人补充 AI 覆盖范围结论之外的信息 |
|
||||
| `E04-验收工单-01-关系经营计划.html` | 验收 | ②③④ | 人审批 AI 的经营计划(通过/驳回) |
|
||||
| `E04-执行工单-02-执行回执.html` | 执行 | ⑤⑥ | 人执行计划并填回执 |
|
||||
| `E04-验收工单-02-台账更新确认.html` | 验收 | ⑥⑦ | 人确认 AI 的台账更新后入库 |
|
||||
|
||||
**完整闭环**:
|
||||
|
||||
```
|
||||
① 覆盖范围确认 ──执行工单1(人补信息)──▶ ②③④ AI 制定计划 ──验收工单1(通过/驳回)──▶
|
||||
⑤⑥ 人去执行计划 ──执行工单2(人填回执)──▶ AI 更新台账 ──验收工单2(确认入库)──▶ 完结
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 六、动态数据标注(模板绑定位置)
|
||||
|
||||
> 这 4 个工单 HTML 是**模板**——里面的数据会根据实例(不同任务 / 客户 / 轮次)加载不同内容。本表标注每个工单里「动态数据」的位置及其绑定地址(命名空间)。设计态示例数据在运行时会被注水器替换。
|
||||
|
||||
### 6.1 绑定命名空间速查
|
||||
|
||||
| 命名空间 | 含义 | 本活动用到 |
|
||||
|---|---|---|
|
||||
| `meta.*` | 任务与活动元数据 | 收件人、任务编号、步骤、活动名 |
|
||||
| `card.*` | 工单身份专属 | 期限、工单编号、验收判据、回执字段 |
|
||||
| `out.*` | 输出表单 / 台账映射行集 | 客户清单、经营计划、台账更新明细 |
|
||||
| `sd.*` | 状态数据读数 | 客户计数、触发口径、覆盖度 |
|
||||
|
||||
### 6.2 四个工单共用的动态位置(每个工单头部都有)
|
||||
|
||||
| HTML 位置 | 动态数据 | 绑定地址 |
|
||||
|---|---|---|
|
||||
| 卡头「收件人」 | 负责人 | `meta.task.owner` |
|
||||
| 卡头「关联任务」 | 任务编号 | `meta.task.id` |
|
||||
| 卡头「步骤」 | 当前节点 | `meta.phase` |
|
||||
| 卡头「最迟交回」 | 期限 | `card.deadline` |
|
||||
| 页脚「工单编号」 | 工单 ID | `card.id` |
|
||||
|
||||
### 6.3 执行工单 1 · 覆盖范围确认
|
||||
|
||||
| HTML 位置 | 动态数据 | 绑定地址 | 类型 |
|
||||
|---|---|---|---|
|
||||
| 【做什么】里「触发口径与覆盖范围」结论 | 本轮触发场景 | `sd.trigger_scene` | 单值 |
|
||||
| 编辑闸「AI 已识别 2 个客户」 | 识别客户数 | `sd.customer_count` | 单值 |
|
||||
| 【交回什么】客户清单表 | 候选客户清单 | `out.customer_list` | 行集 |
|
||||
| └ 客户编号 / 名称 / 类型 / BT层级 / 状态 / 依据 / 覆盖深度 | 各列字段 | `out.customer_list.*` | 字段 |
|
||||
|
||||
### 6.4 验收工单 1 · 关系经营计划
|
||||
|
||||
| HTML 位置 | 动态数据 | 绑定地址 | 类型 |
|
||||
|---|---|---|---|
|
||||
| 【验收判据】清单 | 判据项 | `card.criteria[]` | 列表 |
|
||||
| 【AI 产出的经营计划】表 | 计划行 | `out.plan` | 行集 |
|
||||
| └ 客户 / 关键人 / 建议动作 / 优先级 / 理由 | 各列字段 | `out.plan.*` | 字段 |
|
||||
| └ 优先级「高/中」颜色 | 状态着色 | `data-class-of` | 状态类 |
|
||||
|
||||
### 6.5 执行工单 2 · 执行回执
|
||||
|
||||
| HTML 位置 | 动态数据 | 绑定地址 | 类型 |
|
||||
|---|---|---|---|
|
||||
| 【交回什么】计划动作回执表 | 计划动作(AI 产出) | `out.plan` | 行集 |
|
||||
| └ 计划动作 / 对象 | AI 产出的计划 | `out.plan.action / target` | 字段(只读) |
|
||||
| └ 完成状态 / 结果摘要 / 客户反馈 / 关键人变动 | 人填回执 | `card.fields.*` | 字段(可填) |
|
||||
|
||||
### 6.6 验收工单 2 · 台账更新确认
|
||||
|
||||
| HTML 位置 | 动态数据 | 绑定地址 | 类型 |
|
||||
|---|---|---|---|
|
||||
| 【验收判据】清单 | 判据项 | `card.criteria[]` | 列表 |
|
||||
| 【拟更新的台账】表 | 更新明细行 | `out.ledger_update` | 行集 |
|
||||
| └ 台账 / 字段 / 更新前 / 更新后 | 各列字段 | `out.ledger_update.*` | 字段 |
|
||||
|
||||
---
|
||||
|
||||
(完)E04 一个活动,七个步骤,四张工单:**执行工单让人补内容、验收工单让人拍结论**——AI 做得出的算出来给人审,AI 做不到的派出去让人干。数据由服务注水,工单只是模板。
|
||||
@@ -0,0 +1,148 @@
|
||||
<!doctype html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>验收工单 1 · 关系经营计划审批 · E04 关系覆盖与关键人经营</title>
|
||||
<style>
|
||||
:root{
|
||||
--ink:#1f2329; --ink-2:#41464e; --ink-3:#646a73; --ink-4:#8f959e;
|
||||
--line:#dee0e3; --line-soft:#e8eaed; --soft:#f8f9fb;
|
||||
--brand:#3370ff; --brand-deep:#245bdb; --brand-soft:#e1eaff; --brand-wash:#f0f4ff;
|
||||
--ledger:#b23a2e; --ledger-soft:#f7e4e0; --ledger-line:#ecc5bd;
|
||||
--ok:#278717; --ok-soft:#e8f8e4; --danger:#d83931; --danger-soft:#feeae9;
|
||||
--mono:"SF Mono",Menlo,Consolas,monospace;
|
||||
}
|
||||
*{box-sizing:border-box}
|
||||
html,body{margin:0;padding:0}
|
||||
body{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;background:#eef1f6;color:var(--ink);font-size:14px;line-height:1.7;-webkit-font-smoothing:antialiased}
|
||||
.page{margin:0;padding:0}
|
||||
.card{background:#fff;overflow:hidden;border:0;border-radius:0;box-shadow:none}
|
||||
.card-head{display:flex;align-items:center;gap:14px;padding:18px 22px;border-bottom:2px solid var(--ink);background:linear-gradient(120deg,#fdf3f1 0%,#fff 55%,#fbf2f0 100%)}
|
||||
.badge{flex:none;width:44px;height:44px;border-radius:10px;display:grid;place-items:center;background:var(--ledger);color:#fff;font-weight:800;font-size:13px;box-shadow:0 6px 16px rgba(178,58,46,.25)}
|
||||
.tit{flex:1;min-width:0}
|
||||
.tit .kick{font-size:11px;letter-spacing:.08em;color:var(--ink-4);font-weight:700}
|
||||
.tit h1{margin:2px 0 0;font-size:19px;font-weight:800;line-height:1.3}
|
||||
.tit .sub{font-size:12px;color:var(--ink-3);margin-top:3px}
|
||||
.side{display:flex;flex-direction:column;align-items:flex-end;gap:6px;flex:none}
|
||||
.tag{font-size:11px;font-weight:800;padding:2px 10px;border-radius:999px;color:var(--ledger);background:var(--ledger-soft);border:1px solid var(--ledger-line)}
|
||||
.step{font-size:12px;color:var(--ink-3)}
|
||||
.deadline{font-size:12px;color:var(--ink-3)}
|
||||
.deadline b{color:var(--danger)}
|
||||
.card-bd{padding:20px 22px}
|
||||
.zone{font-size:11px;font-weight:800;letter-spacing:.12em;color:var(--ink-4);margin:0 0 8px}
|
||||
.zone b{color:var(--ink-3)}
|
||||
.note{border:1px solid var(--line);border-left:3px solid var(--ledger);border-radius:8px;background:var(--soft);padding:14px 16px;margin-bottom:16px}
|
||||
.note p{margin:0;font-size:13px;color:var(--ink-2)}
|
||||
.note b{color:var(--ink)}
|
||||
.criteria{border:1px solid var(--ledger-line);border-radius:10px;background:var(--ledger-soft);padding:13px 16px;margin-bottom:18px}
|
||||
.criteria .c-title{font-size:11px;font-weight:800;letter-spacing:.08em;color:var(--ledger);margin-bottom:7px}
|
||||
.criteria ul{margin:0;padding-left:18px;font-size:12.5px;color:var(--ink-2)}
|
||||
.criteria li{margin:4px 0}
|
||||
.criteria b{color:var(--ink)}
|
||||
.tbl-wrap{border:1px solid var(--line-soft);border-radius:10px;overflow:hidden}
|
||||
table{width:100%;border-collapse:collapse;font-size:13px}
|
||||
th{text-align:left;background:var(--soft);font-size:11px;letter-spacing:.05em;font-weight:800;color:var(--ink-3);padding:9px 12px;border-bottom:1px solid var(--line)}
|
||||
td{padding:11px 12px;border-bottom:1px solid var(--line-soft);vertical-align:top}
|
||||
tr:last-child td{border-bottom:0}
|
||||
.num{font-family:var(--mono);color:var(--ink-4);white-space:nowrap}
|
||||
.cust{font-weight:700}
|
||||
.prio{font-family:var(--mono);font-weight:800}
|
||||
.prio.hi{color:var(--danger)}
|
||||
.prio.mid{color:var(--ink-2)}
|
||||
.reason{font-size:12.5px;color:var(--ink-2)}
|
||||
.flow{margin-top:16px;padding:9px 12px;border-radius:8px;background:var(--soft);border:1px dashed var(--line);font-size:12px;color:var(--ink-3)}
|
||||
.flow b{color:var(--ink)}
|
||||
.card-foot{padding:13px 22px;border-top:1px solid var(--line-soft);font-size:11.5px;color:var(--ink-4);display:flex;justify-content:space-between;flex-wrap:wrap;gap:8px}
|
||||
@media(max-width:600px){.card-head{flex-wrap:wrap}.side{align-items:flex-start}}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="page">
|
||||
<div class="card">
|
||||
|
||||
<header class="card-head">
|
||||
<div class="badge">验收</div>
|
||||
<div class="tit">
|
||||
<div class="kick">E04 关系覆盖与关键人经营 · 验收工单 1/2</div>
|
||||
<h1>关系经营计划审批</h1>
|
||||
<div class="sub">收件人:<span data-slot="meta.task.owner">AM Lead(负责人)</span> · 关联任务:<span data-slot="meta.task.id">TASK-xxx</span></div>
|
||||
</div>
|
||||
<div class="side">
|
||||
<span class="tag">验收工单</span>
|
||||
<span class="step" data-slot="meta.phase">步骤 ②③④ 产出</span>
|
||||
<span class="deadline">最迟交回:<b data-slot="card.deadline">1 个工作日</b></span>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<div class="card-bd">
|
||||
|
||||
<p class="zone"><b>【AI 结论说明】</b>—— 结论是怎么算出来的</p>
|
||||
<div class="note">
|
||||
<p><b>AI 已完成的计算</b>:读取 L-02 客户画像、决策链地图、关系覆盖度,读取 L-08 联系人角色 / 影响力 / 亲密度;对照决策链识别空白节点,按「影响力 × 亲密度缺口」排序,得出本轮<b>关系经营计划</b>。</p>
|
||||
</div>
|
||||
|
||||
<p class="zone"><b>【验收判据】</b>—— 你据此判断「通过 / 驳回」</p>
|
||||
<div class="criteria">
|
||||
<div class="c-title">判断这份计划是否合理,请逐项核对</div>
|
||||
<ul>
|
||||
<li><b>关键人覆盖是否完整</b>:该经营的决策链关键人(BT-01 / BT-02 / BT-03)有没有漏掉;</li>
|
||||
<li><b>优先级排序是否合理</b>:是否符合「影响力 × 亲密度缺口」的排序逻辑,有没有高优的客户被排低了;</li>
|
||||
<li><b>动作是否可执行</b>:建议动作是否明确、有没有时间点、可不可落地。</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<p class="zone"><b>【AI 产出的经营计划】</b>—— 只读展示</p>
|
||||
<div class="tbl-wrap">
|
||||
<table>
|
||||
<thead><tr><th style="width:40px">#</th><th style="width:150px" data-h="客户">客户</th><th style="width:130px" data-h="关键人">关键人</th><th style="width:150px" data-h="建议动作">建议动作</th><th style="width:70px" data-h="优先级">优先级</th><th data-h="理由">AI 给出的理由</th></tr></thead>
|
||||
<tbody data-rows="out.plan">
|
||||
<tr>
|
||||
<td class="num">1</td>
|
||||
<td data-field="customer" class="cust">AvtoKom 汽车电子</td>
|
||||
<td data-field="key_person">产品 VP</td>
|
||||
<td data-field="action">拜访 + 方案交流</td>
|
||||
<td data-field="priority" class="prio hi">高</td>
|
||||
<td data-field="reason" class="reason">BT-03 高层为空白节点,且 T04 攻坚联动,需优先建立直接关系</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="num">2</td>
|
||||
<td class="cust">AvtoKom 汽车电子</td>
|
||||
<td>质量负责人</td>
|
||||
<td>技术交流</td>
|
||||
<td class="prio hi">高</td>
|
||||
<td class="reason">质量节点空白,BT-02 技术层需加深</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="num">3</td>
|
||||
<td class="cust">AvtoKom 汽车电子</td>
|
||||
<td>研发负责人</td>
|
||||
<td>价值传递(样品)</td>
|
||||
<td class="prio mid">中</td>
|
||||
<td class="reason">研发关系尚浅,递样品推进测试</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="num">4</td>
|
||||
<td class="cust">Boreas 工业控制</td>
|
||||
<td>采购经理</td>
|
||||
<td>维持性经营</td>
|
||||
<td class="prio mid">中</td>
|
||||
<td class="reason">关系稳定,覆盖度 82 / 100,维持即可</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="flow"><b>审批:</b>本工单只承载内容;「通过 / 驳回」请在对话区的【验收卡】中进行。</div>
|
||||
|
||||
</div>
|
||||
|
||||
<footer class="card-foot">
|
||||
<span>E04 关系覆盖与关键人经营 · 验收工单 1/2 · 关系经营计划审批</span>
|
||||
<span style="font-family:'SF Mono',Menlo,Consolas,monospace">工单类型:验收 · <span data-slot="card.id">WO-E04-02</span></span>
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,150 @@
|
||||
<!doctype html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>验收工单 2 · 关系台账更新确认 · E04 关系覆盖与关键人经营</title>
|
||||
<style>
|
||||
:root{
|
||||
--ink:#1f2329; --ink-2:#41464e; --ink-3:#646a73; --ink-4:#8f959e;
|
||||
--line:#dee0e3; --line-soft:#e8eaed; --soft:#f8f9fb;
|
||||
--brand:#3370ff; --brand-deep:#245bdb; --brand-soft:#e1eaff; --brand-wash:#f0f4ff;
|
||||
--ledger:#b23a2e; --ledger-soft:#f7e4e0; --ledger-line:#ecc5bd;
|
||||
--ok:#278717; --ok-soft:#e8f8e4; --danger:#d83931; --danger-soft:#feeae9;
|
||||
--mono:"SF Mono",Menlo,Consolas,monospace;
|
||||
}
|
||||
*{box-sizing:border-box}
|
||||
html,body{margin:0;padding:0}
|
||||
body{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;background:#eef1f6;color:var(--ink);font-size:14px;line-height:1.7;-webkit-font-smoothing:antialiased}
|
||||
.page{margin:0;padding:0}
|
||||
.card{background:#fff;overflow:hidden;border:0;border-radius:0;box-shadow:none}
|
||||
.card-head{display:flex;align-items:center;gap:14px;padding:18px 22px;border-bottom:2px solid var(--ink);background:linear-gradient(120deg,#fdf3f1 0%,#fff 55%,#fbf2f0 100%)}
|
||||
.badge{flex:none;width:44px;height:44px;border-radius:10px;display:grid;place-items:center;background:var(--ledger);color:#fff;font-weight:800;font-size:13px;box-shadow:0 6px 16px rgba(178,58,46,.25)}
|
||||
.tit{flex:1;min-width:0}
|
||||
.tit .kick{font-size:11px;letter-spacing:.08em;color:var(--ink-4);font-weight:700}
|
||||
.tit h1{margin:2px 0 0;font-size:19px;font-weight:800;line-height:1.3}
|
||||
.tit .sub{font-size:12px;color:var(--ink-3);margin-top:3px}
|
||||
.side{display:flex;flex-direction:column;align-items:flex-end;gap:6px;flex:none}
|
||||
.tag{font-size:11px;font-weight:800;padding:2px 10px;border-radius:999px;color:var(--ledger);background:var(--ledger-soft);border:1px solid var(--ledger-line)}
|
||||
.step{font-size:12px;color:var(--ink-3)}
|
||||
.deadline{font-size:12px;color:var(--ink-3)}
|
||||
.deadline b{color:var(--danger)}
|
||||
.card-bd{padding:20px 22px}
|
||||
.zone{font-size:11px;font-weight:800;letter-spacing:.12em;color:var(--ink-4);margin:0 0 8px}
|
||||
.zone b{color:var(--ink-3)}
|
||||
.note{border:1px solid var(--line);border-left:3px solid var(--ledger);border-radius:8px;background:var(--soft);padding:14px 16px;margin-bottom:16px}
|
||||
.note p{margin:0;font-size:13px;color:var(--ink-2)}
|
||||
.note b{color:var(--ink)}
|
||||
.criteria{border:1px solid var(--ledger-line);border-radius:10px;background:var(--ledger-soft);padding:13px 16px;margin-bottom:18px}
|
||||
.criteria .c-title{font-size:11px;font-weight:800;letter-spacing:.08em;color:var(--ledger);margin-bottom:7px}
|
||||
.criteria ul{margin:0;padding-left:18px;font-size:12.5px;color:var(--ink-2)}
|
||||
.criteria li{margin:4px 0}
|
||||
.criteria b{color:var(--ink)}
|
||||
.tbl-wrap{border:1px solid var(--line-soft);border-radius:10px;overflow:hidden}
|
||||
table{width:100%;border-collapse:collapse;font-size:13px}
|
||||
th{text-align:left;background:var(--soft);font-size:11px;letter-spacing:.05em;font-weight:800;color:var(--ink-3);padding:9px 12px;border-bottom:1px solid var(--line)}
|
||||
td{padding:11px 12px;border-bottom:1px solid var(--line-soft);vertical-align:top}
|
||||
tr:last-child td{border-bottom:0}
|
||||
.num{font-family:var(--mono);color:var(--ink-4);white-space:nowrap}
|
||||
.ledger{font-family:var(--mono);font-weight:700;white-space:nowrap}
|
||||
.fld{font-family:var(--mono);font-size:12px;color:var(--ink-2)}
|
||||
.before{color:var(--ink-4);text-decoration:line-through}
|
||||
.after{font-weight:800;color:var(--ok)}
|
||||
.flow{margin-top:16px;padding:9px 12px;border-radius:8px;background:var(--soft);border:1px dashed var(--line);font-size:12px;color:var(--ink-3)}
|
||||
.flow b{color:var(--ink)}
|
||||
.card-foot{padding:13px 22px;border-top:1px solid var(--line-soft);font-size:11.5px;color:var(--ink-4);display:flex;justify-content:space-between;flex-wrap:wrap;gap:8px}
|
||||
@media(max-width:600px){.card-head{flex-wrap:wrap}.side{align-items:flex-start}}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="page">
|
||||
<div class="card">
|
||||
|
||||
<header class="card-head">
|
||||
<div class="badge">验收</div>
|
||||
<div class="tit">
|
||||
<div class="kick">E04 关系覆盖与关键人经营 · 验收工单 2/2</div>
|
||||
<h1>关系台账更新确认</h1>
|
||||
<div class="sub">收件人:<span data-slot="meta.task.owner">AM Lead(负责人)</span> · 关联任务:<span data-slot="meta.task.id">TASK-xxx</span></div>
|
||||
</div>
|
||||
<div class="side">
|
||||
<span class="tag">验收工单</span>
|
||||
<span class="step" data-slot="meta.phase">步骤 ⑥⑦ 更新台账</span>
|
||||
<span class="deadline">最迟交回:<b data-slot="card.deadline">1 个工作日</b></span>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<div class="card-bd">
|
||||
|
||||
<p class="zone"><b>【AI 结论说明】</b>—— AI 收到回执后做了哪些更新</p>
|
||||
<div class="note">
|
||||
<p><b>AI 已完成</b>:收到执行回执后,重算关系覆盖度(coverage_score)、更新决策链地图(decision_chain)、更新 L-08 联系人档案(角色 / 影响力 / 亲密度 / 关键人标记)、追加互动时间线。</p>
|
||||
</div>
|
||||
|
||||
<p class="zone"><b>【验收判据】</b>—— 你据此判断「通过 / 驳回」</p>
|
||||
<div class="criteria">
|
||||
<div class="c-title">判断这次台账更新是否无误,请逐项核对</div>
|
||||
<ul>
|
||||
<li><b>更新是否有依据</b>:每条更新是否都能在「执行回执」里找到对应事实(如 coverage_score 上升对应哪几次拜访);</li>
|
||||
<li><b>数值是否合理</b>:coverage_score、亲密度等数值变化幅度与回执是否吻合;</li>
|
||||
<li><b>有无漏更或误更</b>:该更新的字段都更新了、不该动的没动。</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<p class="zone"><b>【拟更新的台账】</b>—— 只读展示</p>
|
||||
<div class="tbl-wrap">
|
||||
<table>
|
||||
<thead><tr><th style="width:36px">#</th><th style="width:150px" data-h="台账">台账</th><th style="width:200px" data-h="字段">字段</th><th style="width:140px" data-h="更新前">更新前</th><th data-h="更新后">更新后</th></tr></thead>
|
||||
<tbody data-rows="out.ledger_update">
|
||||
<tr>
|
||||
<td class="num">1</td>
|
||||
<td data-field="ledger" class="ledger">L-02 客户主台账</td>
|
||||
<td data-field="field" class="fld">coverage_score</td>
|
||||
<td data-field="before" class="before">61 / 100</td>
|
||||
<td data-field="after" class="after">78 / 100</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="num">2</td>
|
||||
<td class="ledger">L-02 客户主台账</td>
|
||||
<td class="fld">decision_chain(产品 VP)</td>
|
||||
<td class="before">空白节点</td>
|
||||
<td class="after">已建立直接关系</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="num">3</td>
|
||||
<td class="ledger">L-02 客户主台账</td>
|
||||
<td class="fld">interaction_timeline</td>
|
||||
<td class="before">—</td>
|
||||
<td class="after">追加 3 次互动记录</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="num">4</td>
|
||||
<td class="ledger">L-08 联系人台账</td>
|
||||
<td class="fld">质量负责人 · 亲密度</td>
|
||||
<td class="before">0 / 5</td>
|
||||
<td class="after">2 / 5</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="num">5</td>
|
||||
<td class="ledger">L-08 联系人台账</td>
|
||||
<td class="fld">质量负责人 · 关键人标记</td>
|
||||
<td class="before">否</td>
|
||||
<td class="after">是</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="flow"><b>审批:</b>本工单只承载内容;「通过入库 / 驳回」请在对话区的【验收卡】中进行。</div>
|
||||
|
||||
</div>
|
||||
|
||||
<footer class="card-foot">
|
||||
<span>E04 关系覆盖与关键人经营 · 验收工单 2/2 · 关系台账更新确认</span>
|
||||
<span style="font-family:'SF Mono',Menlo,Consolas,monospace">工单类型:验收 · <span data-slot="card.id">WO-E04-04</span></span>
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,186 @@
|
||||
<!doctype html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>执行工单 1 · 需求受理与信息补充 · I01 品牌形象与销售工具包管理</title>
|
||||
<style>
|
||||
:root{
|
||||
--ink:#1f2329; --ink-2:#41464e; --ink-3:#646a73; --ink-4:#8f959e;
|
||||
--line:#dee0e3; --line-soft:#e8eaed; --soft:#f8f9fb;
|
||||
--brand:#3370ff; --brand-deep:#245bdb; --brand-soft:#e1eaff; --brand-wash:#f0f4ff;
|
||||
--human:#a9711e; --human-soft:#f6ecd8; --human-line:#e6d3a8;
|
||||
--ok:#278717; --ok-soft:#e8f8e4; --danger:#d83931; --danger-soft:#feeae9;
|
||||
--mono:"SF Mono",Menlo,Consolas,monospace;
|
||||
}
|
||||
*{box-sizing:border-box}
|
||||
html,body{margin:0;padding:0}
|
||||
body{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;background:#eef1f6;color:var(--ink);font-size:14px;line-height:1.7;-webkit-font-smoothing:antialiased}
|
||||
.page{margin:0;padding:0}
|
||||
.card{background:#fff;overflow:hidden;border:0;border-radius:0;box-shadow:none}
|
||||
.card-head{display:flex;align-items:center;gap:14px;padding:18px 22px;border-bottom:2px solid var(--ink);background:linear-gradient(120deg,#fffaf1 0%,#fff 55%,#fbf6ea 100%)}
|
||||
.badge{flex:none;width:44px;height:44px;border-radius:10px;display:grid;place-items:center;background:var(--human);color:#fff;font-weight:800;font-size:13px;box-shadow:0 6px 16px rgba(169,113,30,.25)}
|
||||
.tit{flex:1;min-width:0}
|
||||
.tit .kick{font-size:11px;letter-spacing:.08em;color:var(--ink-4);font-weight:700}
|
||||
.tit h1{margin:2px 0 0;font-size:19px;font-weight:800;line-height:1.3}
|
||||
.tit .sub{font-size:12px;color:var(--ink-3);margin-top:3px}
|
||||
.side{display:flex;flex-direction:column;align-items:flex-end;gap:6px;flex:none}
|
||||
.tag{font-size:11px;font-weight:800;padding:2px 10px;border-radius:999px;color:var(--human);background:var(--human-soft);border:1px solid var(--human-line)}
|
||||
.step{font-size:12px;color:var(--ink-3)}
|
||||
.deadline{font-size:12px;color:var(--ink-3)}
|
||||
.deadline b{color:var(--danger)}
|
||||
.card-bd{padding:20px 22px}
|
||||
.zone{font-size:11px;font-weight:800;letter-spacing:.12em;color:var(--ink-4);margin:0 0 8px}
|
||||
.zone b{color:var(--ink-3)}
|
||||
.note{border:1px solid var(--line);border-left:3px solid var(--human);border-radius:8px;background:var(--soft);padding:14px 16px;margin-bottom:16px}
|
||||
.note p{margin:0;font-size:13px;color:var(--ink-2)}
|
||||
.note b{color:var(--ink)}
|
||||
.note .done{color:var(--ok);font-weight:700}
|
||||
.note .need{color:var(--human);font-weight:700}
|
||||
.jc-editgate{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:14px 0 10px;padding:9px 12px;border-radius:9px;background:var(--soft);border:1px solid var(--line-soft);font-size:12px;color:var(--ink-3)}
|
||||
.jc-editgate-t{flex:1 1 auto;min-width:0}
|
||||
.jc-editgate-t b{color:var(--ink-2);font-weight:700}
|
||||
.jc-egbtn{flex:none;display:inline-flex;align-items:center;gap:5px;cursor:pointer;border:1px solid var(--line);border-radius:7px;padding:6px 13px;font:inherit;font-size:12px;font-weight:700;color:var(--ink-2);background:#fff}
|
||||
.jc-egbtn:hover{border-color:var(--brand);color:var(--brand)}
|
||||
.jc-egbtn.save{color:#fff;background:var(--human);border-color:var(--human)}
|
||||
.jc-egbtn.save:hover{filter:brightness(1.06);color:#fff}
|
||||
.jc-editgate .eg-cancel,.jc-editgate .eg-save{display:none}
|
||||
.jc-editgate.on{background:var(--human-soft);border-color:var(--human-line);color:#7c4a12}
|
||||
.jc-editgate.on .eg-open{display:none}
|
||||
.jc-editgate.on .eg-cancel,.jc-editgate.on .eg-save{display:inline-flex}
|
||||
.tbl-wrap{border:1px solid var(--line-soft);border-radius:10px;overflow:hidden}
|
||||
table{width:100%;border-collapse:collapse;font-size:12.5px}
|
||||
th{text-align:left;background:var(--soft);font-size:11px;letter-spacing:.03em;font-weight:800;color:var(--ink-3);padding:9px 10px;border-bottom:1px solid var(--line)}
|
||||
th.req::after{content:" *";color:var(--danger);font-size:11px}
|
||||
td{padding:8px 10px;border-bottom:1px solid var(--line-soft);vertical-align:middle}
|
||||
tr:last-child td{border-bottom:0}
|
||||
td.rn{position:relative;width:38px;white-space:nowrap;font-family:var(--mono);font-size:11px;color:var(--ink-4);text-align:center}
|
||||
.jc-vcell{display:block;font-size:12.5px;color:var(--ink);line-height:1.5;overflow-wrap:anywhere}
|
||||
.jc-vcell.mono{font-family:var(--mono);font-size:11.5px;color:var(--ink-2)}
|
||||
.jc-cell{display:none;width:100%;min-width:60px;border:1px solid var(--line);border-radius:6px;padding:6px 8px;font:inherit;font-size:12.5px;color:var(--ink);background:#fff}
|
||||
.jc-cell:focus{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-wash);outline:none}
|
||||
table.on td>.jc-vcell{display:none}
|
||||
table.on td>.jc-cell{display:block}
|
||||
td.rn .jc-rowdel{display:none;width:22px;height:22px;margin:0 auto;cursor:pointer;border:1px solid var(--line);border-radius:6px;padding:0;font:inherit;font-size:14px;line-height:1;color:var(--ink-3);background:#fff}
|
||||
td.rn .jc-rowdel:hover{border-color:var(--danger);color:var(--danger);background:var(--danger-soft)}
|
||||
table.on td.rn .jc-rn-num{display:none}
|
||||
table.on td.rn .jc-rowdel{display:block}
|
||||
.jc-addrow{display:none;margin:8px 0 0;padding:8px 12px;border-radius:9px;background:var(--soft);border:1px dashed var(--line);font-size:12px;color:var(--ink-3)}
|
||||
.jc-addrow.show{display:flex;align-items:center;gap:8px}
|
||||
.jc-addrow button{cursor:pointer;border:1px solid var(--brand-soft);border-radius:7px;padding:5px 12px;font:inherit;font-size:12px;font-weight:700;color:var(--brand-deep);background:var(--brand-wash)}
|
||||
.jc-addrow button:hover{background:var(--brand-soft)}
|
||||
.jc-addrow em{font-style:normal;font-size:11.5px;color:var(--ink-4)}
|
||||
.flow{margin-top:16px;padding:9px 12px;border-radius:8px;background:var(--soft);border:1px dashed var(--line);font-size:12px;color:var(--ink-3)}
|
||||
.flow b{color:var(--ink)}
|
||||
.card-foot{padding:13px 22px;border-top:1px solid var(--line-soft);font-size:11.5px;color:var(--ink-4);display:flex;justify-content:space-between;flex-wrap:wrap;gap:8px}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="page">
|
||||
<div class="card">
|
||||
|
||||
<header class="card-head">
|
||||
<div class="badge">执行</div>
|
||||
<div class="tit">
|
||||
<div class="kick">SS01 客户与市场 · I01 品牌形象与销售工具包管理 · 执行工单 1/3</div>
|
||||
<h1>需求受理与信息补充</h1>
|
||||
<div class="sub">收件人:<span data-slot="meta.task.owner">AM(内容运营)</span> · 关联任务:<span data-slot="meta.task.id">TASK-xxx</span></div>
|
||||
</div>
|
||||
<div class="side">
|
||||
<span class="tag">执行工单</span>
|
||||
<span class="step" data-slot="meta.phase">步骤 ① 需求识别与受理</span>
|
||||
<span class="deadline">最迟交回:<b data-slot="card.deadline">1 个工作日</b></span>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<div class="card-bd">
|
||||
|
||||
<p class="zone"><b>【做什么】</b>—— 确认本轮要生产的内容</p>
|
||||
<div class="note">
|
||||
<p><span class="done">AI 已完成</span>:按规则识别本轮内容需求来源(战略调整 / 新市场 / 工具过期 / 使用方请求)与需求类型(公司介绍 / 能力声明 / 销售工具包 / 选型指南 / 替代对照表 / 案例集 / 白皮书等),产出下方需求清单(<b>候选基线</b>)。</p>
|
||||
<p><span class="need">需要你查漏补缺</span>:点「编辑」在清单上增删改——<b>加一行 = 补充新需求</b>、<b>删一行 = 排除</b>、<b>改单元格 = 修正</b>;尤其要补「目标客户、适用场景、优先级」这些 AI 规则之外的信息(如使用方要一份方案,但你线下知道要针对某客户做定向版)。</p>
|
||||
</div>
|
||||
|
||||
<p class="zone"><b>【交回什么】</b>—— 核对后的内容需求清单(*为必填)</p>
|
||||
|
||||
<div class="jc-editgate" id="editgate">
|
||||
<span class="jc-editgate-t"><b data-slot="sd.requirement_count">AI 已识别 2 个内容需求</b>,点「编辑」增删改</span>
|
||||
<button class="jc-egbtn eg-open" type="button">编辑</button>
|
||||
<button class="jc-egbtn eg-cancel" type="button">取消</button>
|
||||
<button class="jc-egbtn eg-save" type="button">保存</button>
|
||||
</div>
|
||||
|
||||
<div class="tbl-wrap">
|
||||
<table id="tbl">
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="width:38px">#</th>
|
||||
<th class="req" data-h="内容类型">内容类型</th>
|
||||
<th data-h="需求来源">需求来源</th>
|
||||
<th data-h="目标客户">目标客户</th>
|
||||
<th data-h="适用场景">适用场景</th>
|
||||
<th data-h="优先级">优先级</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody data-rows="in.requirement">
|
||||
<tr>
|
||||
<td class="rn"><span class="jc-rn-num">1</span><button class="jc-rowdel" type="button" title="删除此行">×</button></td>
|
||||
<td data-field="content_type"><span class="jc-vcell">系统方案白皮书</span><input class="jc-cell" value="系统方案白皮书"></td>
|
||||
<td data-field="source"><span class="jc-vcell">使用方请求(E04 价值传递)</span><input class="jc-cell" value="使用方请求(E04 价值传递)"></td>
|
||||
<td data-field="target_customer"><span class="jc-vcell">AvtoKom(定向)</span><input class="jc-cell" value="AvtoKom(定向)"></td>
|
||||
<td data-field="scene"><span class="jc-vcell">攻坚</span><input class="jc-cell" value="攻坚"></td>
|
||||
<td data-field="priority"><span class="jc-vcell mono">高</span><input class="jc-cell" value="高"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="rn"><span class="jc-rn-num">2</span><button class="jc-rowdel" type="button" title="删除此行">×</button></td>
|
||||
<td data-field="content_type"><span class="jc-vcell">公司介绍</span><input class="jc-cell" value="公司介绍"></td>
|
||||
<td data-field="source"><span class="jc-vcell">战略调整(进入俄罗斯市场)</span><input class="jc-cell" value="战略调整(进入俄罗斯市场)"></td>
|
||||
<td data-field="target_customer"><span class="jc-vcell">—(通用)</span><input class="jc-cell" value="—(通用)"></td>
|
||||
<td data-field="scene"><span class="jc-vcell">首触</span><input class="jc-cell" value="首触"></td>
|
||||
<td data-field="priority"><span class="jc-vcell mono">中</span><input class="jc-cell" value="中"></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="jc-addrow" id="addrow">
|
||||
<button type="button">+ 加一行(补充新需求)</button>
|
||||
<em>新加行的「内容类型」为必填;「目标客户」填定向客户,通用内容可留「—」</em>
|
||||
</div>
|
||||
|
||||
<div class="flow"><b>审批 / 提交:</b>本工单只承载内容;「提交回执」请在对话区的【执行卡】中进行。</div>
|
||||
|
||||
</div>
|
||||
|
||||
<footer class="card-foot">
|
||||
<span>I01 品牌形象与销售工具包管理 · 执行工单 1/3 · 需求受理</span>
|
||||
<span style="font-family:'SF Mono',Menlo,Consolas,monospace">工单类型:执行 · <span data-slot="card.id">WO-I01-01</span></span>
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
(function(){
|
||||
var gate=document.getElementById('editgate'),tbl=document.getElementById('tbl'),addrow=document.getElementById('addrow'),tbody=tbl.querySelector('tbody');
|
||||
function setEdit(on){gate.classList.toggle('on',on);tbl.classList.toggle('on',on);addrow.classList.toggle('show',on);}
|
||||
gate.querySelector('.eg-open').addEventListener('click',function(){setEdit(true);});
|
||||
gate.querySelector('.eg-cancel').addEventListener('click',function(){
|
||||
tbody.querySelectorAll('tr').forEach(function(tr){tr.querySelectorAll('td').forEach(function(td){var v=td.querySelector('.jc-vcell'),c=td.querySelector('.jc-cell');if(v&&c){c.value=v.textContent;}});});
|
||||
setEdit(false);
|
||||
});
|
||||
gate.querySelector('.eg-save').addEventListener('click',function(){
|
||||
tbody.querySelectorAll('tr').forEach(function(tr){tr.querySelectorAll('td').forEach(function(td){var v=td.querySelector('.jc-vcell'),c=td.querySelector('.jc-cell');if(v&&c){v.textContent=c.value;}});});
|
||||
renumber();setEdit(false);
|
||||
});
|
||||
addrow.querySelector('button').addEventListener('click',function(){
|
||||
var tr=document.createElement('tr');
|
||||
tr.innerHTML='<td class="rn"><span class="jc-rn-num"></span><button class="jc-rowdel" type="button" title="删除此行">×</button></td>'+'<td data-field="content_type"><span class="jc-vcell"></span><input class="jc-cell" placeholder="内容类型"></td>'+'<td data-field="source"><span class="jc-vcell"></span><input class="jc-cell" placeholder="需求来源"></td>'+'<td data-field="target_customer"><span class="jc-vcell"></span><input class="jc-cell" placeholder="目标客户"></td>'+'<td data-field="scene"><span class="jc-vcell"></span><input class="jc-cell" placeholder="适用场景"></td>'+'<td data-field="priority"><span class="jc-vcell mono"></span><input class="jc-cell" placeholder="优先级"></td>';
|
||||
tbody.appendChild(tr);renumber();
|
||||
});
|
||||
tbody.addEventListener('click',function(e){if(e.target.classList.contains('jc-rowdel')){e.target.closest('tr').remove();renumber();}});
|
||||
function renumber(){tbody.querySelectorAll('tr').forEach(function(tr,i){tr.querySelector('.jc-rn-num').textContent=i+1;});}
|
||||
})();
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,215 @@
|
||||
# I01 品牌形象与销售工具包管理 · 活动流程与工单说明
|
||||
|
||||
> 所属子系统:SS01 客户与市场 | 优先级:P0 | 类型:内容生产型活动
|
||||
> 本说明总结 I01 活动的整体流程、工单产出的设计逻辑,以及每一步做了什么。配套工单 HTML 见本目录。
|
||||
|
||||
---
|
||||
|
||||
## 一、活动定位
|
||||
|
||||
**I01 品牌形象与销售工具包管理**是公司对外内容资产的统一管理:公司介绍、能力声明、销售工具包、案例集、品牌调性标准,多语言版本受控发布。
|
||||
|
||||
**消费的台账**(读):L-01 宏观市场台账(市场信号、产业趋势——内容创作的市场依据)。
|
||||
**产出的台账**(写):L-05 品牌内容库(内容资产,落账唯一载荷)。
|
||||
|
||||
**触发方式**:① 主动——战略调整 / 进入新市场 / 工具过期 / 月度定期内容更新;② 被动——使用方请求(E04 需要价值传递素材、T03 触达需要材料、T04 攻坚需要定制内容、E03 方案需要支撑)。
|
||||
|
||||
---
|
||||
|
||||
## 二、整体流程(7 步)
|
||||
|
||||
分工原则:**AI 承担信息汇总、记录与初稿生成,人负责判断与决策**。AI 的「读」一律**经读数工具查业务数据服务**(不直接碰台账文件),台账是业务数据服务里的数据对象、不是磁盘文件。
|
||||
|
||||
### ① 需求识别与受理
|
||||
|
||||
- **AI 做什么**:识别内容需求来源与类型,给出目标客户 / 场景 / 优先级的初步建议,产出「内容需求清单」候选基线。
|
||||
- **AI 怎么做**:
|
||||
- 读(经读数工具):L-05 已有资产(content_type / title,判断是否已有类似内容)、L-02 客户(customer_id / cust_type,定向客户识别)
|
||||
- 加工:把触发事件按规则映射到需求类型(如「E04 请求价值传递素材」→ 系统方案白皮书),匹配适用场景与 BT 层级
|
||||
- 输出:内容需求清单(content_type、source、target_customer 建议、scene 建议、priority 建议)
|
||||
- **人做什么**:查漏补缺——补 AI 规则之外的目标客户、场景、优先级、定制需求
|
||||
|
||||
### ② 市场依据采集
|
||||
|
||||
- **AI 做什么**:采集与本内容相关的市场依据,确定价值主张与差异化定位。
|
||||
- **AI 怎么做**:
|
||||
- 读(经读数工具):L-01 宏观市场台账(信号类型 / 标题 / 详情、market_region、industry、chip_category、重要性、影响方向)
|
||||
- 加工:按市场 / 行业 / 芯片品类筛选相关信号,归纳产业趋势与竞争差异
|
||||
- 输出:市场依据摘要(趋势 + 价值主张 + 差异化定位)
|
||||
- **人做什么**:基本无需介入(纯 AI 加工态)
|
||||
|
||||
### ③ 内容创作与工具建设
|
||||
|
||||
- **AI 做什么**:按 BT 层级草拟内容初稿(多语言)。
|
||||
- **AI 怎么做**:
|
||||
- 读(经读数工具):步骤②的市场依据(活动自持中间产物)、L-05 已有资产(避免重复、保持调性一致)、L-05 品牌调性标准
|
||||
- 加工:按 BT 层级套对应结构——BT-01 供货能力 / 资质文件 / 渠道政策、BT-02 技术规格书 / 替代对照表 / 认证报告、BT-03 系统方案白皮书 / 参考设计 / 成功案例;生成多语言版本
|
||||
- 输出:内容初稿(标题、正文、语言版本、BT 标签、品牌调性标签)
|
||||
- **人做什么**:FAE 提供 / 核对技术素材(规格书、认证报告)
|
||||
|
||||
### ④ 内部审核与调性把关
|
||||
|
||||
- **AI 做什么**:准备审核材料,对照调性标准对初稿做预检、标出可疑点。
|
||||
- **AI 怎么做**:
|
||||
- 读(经读数工具):L-05 品牌调性标准;内容初稿(活动自持)
|
||||
- 加工:比对调性标准(专业 / 可信赖 / 高效 / 本土化),标出可能不符处;标出技术数据待核对项
|
||||
- 输出:审核材料(初稿 + AI 预检标注)
|
||||
- **人做什么**:AM Lead 调性把关、FAE 技术审核、合规检查、多语校对(**这是验收,不是执行**)
|
||||
|
||||
### ⑤ 发布入库
|
||||
|
||||
- **AI 做什么**:生成内容 ID、更新版本号、状态流转、登记场景与 BT 标签,产出「拟发布内容」。
|
||||
- **AI 怎么做**:
|
||||
- 读:审核通过的初稿(活动自持)
|
||||
- 加工:生成 content_id、版本号递增、状态流转(待发布 → 已发布)、登记 scene 与 BT 标签
|
||||
- 输出:拟发布内容(content_id、title、language、version、scene、status)
|
||||
- **人做什么**:确认发布入库(落账 L-05)
|
||||
|
||||
### ⑥ 分发与使用追踪
|
||||
|
||||
- **AI 做什么**:把已发布内容分发给使用方,收集使用反馈。
|
||||
- **AI 怎么做**:
|
||||
- 读(经读数工具):L-05 已发布内容 + 使用方调用记录
|
||||
- 加工:按场景 / BT 标签匹配使用方需求分发;汇总使用频次、客户接受度、触达效果
|
||||
- 输出:使用反馈汇总
|
||||
- **人做什么**:基本无需介入
|
||||
|
||||
### ⑦ 复盘迭代与完结
|
||||
|
||||
- **AI 做什么**:复盘内容效果,识别过时 / 失效内容,提出下架 / 更新建议。
|
||||
- **AI 怎么做**:
|
||||
- 读(经读数工具):L-05 内容使用频次 / 版本 / 发布日期 + ⑥的使用反馈
|
||||
- 加工:计算使用频次、识别过期内容(版本旧 / 长期未用)、生成下架 / 更新建议清单
|
||||
- 输出:复盘结论(下架清单、更新清单)
|
||||
- **人做什么**:确认复盘结论、完结
|
||||
|
||||
---
|
||||
|
||||
## 三、工单划分逻辑(生产流程 vs 复盘流程)
|
||||
|
||||
I01 的 7 步里混着**两个不同时间段的流程**:
|
||||
|
||||
```
|
||||
【生产流程 —— 被动触发(使用方请求),几天内完成】
|
||||
① 需求受理 → ② 采集 → ③ 创作 → ④ 审核 → ⑤ 发布
|
||||
↓ 内容资产上线 L-05,✅ 生产结束
|
||||
|
||||
············ 使用期(几周~几个月,内容被 E04/T03/T04/E03 调用) ············
|
||||
|
||||
【复盘流程 —— 独立触发(月度定期 / 工具过期 / 战略调整)】
|
||||
⑥ 分发追踪 → ⑦ 复盘 → 下架/更新(更新则回到①开新一轮生产)
|
||||
```
|
||||
|
||||
**工单只针对生产流程(①→⑤)**,复盘流程独立拎出,不并入。
|
||||
|
||||
生产流程内逐步判断:
|
||||
|
||||
| 步骤 | 判断 | 结论 |
|
||||
|---|---|---|
|
||||
| ① 需求受理 | AI 识别规则之外的信息(目标客户/场景/优先级/定制)需人补充 | **执行工单** |
|
||||
| ②③ 采集+创作 | AI 草拟内容初稿(纯加工态) | 不派工单 |
|
||||
| ④ 审核 | AI 产出内容初稿,人审合不合格 | **验收工单** |
|
||||
| ⑤ 发布 | AI 拟发布,人确认后落账 | **验收工单** |
|
||||
|
||||
**最终:1 执行 + 2 验收。**
|
||||
|
||||
### 与 E04 的区别
|
||||
|
||||
I01 是**内容生产型**,没有 E04「物理拜访」这种 AI 做不到、必须人去线下执行的环节——内容初稿由 AI 草拟,人只审核不执行。所以 I01 少一个「执行回执」工单,执行工单只有「需求受理」一个。
|
||||
|
||||
---
|
||||
|
||||
## 四、每个工单详细说明
|
||||
|
||||
### 执行工单 1 · 需求受理与信息补充(步骤 ①)
|
||||
|
||||
- **做什么**:确认本轮要生产的内容。
|
||||
- **AI 产出**:按规则识别的内容需求清单(来源 + 类型)。
|
||||
- **人填什么(查漏补缺)**:在清单上增删改——加行=补充新需求、删行=排除、改格=修正;补「目标客户、适用场景、优先级」等 AI 规则之外的信息。
|
||||
- **为什么执行**:需求来源/类型 AI 能按规则识别,但「给谁、什么场景、多优先、是否定制」需要人补充。
|
||||
- **交回**:核对后的内容需求清单(内容类型必填)。
|
||||
|
||||
### 验收工单 1 · 内容初稿审核(步骤 ②③④)
|
||||
|
||||
- **做什么**:审核 AI 草拟的内容初稿。
|
||||
- **AI 产出**:读 L-01 市场依据 + 按 BT 层级草拟的多语言内容初稿。
|
||||
- **人怎么审**:只读,不可修改。按判据「通过 / 驳回」,驳回 AI 重做。
|
||||
- **验收判据**:① 品牌调性是否一致;② 技术内容是否准确;③ 合规与多语言校对是否通过。
|
||||
- **为什么验收**:内容是 AI 草拟的结论,人只审合格与否。
|
||||
|
||||
### 验收工单 2 · 发布确认(步骤 ⑤)
|
||||
|
||||
- **做什么**:确认发布内容资产。
|
||||
- **AI 产出**:拟发布的内容(版本号、状态流转、场景/BT 标签)。
|
||||
- **人怎么审**:只读,不可修改。按判据「通过入库 / 驳回」。
|
||||
- **验收判据**:① 版本号与状态是否正确;② 场景与 BT 标签是否登记完整;③ 多语言版本是否齐全。
|
||||
- **为什么验收**:发布是写 L-05 的落账动作,需要人确认后入库。
|
||||
|
||||
---
|
||||
|
||||
## 五、文件对应关系
|
||||
|
||||
| 工单文件 | 类型 | 覆盖步骤 | 一句话 |
|
||||
|---|---|---|---|
|
||||
| `I01-执行工单-01-需求受理.html` | 执行 | ① | 人补内容需求信息 |
|
||||
| `I01-验收工单-01-内容初稿审核.html` | 验收 | ②③④ | 人审 AI 的内容初稿 |
|
||||
| `I01-验收工单-02-发布确认.html` | 验收 | ⑤ | 人确认发布入库 |
|
||||
|
||||
**完整闭环**:
|
||||
|
||||
```
|
||||
① 需求受理 ──执行工单1(人补信息)──▶ ②③ AI 采集+草拟 ──验收工单1(审初稿)──▶
|
||||
④ 审核通过 ──验收工单2(确认发布)──▶ 落账 L-05 ──▶ 生产结束
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 六、动态数据标注(模板绑定位置)
|
||||
|
||||
### 6.1 绑定命名空间速查
|
||||
|
||||
| 命名空间 | 含义 | 本活动用到 |
|
||||
|---|---|---|
|
||||
| `meta.*` | 任务/活动元数据 | 收件人、任务编号、步骤 |
|
||||
| `card.*` | 工单身份专属 | 期限、工单编号、验收判据 |
|
||||
| `out.*` | 输出表单/台账映射行集 | 内容初稿、发布明细 |
|
||||
| `in.*` | 输入表单 | 内容需求 |
|
||||
| `sd.*` | 状态数据读数 | 需求计数 |
|
||||
|
||||
### 6.2 三个工单共用的头部动态位置
|
||||
|
||||
| HTML 位置 | 动态数据 | 绑定地址 |
|
||||
|---|---|---|
|
||||
| 收件人 | 负责人 | `meta.task.owner` |
|
||||
| 关联任务 | 任务编号 | `meta.task.id` |
|
||||
| 步骤 | 当前节点 | `meta.phase` |
|
||||
| 最迟交回 | 期限 | `card.deadline` |
|
||||
| 工单编号 | 工单 ID | `card.id` |
|
||||
|
||||
### 6.3 执行工单 1 · 需求受理
|
||||
|
||||
| HTML 位置 | 动态数据 | 绑定地址 | 类型 |
|
||||
|---|---|---|---|
|
||||
| 编辑闸「AI 已识别 N 个内容需求」 | 需求计数 | `sd.requirement_count` | 单值 |
|
||||
| 内容需求表 | 需求行 | `in.requirement` | 行集 |
|
||||
| └ 内容类型/来源/目标客户/场景/优先级 | 各列字段 | `in.requirement.*` | 字段 |
|
||||
|
||||
### 6.4 验收工单 1 · 内容初稿审核
|
||||
|
||||
| HTML 位置 | 动态数据 | 绑定地址 | 类型 |
|
||||
|---|---|---|---|
|
||||
| 验收判据清单 | 判据项 | `card.criteria[]` | 列表 |
|
||||
| 内容初稿表 | 初稿行 | `out.draft` | 行集 |
|
||||
| └ 标题/类型/语言/BT标签/调性 | 各列字段 | `out.draft.*` | 字段 |
|
||||
|
||||
### 6.5 验收工单 2 · 发布确认
|
||||
|
||||
| HTML 位置 | 动态数据 | 绑定地址 | 类型 |
|
||||
|---|---|---|---|
|
||||
| 验收判据清单 | 判据项 | `card.criteria[]` | 列表 |
|
||||
| 拟发布内容表 | 发布行 | `out.publish` | 行集 |
|
||||
| └ 内容ID/标题/语言/版本/场景/状态 | 各列字段 | `out.publish.*` | 字段 |
|
||||
|
||||
---
|
||||
|
||||
(完)I01 一个活动,一条生产流程,三张工单:**执行工单让人补需求,验收工单让人审内容、确认发布**——复盘独立在时间轴之后,不混进生产流程。
|
||||
@@ -0,0 +1,120 @@
|
||||
<!doctype html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>验收工单 1 · 内容初稿审核 · I01 品牌形象与销售工具包管理</title>
|
||||
<style>
|
||||
:root{
|
||||
--ink:#1f2329; --ink-2:#41464e; --ink-3:#646a73; --ink-4:#8f959e;
|
||||
--line:#dee0e3; --line-soft:#e8eaed; --soft:#f8f9fb;
|
||||
--brand:#3370ff; --brand-deep:#245bdb; --brand-soft:#e1eaff; --brand-wash:#f0f4ff;
|
||||
--ledger:#b23a2e; --ledger-soft:#f7e4e0; --ledger-line:#ecc5bd;
|
||||
--ok:#278717; --ok-soft:#e8f8e4; --danger:#d83931; --danger-soft:#feeae9;
|
||||
--mono:"SF Mono",Menlo,Consolas,monospace;
|
||||
}
|
||||
*{box-sizing:border-box}
|
||||
html,body{margin:0;padding:0}
|
||||
body{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;background:#eef1f6;color:var(--ink);font-size:14px;line-height:1.7;-webkit-font-smoothing:antialiased}
|
||||
.page{margin:0;padding:0}
|
||||
.card{background:#fff;overflow:hidden;border:0;border-radius:0;box-shadow:none}
|
||||
.card-head{display:flex;align-items:center;gap:14px;padding:18px 22px;border-bottom:2px solid var(--ink);background:linear-gradient(120deg,#fdf3f1 0%,#fff 55%,#fbf2f0 100%)}
|
||||
.badge{flex:none;width:44px;height:44px;border-radius:10px;display:grid;place-items:center;background:var(--ledger);color:#fff;font-weight:800;font-size:13px;box-shadow:0 6px 16px rgba(178,58,46,.25)}
|
||||
.tit{flex:1;min-width:0}
|
||||
.tit .kick{font-size:11px;letter-spacing:.08em;color:var(--ink-4);font-weight:700}
|
||||
.tit h1{margin:2px 0 0;font-size:19px;font-weight:800;line-height:1.3}
|
||||
.tit .sub{font-size:12px;color:var(--ink-3);margin-top:3px}
|
||||
.side{display:flex;flex-direction:column;align-items:flex-end;gap:6px;flex:none}
|
||||
.tag{font-size:11px;font-weight:800;padding:2px 10px;border-radius:999px;color:var(--ledger);background:var(--ledger-soft);border:1px solid var(--ledger-line)}
|
||||
.step{font-size:12px;color:var(--ink-3)}
|
||||
.deadline{font-size:12px;color:var(--ink-3)}
|
||||
.deadline b{color:var(--danger)}
|
||||
.card-bd{padding:20px 22px}
|
||||
.zone{font-size:11px;font-weight:800;letter-spacing:.12em;color:var(--ink-4);margin:0 0 8px}
|
||||
.zone b{color:var(--ink-3)}
|
||||
.note{border:1px solid var(--line);border-left:3px solid var(--ledger);border-radius:8px;background:var(--soft);padding:14px 16px;margin-bottom:16px}
|
||||
.note p{margin:0;font-size:13px;color:var(--ink-2)}
|
||||
.note b{color:var(--ink)}
|
||||
.criteria{border:1px solid var(--ledger-line);border-radius:10px;background:var(--ledger-soft);padding:13px 16px;margin-bottom:18px}
|
||||
.criteria .c-title{font-size:11px;font-weight:800;letter-spacing:.08em;color:var(--ledger);margin-bottom:7px}
|
||||
.criteria ul{margin:0;padding-left:18px;font-size:12.5px;color:var(--ink-2)}
|
||||
.criteria li{margin:4px 0}
|
||||
.criteria b{color:var(--ink)}
|
||||
.tbl-wrap{border:1px solid var(--line-soft);border-radius:10px;overflow:hidden}
|
||||
table{width:100%;border-collapse:collapse;font-size:13px}
|
||||
th{text-align:left;background:var(--soft);font-size:11px;letter-spacing:.05em;font-weight:800;color:var(--ink-3);padding:9px 12px;border-bottom:1px solid var(--line)}
|
||||
td{padding:11px 12px;border-bottom:1px solid var(--line-soft);vertical-align:top}
|
||||
tr:last-child td{border-bottom:0}
|
||||
.num{font-family:var(--mono);color:var(--ink-4);white-space:nowrap}
|
||||
.cust{font-weight:700}
|
||||
.mono{font-family:var(--mono);font-size:12px;color:var(--ink-2)}
|
||||
.flow{margin-top:16px;padding:9px 12px;border-radius:8px;background:var(--soft);border:1px dashed var(--line);font-size:12px;color:var(--ink-3)}
|
||||
.flow b{color:var(--ink)}
|
||||
.card-foot{padding:13px 22px;border-top:1px solid var(--line-soft);font-size:11.5px;color:var(--ink-4);display:flex;justify-content:space-between;flex-wrap:wrap;gap:8px}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="page">
|
||||
<div class="card">
|
||||
|
||||
<header class="card-head">
|
||||
<div class="badge">验收</div>
|
||||
<div class="tit">
|
||||
<div class="kick">SS01 客户与市场 · I01 品牌形象与销售工具包管理 · 验收工单 2/3</div>
|
||||
<h1>内容初稿审核</h1>
|
||||
<div class="sub">收件人:<span data-slot="meta.task.owner">AM Lead(负责人)</span> · 关联任务:<span data-slot="meta.task.id">TASK-xxx</span></div>
|
||||
</div>
|
||||
<div class="side">
|
||||
<span class="tag">验收工单</span>
|
||||
<span class="step" data-slot="meta.phase">步骤 ②③④ 产出</span>
|
||||
<span class="deadline">最迟交回:<b data-slot="card.deadline">1 个工作日</b></span>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<div class="card-bd">
|
||||
|
||||
<p class="zone"><b>【AI 结论说明】</b>—— 结论是怎么算出来的</p>
|
||||
<div class="note">
|
||||
<p><b>AI 已完成的计算</b>:读取 L-01 宏观市场信号(产业趋势、市场依据),按 BT 层级草拟内容初稿——BT-01 侧重供货能力 / 资质文件、BT-02 侧重技术规格书 / 替代对照表 / 认证报告、BT-03 侧重系统方案白皮书 / 参考设计 / 成功案例;维护多语言版本(中 / 英 / 俄)。</p>
|
||||
</div>
|
||||
|
||||
<p class="zone"><b>【验收判据】</b>—— 你据此判断「通过 / 驳回」</p>
|
||||
<div class="criteria">
|
||||
<div class="c-title">判断这份内容初稿是否合格,请逐项核对</div>
|
||||
<ul>
|
||||
<li><b>品牌调性是否一致</b>:是否符合品牌「气质」标准(专业 / 可信赖 / 高效 / 本土化);</li>
|
||||
<li><b>技术内容是否准确</b>:规格、数据、认证信息有无错误;</li>
|
||||
<li><b>合规与多语言校对</b>:合规检查、多语言校对是否通过。</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<p class="zone"><b>【AI 产出的内容初稿】</b>—— 只读展示</p>
|
||||
<div class="tbl-wrap">
|
||||
<table>
|
||||
<thead><tr><th style="width:40px">#</th><th data-h="内容标题">内容标题</th><th data-h="内容类型">内容类型</th><th data-h="语言版本">语言版本</th><th data-h="BT 标签">BT 标签</th><th data-h="品牌调性">品牌调性</th></tr></thead>
|
||||
<tbody data-rows="out.draft">
|
||||
<tr>
|
||||
<td class="num">1</td>
|
||||
<td data-field="title" class="cust">RS358 车规 MCU 替代方案白皮书</td>
|
||||
<td data-field="content_type">系统方案白皮书</td>
|
||||
<td data-field="language" class="mono">中文 · Русский</td>
|
||||
<td data-field="bt_tag" class="mono">BT-03</td>
|
||||
<td data-field="brand_tone" class="mono">专业 · 可信赖</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="flow"><b>审批:</b>本工单只承载内容;「通过 / 驳回」请在对话区的【验收卡】中进行。通过后进入发布,驳回由 AI 重做。</div>
|
||||
|
||||
</div>
|
||||
|
||||
<footer class="card-foot">
|
||||
<span>I01 品牌形象与销售工具包管理 · 验收工单 2/3 · 内容初稿审核</span>
|
||||
<span style="font-family:'SF Mono',Menlo,Consolas,monospace">工单类型:验收 · <span data-slot="card.id">WO-I01-02</span></span>
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,123 @@
|
||||
<!doctype html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>验收工单 2 · 发布确认 · I01 品牌形象与销售工具包管理</title>
|
||||
<style>
|
||||
:root{
|
||||
--ink:#1f2329; --ink-2:#41464e; --ink-3:#646a73; --ink-4:#8f959e;
|
||||
--line:#dee0e3; --line-soft:#e8eaed; --soft:#f8f9fb;
|
||||
--brand:#3370ff; --brand-deep:#245bdb; --brand-soft:#e1eaff; --brand-wash:#f0f4ff;
|
||||
--ledger:#b23a2e; --ledger-soft:#f7e4e0; --ledger-line:#ecc5bd;
|
||||
--ok:#278717; --ok-soft:#e8f8e4; --danger:#d83931; --danger-soft:#feeae9;
|
||||
--mono:"SF Mono",Menlo,Consolas,monospace;
|
||||
}
|
||||
*{box-sizing:border-box}
|
||||
html,body{margin:0;padding:0}
|
||||
body{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;background:#eef1f6;color:var(--ink);font-size:14px;line-height:1.7;-webkit-font-smoothing:antialiased}
|
||||
.page{margin:0;padding:0}
|
||||
.card{background:#fff;overflow:hidden;border:0;border-radius:0;box-shadow:none}
|
||||
.card-head{display:flex;align-items:center;gap:14px;padding:18px 22px;border-bottom:2px solid var(--ink);background:linear-gradient(120deg,#fdf3f1 0%,#fff 55%,#fbf2f0 100%)}
|
||||
.badge{flex:none;width:44px;height:44px;border-radius:10px;display:grid;place-items:center;background:var(--ledger);color:#fff;font-weight:800;font-size:13px;box-shadow:0 6px 16px rgba(178,58,46,.25)}
|
||||
.tit{flex:1;min-width:0}
|
||||
.tit .kick{font-size:11px;letter-spacing:.08em;color:var(--ink-4);font-weight:700}
|
||||
.tit h1{margin:2px 0 0;font-size:19px;font-weight:800;line-height:1.3}
|
||||
.tit .sub{font-size:12px;color:var(--ink-3);margin-top:3px}
|
||||
.side{display:flex;flex-direction:column;align-items:flex-end;gap:6px;flex:none}
|
||||
.tag{font-size:11px;font-weight:800;padding:2px 10px;border-radius:999px;color:var(--ledger);background:var(--ledger-soft);border:1px solid var(--ledger-line)}
|
||||
.step{font-size:12px;color:var(--ink-3)}
|
||||
.deadline{font-size:12px;color:var(--ink-3)}
|
||||
.deadline b{color:var(--danger)}
|
||||
.card-bd{padding:20px 22px}
|
||||
.zone{font-size:11px;font-weight:800;letter-spacing:.12em;color:var(--ink-4);margin:0 0 8px}
|
||||
.zone b{color:var(--ink-3)}
|
||||
.note{border:1px solid var(--line);border-left:3px solid var(--ledger);border-radius:8px;background:var(--soft);padding:14px 16px;margin-bottom:16px}
|
||||
.note p{margin:0;font-size:13px;color:var(--ink-2)}
|
||||
.note b{color:var(--ink)}
|
||||
.criteria{border:1px solid var(--ledger-line);border-radius:10px;background:var(--ledger-soft);padding:13px 16px;margin-bottom:18px}
|
||||
.criteria .c-title{font-size:11px;font-weight:800;letter-spacing:.08em;color:var(--ledger);margin-bottom:7px}
|
||||
.criteria ul{margin:0;padding-left:18px;font-size:12.5px;color:var(--ink-2)}
|
||||
.criteria li{margin:4px 0}
|
||||
.criteria b{color:var(--ink)}
|
||||
.tbl-wrap{border:1px solid var(--line-soft);border-radius:10px;overflow:hidden}
|
||||
table{width:100%;border-collapse:collapse;font-size:13px}
|
||||
th{text-align:left;background:var(--soft);font-size:11px;letter-spacing:.05em;font-weight:800;color:var(--ink-3);padding:9px 12px;border-bottom:1px solid var(--line)}
|
||||
td{padding:11px 12px;border-bottom:1px solid var(--line-soft);vertical-align:top}
|
||||
tr:last-child td{border-bottom:0}
|
||||
.num{font-family:var(--mono);color:var(--ink-4);white-space:nowrap}
|
||||
.cust{font-weight:700}
|
||||
.mono{font-family:var(--mono);font-size:12px;color:var(--ink-2)}
|
||||
.before{color:var(--ink-4);text-decoration:line-through}
|
||||
.after{font-weight:800;color:var(--ok)}
|
||||
.flow{margin-top:16px;padding:9px 12px;border-radius:8px;background:var(--soft);border:1px dashed var(--line);font-size:12px;color:var(--ink-3)}
|
||||
.flow b{color:var(--ink)}
|
||||
.card-foot{padding:13px 22px;border-top:1px solid var(--line-soft);font-size:11.5px;color:var(--ink-4);display:flex;justify-content:space-between;flex-wrap:wrap;gap:8px}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="page">
|
||||
<div class="card">
|
||||
|
||||
<header class="card-head">
|
||||
<div class="badge">验收</div>
|
||||
<div class="tit">
|
||||
<div class="kick">SS01 客户与市场 · I01 品牌形象与销售工具包管理 · 验收工单 3/3</div>
|
||||
<h1>发布确认</h1>
|
||||
<div class="sub">收件人:<span data-slot="meta.task.owner">AM Lead(负责人)</span> · 关联任务:<span data-slot="meta.task.id">TASK-xxx</span></div>
|
||||
</div>
|
||||
<div class="side">
|
||||
<span class="tag">验收工单</span>
|
||||
<span class="step" data-slot="meta.phase">步骤 ⑤ 发布入库</span>
|
||||
<span class="deadline">最迟交回:<b data-slot="card.deadline">1 个工作日</b></span>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<div class="card-bd">
|
||||
|
||||
<p class="zone"><b>【AI 结论说明】</b>—— AI 做了什么</p>
|
||||
<div class="note">
|
||||
<p><b>AI 已完成</b>:内容初稿通过审核后,拟正式发布——更新版本号、状态流转(待发布 → 已发布)、登记适用场景与 BT 标签,写入 L-05 品牌内容库。</p>
|
||||
</div>
|
||||
|
||||
<p class="zone"><b>【验收判据】</b>—— 你据此判断「通过 / 驳回」</p>
|
||||
<div class="criteria">
|
||||
<div class="c-title">判断这次发布是否无误,请逐项核对</div>
|
||||
<ul>
|
||||
<li><b>版本号与状态是否正确</b>:版本号已更新、状态流转(草稿 → 已审核 → 已发布)无误;</li>
|
||||
<li><b>场景与 BT 标签是否登记完整</b>;</li>
|
||||
<li><b>多语言版本是否齐全</b>。</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<p class="zone"><b>【拟发布的内容】</b>—— 只读展示</p>
|
||||
<div class="tbl-wrap">
|
||||
<table>
|
||||
<thead><tr><th style="width:40px">#</th><th data-h="内容 ID">内容 ID</th><th data-h="标题">标题</th><th data-h="语言版本">语言版本</th><th data-h="版本号">版本号</th><th data-h="适用场景">适用场景</th><th data-h="状态流转">状态流转</th></tr></thead>
|
||||
<tbody data-rows="out.publish">
|
||||
<tr>
|
||||
<td class="num">1</td>
|
||||
<td data-field="content_id" class="mono">CT-2025-0088</td>
|
||||
<td data-field="title" class="cust">RS358 车规 MCU 替代方案白皮书</td>
|
||||
<td data-field="language" class="mono">中文 · Русский</td>
|
||||
<td data-field="version" class="mono">v1.2</td>
|
||||
<td data-field="scene">攻坚</td>
|
||||
<td data-field="status"><span class="before">待发布</span> → <span class="after">已发布</span></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="flow"><b>审批:</b>本工单只承载内容;「通过入库 / 驳回」请在对话区的【验收卡】中进行。通过即落账写入 L-05,本次内容生产结束。</div>
|
||||
|
||||
</div>
|
||||
|
||||
<footer class="card-foot">
|
||||
<span>I01 品牌形象与销售工具包管理 · 验收工单 3/3 · 发布确认</span>
|
||||
<span style="font-family:'SF Mono',Menlo,Consolas,monospace">工单类型:验收 · <span data-slot="card.id">WO-I01-03</span></span>
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
+44
-3
@@ -74,11 +74,17 @@ ADR-011 的「绑定先于策略」随岗位一起退场 —— 工作组快照
|
||||
|
||||
## 工作成果 · 文件
|
||||
|
||||
- **Markdown 只以原文纸面呈现**:富文本渲染(GFM 表格 / 内联 SVG)要 `react-markdown` +
|
||||
`remark-gfm` + `rehype-raw` 三个依赖,当前成果文件绝大多数是 HTML,先不引。
|
||||
引入前不假装渲染过 —— FileViewer 里以 `<pre>` 出原文。
|
||||
- ~~**Markdown 只以原文纸面呈现**~~(2026-08-23 销账):渲染接上了,而且**一个依赖都没引** ——
|
||||
基座那一段 `markdownBody`(`file-compose.ts`)把子集(标题 / 段落 / 有序无序列表 /
|
||||
GFM 表格 / 分隔线 / 粗体 / 行内代码)转成固定几种标签,全程转义,再走同一个沙箱容器渲。
|
||||
与下载到的 .html 是同一段函数出的,两处看着是同一份文件。
|
||||
`FileDoc.markdown.html` 缺席时仍退回 `<pre>` 原文 —— **不假装渲染过**这条没变。
|
||||
仍不认的:内联 SVG、图片、引用块、代码块。认得越多,docx / xlsx 那一侧要对应的越多。
|
||||
- **过程成果(deliverable)尚无来源**:活动还不发布 deliverable,所以成果文件目前
|
||||
只有活动推的那一屏。装配已接好(`desk.ts` 的 `results`),活动一产出就自动进列表。
|
||||
**注**:2026-08-23 起活动**另有一条产文件的路** —— 台账对象声明 `file` 段,件上挂
|
||||
`data-file-of`,人在工作区点资料名即开(I01 首用)。那条路不经 `deliverable`:
|
||||
资料的正身是台账那一行,文件是它的投影。两条路要不要并成一条,等第二个活动要用时再说。
|
||||
|
||||
## 沟通记录(占位)
|
||||
|
||||
@@ -952,3 +958,38 @@ FAE 从头到尾没被叫过,单子照样 released(去向还对)。案例②③
|
||||
落草稿层,主键靠行内 `data-col` 的主键格给出 —— 怀疑点在**主键补齐**那一段
|
||||
(A2 走查逮过一次「主键格没挂 data-col → 服务端按全表一致列补键 → 两行对到同一行」)。
|
||||
复现要碰运气,建议下次带着「保存请求体 + 落库后草稿行」两份留痕对着看。
|
||||
|
||||
## 2026-08-23 · E04 / I01 的件没有窄屏改版,只能横着滑
|
||||
|
||||
**现状**:两包的 `.jc-tbl-wrap` 已改成 `overflow-x: auto`(用户报「表格显示不全、不能左右
|
||||
滑动」),宽表在 586px 的工作区里滑得动。**但这只是没被裁掉,不是排得好** ——
|
||||
quote-* 六包各有一段 `@media (max-width: 960px)`:表头收起、**一行变一张卡**(`display:block`
|
||||
+ `td::before` 摆列名),在工作区那个宽度里根本不需要横滑。E04/I01 **一条媒体查询都没有**。
|
||||
|
||||
**为什么先只做滑动**:用户这一轮要的就是「能左右滑」,且两份件的结构是照 `e04-html` /
|
||||
`i01-html` 目标件 1:1 搬来的(宽表版式)。改成卡片流是版式决策,得先有目标件或用户点头。
|
||||
|
||||
**下次做的话**:照 quote-intake §表段那 20 行抄一份(注意 `@media` 要写在基础规则**之后**,
|
||||
A2 踩过「媒体查询被基础规则盖掉」),两包各自的编辑态孪生件与红带都要跟着验一遍。
|
||||
|
||||
## ~~2026-08-23 · 试跑单放行之后,资料文件点不开~~(当日销账)
|
||||
|
||||
**现象**:I01 的资料文件在办中点得开(审核那一屏逐份打开、下载都正常),
|
||||
**试跑单放行之后**再从工作成果里点同一份,404。
|
||||
|
||||
**根因**(不是 bug,是两条既有规矩撞在一起):资料这一行落在 `content.asset` 上,
|
||||
而它是**主数据**;试跑单放行时主数据只留在活动缓存、不落正式表
|
||||
(ledger 的 `simulation` 那段:免得试跑往品牌内容库里塞真客户/真资产)。
|
||||
文件是台账那一行的投影 —— 行不在,文件自然造不出来。**正式单不受此限**
|
||||
(放行合并进正式表,归档件上照旧点得开)。
|
||||
|
||||
**已做**:404 的话分两种说法(在办中「可能已被撤掉」/ 已收工「若是试跑单,主数据不落正式表」),
|
||||
不拿一句话把人支去翻一行根本不会在的东西。
|
||||
|
||||
**已治**(当日,用户「检查当前产出的附件是否存档」逼出来的):走的是上面那条 ①——
|
||||
放行落地**之前**(人的修订刚落回草稿层)把每一份资料现造成字节,存进
|
||||
`sys.task_asset_file`(迁移 0029),一单一行一份、重复放行覆盖。
|
||||
取文件那条路**存档优先**:归档件上点开的必须是他签字那一刻的那一份,
|
||||
而不是台账后来被下一单改成的样子。工作成果那一屏另起一摞「产出的资料」,
|
||||
点开即预览、可下载原件。冻结这件事就此定了:**归档的资料与台账脱钩** ——
|
||||
台账后来改了,归档件不改口。
|
||||
|
||||
@@ -126,6 +126,17 @@ activities/<id>/src/ ──(pnpm activities:build)──> dist/{manifest.json,in
|
||||
注意 `expect` 的边界:**我方写的注(如备注列)不算** —— 标了它 `_gaps` 恒大于 0,
|
||||
那条判据永远绿不了,门就废了。
|
||||
|
||||
- **一行还可以是一份资料文件**(对象声明的 `file` 段,2026-08-23 加,I01 首用):
|
||||
`file: { titleColumn, bodyColumn, formatColumn }` —— 正文一律 **Markdown 原文**
|
||||
落在 `bodyColumn`,格式列写 `md` / `html` / `docx` / `xlsx`。基座按它**现造**真字节
|
||||
(docx / xlsx 是自己打的 OOXML 包,Word / Excel 打得开),件上给资料名挂
|
||||
`data-file-of="主键列"` 人就点得开(详见《HTML报告生成规范》§4)。
|
||||
两条纪律:
|
||||
· **不另存一份文件** —— 资料的正身是台账那一行,另存即同一份事实两处各存一份;
|
||||
· 这一段**同时是授权面**,没声明的表点不开(基座 403),与「写看台账声明」同款。
|
||||
配套把 `bodyColumn` / `formatColumn` 都标 `required`:少一样,那一行就不是文件、
|
||||
只是一行标题 —— 而 `_missing` 数得出来,收步判据与放行门自然拦得住。
|
||||
|
||||
### 3.2 基座读数(机检的唯一合法数源)
|
||||
|
||||
任务视图顶层永远铺着这些数,**全部由基座现算,模型碰不着**:
|
||||
|
||||
Reference in New Issue
Block a user