Token导航 LogoToken导航TokenDH.com
研究检索需要联网clawhub未标认证来源可访问clear审计提醒

price-import价格进口

Agent Skill

price-import 用于查找、检索和筛选相关信息,适合在 OpenClaw 中需要根据关键词、任务场景或来源线索快速定位候选结果时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

总安装

2,717

周安装

111

GitHub Stars

公开资料未说明

下载量

879
OpenClaw

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

MIT-0

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:price-import(价格进口)
来源仓库:https://github.com/young0529/price-import
安装命令:
openclaw skills install price-import
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 OpenClaw 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

ClawHubOpenClaw
openclaw skills install price-import

简介

价易通价格导入技能。支持图片/文本/Excel 原始数据,自动转换、匹配商品库、确认后导入。

SKILL.md

name
price-import
description
价易通价格导入技能。支持图片/文本/Excel 原始数据,自动转换、匹配商品库、确认后导入。
trigger
/import

价易通 - 价格导入技能

⚠️ 触发条件

必须使用 /import 命令触发,避免误处理群聊中的无关图片。

命令说明
/import导入价格(可附带图片/文本/Excel)
/import help显示使用说明
/import status查看最近导入记录
/import rules查看/修改匹配规则
/import cancel取消当前导入任务
/fix提交程序功能变动或缺陷修复需求
/fix status查看修复进度
/fix list查看待处理需求清单

示例

  • /import + 发送图片
  • /import 这张价格表:iPhone 17 Pro 256G ¥6500
  • /import help

核心流程

1. 接收原始数据(图片/文本/Excel)
   ↓
2. 数据转换(图片/文本 → Excel)
   ↓
3. 拉取商品库(调用 API 获取所有商品)
   ↓
4. 智能匹配(根据商品名 + 规格匹配)
   ↓
5. 输出匹配报告(已识别/未识别)
   ↓
6. 用户确认(导入/修改规则/再次匹配)
   ↓
7. 执行导入(调用 API 写入数据)
   ↓
8. 验证结果(价格/记录/原始数据)

步骤 1:接收原始数据

触发条件:必须收到 /import 命令才开始处理

支持的格式

  • 图片:价格表截图、照片(模型直接识别)
  • 文本:复制的价格列表、聊天记录
  • Excel:已整理好的价格表

处理方式

  • 图片 → 模型视觉能力识别 → 提取文字 → 转换为标准格式
  • 文本 → 直接解析
  • Excel → 直接解析

说明:使用 qwen3.5-plus 模型的多模态能力,无需第三方 OCR 接口

⚠️ 注意:不带 /import 命令的图片/文本,本技能不处理


步骤 2:拉取商品库

调用接口GET /api/products

返回格式

[
  {
    "id": 1,
    "name": "iPhone 17 Pro",
    "category": "手机",
    "brand": "苹果"
  },
  {
    "id": 2,
    "name": "iPhone 17 Pro Max",
    "category": "手机",
    "brand": "苹果"
  }
]

同时获取规格列表GET /api/specifications?product_id={id}


步骤 3:智能匹配

匹配规则

匹配条件:商品名 + 规格完全匹配

规格标准化规则(必须先执行!)

型号名称统一

  • iPhone 16 MAXiPhone 16 Pro Max
  • iPhone 17 MAXiPhone 17 Pro Max
  • 以商品库中的名称为基准

⚠️ 商品名称不带容量

  • 商品库格式:iPhone 17 Pro(名称不含容量)
  • 容量在规格中:256G 银色 渠道版
  • 导入时需从商品名中提取容量,放入规格

容量单位统一

  • TBGTB(如 1TBG 改为 1TB)

规格后缀统一

  • 渠道版 = 全国渠道版 = 默认(不标注)
  • 预激活 = 官网预激活 = 标注"预激活"

颜色规则

  • 保留原始颜色名称
  • 黑色/蓝色映射到深蓝色(如用户指定)

匹配逻辑

for item in import_data:
    # 标准化规格
    normalized_spec = normalize_spec(item.spec)
    
    # 匹配商品库
    matched = product_library.find(
        name=item.name,
        spec=normalized_spec
    )
    
    if matched:
        result.matched.append(item)
    else:
        result.unmatched.append({
            "item": item,
            "reason": "商品库中无此商品或规格"
        })

步骤 4:输出匹配报告

报告格式

📊 匹配结果报告

📌 报价信息
- 渠道:武汉汉堡苹果
- 报价时间:2026-03-25 10:00
- 原始数据:价格表_20260325.xlsx

📌 已识别商品(共 X 条)
├── iPhone 17 Pro(5 条)
│   ├── 256G 银色 - ¥6500
│   ├── 512G 黑色 - ¥7200
│   └── ...
├── iPhone 17 Pro Max(3 条)
│   ├── 256G 白色 - ¥7500
│   └── ...
└── ...

📌 未识别商品(共 Y 条)
├── iPhone 19 Ultra(2 条)
│   ├── 256G 黑色 - ¥9999
│   ├── 原因:商品库中无此商品
│   └── 512G 白色 - ¥10999
│       原因:商品库中无此商品
└── ...

💡 建议操作:
1. 回复"导入"执行导入
2. 回复"添加新商品"将未识别商品添加到商品库
3. 回复"修改规则:XXX 映射到 YYY"更新匹配规则
4. 回复"重新匹配"使用新规则再次匹配

步骤 5:用户确认

用户可选择的回复

回复操作
导入导入已匹配的商品价格
全部导入导入所有数据(包括未识别的,会先创建商品)
添加新商品将未识别商品添加到商品库后导入
修改规则:A 映射到 B更新匹配规则后重新匹配
重新匹配使用当前规则再次匹配
取消取消本次导入

步骤 6:执行导入

调用接口

批量导入POST /api/prices/batch-import

{
  "items": [
    {
      "product_id": 1,
      "price": 6500,
      "source": "武汉汉堡苹果",
      "price_time": "2026-03-25T10:00:00",
      "specification": "256G 银色"
    }
  ],
  "source": "武汉汉堡苹果",
  "price_time": "2026-03-25T10:00:00",
  "batch_no": "B20260325001"
}

上传原始数据POST /api/import-logs/{batch_no}/attachment

创建新商品(如需要)

POST /api/products/batch-create

{
  "products": [
    {
      "name": "iPhone 19 Ultra",
      "category": "手机",
      "brand": "苹果"
    }
  ]
}

步骤 7:验证结果

验证清单

  1. 价格是否更新

- 调用 GET /api/prices?source={source}&time={time} - 检查返回数量是否与导入数量一致

  1. 导入记录是否存在

- 调用 GET /api/import-logs/{batch_no} - 检查批次记录状态

  1. 原始数据是否上传

- 检查附件链接是否可访问 - 验证文件完整性

验证输出

✅ 导入验证完成!

✓ 价格记录:103 条(正确)
✓ 导入批次:B20260325001(已创建)
✓ 原始数据:价格表_20260325.xlsx(已上传)
✓ 新商品:3 个(已添加)

查看详情:http://47.96.183.13/price/import-logs.html

匹配规则管理

规则存储

规则存储在 ~/.openclaw/workspace/price-import/matching-rules.json

{
  "model_aliases": {
    "iPhone 16 MAX": "iPhone 16 Pro Max",
    "iPhone 17 MAX": "iPhone 17 Pro Max"
  },
  "capacity_units": {
    "TBG": "TB"
  },
  "spec_suffixes": {
    "渠道版": "",
    "全国渠道版": "",
    "预激活": "官网预激活"
  },
  "color_mapping": {
    "黑色": "深蓝色",
    "蓝色": "深蓝色"
  }
}

更新规则

当用户说 修改规则:XXX 映射到 YYY 时:

  1. 解析用户的规则描述
  2. 更新 matching-rules.json
  3. 重新执行匹配
  4. 输出新的匹配报告

API 接口清单

接口方法说明
/api/productsGET获取所有商品
/api/specificationsGET获取商品规格
/api/prices/batch-importPOST批量导入价格
/api/products/batch-createPOST批量创建商品
/api/import-logsGET获取导入记录
/api/import-logs/{batch_no}GET获取批次详情
/api/import-logs/{batch_no}/attachmentPOST上传原始数据
/api/import-logs/{batch_no}/rollbackPOST撤销导入

错误处理

常见问题

  1. 商品库为空

- 提示用户先添加商品或确认是否批量创建

  1. 匹配率过低(<50%)

- 提示用户检查数据格式或更新匹配规则

  1. API 调用失败

- 重试 3 次 - 仍失败则提示用户检查服务状态

  1. 导入部分失败

- 记录失败的条目 - 输出失败原因 - 支持单独重试


示例对话

用户:[发送图片:价格表截图]

系统:🔄 正在识别图片内容...
      📊 识别完成!共 105 条数据
      
      🔄 正在拉取商品库...
      📦 商品库中有 520 个商品
      
      🔄 正在匹配...
      
      📊 匹配结果报告
      
      📌 报价信息
      - 渠道:武汉汉堡苹果
      - 报价时间:2026-03-25 10:00
      
      📌 已识别商品(共 98 条)
      ├── iPhone 17 Pro(45 条)
      ├── iPhone 17 Pro Max(35 条)
      └── iPhone 16 系列(18 条)
      
      📌 未识别商品(共 7 条)
      ├── iPhone 19 Ultra(5 条)
      │   原因:商品库中无此商品
      └── 华为 Mate 70(2 条)
          原因:商品库中无此商品
      
      💡 建议操作:
      1. 回复"导入"执行导入
      2. 回复"添加新商品"将未识别商品添加到商品库
      3. 回复"修改规则:XXX 映射到 YYY"更新匹配规则

用户:添加新商品

系统:✅ 已添加 2 个新商品到商品库
      ✅ 导入完成!
      
      批次号:B20260325001
      导入价格:105 条
      新增商品:2 个
      
      ✅ 验证通过!
      查看详情:http://47.96.183.13/price/import-logs.html

命令处理逻辑

/import (无参数)

  • 回复:请发送价格表(图片/文本/Excel)
  • 等待用户发送数据后进入步骤 2

/import help

  • 回复:显示完整使用说明(本文件内容摘要)

/import status

  • 调用:GET /api/import-logs?limit=10
  • 回复:最近 10 条导入记录

/import rules

  • 读取:~/.openclaw/workspace/price-import/matching-rules.json
  • 回复:当前匹配规则
  • 支持:/import rules set XXX=YYY 添加新规则

/import cancel

  • 清空当前待导入数据
  • 回复:已取消本次导入任务

/fix [需求描述]

  • 接收用户需求,进行分析并生成需求文档
  • 示例:/fix 导入的渠道名称老是错,希望能统一

/fix status [需求编号]

  • 查看指定需求的处理进度
  • 示例:/fix status REQ-PPS-20260326-001

/fix list

  • 查看所有待处理需求清单
  • 显示:编号、标题、优先级、状态、提交时间

🔧 程序功能变动/缺陷修复指令 (/fix)

指令说明

用途:当用户发现程序 bug、提出新功能需求、或需要优化现有功能时使用

处理流程

1. 接收用户需求
   ↓
2. 需求分析与整理
   - 问题描述/功能描述
   - 影响范围
   - 优先级评估
   ↓
3. 任务拆分
   - 程序虾负责的任务(后端/API/数据库)
   - 本技能负责的任务(导入逻辑/匹配规则)
   ↓
4. 发送用户确认
   - 详细需求文档
   - 任务清单
   - 预计影响
   ↓
5. 等待用户确认
   ↓
6. 生成程序虾任务清单
   - 详细技术任务
   - 验收标准
   ↓
7. 等待程序虾完成
   ↓
8. 核实与验收
   - 功能测试
   - 结果反馈

需求分析模板

当收到用户需求时,按以下格式整理:

## 📋 需求文档

### 问题描述
[用户反馈的原始问题或功能需求]

### 影响范围
- 受影响的功能模块
- 受影响的数据范围
- 受影响的用户群体

### 优先级
- 🔴 高:影响核心功能/数据准确性
- 🟡 中:影响使用体验
- 🟢 低:优化建议

### 任务拆分

#### 程序虾负责(后端/服务)
- [ ] 任务 1:...
- [ ] 任务 2:...

#### 本技能负责(导入/匹配)
- [ ] 任务 1:...
- [ ] 任务 2:...

### 验收标准
1. [具体的验收条件 1]
2. [具体的验收条件 2]
3. ...

程序虾任务清单格式(MD 文件)

当需要程序虾处理时,生成标准 MD 文件:

文件命名REQ-{系统缩写}-{YYYYMMDD}-{序号}.md

文件路径~/.openclaw/workspace/requirements/

# 需求文档 - {需求标题}

## 📋 基本信息

| 字段 | 值 |
|------|-----|
| **需求编号** | REQ-PPS-20260326-001 |
| **所属系统** | 价易通 - 商品报价管理系统 |
| **提交时间** | 2026-03-26 06:44 |
| **提交人** | 价易通导入技能 |
| **优先级** | 🔴 高 / 🟡 中 / 🟢 低 |
| **状态** | 待确认 / 开发中 / 已完成 / 已验收 |

---

## 🎯 需求概述

### 问题描述
[用户反馈的原始问题或功能需求描述]

### 业务背景
[为什么需要这个功能/修复,解决什么业务问题]

### 影响范围
- **功能模块**:[受影响的功能模块]
- **数据范围**:[影响的数据表/数据范围]
- **用户影响**:[影响哪些用户/使用场景]

---

## 📝 详细需求

### 当前状态(As-Is)
[描述当前系统的行为或问题]

### 期望状态(To-Be)
[描述期望的行为或功能]

### 功能变动说明

#### 模块 1:[模块名称]
- **变动类型**:新增 / 修改 / 删除
- **变动位置**:[具体文件/API/表名]
- **变动说明**:[详细的技术描述]
- **接口变更**:
  - 新增接口:`POST /api/xxx`
  - 修改接口:`PUT /api/yyy` - 新增参数 `xxx`
- **数据库变更**:
  - 新增表:`xxx_table`
  - 修改表:`yyy_table` - 新增字段 `zzz`

#### 模块 2:[模块名称]
...

---

## ✅ 验收标准

### 功能测试
- [ ] 测试用例 1:[具体测试步骤和期望结果]
- [ ] 测试用例 2:[具体测试步骤和期望结果]
- [ ] 测试用例 3:[具体测试步骤和期望结果]

### 数据验证
- [ ] 验证点 1:[具体的数据验证标准]
- [ ] 验证点 2:[具体的数据验证标准]

### 边界条件
- [ ] 边界测试 1:[边界情况描述]
- [ ] 边界测试 2:[边界情况描述]

### 回归测试
- [ ] 确保不影响功能 A
- [ ] 确保不影响功能 B

---

## 📎 附件

### 参考数据

{ "示例数据": "如有需要,提供示例 JSON" }


### 相关文档
- [相关 API 文档链接]
- [相关设计文档链接]

---

## 📝 变更记录

| 日期 | 版本 | 变更内容 | 变更人 |
|------|------|---------|--------|
| 2026-03-26 | v1.0 | 初始版本 | 价易通导入技能 |

---

## 🔧 开发备注

[程序虾填写]
- **开发开始时间**:
- **开发完成时间**:
- **实际工作量**:
- **技术难点**:
- **注意事项**:

---

## ✅ 验收记录

[价易通导入技能填写]
- **验收时间**:
- **验收结果**:通过 / 不通过
- **测试报告**:
- **验收人**:

文件生成流程

  1. 创建目录(如不存在):
   mkdir -p ~/.openclaw/workspace/requirements
  1. 生成需求文档

- 文件名:REQ-{系统缩写}-{YYYYMMDD}-{序号}.md - 系统缩写: - PPS = Product Price System(价易通商品报价系统) - 其他系统 = 按实际系统命名

  1. 发送用户确认 ⚠️:

- 发送完整需求文档给用户 - 说明问题、影响范围、任务拆分、验收标准 - 等待用户确认后再发送给程序虾 - 技能相关修改也必须经用户确认

  1. 用户确认后

- 标记状态为"待开发" - 更新 registry.json - 发送给程序虾处理

  1. 程序虾开发完成

- 程序虾生成执行反馈文档(MD 格式) - 标注对应的需求编号 - 用户验收测试

  1. 验收通过后

- 更新状态为"已验收" - 填写验收记录 - 归档需求和反馈文档


需求文件管理规范

目录结构

~/.openclaw/workspace/requirements/
├── README.md                    # 需求管理说明
├── registry.json                # 需求注册表(所有需求的索引)
│
├── PPS/                         # 价易通 - 商品报价管理系统
│   ├── REQ-PPS-20260326-001.md  # 具体需求文档
│   ├── REQ-PPS-20260326-002.md
│   └── archive/                 # 已归档需求
│       ├── 2026-03/
│       └── 2026-04/
│
├── {SYSTEM}/                    # 其他系统目录
│   ├── REQ-{SYS}-YYYYMMDD-001.md
│   └── archive/
│
└── templates/                   # 需求文档模板
    ├── standard.md              # 标准功能需求模板
    ├── bugfix.md                # Bug 修复需求模板
    └── optimization.md          # 优化需求模板

系统目录命名

目录名系统名称说明
PPSProduct Price System价易通 - 商品报价管理系统
{系统缩写}按实际系统命名新增系统时创建对应目录

需求编号规则

  • 格式REQ-{系统缩写}-{日期}-{序号}
  • 示例REQ-PPS-20260326-001
  • 序号规则:每个系统每日独立计数,从 001 开始

需求注册表(registry.json)

{
  "systems": {
    "PPS": "价易通 - 商品报价管理系统"
  },
  "requirements": [
    {
      "id": "REQ-PPS-20260326-001",
      "system": "PPS",
      "title": "渠道名称统一与别名映射",
      "priority": "🟡 中",
      "status": "待确认",
      "created_at": "2026-03-26T06:44:00",
      "file_path": "PPS/REQ-PPS-20260326-001.md"
    }
  ]
}

状态流转

待确认 → 待开发 → 开发中 → 已完成 → 已验收
    ↓        ↓                  ↓
  取消     暂停              不通过

文件版本控制

  • 需求文档变更时更新版本号(v1.0 → v1.1 → v2.0)
  • 重大变更升主版本,小变更升次版本
  • 变更记录表中记录每次变更

归档规则

  • 活跃需求:存放在系统根目录(如 PPS/
  • 已验收需求:按月移入归档目录(如 PPS/archive/2026-03/
  • 保存期限:永久(作为系统演进历史)

新增系统流程

当需要支持新系统时:

  1. 创建系统目录
   mkdir -p ~/.openclaw/workspace/requirements/{SYS}/archive
  1. 更新注册表
   {
     "systems": {
       "PPS": "价易通 - 商品报价管理系统",
       "{SYS}": "新系统名称"
     }
   }
  1. 通知用户
   ✅ 已注册新系统:{SYS} - {系统名称}
   📁 目录:requirements/{SYS}/
   📝 需求编号:REQ-{SYS}-YYYYMMDD-001

执行反馈文档格式

程序虾完成任务后,必须生成执行反馈文档:

文件命名FEEDBACK-{需求编号}.md

文件路径~/.openclaw/workspace/requirements/{系统}/feedback/

# 执行反馈 - {需求标题}

## 📋 基本信息

| 字段 | 值 |
|------|-----|
| **反馈编号** | FEEDBACK-REQ-PPS-20260326-001 |
| **关联需求** | REQ-PPS-20260326-001 |
| **所属系统** | 价易通 - 商品报价管理系统 |
| **提交时间** | 2026-03-26 10:00 |
| **提交人** | 程序虾 |
| **状态** | 已完成 / 部分完成 / 未完成 |

---

## ✅ 任务执行清单

### 已完成任务
- [x] 任务 1:[任务名称]
  - **执行时间**:2026-03-26 09:00-09:30
  - **执行说明**:[具体执行内容]
  - **执行结果**:成功/失败

- [x] 任务 2:[任务名称]
  - **执行时间**:2026-03-26 09:30-10:00
  - **执行说明**:[具体执行内容]
  - **执行结果**:成功/失败

### 未完成/部分完成任务
- [ ] 任务 3:[任务名称]
  - **未完成原因**:[说明原因]
  - **预计完成时间**:2026-03-27
  - **备注**:[其他说明]

---

## 📝 技术实现说明

### 数据库变更

-- 示例:执行的 SQL 语句 ALTER TABLE products MODIFY specification VARCHAR(200); UPDATE products SET specification = CONCAT(specification, ' 黑色 预激活') WHERE ...;


### API 变更
- **新增接口**:`POST /api/xxx`
- **修改接口**:`PUT /api/yyy` - 新增参数 `xxx`

### 代码变更
- **修改文件**:`/opt/product-price-system/app/api/products.py`
- **修改行数**:+50 -20
- **Git 提交**:`abc1234 fix: 恢复商品规格完整字段`

---

## 📊 数据修复结果

### 修复统计
| 商品类别 | 修复数量 | 修复前示例 | 修复后示例 |
|---------|---------|-----------|-----------|
| iPhone | 52 | 256G | 256G 黑色 预激活 |
| iPad | 48 | 128G | 128G 黑色 WiFi |
| 其他 | 0 | - | - |
| **合计** | **100** | - | - |

### 验证查询

-- 验证修复结果的 SQL SELECT name, specification FROM products WHERE name LIKE '%iPhone%' LIMIT 10;


### 验证结果

iPhone 17 Pro | 256G 黑色 预激活 iPhone 17 Pro | 256G 白色 渠道版 iPhone 17 Pro Max | 512G 蓝色 已激活 ...


---

## ⚠️ 注意事项

1. [需要用户注意的事项 1]
2. [需要用户注意的事项 2]
3. [后续建议]

---

## 📎 附件

- [相关 Git 提交链接]
- [数据库备份文件位置]
- [其他相关文档]

---

## ✅ 验收申请

已完成以上任务,申请验收。

**自检结果**:
- [x] 所有任务已完成
- [x] 数据已验证
- [x] 功能测试通过
- [x] 回归测试通过

请价易通导入技能进行验收测试。

---

**程序虾签名**:程序虾
**提交时间**:2026-03-26 10:00

反馈文档流程

  1. 程序虾生成反馈

- 完成任务后生成反馈文档 - 标注对应的需求编号 - 详细说明执行结果

  1. 发送用户通知
   ✅ 程序虾已完成需求:REQ-PPS-20260326-001
   📄 反馈文档:requirements/PPS/feedback/FEEDBACK-REQ-PPS-20260326-001.md
   🔍 请进行验收测试
  1. 价易通验收

- 根据反馈文档进行验证 - 填写需求文档中的"验收记录" - 更新状态为"已验收"或"不通过"

  1. 归档

- 需求文档 + 反馈文档一起归档 - 作为系统演进历史记录


核实与验收流程

程序虾完成任务后,本技能负责:

  1. 功能测试

- 调用相关 API 验证功能 - 检查数据是否正确 - 验证边界情况

  1. 回归测试

- 确保修复不影响现有功能 - 检查相关模块是否正常

  1. 结果反馈
   ✅ 验收通过
   - 功能:XXX
   - 测试结果:正常
   - 验证时间:2026-03-26 10:00
   
   ❌ 验收未通过
   - 功能:XXX
   - 问题描述:...
   - 需要重新处理

示例对话

用户:/fix 导入的渠道名称老是错,希望能统一

系统:📋 收到需求!正在分析...

---
## 📋 需求分析

### 问题描述
导入价格时渠道名称不统一,如"武汉菠萝苹果"和"武汉菠萝"实际是同一渠道

### 影响范围
- 功能模块:价格导入
- 数据范围:所有历史导入记录
- 用户影响:数据统计不准确

### 优先级
🟡 中

### 任务拆分

#### 程序虾负责(后端/服务)
- [ ] 1. 添加渠道别名映射表
- [ ] 2. 修改导入 API 支持别名自动转换
- [ ] 3. 提供渠道合并 API

#### 本技能负责(导入/匹配)
- [ ] 1. 更新渠道名称映射规则
- [ ] 2. 导入前进行渠道名称校验

### 验收标准
1. 导入"武汉菠萝苹果"自动转为"武汉菠萝"
2. 历史数据可以合并
3. 渠道列表不出现重复

---
请确认以上需求分析是否正确?回复"确认"后我将生成正式需求文档。

用户:确认

系统:✅ 需求已确认,正在生成需求文档...

📄 已创建文件:`requirements/REQ-PPS-20260326-001.md`

---

# 需求文档 - 渠道名称统一与别名映射

## 📋 基本信息

| 字段 | 值 |
|------|-----|
| **需求编号** | REQ-PPS-20260326-001 |
| **所属系统** | 价易通 - 商品报价管理系统 |
| **提交时间** | 2026-03-26 06:44 |
| **提交人** | 价易通导入技能 |
| **优先级** | 🟡 中 |
| **状态** | 待确认 |

---

## 🎯 需求概述

### 问题描述
导入价格时渠道名称不统一,"武汉菠萝苹果"和"武汉菠萝"实际是同一渠道,导致数据统计分散

### 业务背景
- 不同导入人员使用不同渠道名称
- 同一渠道数据分散在多条记录中
- 影响渠道统计和数据分析准确性

### 影响范围
- **功能模块**:价格导入 API、渠道管理
- **数据范围**:`prices` 表的 `source` 字段、`channels` 表
- **用户影响**:所有使用渠道统计功能的用户

---

## 📝 详细需求

### 当前状态(As-Is)
- 导入 API 直接使用用户输入的渠道名称
- 无渠道别名映射机制
- 渠道列表中存在重复渠道

### 期望状态(To-Be)
- 支持渠道别名配置
- 导入时自动转换为标准渠道名称
- 提供渠道合并功能

### 功能变动说明

#### 模块 1:数据库
- **变动类型**:新增
- **变动位置**:新增 `channel_aliases` 表
- **变动说明**:

CREATE TABLE channel_aliases ( id INT PRIMARY KEY AUTO_INCREMENT, standard_name VARCHAR(100) NOT NULL, -- 标准名称 alias_name VARCHAR(100) NOT NULL, -- 别名 created_at DATETIME DEFAULT NOW() );


#### 模块 2:导入 API
- **变动类型**:修改
- **变动位置**:`/api/prices/batch-import`
- **变动说明**:导入时检查渠道别名,自动转换为标准名称
- **伪代码**:

def normalize_channel(source): alias = db.query("SELECT standard_name FROM channel_aliases WHERE alias_name = ?", source) return alias if alias else source


#### 模块 3:渠道管理 API
- **变动类型**:新增
- **变动位置**:新增 `/api/channels/merge` 接口
- **变动说明**:合并两个渠道名称的所有数据

---

## ✅ 验收标准

### 功能测试
- [ ] 使用"武汉菠萝苹果"导入,数据库中存储为"武汉菠萝"
- [ ] 使用"武汉菠萝"导入,数据库中存储为"武汉菠萝"
- [ ] 查询渠道列表,只显示"武汉菠萝",不显示"武汉菠萝苹果"

### 数据验证
- [ ] 历史数据中"武汉菠萝苹果"的记录可以通过合并功能合并到"武汉菠萝"
- [ ] 合并后统计数量正确

### 边界条件
- [ ] 别名可以配置多个(如 A→标准,B→标准)
- [ ] 标准名称本身不能作为其他标准的别名

### 回归测试
- [ ] 确保不影响现有导入功能
- [ ] 确保不影响渠道查询功能

---

## 📎 附件

### 示例数据

{ "alias_mappings": [ {"standard": "武汉菠萝", "alias": "武汉菠萝苹果"}, {"standard": "武汉汉堡", "alias": "武汉汉堡苹果"} ] }


---

## 📝 变更记录

| 日期 | 版本 | 变更内容 | 变更人 |
|------|------|---------|--------|
| 2026-03-26 | v1.0 | 初始版本 | 价易通导入技能 |

---

## 🔧 开发备注

[程序虾填写]
- **开发开始时间**:
- **开发完成时间**:
- **实际工作量**:
- **技术难点**:
- **注意事项**:

---

## ✅ 验收记录

[价易通导入技能填写]
- **验收时间**:
- **验收结果**:通过 / 不通过
- **测试报告**:
- **验收人**:

---

@程序虾 请查收需求文档,确认后开始开发。
文件路径:`~/.openclaw/workspace/requirements/REQ-PPS-20260326-001.md`

职责边界

⚠️ 本技能遵守以下职责限制

  1. 操作数据库必须确认 - 导入前必须用户确认
  2. 禁止改动运行服务的代码 - 只调用 API,不修改服务端代码
  3. 发现 bug 或需求不满足时反馈 - 不自行修改后端逻辑
  4. 必须通过 /import 命令触发 - 避免误处理无关内容

🤖 与程序虾的职责划分

本技能(价易通导入技能)职责 ✅

负责

  1. 接收用户发送的价格表(图片/文本/Excel)
  2. 识别和解析原始数据
  3. 拉取商品库并进行智能匹配
  4. 输出匹配报告供用户确认
  5. 调用 API 执行批量导入
  6. 验证导入结果

不负责

  • ❌ 商品库管理(添加/编辑/删除商品)
  • ❌ 渠道管理(添加/修改渠道名称)
  • ❌ 数据库直接操作(只通过 API)
  • ❌ 服务端代码修改
  • ❌ 重复数据清理
  • ❌ 历史数据修复

程序虾(发布服务器)职责 ✅

负责

  1. 商品库管理

- 添加新商品 - 编辑商品信息(名称、规格、分类、品牌) - 删除/停用商品 - 维护商品库数据质量

  1. 渠道管理

- 添加新渠道 - 统一渠道名称(如"武汉菠萝苹果"→"武汉菠萝") - 维护渠道列表

  1. 数据维护

- 重复数据清理 - 历史数据修复 - 数据库备份与恢复 - 数据一致性检查

  1. 系统运维

- 服务部署与更新 - API 接口开发 - 数据库结构变更 - 日志管理与监控


协作流程

用户 → 本技能:发送价格表导入
         ↓
    发现未识别商品
         ↓
    本技能 → 用户:提示"有 X 个商品未识别,需要联系程序虾添加"
         ↓
    用户 → 程序虾:添加新商品/统一渠道名称
         ↓
    程序虾 → 用户:商品已添加,可以重新导入
         ↓
    用户 → 本技能:重新导入

典型场景处理

场景本技能处理程序虾处理
新商品不在库中标记为未识别,提示用户添加商品到库
渠道名称不统一记录用户指定的正确名称,反馈问题统一渠道名称
重复数据不处理,只负责导入清理重复数据
商品名称变更不处理,匹配失败更新商品库
API 接口 bug反馈给用户修复代码
数据结构变更不处理修改数据库结构

📝 历史教训(2026-03-26)

问题

  1. 渠道名称错误使用了"武汉菠萝苹果",应为"武汉菠萝"
  2. 导入了重复数据,需要后续清理

改进

  1. ✅ 渠道名称以用户指定为准,不确定时先确认
  2. ✅ 导入前检查是否存在重复(相同 source + product_id + price_time)
  3. ✅ 明确职责:数据清理是程序虾的职责,本技能只负责导入
  4. ✅ 发现数据问题先反馈,不要越权处理

渠道名称规则

  • "武汉菠萝苹果" = "武汉菠萝" → 统一使用 武汉菠萝
  • 类似情况先确认,不要自行决定

越界行为禁止 🚫

本技能禁止

  • 直接 SSH 到服务器修改数据库
  • 修改服务端 Python/Go 代码
  • 执行数据库清理脚本(除非用户明确要求且确认)
  • 添加/修改渠道列表
  • 修改商品库结构

正确做法

  • 发现数据问题 → 反馈给用户 → 由程序虾处理
  • 发现 API bug → 记录问题 → 反馈给开发者
  • 需要新接口 → 提出需求 → 等待程序虾实现

适合场景

01

OpenClaw 用户查找和安装 Skill 时

02

用户想查找某类 Agent Skill 时

03

需要根据任务场景推荐可安装能力包时

04

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

补充不同宿主或平台的使用分布数据

能力 5

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

OpenClaw

94.29%
按下载量换算829

安全审计

VirusTotal

通过

ClawScan

可疑

Static analysis

通过

权限和风险

需要联网

该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。来源安全扫描存在 warning/failed 结果,不能写成本站确认安全。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills