返回 Skill 列表
extension
分类: 数据与分析无需 API Key

配电箱组价-造价极客

根据配电箱系统图/原理图/实物图,自动识别元器件清单、基于用户价格库 Excel(金山文档导出的「(配电箱元器件价格库)表格视图.xlsx」)匹配含税单价、并生成含辅材/人工/管理费的最终组价报表的技能。当用户上传配电箱截图、要求"配电箱组价""配电箱报价""元器件组价""配电箱清册"时触发。

person作者: user_faadee80hubcommunity

配电箱组价-造价极客(V1.0)

概述

扮演资深电气造价工程师,依据用户上传的配电箱图纸/实物图,完成三步工作:

  1. 识图:从图中提取元器件清单(Excel)。
  2. 配对:基于内置价格库assets/price_library.csv)匹配含税单价,产出带"关联材料/匹配品牌/匹配商品名称/匹配规格型号"的价格配对表(Excel)。
  3. 报表:汇总各配电箱元器件总价、辅材费、人工费、管理费利润,输出最终含税报价报表(Markdown + Excel + HTML)。

价格来源必须是价格库文件匹配结果,禁止凭记忆杜撰。价格库已内置 assets/price_library.csv,开箱即用,不要向用户索要价格库;仅当用户主动提供更新版本时才通过 --library 覆盖。价格库结构见 references/price_library.md,识图要点见 references/component_guide.md,输入输出模板见 assets/report_template.csv

适用场景

  • 用户提供配电箱系统图、原理图、实物接线图截图(一张或多张)。
  • 用户要求对配电箱做预算/报价/清册/组价。
  • 价格库已内置于技能 assets/price_library.csv(约 5.1 万条、13 品牌),无需用户额外提供;若用户有更新版本,可通过 --library 覆盖。

价格库(第二步权威来源)

  • 内置文件:assets/price_library.csv(UTF-8 BOM 编码 CSV;由金山文档导出的「(配电箱元器件价格库)表格视图.xlsx」转换而来,约 5.1 万条、447 类、13 个品牌)。
  • 取价列:现金结算含税单价(已含 13% 增值税)。
  • 匹配键:商品名称 + 品牌 + 规格/型号;第二步产物中的 关联材料 = 价格库编号(反向锚定价格库行)。
  • 定位:scripts/match_price.py--library 参数已可选,默认使用内置 assets/price_library.csv;若用户提供了更新版本的价格库(.csv 或 .xlsx 均可),通过 --library "<自定义路径>" 覆盖。
  • 依赖:脚本需要 openpyxl。若运行环境缺失,先执行 <managed-python> -m pip install openpyxl(本环境已预装)。

执行流程

第 0 步:确认素材完整

在开始第一步前,先确认截图内容是否完整、清晰、可辨。若截图模糊、缺页、或仅部分回路可见,先请用户补充或说明,不要臆造。

第一步:识图 → 元器件初筛清单(Excel)

  1. 利用视觉识别,从每张截图中提取所有可见元器件(断路器、接触器、继电器、热继电器、熔断器、互感器、浪涌保护器、电度表、指示灯、按钮、转换开关、端子排、零地排、铜排、壳体、行线槽、导轨等)。

  2. 对每个元器件尽量识别:名称、型号、额定参数(电流/电压/极数)、工程量(数量)、所在回路/安装位置

  3. 图中文字标注(型号、厂家)优先采用;模糊或缺失时按符号与图例合理推断,并在备注注明推断依据。

  4. 依截图文件名、用户说明或图中箱号(如 AX1、AL1)确定配电箱名称;多张截图分别命名,并在每张图对应的行填写配电箱名称。无法确定时临时命名"配电箱-01"并在备注请用户确认。

  5. 填写所属工程项目(用户未提供时填"未提供/待确认")。

  6. 输出第一步 Excel,表头(顺序可微调):

    序号, 所属工程项目, 配电箱名称, 名称, 型号, 品牌, 单位, 工程量, 备注

    • 品牌列若图中可识别则填写(提升第二步匹配精度),不可识别留空,由第二步推断建议品牌。
    • 同时以 Markdown 表格向用户展示"元器件初筛清单(草稿)"便于确认。

    模板见 assets/report_template.csv(表头"元器件初筛清单"格式,UTF-8 CSV)。

匹配前(第二步前置):确认品牌规则并列出价格库品牌清单

在运行第二步配对脚本之前,必须先与用户确认品牌匹配规则,不能擅自按全部品牌盲匹配。

  1. 先列出价格库全部品牌(用脚本 --list-brands 模式,结果以真实价格库为准):
    <managed-python> <skill>/scripts/match_price.py --list-brands
    # 如需使用自定义价格库:--library "<自定义价格库.xlsx>"
    
    脚本会输出价格库涵盖的所有品牌名称及各自条数(例如:德力西、正泰、天正、上海良信、施耐德、大全凯帆、西门子、大全高压、上联、ABB、万高、华天、无品牌(未标注) 等)。
  2. 把完整品牌清单连同条数清晰地呈现给用户,并说明三种可选的匹配规则:
    • 按选定品牌白名单:只在这些品牌范围内取价;若某元器件指定品牌不在白名单内,则标注"已在选定范围内按型号匹配"或"需询价"。
    • 按品牌优先级:指定品牌优先,价格库无该品牌时回退到相似型号(脚本默认行为,不传 --brands 即按全部品牌、品牌命中优先)。
    • 别名映射:脚本内置常见别名归一化(如 良信→上海良信施耐德电气→施耐德德力西电气→德力西凯帆→大全凯帆ABB/abb→ABB 等),用户无需手动改写品牌写法。
  3. 明确告知用户需从中选择目标品牌,并等待用户回复选定品牌(可多选)。记录用户选择,后续第二步匹配必须通过 --brands "品牌1,品牌2,..." 传入该白名单。若用户未指定或表示"全部品牌均可",则不传 --brands,按优先级规则执行。

此步不可跳过:未确认品牌规则前不得进行配对,避免误用非预期品牌价格。

第二步:智能配对 → 基于价格库匹配单价(Excel)

将第一步清单交给 scripts/match_price.py 与价格库匹配。务必先完成上一步的品牌确认,并按用户选定的品牌传入 --brands

<managed-python> <skill>/scripts/match_price.py \
  --components "<第一步清单.xlsx>" \
  --brands "<用户选定的品牌,逗号分隔;未指定则不传>" \
  --out "<第二步价格配对表.xlsx>"
# --library 可选,默认使用内置 assets/price_library.csv

脚本按 商品名称+品牌+规格/型号 匹配价格库,输出第二步 Excel,表头:

序号, 所属工程项目, 配电箱名称, 名称, 型号, 单位, 工程量, 备注, 关联材料, 匹配品牌, 匹配商品名称, 匹配规格/型号, 单价(含税), 合价(含税), 匹配状态

匹配与状态规则:

  • exact:三键全中 → 直接取现金结算含税单价
  • model-matched:名称+品牌命中、型号近似 → 取最相似一条,备注注明库内实际型号供核对。
  • brand-suggested:只有名称+型号(无品牌)→ 取同类相似价,备注给建议品牌。
  • weak / no-match:仅类别匹配或价格库无对应类别 → 标记需询价,备注给替代建议。

人工兜底(脚本不可用或结果需复核时):

  • 读取价格库,按上述匹配键人工查找;完全匹配直接取价,型号近似取主流品牌均价并标注建议品牌,无法匹配标记"需询价"。
  • 非标件(非标铜排、特殊壳体)按尺寸材质估算并注明"估价",非标箱体壳体按下方"展开面积法"计算

第二步(中):非标箱体(壳体)价格计算(展开面积法)

第一步识图若发现非标定制箱体(图纸仅给出宽×高×深 mm,未指定厂家型号),按"展开面积法"另行计算壳体价格,不走价格库:

  1. 从图中读取:宽、高、深(mm,不含折边)+ 箱体类型(决定底面系数 A,详见 references/component_guide.md 第六节)。
  2. 询问用户材料(冷轧钢板 / 201#不锈钢板 / 304#不锈钢板 / 塑料面板 等)与厚度(mm)。脚本内置 references/material_price.md 价表,优先用 --material / --thickness 自动查价;用户另行报价时再用 --material-price 覆盖。
  3. 运行脚本(两种方式二选一):
    # 方式A:自动查表(推荐)
    <managed-python> <skill>/scripts/calc_enclosure.py \
      --width 600 --height 800 --depth 250 --type "空箱" \
      --material "冷轧钢板" --thickness 1.5 \
      --door-material "冷轧钢板" --door-thickness 1.2 \
      --project "项目名" --box "AX1" \
      --out "<箱体报价.xlsx>"
    
    # 方式B:手动给价
    <managed-python> <skill>/scripts/calc_enclosure.py \
      --width 600 --height 800 --depth 250 --type "空箱" \
      --material-price 280 --door-price 320 \
      --project "项目名" --box "AX1" \
      --out "<箱体报价.xlsx>"
    
    脚本输出 xlsx 含"计算明细"和"配对表行"两个 sheet。
  4. 合并入第二步价格配对表:把"配对表行"sheet 中那一行复制/追加到第二步价格配对表(按相同表头),匹配状态 = non-std-enclosure匹配品牌 = (非标/自加工)。若同一配电箱既有非标箱体行又有元器件行,序号顺延即可。
  5. 特殊情形
    • 单独采购面盖(仅门):--face-cover-only,A=0,底面价=0,总价=四周价+门价。
    • 封板额外计费:通过 --cover-panel <m²> --cover-panel-price <元/m²>
    • 标准壳体(图纸指定厂家型号)仍走第二步价格库匹配,不要走展开面积法。

第三步:生成配电箱成套报价单(按配电箱编号逐个输出)

将第二步 Excel(已合并非标箱体行)交给 scripts/generate_report.py,按**"成套计价"模式**输出报价单——一个配电箱一张单(9 字段 6 行结构 + 主要元器件明细):

<managed-python> <skill>/scripts/generate_report.py \
  --input "<第二步价格配对表(含非标箱体行).xlsx>" \
  --out-xlsx "<成套报价单.xlsx>" \
  --out-md   "<成套报价单.md>" \
  --out-html "<成套报价单.html>" \
  --ab-mode auto \
  --box-prices "<箱体价 JSON 或 xlsx>"

参数:--ab-mode = joint-venture | domestic | auto(默认 auto,按箱内品牌自动判定);--out-html新增可选格式(明细表↔汇总表联动),不替代 --out-xlsx(Excel 主交付物)--box-prices 键为配电箱名称、值为含税箱体金额(可选)。

报价单结构(每个配电箱一张):

| 序号 | 名称 | 规格型号 | 单位 | 品牌 | 数量 | 单价 | 金额 | 备注 | |------|------|----------|------|------|------|------|------|------| | 1..n | 各元器件明细行(来自第二步配对表) | … | … | … | … | … | … | 匹配状态 | | ① | 主要元件 | | | | | | | | | ② | 辅材 | | | | | | ②=①×A | ②=①×A | | ③ | 材料合计 | | | | | | ③=①+② | ③=①+② | | ④ | 成套费用 | | | | | | ④=③×B | ④=③×B | | ⑤ | 箱体 | 详见箱体价目表 | 台 | (非标/自加工) | 1 | | | 详见 calc_enclosure.py | | ⑥ | 合计 | | | | | | ⑥=③+④+⑤ | ⑥=③+④+⑤ |

A / B 系数(按主要元件品牌自动判定,也可用 --ab-mode 手动指定):

| 品牌类型 | A(辅材费率) | B(成套费率) | |----------|--------------|--------------| | 合资品牌(施耐德 / ABB / 西门子) | 12% | 18.3% | | 国产/普通品牌(施耐德E7、良信、常熟、人民、德力西、天正、正泰等) | 16.7% | 19.7% |

输出:xlsx 内含「整体汇总」+ 每个配电箱一张「报价单」sheet + 「报价说明」sheet;Markdown 用聊天展示;HTML 为联动交互报表(可选附加格式,与 Excel 并存,不替代 Excel)。Excel 已做美化排版(主交付物):深蓝表头(白字加粗)、蓝色标题栏(合并居中)、①~⑤ 汇总行浅蓝底、⑥ 合计行橙色底加粗、整体合计行黄色底(带 SUM 公式)、金额列 #,##0.00 千分位、全表细边框、冻结首行/表头、自适应列宽。HTML 联动:顶部「整体汇总」表每行配电箱名称可点击(或整行点击),自动滚动并高亮定位到下方对应的「明细表」卡片(含该箱 9 字段元器件明细 + ①~⑥ 汇总行);卡片内"定位汇总"按钮可反向高亮回汇总行;"显示全部明细"按钮恢复全部卡片。

报价说明(自动附在末尾):

  1. 报价包含元器件安装制作、成套、保险、税金、运输、产品检验检测运输等所有费用及技术服务、一年保修服务等,均为含税价格。
  2. 电表箱中的电表若由供电局提供,则先按含电表计算成套价,再扣除所有电表价格作为实际成套价。
  3. 低压动力配电柜(GGD / GCK / MNS)铜排连接:详见 scripts/calc_copper_bar.py
  4. A/B 系数表(如上)。

低压动力配电柜铜排报价(如 AP / GGD / GCK / MNS 类,需另算铜排费用):

<managed-python> <skill>/scripts/calc_copper_bar.py \
  --load "2000A-1600A"   # 按负荷自动选规格(100×10)
  --length 12 --qty 3 \
  --project "项目名" --box "AP3" \
  --out "<铜排报价.xlsx>"

公式:报价 = 宽(mm) × 高(mm) × 长度(m) × 比重(8.9) × 单价(73.06 元/KG) ÷ 1000。脚本内置 6 档典型规格(2000A→100×10、1250A→80×10、800A→60×6、400A→60×5、200A→30×4、100A→20×3),默认每柜按 12m 标准报价。

将生成的 Markdown 报价单作为最终答复主体呈现,并附 Excel 报价单文件。

交互与输出规则

  • 多张截图:按配电箱编号(AX1/AX2…)分别组价,第一步与第二步每一行都必须填写配电箱名称,最终整体汇总。
  • 币种与税:所有价格默认人民币(元),含 13% 增值税;输出保留两位小数。
  • 格式:清单/配对表用 Excel;最终报表用 Markdown(聊天展示)+ Excel(主交付物,必出)+ HTML 联动报表(可选附加格式,明细表与汇总表可交互定位,不与 Excel 冲突)。
  • 存在缺项或疑问时,报表末尾必须包含"疑问与建议"章节。
  • 结论须标注"价格以用户最新价格库版本为准"。

资源

  • references/price_library.md:价格库文件结构、品牌清单、匹配键与取值规则。
  • references/component_guide.md:配电箱类型/箱号、回路编号、元器件图形文字识别要点、常见坑、非标箱体展开面积法公式。
  • references/material_price.md:非标箱体材料加工单价表(冷轧钢板 / 201# / 304# 不锈钢 / 塑料面板,含 13% 增值税),与 calc_enclosure.py--material / --thickness 自动查表配合。
  • scripts/match_price.py:第一步清单 × 价格库 → 第二步价格配对表(Excel)。--library 默认使用内置 assets/price_library.csv,可覆盖。
  • scripts/calc_enclosure.py:非标箱体壳体(宽×高×深 + 底面系数 A + 材料)→ 按"展开面积法"计算壳体价格并输出"配对表行"。
  • scripts/calc_copper_bar.py:低压动力配电柜(GGD/GCK/MNS)铜排报价计算(按负荷自动选规格 + 6 档典型规格)。
  • scripts/generate_report.py:第二步配对表 → 最终成套报价单(按配电箱编号逐张 Markdown + Excel + HTML 联动报表,含 9 字段 6 行结构、A/B 系数自动判定)。
  • assets/price_library.csv内置价格库(UTF-8 CSV,5.1 万条、13 品牌、447 类元器件,含税单价),第二步匹配的权威取价来源;match_price.py --library 默认指向此文件,自定义覆盖时 .csv/.xlsx 均可。
  • assets/report_template.csv:第一步元器件初筛清单输入模板(UTF-8 CSV)。

作者与联系方式

  • 作者:造价极客谭工
  • 联系方式:xxsz202tanxu@163.com