cnsdoce
/install cnsdoce
\r \r
中国安装工程造价技能\r
\r
LLM语义匹配配置 (2026-05更新)\r
\r
多模型支持\r
- 默认模型:腾讯混元 Hunyuan-Lite(免费,无使用限制)⭐已开启\r
- 备选模型:字节豆包 Doubao(按需开启,需设置
LLM_PROVIDER=doubao)\r - 降级策略:混元调用失败时,自动降级到豆包(如已配置API Key)\r \r
当前状态 ✅ 全部配置完成(2026-05-15)\r
| 配置项 | 状态 | 说明 |\r
|--------|------|------|\r
| 混元 SDK | ✅ 已安装 | tencentcloud-sdk-python-hunyuan 3.1.56 |\r
| 混元 API Key | ✅ 已配置 | 环境变量 HUNYUAN_API_KEY(sk-开头) |\r
| 豆包 API Key | ✅ 已配置 | 环境变量 DOUBAO_API_KEY(ark-开头) |\r
| 豆包模型服务 | ✅ 已开通 | doubao-1-5-lite-32k-250115,直接用模型ID调用 |\r
| 默认 Provider | ✅ hunyuan | 环境变量 LLM_PROVIDER(默认混元免费) |\r
\r
重要:豆包无需设置
DOUBAO_ENDPOINT_ID,直接用模型IDdoubao-1-5-lite-32k-250115即可调用。\r \r
豆包模型调用方式(已验证 2026-05-15)\r
- 直接设置
LLM_PROVIDER=doubao即可使用\r - 无需创建接入点(Endpoint),模型ID即为调用标识\r
- API地址:
https://ark.cn-beijing.volces.com/api/v3/chat/completions\r - 费率:0.003元/千tokens(lite版)\r \r
模型切换\r
from scripts.llm_semantic_match import *\r
\r
use_hunyuan() # 切换到腾讯混元(免费)⭐默认\r
use_doubao() # 切换到豆包模型(备选)\r
switch_model("hunyuan") # 通过字符串切换\r
restore_default() # 恢复默认(混元)\r
get_current_provider() # 查看当前使用的模型\r
```\r
\r
### 命令行模型切换\r
```bash\r
# 默认使用混元\r
python scripts/llm_semantic_match.py "热泵安装" "第2册热力设备"\r
\r
# 指定使用豆包\r
python scripts/llm_semantic_match.py "热泵安装" "第2册热力设备" --doubao\r
\r
# 指定使用混元\r
python scripts/llm_semantic_match.py "热泵安装" "第2册热力设备" --hunyuan\r
\r
# 环境变量切换(持久化)\r
export LLM_PROVIDER=doubao # 切换到豆包\r
export LLM_PROVIDER=hunyuan # 切换到混元(默认)\r
```\r
\r
### 语义匹配脚本\r
- **脚本路径**:`scripts/llm_semantic_match.py`\r
- **调用方式**:`python scripts/llm_semantic_match.py "热泵安装" "第2册热力设备"`\r
- **输出格式**:JSON格式的定额推荐列表\r
\r
## 确认机制 *(2026-05新增)*\r
\r
### 工作流程(带确认节点)\r
\r
```\r
用户输入需求\r
↓\r
Step 1: LLM语义匹配(默认调用腾讯混元API)\r
↓\r
显示推荐定额列表,等待用户确认 ⭐【确认节点1】\r
↓\r
用户回复"确认" → 继续组价\r
用户回复"修改" → 重新匹配\r
↓\r
Step 2: 组价计算\r
↓\r
显示组价明细,等待用户确认 ⭐【确认节点2】\r
↓\r
用户回复"确认" → 生成报价表\r
用户回复"调整" → 修改参数\r
↓\r
Step 3: 生成报价表\r
↓\r
最终确认是否导出Excel ⭐【确认节点3】\r
↓\r
完成\r
```\r
\r
### 确认节点说明\r
\r
| 确认节点 | 时机 | 用户操作 | 后续动作 |\r
|---------|------|---------|---------|\r
| 确认节点1 | 定额匹配完成后 | 确认/修改/补充 | 进入组价或重新匹配 |\r
| 确认节点2 | 组价计算完成后 | 确认/调整取费 | 进入报价表生成或重新计算 |\r
| 确认节点3 | 报价表生成前 | 确认导出/查看明细 | 输出Excel或继续编辑 |\r
\r
### 确认界面示例\r
\r
```\r
┌─────────────────────────────────────────┐\r
│ 📋 定额语义匹配结果 │\r
├─────────────────────────────────────────┤\r
│ │\r
│ 根据您的需求「热泵机组安装」, │\r
│ AI推荐以下定额组合: │\r
│ │\r
│ ┌─────────────────────────────────┐ │\r
│ │ 【主定额】 │ │\r
│ │ ☐ 2-1-5 热泵机组安装(200kW内)│ │\r
│ │ 基价:1,250.00元/台 │ │\r
│ ├─────────────────────────────────┤ │\r
│ │ 【辅定额】 │ │\r
│ │ ☐ 2-1-12 附件安装 │ │\r
│ │ ☐ 8-3-28 管道焊接 │ │\r
│ │ ☐ 8-5-15 管道冲洗试压 │ │\r
│ └─────────────────────────────────┘ │\r
│ │\r
│ ───────────────────────────────────── │\r
│ │\r
│ ⚠️ 请确认以上定额是否正确? │\r
│ │\r
│ ┌─────────────┐ ┌─────────────┐ │\r
│ │ ✅ 确认 │ │ ❌ 修改 │ │\r
│ └─────────────┘ └─────────────┘ │\r
│ │\r
└─────────────────────────────────────────┘\r
```\r
\r
### 确认超时处理\r
- 用户超过5分钟未回复 → 发送提醒\r
- 超过10分钟未回复 → 保留当前结果,可随时继续\r
\r
## 数据源(强制规则)\r
\r
> **📌 双模式说明**:本技能支持两种数据源模式,默认使用大模型推理数据(无需配置本地数据库)。如需严格溯源,可切换为唯一来源模式。\r
\r
### 模式一:默认模式(大模型推理)⭐推荐\r
\r
使用大模型的工程造价知识进行定额推理,适用于:\r
- 初步估算、方案比选\r
- 查询通用定额编号和基价区间\r
- 无需额外配置,直接可用\r
\r
### 模式二:唯一来源模式(严格溯源)\r
\r
如需精确到章节条款的溯源数据,请联系作者获取完整数据库,或自行导入:\r
\r
**数据来源**:\r
- 《山东省安装工程消耗量定额(2025版)》13分册\r
- 《济南市价目表(2026版)》\r
- 《济南造价信息》2026年03期\r
\r
**导入方式**:\r
1. 联系作者获取 `quota.db` 完整数据库文件(SQLite格式,含约3.5万条定额+8,441条材料价格)\r
2. 或自行使用 `scripts/migrate_to_sqlite.py` 从PDF/Excel源文件导入\r
3. 将 `quota.db` 放入 `index/` 目录\r
\r
**数据库结构**:\r
- `quotas` 表:quota_no、original_quota_no、名称、chapter、base_price、labor_fee 等\r
- `materials` 表:名称、规格型号、含税单价、除税单价、增值税率等\r
- FTS5全文索引:支持精确/LIKE模糊/FTS5全文三级检索\r
\r
### 示例数据(已脱敏,仅供演示)\r
\r
> 以下10条代表性定额为技能内置示例数据,无完整商业授权。\r
\r
| 定额编号 | 名称 | 基价(元) | 单位 | 人工费(元) |\r
|---------|------|---------|------|-----------|\r
| AZ-8-3-27 | 低压碳钢阀门安装 DN200 | 313.64 | 个 | 205.50 |\r
| AZ-8-3-28 | 低压钢管焊接 φ57×3.5 | 45.20 | 10m | 28.30 |\r
| AZ-10-1-1 | 室内给水镀锌钢管 DN50 | 89.50 | 10m | 56.80 |\r
| AZ-9-1-1 | 自动喷淋系统管道螺纹连接 | 68.30 | 10m | 42.10 |\r
| AZ-4-6-1 | 电气管道钢管敷设 MT20 | 56.80 | 100m | 35.20 |\r
| AZ-7-2-1 | 风管制作安装(δ0.75mm) | 98.50 | 10m² | 62.40 |\r
| AZ-6-1-1 | 温度仪表安装 | 125.00 | 支 | 78.60 |\r
| AZ-12-1-1 | 管道除锈(轻锈) | 18.60 | 10m² | 12.30 |\r
| AZ-13-1-1 | 脚手架搭拆(10m内) | 45.00 | 10m² | 28.50 |\r
| AZ-3-1-1 | 碳钢容器安装(5t内) | 680.00 | 台 | 420.00 |\r
\r
> ⚠️ **法律声明**:示例数据仅供技能演示使用,不得作为正式计价依据。正式项目请使用经授权的完整定额数据库。\r
\r
### 严禁(唯一来源模式)\r
- 使用大模型通用知识补充定额数据;无溯源依据不得输出定额子目\r
- 材料价格必须从数据库中查取,不得使用估算值\r
\r
## 安装工程13分册专业结构(2025版)\r
\r
> **重要**:《山东省安装工程消耗量定额(2025版)》共 **13个分册**,覆盖安装工程全专业。\r
\r
| 分册号 | 分册名称 | 主要内容 | 常见定额编号示例 |\r
|:------:|---------|---------|---------------|\r
| 第1册 | 机械设备安装工程 | 泵、风机、制冷设备、通用设备的安装与调试,找正、灌浆 | 1-1-1(泵安装) |\r
| 第2册 | 热力设备安装工程 | 锅炉、换热站、余热利用系统安装 | 2-1-1(锅炉安装) |\r
| 第3册 | 静置设备与工艺金属结构 | 容器、塔器、储罐制作安装,金属平台/梯子/栏杆 | 3-1-1(塔器安装) |\r
| 第4册 | 电气设备安装工程 | 变配电、电缆敷设、照明系统、防雷接地、配管配线 | 4-6-1(钢管敷设) |\r
| 第5册 | 建筑智能化工程 | 综合布线、安防、楼宇自控、智能照明、火灾报警联动 | 5-1-1(综合布线) |\r
| 第6册 | 自动化控制仪表安装工程 | 工业自动化仪表、过程检测与控制装置、仪表盘柜,共10章47节885个子目 | 6-1-1(温度仪表) |\r
| 第7册 | 通风空调工程 | 风管、风机、空调机组、冷却塔、消声设备系统安装 | 7-2-1(风管制作安装) |\r
| 第8册 | 工业管道工程 | 高温高压工业管道预制、安装、试压、吹扫(石化/制药行业) | 8-3-28(低压钢管焊接) |\r
| 第9册 | 消防工程 | 水/气体/泡沫灭火系统、火灾自动报警、消防联动设备 | 9-1-1(自动喷淋管道) |\r
| 第10册 | 给排水、采暖、燃气工程 | 室内外给排水、散热器、地暖、燃气管道及器具安装 | 10-1-1(室内给水镀锌钢管) |\r
| 第11册 | 通信设备与线缆安装工程 | 电话、网络、有线电视、移动通信室内覆盖系统 | 11-1-1(电话系统安装) |\r
| 第12册 | 刷油、防腐蚀、绝热工程 | 金属表面防腐、管道绝热、设备保温施工 | 12-1-1(管道除锈) |\r
| 第13册 | 措施项目 | 脚手架、高层建筑施工增加费、系统调试费、安全文明施工费等可计量措施项目 | 13-1-1(脚手架搭拆) |\r
\r
> 注:原2016版定额已废止。2025版各分册均体现"四新"技术应用导向,支持绿色建造与智能建造。\r
\r
## 核心功能\r
\r
1. **定额查询** — 根据工作内容关键词,匹配1条或多条定额子目,标注分册号+章节号+条款号+工作内容原文\r
2. **分册精确过滤搜索** — `search_quota.py` 支持 `volume` 参数,先过滤分册再做语义/文本搜索,用法:`python search_quota.py "低压焊接" 5 "第8册"`\r
3. **SQLite + FTS5 全文索引** — `search_quota.py v6` 优先使用SQLite数据库查询(毫秒级),支持精确/LIKE模糊/FTS5全文三级检索\r
4. **LLM语义匹配** — 接入腾讯混元API(默认免费)+ 字节豆包API(备选),支持自然语言查询(如"热泵安装"→自动识别为第2册相关定额)\r
5. **确认机制** — 定额匹配后需用户确认一次,确保准确性后再执行组价\r
6. **材料价格查询** — 按名称/规格型号模糊搜索材料价格(支持含税价/除税价/增值税率)\r
7. **一清单对N定额组价** — 主定额 + 辅定额 + 主材费,合成综合单价\r
8. **取费计算** — 管理费+利润自动计算(规费科目已取消,社保费/公积金并入人工费)\r
9. **报价表输出** — 生成带 Excel 公式的标准报价表,可追溯计算逻辑\r
\r
> **重要**:一个清单项目通常需要多条定额配合(如:安装定额 + 除锈定额 + 保温定额 + 主材),组价时必须齐全!\r
\r
## search_quota.py 搜索技巧(经验 2026-05-16)\r
\r
> search_quota.py v6 已支持 SQLite 毫秒级查询,**优先使用本脚本**,避免手写临时Python文件。\r
\r
### ⚡ 最快方式:精确编号查询\r
\r
`\bash\r
python search_quota.py --quota-no "AZ-8-3-85"\r
`\r
- 耗时:~200ms(含SQLite初始化)\r
- 适用:已知定额编号,直接精确查询\r
\r
### 🔍 关键词搜索注意事项\r
\r
**数据库 \r
ame 字段格式**:第8册阀门类定额的 \r
ame 字段为 **"公称直径(mm以内) 100"**,不含"DN"前缀和"调节阀"字样。\r
\r
| 搜索词 | 结果 | 原因 |\r
|--------|------|------|\r
| "DN100 调节阀" | ❌ 未找到 | name不含"调节阀","DN100"不匹配(数据库是"100") |\r
| "低压调节阀" | ❌ 未找到 | chapter="一、低压阀门"不含"调节阀"三字 |\r
| "100 阀门" | ✅ 找到 | name含"100",chapter含"阀门" |\r
| "调节阀" | ⚠️ 找到第6册 | 匹配第6册(仪表调节阀),非第8册 |\r
| "公称直径 100" | ✅ 找到 | 精确匹配name字段 |\r
\r
### 📌 推荐搜索策略\r
\r
`\bash\r
# 第8册 低压阀门 → 用 "100 阀门" + 分册过滤\r
python search_quota.py "100 阀门" 5 "第8册"\r
\r
# 已知定额编号 → 直接精确查询(最快)\r
python search_quota.py --quota-no "AZ-8-3-85"\r
\r
# 材料查询 → 用 --material 参数\r
python search_quota.py --material "法兰 DN100"\r
python search_quota.py --material "螺栓 M16"\r
`\r
\r
### ⏱️ 性能参考\r
\r
| 操作 | 耗时 |\r
|------|------|\r
| 脚本启动 + SQLite初始化 | ~150ms |\r
| --quota-no 精确查询 | ~200ms |\r
| 关键词搜索("100 阀门") | ~220ms |\r
| 完整查询(主定额+辅定额+2种材料) | ~900ms |\r
\r
---\r
\r
## 定额溯源标准\r
\r
每个定额子目输出必须包含以下字段,缺一不可:\r
\r
| 字段 | 说明 |\r
|------|------|\r
| 定额编号 | 如 AZ-8-3-28(带专业前缀) |\r
| 分册号 | 第X册 XX工程 |\r
| 章节号 | 定额手册章节编号 |\r
| 条款号 | 该子目在章节中的条款编号 |\r
| 工作内容 | 定额工作内容原文(逐字引用) |\r
| 计量单位 | 如:m、m²、个、套等 |\r
| 基价 | 济南市价目表2026版单价 |\r
\r
无分册号、章节号、条款号、工作内容原文的定额输出视为不合格。\r
\r
## 取费标准(山东安装工程,2025版规则)\r
\r
> **重大变化**:依据 GB/T 50500-2024,自2025年11月1日起:\r
> - **取消"规费"科目**,社会保险费、住房公积金并入人工费\r
> - 企业管理费中已含相关统筹费用\r
> - 费用结构简化为:人工费 + 管理费 + 利润 + 税金\r
\r
```\r
管理费费率 = 48.08%(以人工费为基数)\r
利润费率 = 29.15%(以人工费+管理费为基数)\r
\r
综合费率 = (1 + 48.08%) × (1 + 29.15%) - 1 ≈ 91.25%\r
\r
税前综合单价 = 基价 × (1 + 91.25%) = 基价 × 1.9125\r
含税综合单价 = 税前综合单价 × (1 + 9%) = 基价 × 1.9125 × 1.09 ≈ 基价 × 2.0846\r
```\r
\r
税金 = 9%(增值税一般纳税人)\r
\r
## 执行时间节点(重要)\r
\r
| 时间节点 | 政策内容 |\r
|---------|---------|\r
| 2025年9月1日 | 国有资金投资项目**必须执行** GB/T 50500-2024 |\r
| 2025年11月1日 | 山东省新版费用计算规则与各专业消耗量定额正式施行 |\r
| 2026年1月1日 | 济南公共资源交易中心全面启用新标准,房屋市政工程按新标准执行 |\r
\r
> ⚠️ 过渡期:2026年1月1日前已发标或签约项目可继续沿用2013版清单标准。\r
\r
## 价格信息获取渠道\r
\r
- **广材助手**:一键选取济南2026版价目表,定额、价格、取费同步\r
- **广材网**:信息价专区,定位济南检索全套价格,支持导出\r
- **询价无忧网**:2008年至2026年2月历史信息价汇总\r
- **济南市城乡交通运输局**:公路工程主要材料价格参考信息\r
\r
## 工作流程(含一清单对N定额组价)\r
\r
### 流程零:LLM语义匹配 *(2026-05新增)*\r
\r
> **触发时机**:用户使用自然语言描述工作内容时(如"热泵安装"、"低压管道焊接")\r
\r
1. 接收用户输入的工作内容描述\r
2. 调用 `scripts/llm_semantic_match.py`:\r
```bash\r
python scripts/llm_semantic_match.py "热泵机组安装" "第2册热力设备"\r
```\r
3. 豆包API返回推荐的定额列表(JSON格式)\r
4. 展示推荐结果,等待用户确认(⭐确认节点1)\r
5. 用户确认后,进入流程一\r
\r
### 流程一:定额查询(输出主定额+关联辅定额)\r
\r
1. 接收用户确认的定额范围(或直接输入的工作内容关键词)\r
2. 根据专业类型确定分册(第X册)\r
3. 在 `references/` 目录对应分册文件中检索匹配定额\r
4. **读取 `references/multi_quota_mapping.md` 查找该清单的主定额+辅定额标准组合**\r
5. 输出:\r
- **主定额**:主定额编号 + 分册 + 章节 + 条款 + 工作内容 + 基价\r
- **辅定额List**:辅定额1编号 + ... + 辅定额N编号\r
- **主材List**:主材名称 + 规格 + 估算用量\r
6. 若本地无匹配,返回"未查到合规定额,请补充依据"\r
\r
> **⚠️ 重要**:输出定额后必须进入确认节点,等待用户确认后再执行组价!\r
\r
> **输出格式示例**:\r
> ```\r
> 【清单】室内给水镀锌钢管DN50\r
> \r
> 【主定额】10-1-1(第10册第1章第1条)基价:XX元/10m\r
> 【辅定额】\r
> - 8-7-1 管道冲洗消毒(第8册第7章第1条)基价:XX元/100m\r
> - 8-5-12 螺纹阀门安装(第8册第5章第12条)基价:XX元/个\r
> 【主材】\r
> - 镀锌钢管DN50:清单量×1.02(含2%损耗)\r
> - 截止阀DN50:按设计数量\r
> ```\r
\r
### 流程二:组价计算(一清单对N定额,含单位换算)\r
\r
> ⚠️ **重要**:一个清单项目的综合单价 = Σ(所有定额合价) + Σ(所有主材费)\r
\r
**Step 1:识别清单信息**\r
- 读取清单单位、清单工程量\r
\r
**Step 2:查定额组合**\r
- 读取 `references/multi_quota_mapping.md` 获取该清单的标准定额组合\r
- 若表中无记录,询问用户需要哪些辅定额\r
\r
**Step 3:逐项计算定额工程量**\r
- 对**主定额**:定额工程量 = 清单工程量 × 换算系数(查 `unit_conversion.md`)\r
- 对**每个辅定额**:定额工程量 = 清单工程量 × 该辅定额的换算系数\r
- 对**主材**:主材用量 = 清单工程量 × (1 + 损耗率)\r
\r
**Step 4:逐项计算定额合价**\r
```\r
主定额合价 = 主定额工程量 × 主定额基价\r
辅定额1合价 = 辅定额1工程量 × 辅定额1基价\r
辅定额2合价 = 辅定额2工程量 × 辅定额2基价\r
...\r
主材费 = 主材用量 × 主材信息价\r
```\r
\r
**Step 5:计算清单综合单价**\r
```\r
清单总价 = 主定额合价 + Σ(辅定额合价) + 主材费\r
税前综合单价 = 清单总价 × (1 + 48.08%) × (1 + 29.15%)\r
含税综合单价 = 税前综合单价 × (1 + 9%)\r
```\r
\r
**Step 6:输出组价明细表** *(⭐确认节点2)*\r
- 展示每个定额的计算过程\r
- 展示主材费计算过程\r
- 汇总清单综合单价\r
- **等待用户确认后进入流程三**\r
\r
### 流程三:报价表生成(含多定额分解)*(⭐确认节点3)*\r
\r
1. 读取用户确认的组价结果\r
2. 读取 `assets/报价模板.xlsx` 作为基础模板\r
3. **创建以下Sheet结构**:\r
- **Sheet1:清单汇总表**\r
| 清单编码 | 清单名称 | 单位 | 工程量 | 综合单价 | 合价 |\r
- **Sheet2:定额明细表**\r
| 清单编码 | 定额类型(主/辅/主材) | 定额编号 | 子目名称 | 清单单位 | 清单量 | 定额单位 | 换算系数 | 定额量 | 基价 | 定额合价 | 主材费 |\r
3. 填充数据:\r
- 每个清单对应1行在"清单汇总表"\r
- 每个清单对应N行在"定额明细表"(1主定额 + N辅定额 + M主材)\r
4. **公式设置**:\r
- 定额工程量:`=[@清单工程量]*[@换算系数]`\r
- 定额合价:`=[@定额工程量]*[@基价]`\r
- 清单综合单价:`=SUMIFS(定额明细表[@定额合价],[@清单编码],[@当前清单编码]) * (1+48.08%)*(1+29.15%)`\r
- 含税综合单价:`=[@综合单价]*(1+9%)`\r
5. 汇总行:`=SUBTOTAL(109,[合价])`(筛选时不跳行)\r
6. 输出文件并告知用户保存路径\r
\r
> **Excel模板改进建议**:\r
> 报价模板.xlsx 需要更新为双Sheet结构(清单汇总 + 定额明细),才能支持一清单对N定额的输出!\r
\r
---\r
---\r
\r
## 目录结构\r
\r
```\r
cnsdoce/\r
├── SKILL.md # 本文件(含MIT-0许可证声明)\r
├── LICENSE # MIT-0许可证(ClawHub强制要求)\r
├── scripts/\r
│ ├── search_quota.py # 定额搜索脚本(SQLite优先)\r
│ ├── llm_semantic_match.py # LLM语义匹配脚本\r
│ ├── calc_fees.py # 取费计算(2025版规则)\r
│ ├── match_quota.py # 定额关键词匹配引擎\r
│ ├── migrate_to_sqlite.py # SQLite迁移脚本\r
│ └── requirements.txt # Python依赖包\r
├── references/\r
│ ├── fee_standard.md # 取费标准(2025版规则)\r
│ ├── unit_conversion.md # 清单与定额单位换算表\r
│ ├── multi_quota_mapping.md # 一清单对N定额标准组合\r
│ └── volume_0[1-9]_*.md # 13分册章节摘要(精简版)\r
├── index/\r
│ └── quota.db # SQLite数据库(可选,联系作者获取完整版)\r
└── assets/\r
└── 报价模板.xlsx # 带公式的标准报价表Excel模板\r
```\r
\r
> ⚠️ `quota.db` 完整数据库(含约3.5万条定额+8,441条材料价格)需联系作者获取,或自行导入。\r
\r
## 常用定额编号参考(2025版安装工程13分册)\r
\r
| 分册 | 专业 | 常见定额编号示例 | 备注 |\r
|:----:|------|----------------|------|\r
| 第4册 | 电气安装 | 4-6-1(钢管敷设 MT20) | 变配电/电缆/照明 |\r
| 第6册 | 仪表安装 | 6-1-1(温度仪表安装) | 自动化控制仪表 |\r
| 第7册 | 通风空调 | 7-2-1(风管制作安装) | 风机/空调机组 |\r
| 第8册 | 工业管道 | 8-3-28(低压钢管焊接 φ57×3.5) | 高温高压管道 |\r
| 第9册 | 消防安装 | 9-1-1(自动喷淋管道) | 水/气体/泡沫灭火 |\r
| 第10册 | 给排水 | 10-1-1(室内给水镀锌钢管) | 散热器/地暖/燃气 |\r
| 第12册 | 刷油绝热 | 12-1-1(管道除锈) | 防腐/保温 |\r
| 第13册 | 措施项目 | 13-1-1(脚手架搭拆) | 高层增加费/调试费 |\r
\r
## Excel 输出规范(含单位换算)\r
\r
报价表 Excel 必须满足:\r
\r
1. **表头**:项目名称 + 日期 + 编制人\r
2. **列结构**:\r
- 序号 | 分册 | 定额编号 | 子目名称 | 章节 | 条款 | 工作内容\r
- **清单单位** | **清单工程量** | **定额单位** | **换算系数** | **定额工程量**\r
- 基价 | 税前综合单价 | 含税综合单价 | 合价 | 备注\r
3. **公式列**:\r
- 换算系数:`=IF(清单单位="m",0.1,IF(...))` 或 VLOOKUP 查表\r
- 定额工程量:`=[@清单工程量]*[@换算系数]`\r
- 税前综合单价:`=[@基价]*(1+48.08%)*(1+29.15%)`\r
- 含税综合单价:`=[@税前综合单价]*(1+9%)`\r
- 合价:`=[@定额工程量]*[@含税综合单价]`\r
- 小计:`=SUBTOTAL(109,[合价])`(筛选时不跳行)\r
4. **格式**:千元以上保留2位小数,千元以下取整,金额用万元标注\r
5. **合计行**:加粗,含大写金额\r
\r
---\r
\r
## 单位换算规范\r
\r
> 详细换算表见 `references/unit_conversion.md`\r
\r
### 通用换算规则\r
\r
| 定额单位 | 清单单位 | 换算系数 | 示例 |\r
|---------|---------|---------|------|\r
| 10m | m | ×0.1 | 100m管道 → 10个定额单位 |\r
| 100m | m | ×0.01 | 500m电缆 → 5个定额单位 |\r
| 10m² | m² | ×0.1 | 200m²风管 → 20个定额单位 |\r
| 10个 | 个 | ×0.1 | 50个阀门 → 5个定额单位 |\r
| 100kg | kg | ×0.01 | 300kg支架 → 3个定额单位 |\r
| 个 | 个 | ×1 | 变压器/空调机组不换算 |\r
\r
### 特殊换算(保温工程)\r
\r
```\r
保温体积 = π × (管道外径 + 保温厚度) × 保温厚度 × 管道长度\r
Excel:=PI()*(D2+δ)*δ*L2\r
```\r
\r
## 材料匹配与单价换算规则\r
\r
> **背景**:在生成报价表时,需从材料数据库(`quota.db` 的 `materials` 表,或用户导入的完整数据库)匹配未计价材料价格。材料库中规格信息在`名称`字段中(非`规格型号`),且计价单位(m/个/t/kg等)可能与定额计量单位(10m/10个/副等)不一致,需要匹配+换算。\r
\r
### 材料匹配打分机制\r
\r
当根据定额子目匹配材料时,采用以下多层级打分策略:\r
\r
| 匹配层级 | 条件 | 分数 |\r
|---------|------|:----:|\r
| 精确DN匹配 | 材料名称含`DN{目标DN}` | +10 |\r
| 管外径匹配 | 材料名称含`D{管外径}`或`管外径D{管外径}` | +9 |\r
| φ匹配 | 材料名称含`φ{管外径}`或`Φ{管外径}` | +8 |\r
| 尺寸标记匹配 | 名称含目标数字且有D/φ标记 | +5 |\r
| 来源优先级 | 价格取定表(2026) | +2 |\r
| 来源优先级 | 济南造价信息2026年03期 | +1 |\r
| 通用条目加分 | 名称无DN/φ/D等规格标记(通用条目) | +1 |\r
| 错误DN扣分 | 名称含非目标DN号(如搜索DN250但名称含DN20) | -5 |\r
\r
**DN→管外径映射表**:\r
\r
| DN | 15 | 20 | 25 | 32 | 40 | 50 | 65 | 80 | 100 | 125 | 150 | 200 | 250 | 300 | 350 | 400 | 450 | 500 | 600 | 700 | 800 |\r
|----|----|----|----|----|----|----|----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|\r
| D | 18 | 25 | 32 | 38 | 45 | 57 | 76 | 89 | 108 | 133 | 159 | 219 | 273 | 325 | 377 | 426 | 480 | 530 | 630 | 720 | 820 |\r
\r
**匹配结果标注**:\r
- **精确匹配**(score > 3):直接显示材料名称+规格\r
- **参考匹配**(score ≤ 3):显示清理后名称+`(参考)`标记,移除名称中的错误DN号\r
\r
**排除关键词**:栏杆、扶手、成品安装、底座、盲板等非工程材料条目需过滤\r
\r
### 未计价材料单价换算\r
\r
材料库中的计价单位(如m、个、t、kg、片、只)可能与定额计量单位(如10m、10个、副)不同,需统一换算:\r
\r
**可换算的维度(同维度)**:\r
\r
| 材料单位 | 定额单位 | 换算系数 | 说明 |\r
|---------|---------|:--------:|------|\r
| 个 | 10个 | ×10 | 管件、阀门 |\r
| m | 10m | ×10 | 管材按长度计价 |\r
| 片 | 副 | ×2 | 1副法兰 = 2片 |\r
| 只 | 副 | ×2 | 1副法兰 = 2只 |\r
\r
**不可换算的维度(跨维度)**:\r
\r
| 材料单位 | 定额单位 | 处理方式 |\r
|---------|---------|---------|\r
| kg | 10m | ⚠️ 无法换算,需人工确认或另找按米计价的条目 |\r
| t | 10m / 10个 | ⚠️ 无法换算,标记红色提醒 |\r
| 个 | 副 | ⚠️ 含义不同(阀门个≠法兰副),需人工确认 |\r
\r
### 未计价材料列规范(Excel输出)\r
\r
报价表综合单价Sheet末尾应包含以下列:\r
\r
| 列 | 列名 | 说明 |\r
|----|------|------|\r
| 未计价材料 | 材料名称+规格 | 如"无缝钢管 DN50",参考匹配标注`(参考)` |\r
| 未计价材料单价(元) | 数值 | 已换算为定额计量单位的单价,不可换算的红色标注 |\r
| 计价单位 | 定额计量单位 | 与定额"计量单位"列一致 |\r
| 来源 | 数据来源 | `价格取定表(2026)` 或 `济南造价信息2026年03期(含税单价_202603)` |\r
\r
> ⚠️ **价格溯源**:每个未计价材料价格必须标注来源,济南造价信息还需标注具体字段名(`含税单价_202603`/`含税单价_202602`/`取定价`)\r
\r
## ⚠️ PowerShell/Windows 执行注意事项(经验教训 2026-05-16)\r
\r
> 以下是在 Windows PowerShell 5.1 环境下执行定额查询时积累的经验教训,必须严格遵守。\r
\r
### 1. PowerShell 5.1 语法限制\r
\r
| 操作 | ❌ 错误写法 | ✅ 正确写法 | 说明 |\r
|------|------------|------------|------|\r
| 链式命令 | `cd X && python a.py` | `cd X; python a.py` | PS5.1 不支持 `&&`/`\|\|` |\r
| 条件执行 | `A && B` | `A; if ($?) { B }` | 需用 `$?` 判断上条命令是否成功 |\r
| 三元运算 | `A ? B : C` | `if (A) { B } else { C }` | 三元运算符为 PS7+ 特性 |\r
| 空合并 | `$a ?? $b` | `if ($null -eq $a) { $b } else { $a }` | `??` 为 PS7+ 特性 |\r
\r
### 2. 中文编码问题(最常见问题)\r
\r
**问题**:在 PowerShell 中直接用 `python -c "含中文的字符串"` 执行,中文会乱码或报错。\r
\r
**解决方案**:\r
1. 将 Python 代码写入临时 `.py` 文件(UTF-8 编码)\r
2. 执行该 `.py` 文件\r
3. 读取输出结果\r
\r
```powershell\r
# ❌ 错误:中文会乱码\r
python -c "print('DN100调节阀')"\r
\r
# ✅ 正确:先写文件再执行\r
Set-Content -Path temp_query.py -Value "print('DN100调节阀')" -Encoding UTF8\r
C:\Users\Administrator\.workbuddy\binaries\python\envs\default\Scripts\python.exe temp_query.py\r
```\r
\r
### 3. 路径引用规则\r
\r
| 场景 | 正确做法 | 原因 |\r
|------|---------|------|\r
| 引用 `.workbuddy` 目录 | 使用绝对路径 `C:\Users\Administrator\.workbuddy\...` | 相对路径会被 PS 当作模块名解析 |\r
| Python 可执行文件 | `C:\Users\Administrator\.workbuddy\binaries\python\envs\default\Scripts\python.exe` | 避免 PATH 混乱 |\r
| 脚本路径 | 绝对路径或确保正确 working directory | PowerShell 的 cwd 可能与预期不同 |\r
\r
### 4. SQLite 列名规范\r
\r
查询 `quota.db` 时,必须先确认列名(用 `PRAGMA table_info(表名)`),**严禁猜测列名**。\r
\r
| 表名 | 正确列名 | 常见错误 |\r
|------|---------|---------|\r
| `quotas` | `labor_fee`(人工费) | `labor_cost` ❌ |\r
| `quotas` | `material_fee`(材料费) | `material_cost` ❌ |\r
| `quotas` | `machine_fee`(机械费) | `machine_cost` ❌ |\r
| `quotas` | `base_price`(基价) | `basePrice` ❌ |\r
| `materials` | `含税单价`(中文列名) | `tax_included_price` ❌ |\r
\r
### 5. 优先使用 search_quota.py 脚本\r
\r
**不要每次都写临时 Python 文件!** `search_quota.py v6` 已支持命令行直接查询,且优先使用 SQLite 毫秒级查询。\r
\r
```powershell\r
# ✅ 推荐:直接调用脚本(快)\r
$python = "C:\Users\Administrator\.workbuddy\binaries\python\envs\default\Scripts\python.exe"\r
$script = "C:\Users\Administrator\.workbuddy\skills\cnsdoce\scripts\search_quota.py"\r
& $python $script "DN100 调节阀"\r
\r
# ❌ 避免:每次都创建临时查询文件(慢)\r
# 仅在脚本无法满足需求时才写临时 .py 文件\r
```\r
\r
### 6. 快速查询定额的标准流程\r
\r
```\r
用户提问\r
↓\r
直接调用 search_quota.py(命令行参数传入)\r
↓\r
(如脚本参数解析不支持中文)→ 写临时 .py 文件查询 SQLite\r
↓\r
解析结果 → 输出给用户\r
```\r
\r
### 7. 常见错误速查\r
\r
| 错误信息 | 原因 | 解决方案 |\r
|---------|------|---------|\r
| `&&` is not recognized | PS5.1 不支持 `&&` | 改用 `;` 链接命令 |\r
| `labor_cost` column not found | 列名错误,应为 `labor_fee` | `PRAGMA table_info(quotas)` 查列名 |\r
| 中文乱码/问号 | `python -c` 编码问题 | 写 .py 文件,UTF8 编码执行 |\r
| `.workbuddy` 被当作模块 | 相对路径问题 | 改用绝对路径 |\r
| FTS5 中文无效 | `unicode61` 不支持中文分词 | 中文搜索用 `LIKE`,不用 FTS5 |\r
\r
---\r
\r
## 触发词\r
\r
以下表述自动触发本技能:\r
- "查一下这个定额"\r
- "帮我组价"\r
- "套这个定额"\r
- "生成报价表"\r
- "计算一下取费"\r
- "@skill://cnsdoce"\r
- "山东安装定额" / "2025版安装定额" / "安装工程13分册"\r
- "济南价目表" / "济南市价目表2026"\r
- "GB/T 50500-2024" / "50500-2024"\r
- "管道/电气/暖通/仪表/消防/给排水/智能化/通信/刷油/绝热" + "定额" 或 "组价"\r
- "材料价格" / "查询材料" / "钢筋价格" / "钢管价格" + "多少" 或 "查询"\r
\r
### LLM语义匹配触发词\r
- "帮我查一下" + 工作内容描述(自然语言)\r
- "我想装" / "我想做" + 工程描述\r
- "热泵/泵/风机/管道" + "安装" + 规格描述\r
- 任何使用自然语言描述工程内容的场景\r
\r
### 确认机制触发\r
- 定额匹配完成后自动进入确认节点\r
- 用户回复"确认"/"对的"/"正确" → 继续下一步\r
- 用户回复"修改"/"不对"/"调整" → 重新匹配\r
- 用户回复"加上XX" → 在当前基础上补充\r
- Make sure OpenClaw is installed (local or Docker)
- Run the install command in chat:
/install cnsdoce - After installation, invoke the skill by name or use
/cnsdoce - Provide required inputs per the skill's parameter spec and get structured output
What is cnsdoce?
中国工程造价技能,支持安装工程定额查询、组价计算与报价表生成。 数据源支持两种模式(见下方说明): · 默认模式:大模型推理数据(无需本地数据库,推荐新手) · 唯一来源模式:严格限定为山东省安装工程消耗量定额(2025版) + 济南市价目表(2026版) 核心依据:《建设工程工程量清单计价标准》GB/T 505... It is an AI Agent Skill for Claude Code / OpenClaw, with 46 downloads so far.
How do I install cnsdoce?
Run "/install cnsdoce" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.
Is cnsdoce free?
Yes, cnsdoce is completely free, licensed under MIT-0. You can download, install and use it at no cost.
Which platforms does cnsdoce support?
cnsdoce is cross-platform and runs anywhere OpenClaw / Claude Code is available (windows).
Who created cnsdoce?
It is built and maintained by caoshun-sudo (@caoshun-sudo); the current version is v1.0.0.