Files
shanxia2.0/docs/superpowers/specs/2026-10-13-mini-pl-driver-plan-copy-product-lines-design.md
T
wuzilongandCursor 36d27416d3 docs: specify driver plan copy text product line split
Define three-line product format (产品信息 / 计划数量 / 实际数量) for miniprogram copy-to-group only.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-13 20:34:19 +08:00

3.3 KiB
Raw Blame History

小程序 · 司机运输计划单「复制发群」产品行拆分

日期: 2026-10-13
状态: 已确认(待用户审阅本文件后进入实现计划)
范围: 仅 miniprogram/utils/plDriverPlanCopy.js 的产品行输出格式
前置: docs/superpowers/specs/2026-10-12-mini-pl-driver-plan-copy-text-enrich-design.md
关系: 本设计仅替换前置文档中的「产品行格式(D5)」;头信息、区块顺序、客户分段、空值、附件、入口流程等决策仍有效。

1. 目标

群聊扫读时,将每个产品的「产品信息 / 计划数量 / 实际数量」拆成三行,避免单行过长。

2. 已确认决策

# 项 决策
D1 范围 只改小程序 plDriverPlanCopy.js;不改管理端、不改列表/详情入口
D2 多产品间距 方案 A:连续三行一组,组与组之间不空行
D3 实现路径 只改产品行生成(formatProductLine → 输出三行);appendInfoSection / 头信息 / 剪贴板流程不变
D4 空值 仍统一 —(数量空时该侧写 —,不拼单位)
D5 无产品站 仍保留 {客户名}: + 下一行 - —(单行占位,不拆三行)

3. 非目标

  • 不修改 driver-plan/list.vue / detail.vue
  • 不修改后端 API / schema
  • 不改加油登记、ETC、管理端等其它「复制发群」
  • 不新增永久测试文件(可用一次性 Node 断言脚本验证后删除,与前置计划一致)

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 产品三行格式

- 产品信息:{产品名称}  {规格型号}  {包装规格}
- 计划数量:{数量}[ {单位}]
- 实际数量:{数量}[ {单位}]
  • 名称 / 型号 / 包装之间仍为两个空格
  • 数量与单位之间一个空格(有单位时);无单位只写数字或 —
  • 字段映射与前置文档 §4.1 相同(productName / model / packageSpec / planQty|quantity / actualQty / unit)

4.2 边界(继承前置,仅产品行形态变化)

情况 行为
无 delivery / load stop 区块标题 + 下一行 —
某站无产品 {客户名}: + - —
客户名为空 —:
产品字段为空 对应位置写 —(如 产品信息:— — —;数量行写 —)

5. 实现要点

  • formatProductLine(product) 改为返回 字符串数组(长度 3),或等价地由调用方 push 三行;appendInfoSection 对每个 product 展开 push。
  • buildDriverPlanCopyText / copyDriverPlanToClipboard 对外签名不变。
  • 验证:一次性脚本用定稿实例与「无站点」样例断言输出完全一致后删除脚本。