整车需求 → VCU 软件需求 转换 Skill (v2.1 定版)
为矿用防爆锂离子蓄电池无轨胶轮车的 VCU 软件产品,把整车产品需求输入 Excel 中的"可承接"功能需求项自动转换为 VCU 软件需求清单条目,按 VCU软件产品需求清单.xlsx 模版格式追加。
版本:v2.1.1 定版(2026-08-13)· 6 轮迭代(含 1 次 J 列冗余修复)
版本说明(重要)
| 版本 | 主要变更 |
|---|---|
| v1.0 | 14 列基础搬运【段】原文(ASIL 按名称语义、含 15 列控制器边界) |
| v2.0 | 按赵工手编版结构 16 列对齐:拆出"需求背景/需求描述";列顺序调整(退出条件移到 VCU动作之前);列名"备注/风险";状态"草稿/评估中";列宽加宽;"轻模板+重搬运【段】原文"风格 |
| v2.1 | H/I/J 列细化(关键升级):<br>① H 触发条件 = 功能进入条件(场景+全部满足+1) 2) 3))<br>② I 退出条件 = 功能退出条件(场景退出+任一满足)<br>③ J VCU动作 = 进入/退出时 VCU 怎么执行(1) 2) 3)...步骤列表)<br>④ 内置 7 个功能语义标签的细化模板(钥匙上电/能量回收/防溜坡/档位防误/SOC 校准/转向提示/定速巡航)<br>⑤ 参考新能源汽车设计逻辑(汽车级 TTS SYN6288、上电流程、BMS 接触器时序) |
| v2.1.1 | J 列冗余修复(赵工截图反馈):命中 7 个标签细分模板后,移除重复追加的【开发应答】+【响应】段。<br>原因:细分模板已含完整"1) 2) 3)..."步骤,再追加【开发应答】造成冗余。开发应答信息已通过 P 列【备注/风险】+ K 列【控制器边界】体现。 |
输入 / 输出
输入
- 整车需求 Excel(必填):含 VR-XX 编号的功能清单,10 列定义见
references/schema.md§1 - VCU 软件需求模版(必填):用户提供的
VCU软件产品需求清单.xlsx模板(14/15/16 列均可,脚本自动处理) - 控制器清单(参考,已硬编码):18 个控制器 + 4 路 CAN,包括 ZD4 辅驾手咪、比例阀控制器、绝缘检测仪、声光报警器、面板开关控制器、辅助驾驶控制器 等
输出
- 默认路径(
--out未指定时):E:\BuddyOutput\VCU-Software-PRD\VCU_软件需求清单_v2.1_{YYYYMMDD}.xlsx - 自定义路径:
--out <file.xlsx>显式指定
命名约定(遵循 ~/.workbuddy/MEMORY.md)
- VCU 软件 PRD/需求清单:落盘到
E:\BuddyOutput\VCU-Software-PRD\ - 文件名带版本号 + 日期:
VCU_软件需求清单_v{版本号}_{YYYYMMDD}.xlsx
调用方式
python scripts/convert_vr_to_swr.py \
--input <整车产品需求输入.xlsx> \
--template <VCU软件产品需求清单.xlsx 模版> \
[--out <输出.xlsx>] \
[--start-no N] \
[--keep-preload]
参数说明:
- --input:必填,整车需求 Excel 路径
- --template:必填,VCU 软件需求清单模版 Excel 路径
- --out:可选,自定义输出路径
- --start-no:可选,手动指定 VCU-SWR-XXX 起点编号(3 位零填充)
- --keep-preload:可选,默认自动删除模板中 C~P 全空的预置条目,加此参数保留
依赖:Python 3.13+、openpyxl
工作流(v2.1)
Step 1: 加载输入 Excel
读取"工作表1",跳过第 1 行(表头)与第 2 行(示例行)。第 3 行起为实际数据。
Step 2: 加载模板 + 兼容表头
- 读取模版"工作表1"
- 清理预置占位:扫描 A 列以
VCU-SWR-开头的行,若 C~P 全空则删除(用--keep-preload保留) - 确保表头列数:若表头第 16 列不是"备注/风险",自动用
insert_cols(16)插入新列并设表头 - 定位最后有效行:用自定义函数扫 A/B 列最后非空行(避免
max_row被样式撑大的陷阱)
Step 3: 编号起点
扫描 A 列所有 VCU-SWR-XXX 编号,取最大值 +1 作为新行起点。
Step 4: 逐行转换 + 16 列全部填齐
- 过滤:开发应答含
可以实现/有条件实现/部分实现才纳入 - 段解析:用正则
【([^】]+)】拆解功能描述(E 列)的【背景/触发/响应/退出/验收】5 段 - 16 列全部填齐(v2.1 列定义):
| 列 | 字段 | 内容来源(v2.1) |
|---|---|---|
| A | 需求ID | VCU-SWR-{NNN}(递增) |
| B | 整车需求追溯 | 原 VR-XX |
| C | 功能规划分类 | 按 schema §3.4 表映射 |
| D | VCU子系统 | 按 schema §3.5 表映射 |
| E | 需求名称 | 原 D 列(功能名称) |
| F | 需求背景 | 搬运【背景】段原文 |
| G | 需求描述 | 搬运【响应】段 + "VCU应能够:"前缀(按 VR 是否含 VCU 角色判断) |
| H | 触发条件(功能进入条件) | ① 检测 7 个功能语义标签 → 命中后用细分模板(场景+全部满足+1)2)3));② 未命中 → 搬运【触发】段 |
| I | 退出条件(功能退出条件) | ① 检测 7 个标签 → 命中后用细分模板(场景退出+任一满足);② 未命中 → 搬运【退出】段 |
| J | VCU动作(进入退出时怎么执行) | ① 检测 7 个标签 → 命中后用细分模板(1)2)3)...步骤列表,参考新能源车辆设计逻辑);② 未命中 → 拼接【响应】+【开发应答】 |
| K | 控制器边界 | 子系统基础绑定 + 关键词触发控制器集合,编号列点格式:1) BMS(CAN3):... 2) MCU(CAN3):... |
| L | ASIL等级 | 按 schema §3.6 推断(功能名称为主、描述兜底) |
| M | 优先级 | 原 C 列(P1/P2/P3 原样) |
| N | 状态 | 默认 草稿;含"有条件实现"/"部分实现"则填 评估中 |
| O | 验收要点 | H 列(验收标准),若空取【验收】段 |
| P | 备注/风险 | ASIL 风险等级表 + 关键词触发列点(标定/液压/高压/SOC/制动热/热衰减等) |
Step 5: 写入新行
在最后有效行 +1 起追加新行,16 列对应填值。
Step 6: 应用样式
- 表头:填充
#1F4E78、白字加粗、居中、自动换行 - 数据行:填充
#FFF2CC、Microsoft YaHei 黑色、顶部对齐、自动换行 - 16 列按 schema §2.3 设置列宽(赵工手编实测列宽)
Step 7: 保存
保存到 --out 路径或默认路径。
关键转换规则摘要
7 个功能语义标签的细化模板(v2.1 核心)
| 标签 | 触发关键词 | 触发场景(全部满足) | 退出场景(任一满足) | VCU 步骤数 |
|---|---|---|---|---|
| 钥匙上电 | 钥匙/上电/off→start | 钥匙切换 + 下电状态 + 档位有效 + 无故障 | 成功/失败/超时 60s | 9 步 |
| 能量回收 | 能量回收/再生 | 滑行 OR 制动(双场景) | 踏板/档位/SOC 任一 | 9 步 |
| 防溜坡 | 防溜坡/HOLD/Hill Hold | 坡度≥3% + 档位 D/R + 松制动 | 油门达阈/切 P-N/超时 3min | 6 步 |
| 档位防误 | 档位+防误/错挡/异常 | 档位切换 + 制动 + 车速<5 | 切换完成/超时 10s | 5 步 |
| SOC 校准 | SOC 校准/满充 | SOC>95% + 充电连接 + 30 天未校 | 校准完成/充电断开 | 6 步 |
| 转向提示 | 转向+提示音 | 转向灯开关 + 车速>5 | 关闭/持续>30s | 5 步 |
| 定速巡航 | 定速/匀速/巡航 | 车速[20,60] + 主动开 + Ready | 制动/取消/超界/故障 | 7 步 |
完整步骤定义见 references/schema.md §3.10。
控制器边界(K 列)
基于 E:\QoderWork\VCU-PRD\控制器清单-20260804.xlsx 中 18 个控制器自动映射:
- 子系统基础绑定:每个子系统绑定必涉及控制器(如人机交互→ 仪表+声光报警器)
- 关键词触发:功能名称/描述含"制动"→ 比例阀控制器+电源控制板;含"坡"→ 油泵电机控制器+角度传感器;含"语音"→ ZD4(辅驾手咪)+ 仪表;含"钥匙"→ 面板开关控制器
- 输出格式:编号列点 + 角色 + CAN 总线
ASIL 推断策略
以功能名称为主,降低描述中背景故事干扰(v0.2 起):
- 防溜坡|HOLD|Hill Hold → D;档位.*防误|错挡|异常 / 扭矩限制|切断动力|跛行 → C
- 能量回收|再生制动|定速巡航|限速 → B;语音|提示|辅驾 / 校准|SOC|续航 → A
- 默认 → QM
过滤规则
仅承接开发应答含以下关键词:可以实现 / 有条件实现 / 部分实现;其他(如 不能实现 / — / 空)全部跳过。
特殊标记处理
- 输入 ID 列含
示例→ 跳过 - 整车需求追溯(B 列):保留原
VR-XX字面值 - VR-01 这类无具体数值时 → 自动按 v2.1 细化模板(VCU 步骤、退出条件按场景等)
输出报告格式
[INFO] 读取输入: <path>
[INFO] 输入包含 N 条数据行
[INFO] 表头已对齐到 16 列(赵工版结构)
[INFO] VCU-SWR 起点编号: NNN
[OK] VR-XX -> VCU-SWR-NNN (子系统=..., ASIL=...)
[SKIP] VR-YY 响应不可承接: ...
[SUMMARY] 转换 N1 条,跳过 N2 条
退出码:0 = 成功;1 = 输入/模板文件不存在、文件为空等致命错误。
迭代历史
| 版本 | 日期 | 主要变更 | 赵工反馈 |
|---|---|---|---|
| v0.1 | 2026-08-12 | 14 列基础搬运 | "输出格式按模版格式,内容按输入自动补全" |
| v0.2 | 2026-08-12 | ASIL 推断(名称语义为主) | "VR-03 是语音提示档位异常,怎么就 C 了?" |
| v0.3 | 2026-08-12 | 修复 max_row 陷阱 | "内容没填进去"(截图定位) |
| v1.0 draft 1 | 2026-08-12 | 自动清理模板预置占位 | "图片里前 3 行删了" |
| v1.0 draft 2 | 2026-08-12 | F/G/H/I 工程化 + N 风险 | "F/G/H/I 要强于整车需求,N 写风险与交底" |
| v1.0 | 2026-08-12 | 新增控制器边界列 | "加控制器边界列、F/G/H/I 强化" |
| v2.0 | 2026-08-13 | 按手编版 16 列对齐 | (赵工审核手编版后重写) |
| v2.1 | 2026-08-13 | H/I/J 列按功能语义细化(7 标签) | "触发=进入条件,退出=退出条件,VCU动作=进入退出时怎么执行" |
| v2.1.1 | 2026-08-13 | J 列冗余修复(命中标签后不再追加【开发应答】+【响应】) | "这块内容需要删除"(截图标记 VCU-SWR-001 J 列红框) |
参考文档
- 列定义与转换规则细节:
references/schema.md(含 §3.10 细化模板完整定义) - 转换脚本:
scripts/convert_vr_to_swr.py(v2.1 · 26 KB · 7 标签细分模板) - 关联 skill:
vcu-prd-generator(将 VCU-SWR 进一步展开为完整 PRD 文档) - 输入模版参考:
E:\WorkBuddy\Input\NDR\整车产品需求输入.xlsx(赵工 2026-08-13 迁移到此路径) - 输出模版参考:
E:\Browser\VCU软件产品需求清单.xlsx - 控制器清单:
E:\QoderWork\VCU-PRD\控制器清单-20260804.xlsx
经验沉淀(已写入 ~/.workbuddy/MEMORY.md)
- 跨版本能力:v1.0 → v2.0 重写保留了所有可控性规则;v2.0 → v2.1 仅升级 H/I/J 三列,其他 13 列保持稳定
- 3 列语义对齐:当用户给"功能语义"型反馈时(如"触发=进入条件"),不要全模板重写,按列改触发逻辑
- 行业细化模式:工程师喜欢"场景 + 全部满足/任一满足 + 步骤列表"格式,比抽象的【段】搬运更工程化
- WebSearch 借鉴:车载 TTS、电动车上电流程等有大量公开资料,可直接参考
付费调用协议(支付宝 AI 托管付费)
- 调用声明:本技能为付费技能,单次调用 ¥0.99,仅在被 Agent 网关支付放行后执行;免费探测请求一律不产生结果。
- 402 触发:未携带有效支付凭证的请求,返回 HTTP 402,响应体含
Payment-Needed: true与订单创建指引。 - 携带凭证重试:客户端支付成功后,携带
Payment-Proof: <order_id>头重新发起原请求。 - 履约确认:服务端校验凭证有效后执行技能,完成后返回
X-Payment-Status: complete,并回传 ack 确认帧。 - 订单持久化与幂等:每个 order_id 仅履约一次;重复请求返回首次履约结果缓存,不重复扣费。