项❌ 已废弃(已死)✅ 新(唯一可用)端点api.hunyuan.cloud.tencent.com/v1/chat/completions``https://tokenhub.tencentmaas.com/v1/chat/completions模型hunyuan-lite / turbo / standard(全部下线)hy3-preview密钥旧 sk- KeyTokenHub 重新创建的 sk- Key
⚠️ 任何代码/脚本/记忆若仍写旧端点或旧模型名即视为失效项。环境变量名
HUNYUAN_API_KEY为历史遗留命名,实际承载 TokenHub 的值。
hy3-preview(TokenHub,免费额度)⭐已开启LLM_PROVIDER=doubao)配置项状态说明端点✅ TokenHubtokenhub.tencentmaas.com模型✅ hy3-preview腾讯混元新版模型混元 API Key✅ 已配置环境变量 HUNYUAN_API_KEY(sk-开头,TokenHub创建)豆包 API Key✅ 已配置环境变量 DOUBAO_API_KEY(ark-开头)豆包模型服务✅ 已开通doubao-1-5-lite-32k-250115,直接用模型ID调用默认 Provider✅ hunyuan环境变量 LLM_PROVIDER(默认混元)
重要:豆包无需设置
DOUBAO_ENDPOINT_ID,直接用模型IDdoubao-1-5-lite-32k-250115即可调用。
LLM_PROVIDER=doubao 即可使用https://ark.cn-beijing.volces.com/api/v3/chat/completionspython
from scripts.llm_semantic_match import *
use_hunyuan() # 切换到腾讯混元(免费)⭐默认
use_doubao() # 切换到豆包模型(备选)
switch_model("hunyuan") # 通过字符串切换
restore_default() # 恢复默认(混元)
get_current_provider() # 查看当前使用的模型
bash
# 默认使用混元
python scripts/llm_semantic_match.py "热泵安装" "第2册热力设备"
# 指定使用豆包
python scripts/llm_semantic_match.py "热泵安装" "第2册热力设备" --doubao
# 指定使用混元
python scripts/llm_semantic_match.py "热泵安装" "第2册热力设备" --hunyuan
# 环境变量切换(持久化)
export LLM_PROVIDER=doubao # 切换到豆包
export LLM_PROVIDER=hunyuan # 切换到混元(默认)
scripts/llm_semantic_match.pypython scripts/llm_semantic_match.py "热泵安装" "第2册热力设备"text
用户输入需求
↓
Step 1: LLM语义匹配(默认调用腾讯混元API)
↓
显示推荐定额列表,等待用户确认 ⭐【确认节点1】
↓
用户回复"确认" → 继续组价
用户回复"修改" → 重新匹配
↓
Step 2: 组价计算
↓
显示组价明细,等待用户确认 ⭐【确认节点2】
↓
用户回复"确认" → 生成报价表
用户回复"调整" → 修改参数
↓
Step 3: 生成报价表
↓
最终确认是否导出Excel ⭐【确认节点3】
↓
完成
确认节点时机用户操作后续动作确认节点1定额匹配完成后确认/修改/补充进入组价或重新匹配确认节点2组价计算完成后确认/调整取费进入报价表生成或重新计算确认节点3报价表生成前确认导出/查看明细输出Excel或继续编辑
text
┌─────────────────────────────────────────┐
│ 📋 定额语义匹配结果 │
├─────────────────────────────────────────┤
│ │
│ 根据您的需求「热泵机组安装」, │
│ AI推荐以下定额组合: │
│ │
│ ┌─────────────────────────────────┐ │
│ │ 【主定额】 │ │
│ │ ☐ 2-1-5 热泵机组安装(200kW内)│ │
│ │ 基价:1,250.00元/台 │ │
│ ├─────────────────────────────────┤ │
│ │ 【辅定额】 │ │
│ │ ☐ 2-1-12 附件安装 │ │
│ │ ☐ 8-3-28 管道焊接 │ │
│ │ ☐ 8-5-15 管道冲洗试压 │ │
│ └─────────────────────────────────┘ │
│ │
│ ───────────────────────────────────── │
│ │
│ ⚠️ 请确认以上定额是否正确? │
│ │
│ ┌─────────────┐ ┌─────────────┐ │
│ │ ✅ 确认 │ │ ❌ 修改 │ │
│ └─────────────┘ └─────────────┘ │
│ │
└─────────────────────────────────────────┘
api.hunyuan.cloud.tencent.com + 旧模型 hunyuan-lite/turbo/standard 已于 2026-06-22 全部下线。现统一使用 TokenHub 端点 tokenhub.tencentmaas.com + 模型 hy3-preview(OpenAI 兼容,sk- Key 需在 TokenHub 重新创建)。 scripts/llm_semantic_match.py 已同步修复。COALESCE(_06,_05,_04,_03,_02,_01) 取最新非空期,禁止写死旧期。scripts/ai_quota_engine.py(借鉴广联达 AI 组价专家):一句话清单描述 → LLM/规则解析 → 定额匹配(AZ优先/工业管道优先)→ Step0 单位比对 → 三级查价 → 自动计算 AD。内置第8册阀门/法兰/管件陷阱规则与未计价主材识别。scripts/price_check.py:报价 vs 历史项目同类型价格区间对标(±30% 黄标 / ±50% 红标+溯源);供应商询比价推荐;三库缺口标注"严禁编造"。scripts/indicator_engine.py:单方造价/含量指标沉淀、动态调价(指标×当前信息价/历史信息价)、同规格对标推荐。AD = 定额基价 + 人工费×48.08%(济南安装费率,不含利润、不含税金,主材单独计)assets/quota_reference.db(20KB,34条费率记录),覆盖16个工程类型references/cost_composition.md(费用构成与计价程序)、 references/measure_items.md(措施项目费计算规则)、 references/other_items.md(其他项目费)fee_rates 表 获取费率,严禁使用 quota_items.management_rate / profit_rate 字段general_price 已是综合单价,不可再叠加管理费📌 双模式说明:本技能支持两种数据源模式,默认使用大模型推理数据(无需配置本地数据库)。如需严格溯源,可切换为唯一来源模式。
使用大模型的工程造价知识进行定额推理,适用于:
如需精确到章节条款的溯源数据,请 联系作者 获取完整数据库(📧 3047871993@qq.com),或自行导入:
数据来源:
COALESCE(_06,_05,_04,_03,_02,_01) 取最新非空期,禁止写死旧期)导入方式:
quota.db 完整数据库文件(SQLite格式,含约3.5万条定额+8,441条材料价格)scripts/migrate_to_sqlite.py 从PDF/Excel源文件导入quota.db 放入 index/ 目录数据库结构:
quotas 表:quota_no、original_quota_no、名称、chapter、base_price、labor_fee 等materials 表:名称、规格型号、含税单价、除税单价、增值税率等费率数据库(v1.1.0 新增):
quota_reference.db(技能 assets 目录,20KB):含 fee_rates 表,34条记录SELECT management_rate, profit_rate, calculation_base FROM fee_rates WHERE engineering_type = '安装工程' AND city = '济南市'以下10条代表性定额为技能内置示例数据,无完整商业授权。
定额编号名称基价(元)单位人工费(元)AZ-8-3-27低压碳钢阀门安装 DN200313.64个205.50AZ-8-3-28低压钢管焊接 φ57×3.545.2010m28.30AZ-10-1-1室内给水镀锌钢管 DN5089.5010m56.80AZ-9-1-1自动喷淋系统管道螺纹连接68.3010m42.10AZ-4-6-1电气管道钢管敷设 MT2056.80100m35.20AZ-7-2-1风管制作安装(δ0.75mm)98.5010m²62.40AZ-6-1-1温度仪表安装125.00支78.60AZ-12-1-1管道除锈(轻锈)18.6010m²12.30AZ-13-1-1脚手架搭拆(10m内)45.0010m²28.50AZ-3-1-1碳钢容器安装(5t内)680.00台420.00
⚠️ 法律声明:示例数据仅供技能演示使用,不得作为正式计价依据。正式项目请使用经授权的完整定额数据库。
重要:《山东省安装工程消耗量定额(2025版)》共 13个分册,覆盖安装工程全专业。
分册号分册名称主要内容常见定额编号示例第1册机械设备安装工程泵、风机、制冷设备、通用设备的安装与调试,找正、灌浆1-1-1(泵安装)第2册热力设备安装工程锅炉、换热站、余热利用系统安装2-1-1(锅炉安装)第3册静置设备与工艺金属结构容器、塔器、储罐制作安装,金属平台/梯子/栏杆3-1-1(塔器安装)第4册电气设备安装工程变配电、电缆敷设、照明系统、防雷接地、配管配线4-6-1(钢管敷设)第5册建筑智能化工程综合布线、安防、楼宇自控、智能照明、火灾报警联动5-1-1(综合布线)第6册自动化控制仪表安装工程工业自动化仪表、过程检测与控制装置、仪表盘柜,共10章47节885个子目6-1-1(温度仪表)第7册通风空调工程风管、风机、空调机组、冷却塔、消声设备系统安装7-2-1(风管制作安装)第8册工业管道工程高温高压工业管道预制、安装、试压、吹扫(石化/制药行业)8-3-28(低压钢管焊接)第9册消防工程水/气体/泡沫灭火系统、火灾自动报警、消防联动设备9-1-1(自动喷淋管道)第10册给排水、采暖、燃气工程室内外给排水、散热器、地暖、燃气管道及器具安装10-1-1(室内给水镀锌钢管)第11册通信设备与线缆安装工程电话、网络、有线电视、移动通信室内覆盖系统11-1-1(电话系统安装)第12册刷油、防腐蚀、绝热工程金属表面防腐、管道绝热、设备保温施工12-1-1(管道除锈)第13册措施项目脚手架、高层建筑施工增加费、系统调试费、安全文明施工费等可计量措施项目13-1-1(脚手架搭拆)
注:原2016版定额已废止。2025版各分册均体现"四新"技术应用导向,支持绿色建造与智能建造。
search_quota.py 支持 volume 参数,先过滤分册再做语义/文本搜索,用法: python search_quota.py "低压焊接" 5 "第8册"search_quota.py v6 优先使用SQLite数据库查询(毫秒级),支持精确/LIKE模糊/FTS5全文三级检索重要:一个清单项目通常需要多条定额配合(如:安装定额 + 除锈定额 + 保温定额 + 主材),组价时必须齐全!
search_quota.py v6 已支持 SQLite 毫秒级查询, 优先使用本脚本,避免手写临时Python文件。
ash python search_quota.py --quota-no "AZ-8-3-85"
数据库 ame 字段格式:第8册阀门类定额的 ame 字段为 "公称直径(mm以内) 100",不含"DN"前缀和"调节阀"字样。
搜索词结果原因"DN100 调节阀"❌ 未找到name不含"调节阀","DN100"不匹配(数据库是"100")"低压调节阀"❌ 未找到chapter="一、低压阀门"不含"调节阀"三字"100 阀门"✅ 找到name含"100",chapter含"阀门""调节阀"⚠️ 找到第6册匹配第6册(仪表调节阀),非第8册"公称直径 100"✅ 找到精确匹配name字段
`ash
python search_quota.py "100 阀门" 5 "第8册"
python search_quota.py --quota-no "AZ-8-3-85"
python search_quota.py --material "法兰 DN100" python search_quota.py --material "螺栓 M16" `
操作耗时脚本启动 + SQLite初始化150ms--quota-no 精确查询200ms关键词搜索("100 阀门")~220ms完整查询(主定额+辅定额+2种材料)~900ms
每个定额子目输出必须包含以下字段,缺一不可:
字段说明定额编号如 AZ-8-3-28(带专业前缀)分册号第X册 XX工程章节号定额手册章节编号条款号该子目在章节中的条款编号工作内容定额工作内容原文(逐字引用)计量单位如:m、m²、个、套等基价济南市价目表2026版单价
无分册号、章节号、条款号、工作内容原文的定额输出视为不合格。
重大变化:依据 GB/T 50500-2024,自2025年11月1日起:
- 取消"规费"科目,社会保险费、住房公积金并入人工费
- 企业管理费中已含相关统筹费用
- 费用结构简化为:人工费 + 管理费 + 利润 + 税金
工程类型工程类别管理费率利润率计费基础税金安装工程—48.08%29.15%人工费9%建筑工程I类39.15%32.13%人工费9%建筑工程II类30.11%17.61%人工费9%建筑工程III类23.27%13.59%人工费9%市政工程道路/桥涵/排水19.35%10.36%人工费+机具费9%市政工程给水36.22%22.89%人工费+机具费9%园林绿化工程—52.33%27.26%人工费9%装饰工程I类61.57%34.87%人工费9%装饰工程II类47.03%21.30%人工费9%装饰工程III类29.81%16.37%人工费9%房屋修缮工程—48.08%~46.16%29.15%~24.15%人工费9%古建筑修缮工程—47.81%28.47%人工费9%仿古建筑工程—30.59%13.13%人工费9%构筑物工程I/II/III类31.30%/27.16%/18.91%26.93%/20.99%/10.51%人工费9%桩基础工程I/II/III类20.93%/15.53%/11.91%15.17%/11.36%/4.35%人工费9%单独土石方工程I/II/III类26.07%/18.05%/11.91%20.02%/13.88%/6.16%人工费9%市政养护维修工程—20.07%~25.19%11.79%~14.86%人工费+机具费9%
计费基础说明:
- 安装/建筑/装饰/园林/修缮/仿古/构筑物/桩基础/土石方 → 人工费
- 市政工程(含养护维修)→ 人工费 + 施工机具使用费
sql
-- 正确做法:查 fee_rates 表
SELECT management_rate, profit_rate, calculation_base
FROM fee_rates
WHERE engineering_type = '安装工程'
AND city = '济南市';
-- ❌ 错误做法:以下字段全部为安装工程费率,对其他专业不正确
-- SELECT management_rate, profit_rate FROM quota_items WHERE ...
text
管理费 = 人工费 × 48.08%
利润 = (人工费 + 管理费) × 29.15%
税前综合单价 = 基价 + 管理费 + 利润 + 未计价材料费
含税综合单价 = 税前综合单价 × 1.09
其他专业的组价公式同理,只需替换对应的管理费率和利润率。 市政工程的管理费和利润以 人工费+施工机具使用费 为基数计算。
时间节点政策内容2025年9月1日国有资金投资项目 必须执行 GB/T 50500-20242025年11月1日山东省新版费用计算规则与各专业消耗量定额正式施行2026年1月1日济南公共资源交易中心全面启用新标准,房屋市政工程按新标准执行
⚠️ 过渡期:2026年1月1日前已发标或签约项目可继续沿用2013版清单标准。
⚠️ v1.2.0 强制要求:任何组价任务启动时, 必须先执行 Step 0(单位比对),再进入后续流程。不经过单位比对直接输出价格可能产生数倍偏差。
执行时机:组价计算前(在 Step 1 定额查询之后、Step 2 组价计算之前)
text
组价 Step 0(必须在计算前执行):
1. 读取用户清单中每一项的"单位"(从Excel或用户输入)
2. 查询匹配定额的 unit 字段(quota.db → quotas 表或 quota_reference.db 对应表)
3. 比对两个单位:
├─ 一致 → 折算系数 = 1.0
├─ 不同但等价(处↔个、台↔个) → 折算系数 = 1.0(1:1等价)
└─ 不同 → 计算折算系数(见下方速查表)
4. 安装单价1 = (定额基价 + 管理费) × 折算系数 × 拆除系数
⚠️ 强制要求:任何组价任务启动时,必须先执行 Step 0,再进入 Step 1。 不经过单位比对直接输出价格可能产生数倍偏差。
触发时机:用户使用自然语言描述工作内容时(如"热泵安装"、"低压管道焊接")
接收用户输入的工作内容描述
调用 scripts/llm_semantic_match.py:
bash
python scripts/llm_semantic_match.py "热泵机组安装" "第2册热力设备"
豆包API返回推荐的定额列表(JSON格式)
展示推荐结果,等待用户确认(⭐确认节点1)
用户确认后,进入流程一
references/ 目录对应分册文件中检索匹配定额references/multi_quota_mapping.md 查找该清单的主定额+辅定额标准组合⚠️ 重要:输出定额后必须进入确认节点,等待用户确认后再执行组价!
输出格式示例:
text
【清单】室内给水镀锌钢管DN50 【主定额】10-1-1(第10册第1章第1条)基价:XX元/10m 【辅定额】 - 8-7-1 管道冲洗消毒(第8册第7章第1条)基价:XX元/100m - 8-5-12 螺纹阀门安装(第8册第5章第12条)基价:XX元/个 【主材】 - 镀锌钢管DN50:清单量×1.02(含2%损耗) - 截止阀DN50:按设计数量
⚠️ 重要:一个清单项目的综合单价 = Σ(所有定额合价) + Σ(所有主材费)
⚠️ v1.2.0 强制要求:执行组价前必须先完成 Step 0(单位比对)(见上方工作流程开头),读取清单单位与定额 unit 字段比对,不一致时按折算系数换算。不执行 Step 0 直接输出价格可能产生数倍偏差!
Step 0:单位比对(⚡v1.2.0,先于 Step 1 执行)
Step 1:识别清单信息
Step 2:查定额组合
references/multi_quota_mapping.md 获取该清单的标准定额组合Step 3:逐项计算定额工程量
unit_conversion.md)Step 4:逐项计算定额合价
text
主定额合价 = 主定额工程量 × 主定额基价
辅定额1合价 = 辅定额1工程量 × 辅定额1基价
辅定额2合价 = 辅定额2工程量 × 辅定额2基价
...
主材费 = 主材用量 × 主材信息价
Step 5:计算清单综合单价
text
清单总价 = 主定额合价 + Σ(辅定额合价) + 主材费
税前综合单价 = 清单总价 × (1 + 48.08%) × (1 + 29.15%)
含税综合单价 = 税前综合单价 × (1 + 9%)
Step 6:输出组价明细表 (⭐确认节点2)
读取用户确认的组价结果
读取 assets/报价模板.xlsx 作为基础模板
创建以下Sheet结构:
填充数据:
公式设置:
=[@清单工程量]*[@换算系数]=[@定额工程量]*[@基价]=SUMIFS(定额明细表[@定额合价],[@清单编码],[@当前清单编码]) * (1+48.08%)*(1+29.15%)=[@综合单价]*(1+9%)汇总行: =SUBTOTAL(109,[合价])(筛选时不跳行)
输出文件并告知用户保存路径
Excel模板改进建议: 报价模板.xlsx 需要更新为双Sheet结构(清单汇总 + 定额明细),才能支持一清单对N定额的输出!
text
cnsdoce/
├── SKILL.md # 本文件(含MIT-0许可证声明)
├── LICENSE # MIT-0许可证(ClawHub强制要求)
├── scripts/
│ ├── search_quota.py # 定额搜索脚本(SQLite优先)
│ ├── llm_semantic_match.py # LLM语义匹配脚本(⚡v2.0.0 TokenHub迁移)
│ ├── calc_fees.py # 取费计算(2025版规则)
│ ├── match_quota.py # 定额关键词匹配引擎
│ ├── migrate_to_sqlite.py # SQLite迁移脚本
│ ├── ai_quota_engine.py # ⚡v2.0.0 AI智能组价引擎(一句话组价)
│ ├── price_check.py # ⚡v2.0.0 AI价格自检+询比价
│ ├── indicator_engine.py # ⚡v2.0.0 AI指标引擎(单方造价/动态调价/对标)
│ └── requirements.txt # Python依赖包
├── references/
│ ├── fee_standard.md # 取费标准(全专业,v1.1.0扩充)
│ ├── unit_conversion.md # 清单与定额单位换算表
│ ├── multi_quota_mapping.md # 一清单对N定额标准组合
│ ├── cost_composition.md # ⚡费用构成与计价程序(v1.1.0新增)
│ ├── measure_items.md # ⚡措施项目费计算规则(v1.1.0新增)
│ ├── other_items.md # ⚡其他项目费(暂列金额/暂估价/计日工)(v1.1.0新增)
│ └── volume_0[1-9]_*.md # 13分册章节摘要(精简版)
├── index/
│ └── quota.db # SQLite数据库(可选,示例10条)
└── assets/
├── 报价模板.xlsx # 带公式的标准报价表Excel模板
└── quota_reference.db # ⚡全专业费率库(v1.1.0新增,20KB,34条记录)
⚠️
quota.db完整数据库(含约3.5万条定额+8,441条材料价格)需 联系作者(📧 3047871993@qq.com)获取,或自行导入。 ✅quota_reference.db已内置在技能中(20KB),无需额外配置,覆盖16个专业类型费率。 ⚡ v2.0.0 三大引擎:ai_quota_engine.py/price_check.py/indicator_engine.py在 唯一来源模式(配置完整数据库)下自动启用;默认 LLM 推理模式下价格自检与指标引擎自动降级(无库跳过),AI 组价引擎走 LLM 推理路径。
分册专业常见定额编号示例备注第4册电气安装4-6-1(钢管敷设 MT20)变配电/电缆/照明第6册仪表安装6-1-1(温度仪表安装)自动化控制仪表第7册通风空调7-2-1(风管制作安装)风机/空调机组第8册工业管道8-3-28(低压钢管焊接 φ57×3.5)高温高压管道第9册消防安装9-1-1(自动喷淋管道)水/气体/泡沫灭火第10册给排水10-1-1(室内给水镀锌钢管)散热器/地暖/燃气第12册刷油绝热12-1-1(管道除锈)防腐/保温第13册措施项目13-1-1(脚手架搭拆)高层增加费/调试费
报价表 Excel 必须满足:
表头:项目名称 + 日期 + 编制人
列结构:
公式列:
=IF(清单单位="m",0.1,IF(...)) 或 VLOOKUP 查表=[@清单工程量]*[@换算系数]=[@基价]*(1+48.08%)*(1+29.15%)=[@税前综合单价]*(1+9%)=[@定额工程量]*[@含税综合单价]=SUBTOTAL(109,[合价])(筛选时不跳行)格式:千元以上保留2位小数,千元以下取整,金额用万元标注
合计行:加粗,含大写金额
详细换算表见
references/unit_conversion.md
核心原则:数据库中定额条目的 unit 字段 ≠ 用户清单中的计量单位。 组价前必须读取并比对两个单位,单位不一致时必须按折算系数换算价格。
text
组价 Step 0(必须在计算前执行):
1. 读取用户清单中每一项的"单位"(从Excel或用户输入)
2. 查询匹配定额的 unit 字段(quota.db → quotas 表)
3. 比对两个单位:
├─ 一致 → 折算系数 = 1.0
├─ 不同但等价(处↔个、台↔个) → 折算系数 = 1.0(1:1等价)
└─ 不同 → 计算折算系数
4. 安装单价1 = (定额基价 + 管理费) × 折算系数 × 拆除系数
定额单位清单单位折算系数典型定额说明10m³个/项体积/10JZ-5-1-11 基础制作需从规格中提取长×宽×厚计算体积(m³),体积÷1010m³项体积/10JZ-19-3-4 基础拆除同上,通过规格字段提取实际体积10m米**×0.1管道类定额定额每10米,清单每米100m米×0.01AZ-4-9-104 电缆敷设定额每100米,清单每米100kgkg×0.01AZ-13-1-5 支架安装定额每100kg,清单每kg处个×1.0SZ-5-3-157 阀门附件1:1等价**,市政给水"处"=1个连接点台个**×1.0AZ-4-2-1 断路器1:1等价**,设备类"台"=清单"个"
定额单位清单单位换算系数示例10mm×0.1100m管道 → 10个定额单位100mm×0.01500m电缆 → 5个定额单位10m²m²×0.1200m²风管 → 20个定额单位10个个×0.150个阀门 → 5个定额单位100kgkg×0.01300kg支架 → 3个定额单位个个×1变压器/空调机组不换算
当定额单位=10m³、清单单位=个/项时:
text
# 从规格字段解析体积(如 "C30砼长2.9m宽1.85m厚0.1m")
# 或 "长5m×宽3m×高0.3m"
体积 = 长 × 宽 × 高(厚) # 单位 m³
折算系数 = 体积 / 10
安装单价1 = (定额基价 + 管理费) × 折算系数 × 拆除系数
拆除类定额按山东省规定以 50% 计取(拆除系数 = 0.5):
text
if '拆除' in 定额名称 or '拆除' in 项目名称:
拆除系数 = 0.5
else:
拆除系数 = 1.0
若使用 quota_jinan_2026.db(完整版数据库,需自行导入),其 general_price 已是 综合单价(含管理费+利润), 不可再叠加管理费:
text
# quota_jinan_2026.db 中的定额
安装单价1 = general_price × 折算系数 × 拆除系数
# 标准 quota.db 中的定额
计费基础 = 人工费 + 机械费 (安装工程用人工费)
管理费 = 计费基础 × 管理费率
安装单价1 = (定额基价 + 管理费) × 折算系数 × 拆除系数
组价完成后必须逐项验证:
以下案例来自实际工程项目,已对项目名称和具体金额做脱敏处理,保留定额编号和折算逻辑:
序号项目定额编号定额单位清单单位折算错误根因1风机拆除AZ-1-7-65台台×1.0遗漏拆除×0.5(少扣50%)2基础制作JZ-5-1-1110m³个需体积折算未做体积折算(10m³按1个算,偏差可达19倍)3基础拆除JZ-19-3-410m³项需×0.45体积折算+拆除×0.5 双遗漏4风机安装济南 1-7-8台台×1.0济南价目表叠加管理费(general_price已含管理费,重复计算偏高33%)5钢管济南 8-1-3010m米×0.1未做单位折算(10m按1m算,偏高10倍)6电缆桥架AZ-4-9-3810m米×0.1未做单位折算(偏高10倍)7电缆AZ-4-9-104100m米×0.01未做单位折算(偏高100倍)
⚠️ 以上案例说明: 单位不匹配可能导致价格偏差数倍到百倍,这是工程计价中最常见也最严重的错误来源之一。
sql
-- quota.db 查单位(quota 是定额编号字段名,具体字段名以实际数据库为准)
SELECT quota_no, name, unit, base_price, labor_fee, machine_fee
FROM quotas WHERE quota_no = 'JZ-5-1-11';
-- 若使用 quota_jinan_2026.db
SELECT quota_id, unit, general_price, general_labor, general_machine, project_name
FROM quota_items WHERE quota_type = '安装工程' AND quota_id = '1-7-8';
text
保温体积 = π × (管道外径 + 保温厚度) × 保温厚度 × 管道长度
Excel:=PI()*(D2+δ)*δ*L2
背景:在生成报价表时,需从材料数据库(
quota.db的materials表,或用户导入的完整数据库)匹配未计价材料价格。材料库中规格信息在名称字段中(非规格型号),且计价单位(m/个/t/kg等)可能与定额计量单位(10m/10个/副等)不一致,需要匹配+换算。
当根据定额子目匹配材料时,采用以下多层级打分策略:
匹配层级条件分数精确DN匹配材料名称含 DN{目标DN}+10管外径匹配材料名称含 D{管外径} 或 管外径D{管外径}+9φ匹配材料名称含 φ{管外径} 或 Φ{管外径}+8尺寸标记匹配名称含目标数字且有D/φ标记+5来源优先级价格取定表(2026)+2来源优先级济南造价信息2026年 第6期(最新非空)+1通用条目加分名称无DN/φ/D等规格标记(通用条目)+1错误DN扣分名称含非目标DN号(如搜索DN250但名称含DN20)-5
DN→管外径映射表:
DN1520253240506580100125150200250300350400450500600700800D1825323845577689108133159219273325377426480530630720820
匹配结果标注:
(参考) 标记,移除名称中的错误DN号排除关键词:栏杆、扶手、成品安装、底座、盲板等非工程材料条目需过滤
材料库中的计价单位(如m、个、t、kg、片、只)可能与定额计量单位(如10m、10个、副)不同,需统一换算:
可换算的维度(同维度):
材料单位定额单位换算系数说明个10个×10管件、阀门m10m×10管材按长度计价片副×21副法兰 = 2片只副×21副法兰 = 2只
不可换算的维度(跨维度):
材料单位定额单位处理方式kg10m⚠️ 无法换算,需人工确认或另找按米计价的条目t10m / 10个⚠️ 无法换算,标记红色提醒个副⚠️ 含义不同(阀门个≠法兰副),需人工确认
报价表综合单价Sheet末尾应包含以下列:
列列名说明未计价材料材料名称+规格如"无缝钢管 DN50",参考匹配标注 (参考)未计价材料单价(元)数值已换算为定额计量单位的单价,不可换算的红色标注计价单位定额计量单位与定额"计量单位"列一致来源数据来源价格取定表(2026) 或 济南造价信息2026年(第5/6期,取最新非空)
⚠️ 价格溯源:每个未计价材料价格必须标注来源,济南造价信息需标注期数(第6期优先,回退旧期)与字段名
以下是在 Windows PowerShell 5.1 环境下执行定额查询时积累的经验教训,必须严格遵守。
操作❌ 错误写法✅ 正确写法说明链式命令cd X && python a.py``cd X; python a.pyPS5.1 不支持 &&/ ||条件执行A && B``A; if ($?) { B }需用 $? 判断上条命令是否成功三元运算A ? B : C``if (A) { B } else { C }三元运算符为 PS7+ 特性空合并$a ?? $b``if ($null -eq $a) { $b } else { $a }``?? 为 PS7+ 特性
问题:在 PowerShell 中直接用 python -c "含中文的字符串" 执行,中文会乱码或报错。
解决方案:
.py 文件(UTF-8 编码).py 文件powershell
# ❌ 错误:中文会乱码
python -c "print('DN100调节阀')"
# ✅ 正确:先写文件再执行
Set-Content -Path temp_query.py -Value "print('DN100调节阀')" -Encoding UTF8
C:\Users\Administrator\.workbuddy\binaries\python\envs\default\Scripts\python.exe temp_query.py
场景正确做法原因引用 .workbuddy 目录使用绝对路径 C:\Users\Administrator\.workbuddy\...相对路径会被 PS 当作模块名解析Python 可执行文件C:\Users\Administrator\.workbuddy\binaries\python\envs\default\Scripts\python.exe避免 PATH 混乱脚本路径绝对路径或确保正确 working directoryPowerShell 的 cwd 可能与预期不同
查询 quota.db 时,必须先确认列名(用 PRAGMA table_info(表名)), 严禁猜测列名。
表名正确列名常见错误quotas``labor_fee(人工费)labor_cost ❌quotas``material_fee(材料费)material_cost ❌quotas``machine_fee(机械费)machine_cost ❌quotas``base_price(基价)basePrice ❌materials``含税单价(中文列名)tax_included_price ❌
不要每次都写临时 Python 文件! search_quota.py v6 已支持命令行直接查询,且优先使用 SQLite 毫秒级查询。
powershell
# ✅ 推荐:直接调用脚本(快)
$python = "C:\Users\Administrator\.workbuddy\binaries\python\envs\default\Scripts\python.exe"
$script = "C:\Users\Administrator\.workbuddy\skills\cnsdoce\scripts\search_quota.py"
& $python $script "DN100 调节阀"
# ❌ 避免:每次都创建临时查询文件(慢)
# 仅在脚本无法满足需求时才写临时 .py 文件
text
用户提问
↓
直接调用 search_quota.py(命令行参数传入)
↓
(如脚本参数解析不支持中文)→ 写临时 .py 文件查询 SQLite
↓
解析结果 → 输出给用户
错误信息原因解决方案&& is not recognizedPS5.1 不支持 &&改用 ; 链接命令labor_cost column not found列名错误,应为 labor_fee``PRAGMA table_info(quotas) 查列名中文乱码/问号python -c 编码问题写 .py 文件,UTF8 编码执行.workbuddy 被当作模块相对路径问题改用绝对路径FTS5 中文无效unicode61 不支持中文分词中文搜索用 LIKE,不用 FTS5
以下表述自动触发本技能:
ai_quota_engine.pyprice_check.pyindicator_engine.py