小鹏汽车交付周期监控 Skill
目标
查询指定小鹏车型各配置版本的交付周期信息,以表格形式输出。交付周期单位为周。
技术实现
所有网络请求通过 scripts/ 目录下的 Node.js 脚本执行,使用 Bash 工具运行 node <script>.js。不使用 Python、curl 或其他方式。
脚本目录:.claude/skills/xpeng-china-delivery/scripts/
| 脚本文件 | 用途 | 用法 |
|---------|------|------|
| fetch_car_series.js | 获取全部车型列表 | node fetch_car_series.js |
| fetch_car_versions.js | 获取指定车型的配置版本列表 | node fetch_car_versions.js <carSeriesCode> |
| fetch_delivery_period.js | 查询指定配置的交付周期 | 见下方详细说明 |
fetch_delivery_period.js 用法
该脚本根据车型类型使用不同的 API 策略:
| 模式 | 用法 | 适用车型 | 输出格式 |
|------|------|---------|---------|
| Case 1 单版本 | node fetch_delivery_period.js <carVersionCode> <carSeriesCode> | GX、M03、P7 系列 | OK\|min\|max\|carName |
| Case 2 单版本 | node fetch_delivery_period.js <carVersionCode> <carSeriesCode> | 其他车型 | OK\|min\|max\|carName |
| Case 2 批量 | node fetch_delivery_period.js <carSeriesCode> --all | 其他车型(推荐) | versionCode\|OK\|min\|max\|carName(每行一个版本) |
脚本自动根据 carSeriesCode 判断使用 Case 1 还是 Case 2。
核心流程
步骤一:获取全部车型列表
运行 scripts/fetch_car_series.js,解析输出获取全部车型列表。
输出格式(每行一个):序号|carSeriesCode|carSeriesName
步骤二:识别用户想监控的车型
根据用户的问题识别用户想要监控哪几个(一个或多个)carSeriesCode。匹配时支持用户说车型名称(如"G6")或完整名称(如"2026款G6"),做模糊匹配。
如果用户没有提供具体车型,或提供的车型名无法匹配,则使用 AskUserQuestion 工具展示全部车型列表并让用户选择:
| 序号 | carSeriesCode | carSeriesName | |------|--------------|---------------| | 1 | GX | GX | | 2 | M03_2026 | M03 | | ... | ... | ... |
请告诉我您想查询哪些车型的交付周期?可以提供车型名称或序号,支持多个(如:1,3,5 或 GX,G7)。
步骤三:获取每个车型的配置版本列表
针对用户选中的每个 carSeriesCode,运行 scripts/fetch_car_versions.js <carSeriesCode>。
输出格式(每行一个):carVersionCode|carVersionName
步骤四:查询每个配置版本的交付周期
根据车型是否为 GX/M03/P7 系列,使用不同的查询方式。脚本会根据 carSeriesCode 自动判断。
Case 1:GX/M03/P7 系列车型
针对每个 carVersionCode,运行:
node scripts/fetch_delivery_period.js <carVersionCode> <carSeriesCode>
脚本内部逻辑:
- 请求
listSpecGroupAndSpecList?carVersionSn=${carVersionCode}获取可选配置规格列表 - 遍历每个配置组,在
specList中找到isDefault=1的默认规格,收集其carSpecificationCode - 组成排序后的
carSpecificationCode列表,作为该车型的默认配置规格(列表可以为空,表示无默认选中配置) - 请求
listCarInfoList?carVersionSn=${carVersionCode}获取 SKU 列表 - 对每个 SKU,提取其
specList中所有specCode组成列表并排序 - 找到
specCode列表与默认配置列表完全匹配的 SKU(应唯一) - 输出该 SKU 的
minDeliveryPeriod、maxDeliveryPeriod和carName
输出格式:OK|minDeliveryPeriod|maxDeliveryPeriod|carName 或 NO_DATA|0|0| 或 ERROR|0|0|
Case 2:其他车型
推荐方式(批量查询): 运行一次即可获取该车型所有版本的交付周期:
node scripts/fetch_delivery_period.js <carSeriesCode> --all
脚本内部逻辑:
- 请求
allInOne?carSeriesSn=${carSeriesCode}获取全部数据 - 从响应中提取
carSpecGroupVoMap(配置规格)和carInfoVoMap(SKU 信息),两者均以carVersionCode为 key - 对每个
carVersionCode:- 从
carSpecGroupVoMap中找到默认配置规格(同 Case 1 的匹配逻辑) - 从
carInfoVoMap中找到匹配的 SKU - 输出该版本的交付周期
- 从
输出格式(每行一个版本):carVersionCode|OK|minDeliveryPeriod|maxDeliveryPeriod|carName 或 carVersionCode|NO_DATA|0|0|
备选方式(单版本查询): 也可按版本逐一查询:
node scripts/fetch_delivery_period.js <carVersionCode> <carSeriesCode>
输出格式同 Case 1:OK|minDeliveryPeriod|maxDeliveryPeriod|carName 或 NO_DATA|0|0| 或 ERROR|0|0|
如何选择 Case
脚本自动判断,规则如下:
- Case 1:
carSeriesCode以GX、M03、P7(不区分大小写)开头 - Case 2:其他所有车型
步骤五:输出结果
以表格形式输出每个车型下的交付周期。脚本输出中最后一个 | 后的字段即为 carName,必须将完整的 carName 原样输出到表格的"车辆名称"列,不得省略或截断。
| 车型 | 配置版本 | 车辆名称 | 最短交付周期 | 最长交付周期 | |------|---------|---------|------------|------------| | GX | 1585 四驱 Max | GX 1585 四驱 Max 仰望绿 | 4周 | 6周 | | GX | 665 Max | GX 665 Max 星云白 | 6周 | 8周 |
执行约束
- 严格遵守流程:按步骤一至步骤五顺序执行,不跳过任何步骤。
- 单位为周:交付周期单位是周,不要理解为"天"或做任何转换。
- 默认配置匹配:交付周期取默认配置规格对应 SKU 的数据,不是取 SKU 列表第一个元素。
- 统一使用 Node.js 脚本:所有请求通过
scripts/下的脚本执行,不使用 curl 或 Python。 - Case 2 优先批量:对于非 GX/M03/P7 车型,优先使用
--all模式一次获取全部版本,减少 API 请求次数。 - 容错:某个车型请求失败时,输出该车型查询失败,继续查询其他车型,不中断整个流程。
- 完整输出 carName:脚本输出的最后一个字段是
carName,输出表格时必须将其完整填入"车辆名称"列,不得省略、截断或简写。
异常处理
| 异常场景 | 处理方式 | |---------|---------| | navigationBar API 请求失败 | 报告网络错误,无法继续 | | 用户提供的车型不在列表中 | 提示用户重新选择,展示完整列表 | | 配置页 HTML 中未找到版本信息 | 该车型输出"暂无配置信息" | | listSpecGroupAndSpecList / allInOne API 返回失败 | 该配置输出"查询失败",继续其他配置 | | listCarInfoList API 返回空 data | 该配置输出"N/A" | | 默认配置未匹配到任何 SKU | 该配置输出"N/A" | | listCarInfoList API 请求失败 | 该配置输出"查询失败",继续其他配置 |
Scan to join WeChat group