配电箱组价-造价极客(V1.0)
概述
扮演资深电气造价工程师,依据用户上传的配电箱图纸/实物图,完成三步工作:
- 识图:从图中提取元器件清单(Excel)。
- 配对:基于内置价格库(
assets/price_library.csv)匹配含税单价,产出带"关联材料/匹配品牌/匹配商品名称/匹配规格型号"的价格配对表(Excel)。 - 报表:汇总各配电箱元器件总价、辅材费、人工费、管理费利润,输出最终含税报价报表(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)
-
利用视觉识别,从每张截图中提取所有可见元器件(断路器、接触器、继电器、热继电器、熔断器、互感器、浪涌保护器、电度表、指示灯、按钮、转换开关、端子排、零地排、铜排、壳体、行线槽、导轨等)。
-
对每个元器件尽量识别:名称、型号、额定参数(电流/电压/极数)、工程量(数量)、所在回路/安装位置。
-
图中文字标注(型号、厂家)优先采用;模糊或缺失时按符号与图例合理推断,并在
备注注明推断依据。 -
依截图文件名、用户说明或图中箱号(如 AX1、AL1)确定配电箱名称;多张截图分别命名,并在每张图对应的行填写
配电箱名称。无法确定时临时命名"配电箱-01"并在备注请用户确认。 -
填写所属工程项目(用户未提供时填"未提供/待确认")。
-
输出第一步 Excel,表头(顺序可微调):
序号, 所属工程项目, 配电箱名称, 名称, 型号, 品牌, 单位, 工程量, 备注品牌列若图中可识别则填写(提升第二步匹配精度),不可识别留空,由第二步推断建议品牌。- 同时以 Markdown 表格向用户展示"元器件初筛清单(草稿)"便于确认。
模板见
assets/report_template.csv(表头"元器件初筛清单"格式,UTF-8 CSV)。
匹配前(第二步前置):确认品牌规则并列出价格库品牌清单
在运行第二步配对脚本之前,必须先与用户确认品牌匹配规则,不能擅自按全部品牌盲匹配。
- 先列出价格库全部品牌(用脚本
--list-brands模式,结果以真实价格库为准):脚本会输出价格库涵盖的所有品牌名称及各自条数(例如:德力西、正泰、天正、上海良信、施耐德、大全凯帆、西门子、大全高压、上联、ABB、万高、华天、无品牌(未标注) 等)。<managed-python> <skill>/scripts/match_price.py --list-brands # 如需使用自定义价格库:--library "<自定义价格库.xlsx>" - 把完整品牌清单连同条数清晰地呈现给用户,并说明三种可选的匹配规则:
- 按选定品牌白名单:只在这些品牌范围内取价;若某元器件指定品牌不在白名单内,则标注"已在选定范围内按型号匹配"或"需询价"。
- 按品牌优先级:指定品牌优先,价格库无该品牌时回退到相似型号(脚本默认行为,不传
--brands即按全部品牌、品牌命中优先)。 - 别名映射:脚本内置常见别名归一化(如
良信→上海良信、施耐德电气→施耐德、德力西电气→德力西、凯帆→大全凯帆、ABB/abb→ABB等),用户无需手动改写品牌写法。
- 明确告知用户需从中选择目标品牌,并等待用户回复选定品牌(可多选)。记录用户选择,后续第二步匹配必须通过
--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,未指定厂家型号),按"展开面积法"另行计算壳体价格,不走价格库:
- 从图中读取:宽、高、深(mm,不含折边)+ 箱体类型(决定底面系数 A,详见
references/component_guide.md第六节)。 - 询问用户材料(冷轧钢板 / 201#不锈钢板 / 304#不锈钢板 / 塑料面板 等)与厚度(mm)。脚本内置
references/material_price.md价表,优先用--material / --thickness自动查价;用户另行报价时再用--material-price覆盖。 - 运行脚本(两种方式二选一):
脚本输出 xlsx 含"计算明细"和"配对表行"两个 sheet。# 方式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>" - 合并入第二步价格配对表:把"配对表行"sheet 中那一行复制/追加到第二步价格配对表(按相同表头),
匹配状态=non-std-enclosure,匹配品牌=(非标/自加工)。若同一配电箱既有非标箱体行又有元器件行,序号顺延即可。 - 特殊情形:
- 单独采购面盖(仅门):
--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 字段元器件明细 + ①~⑥ 汇总行);卡片内"定位汇总"按钮可反向高亮回汇总行;"显示全部明细"按钮恢复全部卡片。
报价说明(自动附在末尾):
- 报价包含元器件安装制作、成套、保险、税金、运输、产品检验检测运输等所有费用及技术服务、一年保修服务等,均为含税价格。
- 电表箱中的电表若由供电局提供,则先按含电表计算成套价,再扣除所有电表价格作为实际成套价。
- 低压动力配电柜(GGD / GCK / MNS)铜排连接:详见
scripts/calc_copper_bar.py。 - 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
微信扫一扫