This commit is contained in:
2025-07-07 11:25:17 +08:00
parent cfb4f4ea6a
commit b352571e17
10 changed files with 634 additions and 552 deletions
+1 -1
View File
@@ -73,7 +73,7 @@ def project_get_calculate_function():
output = redirected_output.getvalue().strip()
if not isinstance(result_dict, dict) or len(result_dict) != 4:
raise ValueError("函数应返回包含4个元素的字典(status, data, error, helper_info)")
raise ValueError("函数应返回包含4个元素的字典(code, status, message, data)")
logger.debug(f"执行结果: {result_dict}")
-184
View File
@@ -1,184 +0,0 @@
# tests/test_userinteraction.py
import os
import sys
import json
import logging
import os
from datetime import datetime
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
current_file = os.path.splitext(os.path.basename(__file__))[0]
now_str = datetime.now().strftime("%Y%m%d%H%M%S")
log_filename = f"{current_file}_{now_str}.log"
logging.basicConfig(
level=logging.DEBUG,
format="%(asctime)s - %(name)s - %(levelname)s - %(message)s",
handlers=[
logging.FileHandler(os.path.join("logs", log_filename), encoding="utf-8"),
logging.StreamHandler()
],
)
logger = logging.getLogger(current_file)
def setup_logger(logger_name):
"""
设置指定名称的logger,将其级别设置为WARNING并禁用传播
:param logger_name: logger的名称
"""
logger = logging.getLogger(logger_name)
logger.setLevel(logging.WARNING) # 设置httpcore及其子模块的级别
logger.propagate = False # 可选:禁用传播(防止被根logger处理)
return logger
logger_names = ["httpx", "openai", "langsmith.client", "neo4j", "urllib3", "httpcore"]
for name in logger_names:
setup_logger(name)
from src.config import Config
from src.document_loader import load_file
from src.multi_llm_client import MultiAPIKeyChatOpenAI
from src.user_interaction import UserInteraction
import json
from src.dialog_manager import DialogManager
from src.multi_llm_client import MultiAPIKeyChatOpenAI
from src.code_executor import CodeExecutor
from src.neo4j_raw_retriever import Neo4jRawRetriever
from src.prompt_manager import PromptManager
import yaml
from src.config import Config
from src.document_loader import load_file
from src.embedding_client import EmbeddingClient
from src.project import ProjectBuilder, ProjectToolkit
from src.project_implementation import ProjectToolkitNeo4j
success_count = 0
fail_count = 0
questions = []
error_list = []
success_list = []
def main():
global success_count, fail_count, questions, error_list, success_list
config = Config()
business_structure = load_file(config.business_object_structure_path)
bowei_api_docs = load_file(config.bowei_api_docs_path)
llm_client = MultiAPIKeyChatOpenAI(config.openai)
user_interaction = UserInteraction(llm_client.llm, business_structure)
llm_client_coder = MultiAPIKeyChatOpenAI(config.openai_coder)
prompt_manager = PromptManager()
neo4j_conf = config.neo4j_conf
embedding_conf = config.embedding
embedding_client = EmbeddingClient(embedding_conf)
# 创建Neo4j检索器
knowledge_retriever = Neo4jRawRetriever(neo4j_conf)
ProjectBuilder.register(ProjectToolkitNeo4j, knowledge_retriever.driver)
code_executor = CodeExecutor(prompt_manager.prompts, llm_client_coder, config.max_retries)
dialog_manager = DialogManager(
llm_client,
business_structure,
bowei_api_docs,
code_executor,
knowledge_retriever,
prompt_manager,
)
# 读取 zhibiao.json
zhibiao_path = os.path.join(os.path.dirname(__file__), "zhibiao.json")
with open(zhibiao_path, "r", encoding="utf-8") as f:
zhibiao_data = json.load(f)
isTest = True
isTest = False
if isTest:
zhibiao_data = [
{
"指标名称": "杆塔总基数",
"指标描述": {
"指标映射": "从【架空输电线路本体工程/附件安装工程】项目划分中获取名称属于【'合计'】的费用",
"映射规则": "YX2-1~7"
},
"code": "",
"单位": "",
"单价类型": None,
"序号": "1",
"提取方式": None,
"指标类型": "工程量指标",
"数据来源": "定额数量"
}
]
for idx, item in enumerate(zhibiao_data):
name = item.get("指标名称", "")
datasource = item.get("数据来源", "")
if datasource in ("报表指标", "指标库"):
logger.info(f"跳过索引 {idx},数据来源为 {datasource}")
continue
query = item.get("指标描述", {}).get("指标映射", "")
if not query:
logger.warning(f"索引 {idx} 缺少指标映射,跳过")
continue
try:
# 调用用户交互理解接口(同步调用)
result = user_interaction.understand(query)
if not result:
logger.error(f"问题: {query} 没有找到符合要求的数据")
fail_count += 1
error_list.append(f"指标名称 {name} 问题 {query} 调用 understand 返回空结果")
continue
# 这里示例只打印理解结果,你可以根据业务逻辑替换为后续处理
logger.info(
f"指标名称 {name} 问题: {query} 理解结果: "
f"{[{'name': r.get('name'), 'constraints': r.get('constraints')} for r in result]}"
)
success_list.append({
"name": name,
"query": query,
"result": [{'name': r.get('name'), 'constraints': r.get('constraints')} for r in result]
})
success_count += 1
except Exception as e:
logger.error(f"指标名称 {name} 问题: {query} 处理异常: {e}")
fail_count += 1
error_list.append(f"指标名称 {name} 问题 {query} 异常: {e}")
total = success_count + fail_count
success_rate = (success_count / total) * 100 if total > 0 else 0
fail_rate = (fail_count / total) * 100 if total > 0 else 0
print(f"问题总数: {total}")
print(f"成功比例: {success_rate:.2f}%)")
print(f"失败比例: {fail_rate:.2f}%)")
print("错误列表:")
for error in error_list:
print(error)
# 将成功内容保存为 jsonl 文件
success_jsonl_path = os.path.join(os.path.dirname(__file__), f"zhibiao_{now_str}.jsonl")
with open(success_jsonl_path, "w", encoding="utf-8") as f:
for item in success_list:
f.write(json.dumps(item, ensure_ascii=False) + "\n")
if __name__ == "__main__":
main()
+46 -46
View File
@@ -169,7 +169,7 @@
"指标类型": "工程量指标",
"数据来源": "定额数量",
"指标描述": {
"指标映射": "【架空输电线路本体工程/基础工程】及其子孙项目划分中查找编码包含【YX2-1~7】的所有【定额】的【数量】之和",
"指标映射": "获取项目划分【架空输电线路本体工程/基础工程】编码包含【YX2-1~7】的所有【定额】的【数量】之和",
"映射规则": "YX2-1~7"
}
},
@@ -199,7 +199,7 @@
"指标类型": "工程量指标",
"数据来源": "主材数量",
"指标描述": {
"指标映射": "【架空输电线路本体工程/杆塔工程/杆塔组立/铁塔、钢管杆组立】及其子孙项目划分中查找名称包含【角钢】的所有【主材】的【数量】之和",
"指标映射": "获取项目划分【架空输电线路本体工程/杆塔工程/杆塔组立/铁塔、钢管杆组立】及名称包含【角钢】的所有【主材】的【数量】之和",
"映射规则": "角钢"
}
},
@@ -213,7 +213,7 @@
"指标类型": "工程量指标",
"数据来源": "主材数量",
"指标描述": {
"指标映射": "【架空输电线路本体工程/杆塔工程/杆塔组立/铁塔、钢管杆组立】及其子孙项目划分中查找名称包含【角钢、高强】的所有【主材】的【数量】之和",
"指标映射": "获取项目划分【架空输电线路本体工程/杆塔工程/杆塔组立/铁塔、钢管杆组立】及名称包含【角钢、高强】的所有【主材】的【数量】之和",
"映射规则": "角钢、高强"
}
},
@@ -243,7 +243,7 @@
"指标类型": "单价指标",
"数据来源": "主材单价",
"指标描述": {
"指标映射": "【架空输电线路本体工程/杆塔工程/杆塔组立/铁塔、钢管杆组立】及其子孙项目划分中查找名称包含【角钢】的所有【主材】的【单价】之和",
"指标映射": "获取项目划分【架空输电线路本体工程/杆塔工程/杆塔组立/铁塔、钢管杆组立】及名称包含【角钢】的所有【主材】的【单价】之和",
"映射规则": "角钢"
}
},
@@ -273,7 +273,7 @@
"指标类型": "单价指标",
"数据来源": "主材单价",
"指标描述": {
"指标映射": "【架空输电线路本体工程/杆塔工程/杆塔组立/铁塔、钢管杆组立】及其子孙项目划分中查找名称包含【角钢、高强】的所有【主材】的【单价】之和",
"指标映射": "获取项目划分【架空输电线路本体工程/杆塔工程/杆塔组立/铁塔、钢管杆组立】及名称包含【角钢、高强】的所有【主材】的【单价】之和",
"映射规则": "角钢、高强"
}
},
@@ -303,7 +303,7 @@
"指标类型": "工程量指标",
"数据来源": "主材数量",
"指标描述": {
"指标映射": "【架空输电线路本体工程/杆塔工程/杆塔组立/铁塔、钢管杆组立】及其子孙项目划分中查找名称包含【钢管塔】的所有【主材】的【数量】之和",
"指标映射": "获取项目划分【架空输电线路本体工程/杆塔工程/杆塔组立/铁塔、钢管杆组立】及名称包含【钢管塔】的所有【主材】的【数量】之和",
"映射规则": "钢管塔"
}
},
@@ -333,7 +333,7 @@
"指标类型": "单价指标",
"数据来源": "主材单价",
"指标描述": {
"指标映射": "【架空输电线路本体工程/杆塔工程/杆塔组立/铁塔、钢管杆组立】及其子孙项目划分中查找名称包含【钢管塔】的所有【主材】的【单价】之和",
"指标映射": "获取项目划分【架空输电线路本体工程/杆塔工程/杆塔组立/铁塔、钢管杆组立】及名称包含【钢管塔】的所有【主材】的【单价】之和",
"映射规则": "钢管塔"
}
},
@@ -363,7 +363,7 @@
"指标类型": "工程量指标",
"数据来源": "主材数量",
"指标描述": {
"指标映射": "【架空输电线路本体工程/杆塔工程/杆塔组立/铁塔、钢管杆组立】及其子孙项目划分中查找名称包含【钢管杆】的所有【主材】的【数量】之和",
"指标映射": "获取项目划分【架空输电线路本体工程/杆塔工程/杆塔组立/铁塔、钢管杆组立】及名称包含【钢管杆】的所有【主材】的【数量】之和",
"映射规则": "钢管杆"
}
},
@@ -393,7 +393,7 @@
"指标类型": "单价指标",
"数据来源": "主材单价",
"指标描述": {
"指标映射": "【架空输电线路本体工程/杆塔工程/杆塔组立/铁塔、钢管杆组立】及其子孙项目划分中查找名称包含【钢管杆】的所有【主材】的【单价】之和",
"指标映射": "获取项目划分【架空输电线路本体工程/杆塔工程/杆塔组立/铁塔、钢管杆组立】及名称包含【钢管杆】的所有【主材】的【单价】之和",
"映射规则": "钢管杆"
}
},
@@ -473,7 +473,7 @@
"指标类型": "技术指标",
"数据来源": "定额参数",
"指标描述": {
"指标映射": "【架空输电线路本体工程/架线工程】及其子孙项目划分中查找编码包含【['YX5-67', 'YX5-68', 'YX5-69', 'YX5-78', 'YX5-79', 'YX5-59', 'YX5-60', 'YX5-61', 'YX5-62', 'YX5-63', 'YX5-64', 'YX5-65', 'YX5-66', 'YX5-74', 'YX5-75', 'YX5-76', 'YX5-77', 'YX5-52', 'YX5-53', 'YX5-54', 'YX5-55', 'YX5-56', 'YX5-57', 'YX5-58', 'YX5-70', 'YX5-71', 'YX5-72', 'YX5-73', 'YX5-14', 'YX5-15', 'YX5-16', 'YX5-17', 'YX5-43', 'YX5-44', 'YX5-45', 'YX5-46', 'YX5-47', 'YX5-48', 'YX5-49', 'YX5-50', 'YX5-51', 'YX5-10', 'YX5-11', 'YX5-12', 'YX5-13', 'YX5-38', 'YX5-39', 'YX5-40', 'YX5-41', 'YX5-42', 'YX5-8', 'YX5-9']】的所有【定额】的【参数】之和",
"指标映射": "获取项目划分【架空输电线路本体工程/架线工程】编码包含【['YX5-67', 'YX5-68', 'YX5-69', 'YX5-78', 'YX5-79', 'YX5-59', 'YX5-60', 'YX5-61', 'YX5-62', 'YX5-63', 'YX5-64', 'YX5-65', 'YX5-66', 'YX5-74', 'YX5-75', 'YX5-76', 'YX5-77', 'YX5-52', 'YX5-53', 'YX5-54', 'YX5-55', 'YX5-56', 'YX5-57', 'YX5-58', 'YX5-70', 'YX5-71', 'YX5-72', 'YX5-73', 'YX5-14', 'YX5-15', 'YX5-16', 'YX5-17', 'YX5-43', 'YX5-44', 'YX5-45', 'YX5-46', 'YX5-47', 'YX5-48', 'YX5-49', 'YX5-50', 'YX5-51', 'YX5-10', 'YX5-11', 'YX5-12', 'YX5-13', 'YX5-38', 'YX5-39', 'YX5-40', 'YX5-41', 'YX5-42', 'YX5-8', 'YX5-9']】的所有【定额】的【参数】之和",
"映射规则": "| 资源识别规则 | 指标值 |\n|-------|-------|\n| YX5-67~69、YX5-78~79 | 8 |\n| YX5-59~66、YX5-74~77 | 6 |\n| YX5-52~58、YX5-70~73 | 4 |\n| YX5-14~17、YX5-43~51 | 2 |\n| YX5-10~13、YX5-38~42、YX5-8~9 | 1 |"
}
},
@@ -519,7 +519,7 @@
"指标类型": "工程量指标",
"数据来源": "主材数量",
"指标描述": {
"指标映射": "【架空输电线路本体工程/架线工程/导地线架设@@架空输电线路本体工程/架线工程/导地线跨越架设】及其子孙项目划分中查找名称包含【高导电率】的所有【主材】的【数量】之和",
"指标映射": "获取项目划分【架空输电线路本体工程/架线工程/导地线架设@@架空输电线路本体工程/架线工程/导地线跨越架设】及名称包含【高导电率】的所有【主材】的【数量】之和",
"映射规则": "高导电率"
}
},
@@ -549,7 +549,7 @@
"指标类型": "单价指标",
"数据来源": "主材单价",
"指标描述": {
"指标映射": "【架空输电线路本体工程/架线工程/导地线架设@@架空输电线路本体工程/架线工程/导地线跨越架设】及其子孙项目划分中查找名称包含【线】的所有【主材】的【单价】之和",
"指标映射": "获取项目划分【架空输电线路本体工程/架线工程/导地线架设@@架空输电线路本体工程/架线工程/导地线跨越架设】及名称包含【线】的所有【主材】的【单价】之和",
"映射规则": "线"
}
},
@@ -579,7 +579,7 @@
"指标类型": "单价指标",
"数据来源": "主材单价",
"指标描述": {
"指标映射": "【架空输电线路本体工程/架线工程/导地线架设@@架空输电线路本体工程/架线工程/导地线跨越架设】及其子孙项目划分中查找名称包含【高导电率】的所有【主材】的【单价】之和",
"指标映射": "获取项目划分【架空输电线路本体工程/架线工程/导地线架设@@架空输电线路本体工程/架线工程/导地线跨越架设】及名称包含【高导电率】的所有【主材】的【单价】之和",
"映射规则": "高导电率"
}
},
@@ -593,7 +593,7 @@
"指标类型": "技术指标",
"数据来源": "主材参数",
"指标描述": {
"指标映射": "【架空输电线路本体工程/架线工程/导地线架设@@架空输电线路本体工程/架线工程/导地线跨越架设@@架空输电线路本体工程/架线工程/其他架线工程】及其子孙项目划分中查找名称包含【['钢芯铝绞线', '铝包钢芯铝绞线', '中强度铝合金绞线', '铝合金芯铝绞线', '铝合金芯高导电率铝绞线', '钢芯高导电率铝绞线', '特高强度钢芯铝合金绞线', '扩径导线', '耐热导线', '碳纤维导线']】的所有【主材】的【参数】之和",
"指标映射": "获取项目划分【架空输电线路本体工程/架线工程/导地线架设@@架空输电线路本体工程/架线工程/导地线跨越架设@@架空输电线路本体工程/架线工程/其他架线工程】及名称包含【['钢芯铝绞线', '铝包钢芯铝绞线', '中强度铝合金绞线', '铝合金芯铝绞线', '铝合金芯高导电率铝绞线', '钢芯高导电率铝绞线', '特高强度钢芯铝合金绞线', '扩径导线', '耐热导线', '碳纤维导线']】的所有【主材】的【参数】之和",
"映射规则": "| 资源识别规则 | 指标值 |\n|-------|-------|\n| 钢芯铝绞线 | 钢芯铝绞线 |\n| 铝包钢芯铝绞线 | 铝包钢芯铝绞线 |\n| 中强度铝合金绞线 | 中强度铝合金绞线 |\n| 铝合金芯铝绞线 | 铝合金芯铝绞线 |\n| 铝合金芯高导电率铝绞线 | 铝合金芯高导电率铝绞线 |\n| 钢芯高导电率铝绞线 | 钢芯高导电率铝绞线 |\n| 特高强度钢芯铝合金绞线 | 特高强度钢芯铝合金绞线 |\n| 扩径导线 | 扩径导线 |\n| 耐热导线 | 耐热导线 |\n| 碳纤维导线 | 碳纤维导线 |"
}
},
@@ -1431,7 +1431,7 @@
"指标类型": "工程量指标",
"数据来源": "主材数量",
"指标描述": {
"指标映射": "【架空输电线路本体工程/基础工程/基础砌筑】及其子孙项目划分中查找名称包含【圆钢】的所有【主材】的【数量】之和",
"指标映射": "获取项目划分【架空输电线路本体工程/基础工程/基础砌筑】及名称包含【圆钢】的所有【主材】的【数量】之和",
"映射规则": "圆钢"
}
},
@@ -1445,7 +1445,7 @@
"指标类型": "单价指标",
"数据来源": "主材单价",
"指标描述": {
"指标映射": "【架空输电线路本体工程/基础工程/基础砌筑】及其子孙项目划分中查找名称包含【圆钢】的所有【主材】的【单价】之和",
"指标映射": "获取项目划分【架空输电线路本体工程/基础工程/基础砌筑】及名称包含【圆钢】的所有【主材】的【单价】之和",
"映射规则": "圆钢"
}
},
@@ -1879,7 +1879,7 @@
"指标类型": "造价指标",
"数据来源": "工程费用",
"指标描述": {
"指标映射": "从【工程费用】中获取【架空输电线路本体工程】的【合计费】的属性",
"指标映射": "从【工程费用】中获取【架空输电线路本体工程】的【合计费】的",
"映射规则": "@工程费用.架空输电线路本体工程.合计费"
}
},
@@ -1893,7 +1893,7 @@
"指标类型": "造价指标",
"数据来源": "项目划分费用",
"指标描述": {
"指标映射": "【架空输电线路本体工程】项目划分中获取取费费用名称于【人工费】的费用",
"指标映射": "获取项目划分【架空输电线路本体工程】下取费名称于【人工费】的费用",
"映射规则": "人工费"
}
},
@@ -1907,7 +1907,7 @@
"指标类型": "造价指标",
"数据来源": "项目划分费用",
"指标描述": {
"指标映射": "【架空输电线路本体工程】项目划分中获取取费费用名称于【人工费】的费用",
"指标映射": "获取项目划分【架空输电线路本体工程】下取费名称于【人工费】的费用",
"映射规则": "人工费"
}
},
@@ -1921,7 +1921,7 @@
"指标类型": "造价指标",
"数据来源": "项目划分费用",
"指标描述": {
"指标映射": "【架空输电线路本体工程】项目划分中获取取费费用名称于【施工机械使用费】的费用",
"指标映射": "获取项目划分【架空输电线路本体工程】下取费名称于【施工机械使用费】的费用",
"映射规则": "施工机械使用费"
}
},
@@ -1935,7 +1935,7 @@
"指标类型": "造价指标",
"数据来源": "项目划分费用",
"指标描述": {
"指标映射": "【架空输电线路本体工程】项目划分中获取取费费用名称于【施工机械使用费】的费用",
"指标映射": "获取项目划分【架空输电线路本体工程】下取费名称于【施工机械使用费】的费用",
"映射规则": "施工机械使用费"
}
},
@@ -1949,7 +1949,7 @@
"指标类型": "造价指标",
"数据来源": "项目划分费用",
"指标描述": {
"指标映射": "【架空输电线路本体工程/基础工程】项目划分中获取取费费用名称于【合计】的费用",
"指标映射": "获取项目划分【架空输电线路本体工程/基础工程】下取费名称于【合计】的费用",
"映射规则": "合计"
}
},
@@ -1963,7 +1963,7 @@
"指标类型": "造价指标",
"数据来源": "项目划分费用",
"指标描述": {
"指标映射": "【架空输电线路本体工程/杆塔工程】项目划分中获取取费费用名称于【合计】的费用",
"指标映射": "获取项目划分【架空输电线路本体工程/杆塔工程】下取费名称于【合计】的费用",
"映射规则": "合计"
}
},
@@ -1977,7 +1977,7 @@
"指标类型": "造价指标",
"数据来源": "项目划分费用",
"指标描述": {
"指标映射": "【架空输电线路本体工程/接地工程】项目划分中获取取费费用名称于【合计】的费用",
"指标映射": "获取项目划分【架空输电线路本体工程/接地工程】下取费名称于【合计】的费用",
"映射规则": "合计"
}
},
@@ -1991,7 +1991,7 @@
"指标类型": "造价指标",
"数据来源": "项目划分费用",
"指标描述": {
"指标映射": "【架空输电线路本体工程/架线工程】项目划分中获取取费费用名称于【合计】的费用",
"指标映射": "获取项目划分【架空输电线路本体工程/架线工程】下取费名称于【合计】的费用",
"映射规则": "合计"
}
},
@@ -2005,7 +2005,7 @@
"指标类型": "造价指标",
"数据来源": "项目划分费用",
"指标描述": {
"指标映射": "【架空输电线路本体工程/附件安装工程】项目划分中获取取费费用名称于【合计】的费用",
"指标映射": "获取项目划分【架空输电线路本体工程/附件安装工程】下取费名称于【合计】的费用",
"映射规则": "合计"
}
},
@@ -2019,7 +2019,7 @@
"指标类型": "造价指标",
"数据来源": "项目划分费用",
"指标描述": {
"指标映射": "【架空输电线路本体工程/辅助工程】项目划分中获取取费费用名称于【合计】的费用",
"指标映射": "获取项目划分【架空输电线路本体工程/辅助工程】下取费名称于【合计】的费用",
"映射规则": "合计"
}
},
@@ -2033,7 +2033,7 @@
"指标类型": "造价指标",
"数据来源": "项目划分费用",
"指标描述": {
"指标映射": "【架空输电线路本体工程/辅助工程】项目划分中获取取费费用名称于【合计】的费用",
"指标映射": "获取项目划分【架空输电线路本体工程/辅助工程】下取费名称于【合计】的费用",
"映射规则": "合计"
}
},
@@ -2047,7 +2047,7 @@
"指标类型": "造价指标",
"数据来源": "工程费用",
"指标描述": {
"指标映射": "从【工程费用】中获取【辅助设施工程】的【合计费】的属性",
"指标映射": "从【工程费用】中获取【辅助设施工程】的【合计费】的",
"映射规则": "@工程费用.辅助设施工程.合计费"
}
},
@@ -2061,7 +2061,7 @@
"指标类型": "造价指标",
"数据来源": "工程费用",
"指标描述": {
"指标映射": "从【工程费用】中获取【其他费用】的【合计费】的属性",
"指标映射": "从【工程费用】中获取【其他费用】的【合计费】的",
"映射规则": "@工程费用.其他费用.合计费"
}
},
@@ -2075,7 +2075,7 @@
"指标类型": "造价指标",
"数据来源": "工程费用",
"指标描述": {
"指标映射": "从【其他费用】中获取【建设场地征用及清理费】的属性",
"指标映射": "从【其他费用】中获取【建设场地征用及清理费】的",
"映射规则": "@其他费用.建设场地征用及清理费"
}
},
@@ -2089,7 +2089,7 @@
"指标类型": "造价指标",
"数据来源": "工程费用",
"指标描述": {
"指标映射": "从【其他费用】中获取【项目建设管理费】的属性",
"指标映射": "从【其他费用】中获取【项目建设管理费】的",
"映射规则": "@其他费用.项目建设管理费"
}
},
@@ -2103,7 +2103,7 @@
"指标类型": "造价指标",
"数据来源": "工程费用",
"指标描述": {
"指标映射": "从【其他费用】中获取【工程监理费】的属性",
"指标映射": "从【其他费用】中获取【工程监理费】的",
"映射规则": "@其他费用.工程监理费"
}
},
@@ -2117,7 +2117,7 @@
"指标类型": "造价指标",
"数据来源": "工程费用",
"指标描述": {
"指标映射": "从【其他费用】中获取【项目建设技术服务费】的属性",
"指标映射": "从【其他费用】中获取【项目建设技术服务费】的",
"映射规则": "@其他费用.项目建设技术服务费"
}
},
@@ -2131,7 +2131,7 @@
"指标类型": "造价指标",
"数据来源": "工程费用",
"指标描述": {
"指标映射": "从【其他费用】中获取【项目前期工作费】的属性",
"指标映射": "从【其他费用】中获取【项目前期工作费】的",
"映射规则": "@其他费用.项目前期工作费"
}
},
@@ -2145,7 +2145,7 @@
"指标类型": "造价指标",
"数据来源": "工程费用",
"指标描述": {
"指标映射": "从【其他费用】中获取【勘察费】的属性",
"指标映射": "从【其他费用】中获取【勘察费】的",
"映射规则": "@其他费用.勘察费"
}
},
@@ -2159,7 +2159,7 @@
"指标类型": "造价指标",
"数据来源": "工程费用",
"指标描述": {
"指标映射": "从【其他费用】中获取【设计费】的属性",
"指标映射": "从【其他费用】中获取【设计费】的",
"映射规则": "@其他费用.设计费"
}
},
@@ -2173,7 +2173,7 @@
"指标类型": "造价指标",
"数据来源": "工程费用",
"指标描述": {
"指标映射": "从【其他费用】中获取【工程建设检测费】的属性",
"指标映射": "从【其他费用】中获取【工程建设检测费】的",
"映射规则": "@其他费用.工程建设检测费"
}
},
@@ -2187,7 +2187,7 @@
"指标类型": "造价指标",
"数据来源": "工程费用",
"指标描述": {
"指标映射": "从【其他费用】中获取【生产准备费】的属性",
"指标映射": "从【其他费用】中获取【生产准备费】的",
"映射规则": "@其他费用.生产准备费"
}
},
@@ -2201,7 +2201,7 @@
"指标类型": "造价指标",
"数据来源": "项目划分费用",
"指标描述": {
"指标映射": "【架空输电线路本体工程】项目划分中获取取费费用名称于【安全文明施工费】的费用",
"指标映射": "获取项目划分【架空输电线路本体工程】下取费名称于【安全文明施工费】的费用",
"映射规则": "安全文明施工费"
}
},
@@ -2215,7 +2215,7 @@
"指标类型": "造价指标",
"数据来源": "项目划分费用",
"指标描述": {
"指标映射": "【架空输电线路本体工程】项目划分中获取取费费用名称于【安全文明施工费】的费用",
"指标映射": "获取项目划分【架空输电线路本体工程】下取费名称于【安全文明施工费】的费用",
"映射规则": "安全文明施工费"
}
},
@@ -2229,7 +2229,7 @@
"指标类型": "造价指标",
"数据来源": "工程费用",
"指标描述": {
"指标映射": "从【工程费用】中获取【基本预备费】的【合计费】的属性",
"指标映射": "从【工程费用】中获取【基本预备费】的【合计费】的",
"映射规则": "@工程费用.基本预备费.合计费"
}
},
@@ -2243,7 +2243,7 @@
"指标类型": "造价指标",
"数据来源": "工程费用",
"指标描述": {
"指标映射": "从【工程费用】中获取【工程静态投资(一~七项合计)】的【合计费】的属性",
"指标映射": "从【工程费用】中获取【工程静态投资(一~七项合计)】的【合计费】的",
"映射规则": "@工程费用.工程静态投资(一~七项合计).合计费"
}
},
@@ -2257,7 +2257,7 @@
"指标类型": "造价指标",
"数据来源": "工程费用",
"指标描述": {
"指标映射": "从【工程费用】中获取【建设期贷款利息】的【合计费】的属性",
"指标映射": "从【工程费用】中获取【建设期贷款利息】的【合计费】的",
"映射规则": "@工程费用.建设期贷款利息.合计费"
}
},
@@ -2271,7 +2271,7 @@
"指标类型": "造价指标",
"数据来源": "工程费用",
"指标描述": {
"指标映射": "从【工程费用】中获取【工程动态投资(一~八项合计)】的【合计费】的属性",
"指标映射": "从【工程费用】中获取【工程动态投资(一~八项合计)】的【合计费】的",
"映射规则": "@工程费用.工程动态投资(一~八项合计).合计费"
}
},
@@ -2285,7 +2285,7 @@
"指标类型": "造价指标",
"数据来源": "工程费用",
"指标描述": {
"指标映射": "从【工程费用】中获取【其中:可抵扣增值税额】的【合计费】的属性",
"指标映射": "从【工程费用】中获取【其中:可抵扣增值税额】的【合计费】的",
"映射规则": "@工程费用.其中:可抵扣增值税额.合计费"
}
}