Files
shanxia2.0/docs/superpowers/specs/2026-10-12-mini-pl-driver-plan-copy-text-enrich-design.md
T
wuzilongandCursor 272dfc0d5e docs: specify enriched driver plan copy-to-group text format
Capture the confirmed WeChat paste layout (vehicle, compact product lines, load/delivery sections by customer) so implementation can follow a single source of truth.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-12 22:10:47 +08:00

4.6 KiB
Raw Blame History

小程序 · 司机运输计划单「复制发群」文案 enrichment

日期: 2026-10-12
状态: 已确认
范围: 仅 miniprogram/utils/plDriverPlanCopy.js 的 buildDriverPlanCopyText
前置:

  • docs/superpowers/specs/2026-09-28-mini-pl-driver-plan-copy-wechat-design.md(入口与剪贴板模式)
  • docs/superpowers/specs/2026-10-09-pl-plan-copy-seq-design.md(序号 ensure)
    关系: 本设计替换上述前置文档中的「复制文案模板 / 装送货量行格式」;入口交互、序号发号、不含附件等决策仍有效。

1. 目标

客户要求群聊文案更易扫读:增加车牌与产品明细(名称、规格型号、包装规格、计划数量、实际数量),装/送货区块改名为「装货信息 / 送货信息」,并按客户分段列出产品。

2. 已确认决策

# 项 决策
D1 实现路径 方案 1:只改 buildDriverPlanCopyText;不改后端、不改详情 UI、不加单测文件
D2 头信息 保留 序号、计划编号;增加 车辆(车牌 licensePlate);不再在头信息输出装货方/送货方#N 列表
D3 区块顺序 先 送货信息:,后 装货信息:
D4 分段 按 stop 客户名分段:先写 {客户名}:,再列该站产品;装货与送货对称
D5 产品行 紧凑单行:产品名称 规格型号 包装规格 计划数量:… 实际数量:…(字段间两个空格)
D6 空值 统一 —
D7 附件 仍不包含
D8 数据来源 仍用详情 GET(列表复制先拉详情);字段已在详情中存在

3. 非目标

  • 不修改 driver-plan/list.vue / detail.vue 的按钮与弹窗流程(除非工具函数签名被迫变更——本设计不变更签名)
  • 不修改后端 API / schema
  • 不改详情页展示文案(「计划 / 规格型号」等 UI)
  • 不改加油登记、ETC 等其它「复制发群」
  • 不新增测试文件

4. 复制文案模板(定稿)

序号:128
计划编号:YSJH20260409001
车辆:沪A12345
送货信息:
甲客户:
- 工业酒精  95%  吨桶  计划数量:12 吨  实际数量:11.9 吨
乙客户:
- 工业酒精  95%  吨桶  计划数量:8 吨  实际数量:7.9 吨
- 甲醇  99.9%  吨桶  计划数量:2 吨  实际数量:2 吨
装货信息:
某某化工厂:
- 工业酒精  95%  吨桶  计划数量:20 吨  实际数量:19.8 吨
- 甲醇  99.9%  吨桶  计划数量:2 吨  实际数量:2 吨

4.1 字段映射

文案 来源
序号 copySeqNo / copy_seq_no(调用方 ensure 后传入)
计划编号 planNo / plan_no
车辆 licensePlate / license_plate
客户名 stop.customerName / customer_name
产品名称 product.productName / product_name
规格型号 product.model
包装规格 product.packageSpec / package_spec
计划数量 product.planQty,缺省则 quantity;附 unit
实际数量 product.actualQty / actual_qty;附 unit

4.2 产品行格式

- {产品名称}  {规格型号}  {包装规格}  计划数量:{数量}[ {单位}]  实际数量:{数量}[ {单位}]
  • 数量与单位之间一个空格(有单位时);无单位只写数字或 —
  • 数量为空 → 该侧写 —(可带或不带单位:统一为 —,不拼单位)

4.3 边界

情况 行为
无 delivery stop 输出 送货信息: + 下一行 —
无 load stop 输出 装货信息: + 下一行 —
某站无产品 保留 {客户名}:,下一行 - —
客户名为空 写 —:
多装货站 与送货相同,按详情顺序分段
stop 顺序 以详情返回的 stops 数组顺序为准(delivery / load 各自过滤后保持相对顺序)

5. 实现结构

文件 职责
miniprogram/utils/plDriverPlanCopy.js 重写 buildDriverPlanCopyText;copyDriverPlanToClipboard 不变

列表 / 详情继续调用现有 copyDriverPlanToClipboard;列表仍:get → ensureCopySeq → 合并 copySeqNo → 复制。

6. 验收

  1. 一装两送多产品:与 §4 定稿示例结构一致
  2. 列表「复制发群」与详情保存后弹窗复制文案一致
  3. 缺车牌 / 缺规格 / 未填实际数量 → 对应位置 —
  4. 无送货或无装货 → 对应区块标题下为 —
  5. 剪贴板不含附件 URL

7. 风险

纯前端字符串拼接;字段缺失只影响展示为 —,不影响回执保存。