--- name: "sku-cost-profit-auditor" description: "Audits and corrects cost and profit data for SKUs in the membank product catalog. Invoke when user asks to check, reconcile, verify, or fix SKU cost/profit figures, or when cost errors (e.g., total cost mismatches) are suspected." --- # SKU Cost Profit Auditor 基于每日订单截图与配件采购单,动态维护 SKU 的成本与利润。通过 OCR 识别订单售价、采购单配件价,自动新增缺失 SKU、纠正成本与利润,实现 SKU 主数据的动态闭环维护。 ## 触发场景 - 用户把当日订单截图放入 `产品\<产品线>\订单\` 后要求处理 - 用户把最新配件采购单放入 `产品\<产品线>\采购单\` 后要求更新成本 - 用户要求核对/纠正某个 SKU 的成本或利润 - 怀疑 SKU 总成本、利润计算有误(如配件涨价后未同步) ## 工作目录约定 针对某条产品线(如 `飞牛 NAS`),工作区结构如下。若 `订单\` `skus\` `采购单\` 不存在,执行前自动创建: ``` 产品\<产品线>\ ├── 订单\ # 输入:当日订单截图(处理后清空) ├── 采购单\ # 输入:最新配件采购单截图(处理后清空) ├── skus\ # 主数据:当前生效的 SKU md 文件 + 价格表.md └── 归档\ # 参考:历史/全部产品线 SKU,新增 SKU 时参考其格式与配置 ├── <子产品线>\ │ ├── sku\<型号>.md │ └── 价格表.md └── ... ``` > 默认产品线为 `飞牛 NAS`。若用户未指定,默认操作该产品线。 ## SKU 文件格式(必须遵守) 每个 SKU 是一个 md 文件,文件名即型号(如 `3.5金大-双-1037U-4G-128G.md`),内容为配件价格表: ```markdown # 产品信息 | 字段 | 配件名称 | 价格 | |------|---------|------| | **产品编号** | - | - | | **产品名称** | 飞牛NAS 3.5金属大 双盘位 1037U | - | | **产品型号** | 3.5金大-双-1037U-4G-128G | - | | **用途分类** | NAS | - | | **CPU** | 1037U | ¥50 | | **内存** | D3-4G | ¥18 | | **系统盘** | mSATA-128G | ¥68 | | **机箱** | 金属机箱3.5寸大 | ¥68 | | **电源** | 电源-96W | ¥18.5 | | **硬盘线** | 硬盘线-双 | ¥5 | | **电池** | 电池 | ¥1 | | **网线** | 网线 | ¥1 | | **运费** | 运费 | ¥10 | | **包装费** | 包装费 | ¥5 | | **装机费** | 装机费 | ¥10 | | **总成本** | - | ¥254.5 | | **建议零售价** | - | ¥285 | | **备注** | 3.5金属大,双盘位,双SATA口 | - | ``` `价格表.md` 汇总当前 `skus\` 下所有 SKU,表头:`序号 | 产品型号 | 成本 | 售价 | 利润 | 利润率 | 备注`,顶部注明定价策略。 ## 命名规则 SKU 型号格式:`{机箱}-{盘位}-{CPU}-{内存}-{系统盘}` - 例:`3.5金大-双-1037U-4G-128G`、`亚克力-单-i5-3代-8G-128G` 新增 SKU 时严格沿用同子产品线归档中的命名风格。 ## 工作流 ### 阶段 1:订单 OCR 识别 1. 扫描 `产品\<产品线>\订单\` 下所有图片(若为空,跳至阶段 5) 2. 对每张图片调用 `ocr-extract` 技能识别文字 3. 从识别结果提取:**SKU 型号** 与 **售价**(注意区分型号变体,如内存/系统盘差异) 4. 按型号聚合订单(记录销量与最新售价) 5. 若识别结果模糊或有歧义,**暂停并向用户确认**,不得自行猜测 ### 阶段 2:SKU 存在性检查 对每个识别出的型号: 1. 在 `产品\<产品线>\skus\` 中查找 `<型号>.md` 2. 已存在 → 进入阶段 4 3. 不存在 → 进入阶段 3 ### 阶段 3:新增 SKU 1. 在 `产品\<产品线>\归档\` 下递归查找同名 `<型号>.md` 2. **若归档有**:复制该文件到 `skus\`,作为初始版本 3. **若归档没有**:调用 `sku-designer` 技能,参考归档中同子产品线相似配置生成新 SKU md 文件,写入 `skus\` 4. 新增的 SKU 暂用订单售价作为建议零售价,成本先按归档/相似配置估算,待阶段 5 采购单修正 ### 阶段 4:核对配件与成本 1. 调用 `sku-designer` 技能核对 `skus\<型号>.md` 的配件清单是否完整、规格是否匹配 2. 总成本 = 各配件价格之和(含运费/包装费/装机费等固定项) 3. 校验文件中 `总成本` 字段与各配件之和是否一致,不一致则纠正 ### 阶段 5:采购单处理(若 `采购单\` 非空) 1. 扫描 `产品\<产品线>\采购单\` 下所有图片/文件 2. 调用 `ocr-extract` 识别采购单内容 3. 提取:**配件名称**、**规格**、**单价**、(数量) 4. 建立「配件规格 → 最新单价」映射 5. 遍历 `skus\` 下所有 SKU md,对涉及涨/降价的配件更新单价 6. 重新计算每个受影响 SKU 的 `总成本` 7. 识别模糊时同样暂停向用户确认 ### 阶段 6:利润纠正、销量累计与利润分级 对 `skus\` 下每个 SKU: - **利润 = 售价 − 总成本** - 售价取值优先级:① 本次订单识别的售价 ② 原文件 `建议零售价` - 若订单中出现了新售价(调价),用新售价覆盖 `建议零售价`,并同步重算利润 **累计销量维护规则:** - 对本次订单识别到的每个 SKU:销量 += 本次订单中该 SKU 的成交数量(一般 1) - 未在本次订单中出现的 SKU:销量保持不变 - 新增 SKU:销量初始化为本次订单数量 - 销量是累计值,跨批次永久保留,不清零 **利润等级分类规则(按单件利润金额):** | 等级 | 利润区间 | 说明 | |:----:|:--------:|------| | 一级 | < 50 元 | 低利润,建议提价或控制成本 | | 二级 | 50 - 100 元 | 正常利润 | | 三级 | 100 - 200 元 | 高利润 | | 四级 | ≥ 200 元 | 超高利润 | - 每次更新价格表时,根据「利润」列自动计算「等级」列 - 利润变动后等级随之调整(如降价导致利润跌破 50 元,从二级降为一级) - 合计行额外注明各等级 SKU 数量分布 **`价格表.md` 表头(聚焦价格 + 销量 + 等级):** ``` | 序号 | 产品型号 | 成本 | 售价 | 利润 | 销量 | 等级 | ``` - 同步更新对应行(成本、售价、利润、销量、等级) - 合计行注明累计销量总和 + 各等级分布 - **排序规则:按利润等级升序排列(一级 → 二级 → 三级 → 四级),同级内按利润升序**,让低利润 SKU 排在前面方便关注 ### 阶段 7:清理已处理输入 1. 全部 SKU 更新并经用户确认后,**清空** `订单\` 目录中的图片 2. **清空** `采购单\` 目录中的图片 3. 防止下次重复处理(用户后续放入新数据即触发新一轮) ## 利润计算公式 ``` 总成本 = Σ(配件单价) + 运费 + 包装费 + 装机费 + 其他固定项 利润 = 售价 − 总成本 累计销量 = 历史销量 + 本次订单数量 ``` ## 定价策略(参考) 各产品线 `价格表.md` 顶部会注明定价策略(如「1037U成本+30元,J1900成本+50元」)。纠正售价时优先遵循该策略;若订单实际售价偏离策略价,以**订单实际售价**为准并提示用户复核策略。 ## 注意事项 - **只处理非空输入目录**:`订单\`、`采购单\` 任一为空则对应阶段跳过 - **新增 SKU 必须参考归档**:保持命名、配件项、表格风格一致 - **配件价以最新采购单为准**:旧价覆盖、不累加 - **OCR 不确定时必须确认**:不得凭猜测写入 SKU 或价格 - **清理前需用户确认**:阶段 7 清空目录前,输出本次变更摘要让用户确认 - **每次处理输出变更摘要**:新增了哪些 SKU、更新了哪些配件价、纠正了哪些利润