This repository has been archived on 2026-09-13. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
BPOS-MVP/docs/SS01-客户与市场/e04-html/E04-执行工单-02-执行回执.html
xcsandClaude Opus 5 0aa2fc11b0 资料文件真产出来了;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
2026-08-24 10:26:45 +08:00

151 lines
8.5 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!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>