diff --git a/data/bowei_api_docs.md b/data/bowei_api_docs.md index a8b39a4..54f02e2 100644 --- a/data/bowei_api_docs.md +++ b/data/bowei_api_docs.md @@ -587,7 +587,7 @@ class ProjectBuilder: pass @classmethod - def register(toolkit_class: type, config: dict): + def register(cls, toolkit_class: type, config: dict): """ 注册工具类到工厂 @@ -597,10 +597,11 @@ class ProjectBuilder: if not issubclass(toolkit_class, ProjectToolkit): raise TypeError(f"{toolkit_class.__name__} 必须继承自 ProjectToolkit") - _config = config - _registry = toolkit_class + cls._config = config + cls._registry = toolkit_class - def build(self) -> ProjectToolkit: + @classmethod + def build(cls) -> ProjectToolkit: """ 创建工具实例 @@ -609,7 +610,7 @@ class ProjectBuilder: 返回: 实例化的工具对象 """ - if _registry is None: + if cls._registry is None: raise KeyError(f"未注册的类,请先注册类") - return _registry(_config) \ No newline at end of file + return cls._registry(cls._config) diff --git a/main.py b/main.py index 7e710c9..b5ecd4a 100644 --- a/main.py +++ b/main.py @@ -56,11 +56,11 @@ from src.code_executor import CodeExecutor from src.dialog_manager import DialogManager from src.neo4j_raw_retriever import Neo4jRawRetriever from src.embedding_client import EmbeddingClient - -from project import ProjectBuilder +from project import ProjectBuilder, ProjectToolkit from project_implementation import ProjectToolkitNeo4j + def main(): config = Config() # 根据配置设置环境变量 @@ -87,7 +87,9 @@ def main(): # 创建Neo4j检索器 knowledge_retriever = Neo4jRawRetriever(neo4j_conf) - ProjectBuilder.register(ProjectToolkitNeo4j, neo4j_conf) + + ProjectBuilder.register(ProjectToolkitNeo4j, knowledge_retriever.driver) + code_executor = CodeExecutor(prompt_manager.prompts, llm_client_coder) diff --git a/project.py b/project.py index ba8b5f3..54f02e2 100644 --- a/project.py +++ b/project.py @@ -587,7 +587,7 @@ class ProjectBuilder: pass @classmethod - def register(toolkit_class: type, config: dict): + def register(cls, toolkit_class: type, config: dict): """ 注册工具类到工厂 @@ -597,10 +597,11 @@ class ProjectBuilder: if not issubclass(toolkit_class, ProjectToolkit): raise TypeError(f"{toolkit_class.__name__} 必须继承自 ProjectToolkit") - _config = config - _registry = toolkit_class + cls._config = config + cls._registry = toolkit_class - def build(self) -> ProjectToolkit: + @classmethod + def build(cls) -> ProjectToolkit: """ 创建工具实例 @@ -609,7 +610,7 @@ class ProjectBuilder: 返回: 实例化的工具对象 """ - if _registry is None: + if cls._registry is None: raise KeyError(f"未注册的类,请先注册类") - return _registry(_config) + return cls._registry(cls._config) diff --git a/project_implementation.py b/project_implementation.py index 7a7a7c7..d5af978 100644 --- a/project_implementation.py +++ b/project_implementation.py @@ -2215,3 +2215,4 @@ class ProjectToolkitNeo4j(ProjectToolkit): error = f"查询失败: {str(e)}" return status, data, error, helper_info + diff --git a/src/code_executor.py b/src/code_executor.py index cd0ccf4..de5e03e 100644 --- a/src/code_executor.py +++ b/src/code_executor.py @@ -3,7 +3,7 @@ from langchain_core.output_parsers import StrOutputParser from langchain_experimental.utilities import PythonREPL from langchain_core.tools import Tool from langchain_experimental.tools import PythonREPLTool -from project import ProjectBuilder +from project import ProjectBuilder, ProjectToolkit import sys import io import traceback @@ -43,6 +43,7 @@ class CodeExecutor: try: namespace = { "project": __import__("project"), + "ProjectBuilder": ProjectBuilder, } old_stdout = sys.stdout diff --git a/src/dialog_manager.py b/src/dialog_manager.py index 05e30d2..052ee2e 100644 --- a/src/dialog_manager.py +++ b/src/dialog_manager.py @@ -112,12 +112,9 @@ class DialogManager: rewritten_list.append((rewritten, doc.page_content)) return rewritten_list - async def run_async(self, pre_input: str = None, automated: bool = False): + async def run_async(self, pre_input: str = None): logger.info("启动对话管理器,等待用户输入") - if automated: - print("自动化模式已启动。") - else: - print("欢迎使用博微造价工程数据访问系统,输入 exit 退出。") + print("欢迎使用博微造价工程数据访问系统,输入 exit 退出。") if pre_input: user_questions = [pre_input] @@ -127,16 +124,11 @@ class DialogManager: while True: if user_questions: user_question = user_questions.pop(0) - if not automated: - print(f"预输入问题:{user_question}") - elif automated: - if not user_questions: - logger.info("自动化模式下没有更多问题,退出程序。") - break + print(f"预输入问题:{user_question}") else: user_question = input("请输入您的问题:") - if user_question.strip().lower() == "exit" and not automated: + if user_question.strip().lower() == "exit": logger.info("用户退出程序") print("退出程序。") break @@ -147,38 +139,38 @@ class DialogManager: user_questions.clear() continue - if automated: - # 自动化模式下选择第一个结果 - selected_rewritten, selected_knowledge = rewritten_results[0] - logger.info(f"自动化模式选择第一个访问请求,内容:{selected_rewritten}") - result = self.code_executor.generate_and_run_code( - selected_rewritten, - context=selected_knowledge, - bowei_api_docs=self.bowei_api_docs - ) - logger.info("代码执行完成,返回结果") - print("\n访问结果:\n", result) - print("-" * 50) - else: - InteractionHandler.display_rewritten_requests(rewritten_results) - choice_index = InteractionHandler.get_user_choice(rewritten_results) - if choice_index is not None: - selected_rewritten, selected_knowledge = rewritten_results[choice_index] - logger.info(f"用户选择访问请求编号 {choice_index + 1},内容:{selected_rewritten}") - print(f"\n您选择的访问请求是:\n{selected_rewritten}\n") - print(f"相关知识内容:\n{selected_knowledge}\n") - #confirm = input("请确认是否继续执行该请求(输入n取消,其他继续):").strip().lower() - confirm = "" - if confirm == "n": - #logger.info("用户取消执行访问请求") - print("取消执行,您可以重新输入问题。\n" + "-"*50) - else: - #logger.info("用户确认执行访问请求") - result = self.code_executor.generate_and_run_code( - selected_rewritten, - context=selected_knowledge, - bowei_api_docs=self.bowei_api_docs - ) - logger.info("代码执行完成,返回结果") - print("\n访问结果:\n", result) - print("-" * 50) + InteractionHandler.display_rewritten_requests(rewritten_results) + choice_index = InteractionHandler.get_user_choice(rewritten_results) + if choice_index is not None: + selected_rewritten, selected_knowledge = rewritten_results[choice_index] + logger.info(f"用户选择访问请求编号 {choice_index + 1},内容:{selected_rewritten}") + print(f"\n您选择的访问请求是:\n{selected_rewritten}\n") + print(f"相关知识内容:\n{selected_knowledge}\n") + #confirm = input("请确认是否继续执行该请求(输入n取消,其他继续):").strip().lower() + confirm = "" + if confirm == "n": + #logger.info("用户取消执行访问请求") + print("取消执行,您可以重新输入问题。\n" + "-"*50) + else: + #logger.info("用户确认执行访问请求") + result = self.execute_generated_code( + selected_rewritten, + selected_knowledge + ) + print("\n访问结果:\n", result) + print("-" * 50) + + def execute_generated_code(self, selected_rewritten, selected_knowledge): + """ + 执行生成的代码并返回结果 + :param selected_rewritten: 选中的重写后的请求 + :param selected_knowledge: 选中的知识 + :return: 代码执行结果 + """ + result = self.code_executor.generate_and_run_code( + selected_rewritten, + context=selected_knowledge, + bowei_api_docs=self.bowei_api_docs + ) + + return result diff --git a/src/neo4j_raw_retriever.py b/src/neo4j_raw_retriever.py index f81562a..3bc0e7b 100644 --- a/src/neo4j_raw_retriever.py +++ b/src/neo4j_raw_retriever.py @@ -17,6 +17,9 @@ class Neo4jRawRetriever: def close(self): self.driver.close() + def driver(self): + return self.driver + def get_relevant_documents(self, cypher_query: str) -> list[Document]: with self.driver.session() as session: result = session.run(cypher_query) diff --git a/tests/test.py b/tests/test.py new file mode 100644 index 0000000..49518e4 --- /dev/null +++ b/tests/test.py @@ -0,0 +1,102 @@ +import os +import sys +sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) + +import json +from src.dialog_manager import DialogManager +from src.llm_client import LLMClient +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 project import ProjectBuilder, ProjectToolkit +from project_implementation import ProjectToolkitNeo4j + +def main(): + config = Config() + + business_structure = load_file(config.business_object_structure_path) + bowei_api_docs = load_file(config.bowei_api_docs_path) + + llm_client = LLMClient(config.openai) + + llm_client_coder = LLMClient(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) + + dialog_manager = DialogManager( + llm_client, + business_structure, + bowei_api_docs, + code_executor, + knowledge_retriever, + prompt_manager, + ) + + # 加载 zhibiao.json + with open('./tests/zhibiao.json', 'r', encoding='utf-8') as f: + zhibiao_data = json.load(f) + + # 提取指标映射关系并批量执行 + for item in zhibiao_data: + query = item['指标描述']['指标映射'] + rewritten_results = dialog_manager.understand_user_question_stream(query) + if rewritten_results is None or rewritten_results == []: + print('问题: {} 没有找到符合要求的数据'.format(query)) + continue + + selected_rewritten, selected_knowledge = rewritten_results[0] + questions = [] + success_count = 0 + fail_count = 0 + error_list = [] + + # 检查 understand_user_question_stream 方法调用结果,假设存在该方法调用 + # 示例调用,实际使用时请替换为真实调用 + # stream_result = dialog_manager.understand_user_question_stream(query) + # if stream_result is None or stream_result == []: + # questions.append(query) + # fail_count += 1 + # error_list.append(f"问题 {query} 调用 understand_user_question_stream 返回空结果") + + result = dialog_manager.execute_generated_code(selected_rewritten, selected_knowledge) + if result is None or result == []: + questions.append(selected_rewritten) + fail_count += 1 + error_list.append(f"问题 {selected_rewritten} 调用 execute_generated_code 返回空结果") + else: + success_count += 1 + + print(result) + +if __name__ == "__main__": + total = success_count + fail_count + if total > 0: + success_rate = success_count / total + fail_rate = fail_count / total + else: + success_rate = fail_rate = 0 + print(f"问题总数: {total}") + print(f"成功比例: {success_rate * 100:.2f}%") + print(f"失败比例: {fail_rate * 100:.2f}%") + print("错误列表:") + for error in error_list: + print(error) + main() + diff --git a/tests/test_runcode.py b/tests/test_runcode.py new file mode 100644 index 0000000..dd4f8f9 --- /dev/null +++ b/tests/test_runcode.py @@ -0,0 +1,76 @@ +import sys +import os +import io +import logging +import traceback +import sys +sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) +from project import ProjectBuilder, ProjectToolkit +from project_implementation import ProjectToolkitNeo4j +from neo4j import GraphDatabase +from src.config import Config + +logging.basicConfig( + level=logging.DEBUG, # 生产环境可改为 INFO 或 WARNING + format="%(asctime)s - %(name)s - %(levelname)s - %(message)s", + handlers=[logging.FileHandler("test_runcode.log", encoding="utf-8"), logging.StreamHandler()], +) + +logger = logging.getLogger("test_runcode") + +def main(): + + config = Config() + neo4j_conf = config.neo4j_conf + + code_str = ''' + def project_get_calculate_function(): + project = ProjectBuilder.build() + status, data, error, helper_info = project.get_division_item_by_path("安装/架空输电线路本体工程") + if status == 'success': + return status, data.get('单位', ''), error, helper_info + return status, None, error, helper_info + ''' + + neo4j_driver = GraphDatabase.driver(neo4j_conf.get("uri"), auth=(neo4j_conf.get("username"), neo4j_conf.get("password"))) + + old_stdout = sys.stdout + redirected_output = io.StringIO() + + ProjectBuilder.register(ProjectToolkitNeo4j, neo4j_driver) + + try: + namespace = { + "project": __import__("project"), + "ProjectBuilder": ProjectBuilder, + } + + sys.stdout = redirected_output + + exec(code_str, namespace) + + # 确保neo4j_find_function存在 + if "project_get_calculate_function" not in namespace: + raise ValueError("代码中未定义project_get_calculate_function函数") + + result_tuple = namespace["project_get_calculate_function"]() + + sys.stdout = old_stdout + output = redirected_output.getvalue().strip() + + if not isinstance(result_tuple, tuple) or len(result_tuple) != 4: + raise ValueError("函数应返回包含4个元素的元组(status, data, error, helper_info)") + + status, data, error, helper_info = result_tuple + + logger.info(f"执行结果: status={status}, data={data}, error={error}") + + except Exception as e: + # 确保恢复stdout + sys.stdout = old_stdout + logger.error(f"执行代码时出错: {e}") + logger.error(traceback.format_exc()) + + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/tests/zhibiao.json b/tests/zhibiao.json new file mode 100644 index 0000000..77f0bf6 --- /dev/null +++ b/tests/zhibiao.json @@ -0,0 +1,1146 @@ +[ + { + "指标名称": "电压等级", + "指标描述": { + "指标映射": "从工程属性集中获取['电压等级']的属性", + "映射规则": "电压等级" + }, + "code": "" + }, + { + "指标名称": "工程编码", + "指标描述": { + "指标映射": "从工程属性集中获取['工程编号']的属性", + "映射规则": "工程编号" + }, + "code": "" + }, + { + "指标名称": "工程名称", + "指标描述": { + "指标映射": "从工程属性集中获取['工程名称']的属性", + "映射规则": "工程名称" + }, + "code": "" + }, + { + "指标名称": "工程时间", + "指标描述": { + "指标映射": "从工程属性集中获取['新建时间']的属性", + "映射规则": "新建时间" + }, + "code": "" + }, + { + "指标名称": "线路曲折系数", + "指标描述": { + "指标映射": "从工程属性集中获取['工程参数_曲折系数']的属性", + "映射规则": "工程参数_曲折系数" + }, + "code": "" + }, + { + "指标名称": "线路长度合计_折单", + "指标描述": { + "指标映射": "从工程属性集中获取['折单回总长度']的属性", + "映射规则": "折单回总长度" + }, + "code": "" + }, + { + "指标名称": "路径长度_单回路长度", + "指标描述": { + "指标映射": "从工程属性集中获取['单回路']的属性", + "映射规则": "单回路" + }, + "code": "" + }, + { + "指标名称": "路径长度_双回路长度", + "指标描述": { + "指标映射": "从工程属性集中获取['双回路']的属性", + "映射规则": "双回路" + }, + "code": "" + }, + { + "指标名称": "路径长度_三回路长度", + "指标描述": { + "指标映射": "从工程属性集中获取['三回路']的属性", + "映射规则": "三回路" + }, + "code": "" + }, + { + "指标名称": "路径长度_四回路长度", + "指标描述": { + "指标映射": "从工程属性集中获取['四回路']的属性", + "映射规则": "四回路" + }, + "code": "" + }, + { + "指标名称": "杆塔总基数", + "指标描述": { + "指标映射": "从项目划分【架空输电线路本体工程/基础工程】下所有子孙项目划分中查找名称属于['YX2-1~7']的所有数量", + "映射规则": "YX2-1~7" + }, + "code": "" + }, + { + "指标名称": "角钢塔_塔基数", + "指标描述": { + "指标映射": "从工程属性集中获取['角钢塔基数']的属性", + "映射规则": "角钢塔基数" + }, + "code": "" + }, + { + "指标名称": "角钢塔_塔材量", + "指标描述": { + "指标映射": "从项目划分【架空输电线路本体工程/杆塔工程/杆塔组立/铁塔、钢管杆组立】下所有子孙项目划分中查找名称属于['角钢']的所有数量", + "映射规则": "角钢" + }, + "code": "" + }, + { + "指标名称": "角钢塔_其中:高强钢塔材量", + "指标描述": { + "指标映射": "从项目划分【架空输电线路本体工程/杆塔工程/杆塔组立/铁塔、钢管杆组立】下所有子孙项目划分中查找名称属于['角钢、高强']的所有数量", + "映射规则": "角钢、高强" + }, + "code": "" + }, + { + "指标名称": "角钢塔_塔材装材费", + "指标描述": { + "指标映射": "从【指标库】中获取['角钢塔_塔材装材费_元/10000']的属性", + "映射规则": "角钢塔_塔材装材费_元/10000" + }, + "code": "" + }, + { + "指标名称": "角钢塔_塔材装材费_元", + "指标描述": { + "指标映射": "从项目划分【架空输电线路本体工程/杆塔工程/杆塔组立/铁塔、钢管杆组立】下所有子孙项目划分中查找名称属于['角钢']的所有单价", + "映射规则": "角钢" + }, + "code": "" + }, + { + "指标名称": "角钢塔_其中:高强钢塔材费用", + "指标描述": { + "指标映射": "从【指标库】中获取['角钢塔_其中:高强钢塔材费用_元/10000']的属性", + "映射规则": "角钢塔_其中:高强钢塔材费用_元/10000" + }, + "code": "" + }, + { + "指标名称": "角钢塔_其中:高强钢塔材费用_元", + "指标描述": { + "指标映射": "从项目划分【架空输电线路本体工程/杆塔工程/杆塔组立/铁塔、钢管杆组立】下所有子孙项目划分中查找名称属于['角钢、高强']的所有单价", + "映射规则": "角钢、高强" + }, + "code": "" + }, + { + "指标名称": "钢管塔_塔基数", + "指标描述": { + "指标映射": "从工程属性集中获取['钢管塔基数']的属性", + "映射规则": "钢管塔基数" + }, + "code": "" + }, + { + "指标名称": "钢管塔_塔材量", + "指标描述": { + "指标映射": "从项目划分【架空输电线路本体工程/杆塔工程/杆塔组立/铁塔、钢管杆组立】下所有子孙项目划分中查找名称属于['钢管塔']的所有数量", + "映射规则": "钢管塔" + }, + "code": "" + }, + { + "指标名称": "钢管塔_钢管价格", + "指标描述": { + "指标映射": "从【指标库】中获取['钢管塔_钢管价格_元/10000']的属性", + "映射规则": "钢管塔_钢管价格_元/10000" + }, + "code": "" + }, + { + "指标名称": "钢管塔_钢管价格_元", + "指标描述": { + "指标映射": "从项目划分【架空输电线路本体工程/杆塔工程/杆塔组立/铁塔、钢管杆组立】下所有子孙项目划分中查找名称属于['钢管塔']的所有单价", + "映射规则": "钢管塔" + }, + "code": "" + }, + { + "指标名称": "钢管杆_塔基数", + "指标描述": { + "指标映射": "从工程属性集中获取['钢管杆基数']的属性", + "映射规则": "钢管杆基数" + }, + "code": "" + }, + { + "指标名称": "钢管杆_塔材量", + "指标描述": { + "指标映射": "从项目划分【架空输电线路本体工程/杆塔工程/杆塔组立/铁塔、钢管杆组立】下所有子孙项目划分中查找名称属于['钢管杆']的所有数量", + "映射规则": "钢管杆" + }, + "code": "" + }, + { + "指标名称": "钢管杆_钢管价格", + "指标描述": { + "指标映射": "从【指标库】中获取['钢管杆_钢管价格_元/10000']的属性", + "映射规则": "钢管杆_钢管价格_元/10000" + }, + "code": "" + }, + { + "指标名称": "钢管杆_钢管价格_元", + "指标描述": { + "指标映射": "从项目划分【架空输电线路本体工程/杆塔工程/杆塔组立/铁塔、钢管杆组立】下所有子孙项目划分中查找名称属于['钢管杆']的所有单价", + "映射规则": "钢管杆" + }, + "code": "" + }, + { + "指标名称": "水泥杆基数", + "指标描述": { + "指标映射": "从工程属性集中获取['混凝土杆基数']的属性", + "映射规则": "混凝土杆基数" + }, + "code": "" + }, + { + "指标名称": "直线塔基数", + "指标描述": { + "指标映射": "从工程属性集中获取['直线塔基数', '直线杆基数']的属性", + "映射规则": "直线塔基数+直线杆基数" + }, + "code": "" + }, + { + "指标名称": "耐张转角塔基数", + "指标描述": { + "指标映射": "从工程属性集中获取['耐张塔基数', '耐张杆基数']的属性", + "映射规则": "耐张塔基数+耐张杆基数" + }, + "code": "" + }, + { + "指标名称": "海拔", + "指标描述": { + "指标映射": "从工程属性集中获取['工程概况信息_海拔高度']的属性", + "映射规则": "工程概况信息_海拔高度" + }, + "code": "" + }, + { + "指标名称": "导线及线材_分裂数", + "指标描述": { + "指标映射": "从项目划分【架空输电线路本体工程/架线工程】下所有子孙项目划分中查找名称属于['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 |" + }, + "code": "" + }, + { + "指标名称": "导线及线材_单根导线面积", + "指标描述": { + "指标映射": "从工程属性集中获取['导线1截面积']的属性", + "映射规则": "导线1截面积" + }, + "code": "" + }, + { + "指标名称": "导线及线材_导线量", + "指标描述": { + "指标映射": "从工程属性集中获取['导线用量#含弧垂?']的属性", + "映射规则": "导线用量#含弧垂?" + }, + "code": "" + }, + { + "指标名称": "导线及线材_其中:节能导线量", + "指标描述": { + "指标映射": "从项目划分【架空输电线路本体工程/架线工程/导地线架设@@架空输电线路本体工程/架线工程/导地线跨越架设】下所有子孙项目划分中查找名称属于['高导电率']的所有数量", + "映射规则": "高导电率" + }, + "code": "" + }, + { + "指标名称": "导线及线材_导线装材费", + "指标描述": { + "指标映射": "从【指标库】中获取['导线及线材_导线装材费_元/10000']的属性", + "映射规则": "导线及线材_导线装材费_元/10000" + }, + "code": "" + }, + { + "指标名称": "导线及线材_导线装材费_元", + "指标描述": { + "指标映射": "从项目划分【架空输电线路本体工程/架线工程/导地线架设@@架空输电线路本体工程/架线工程/导地线跨越架设】下所有子孙项目划分中查找名称属于['线']的所有单价", + "映射规则": "线" + }, + "code": "" + }, + { + "指标名称": "导线及线材_其中:节能导线费用", + "指标描述": { + "指标映射": "从【指标库】中获取['导线及线材_其中:节能导线费用_元/10000']的属性", + "映射规则": "导线及线材_其中:节能导线费用_元/10000" + }, + "code": "" + }, + { + "指标名称": "导线及线材_其中:节能导线费用_元", + "指标描述": { + "指标映射": "从项目划分【架空输电线路本体工程/架线工程/导地线架设@@架空输电线路本体工程/架线工程/导地线跨越架设】下所有子孙项目划分中查找名称属于['高导电率']的所有单价", + "映射规则": "高导电率" + }, + "code": "" + }, + { + "指标名称": "导线及线材_导线类型", + "指标描述": { + "指标映射": "从项目划分【架空输电线路本体工程/架线工程/导地线架设@@架空输电线路本体工程/架线工程/导地线跨越架设@@架空输电线路本体工程/架线工程/其他架线工程】下所有子孙项目划分中查找名称属于['钢芯铝绞线', '铝包钢芯铝绞线', '中强度铝合金绞线', '铝合金芯铝绞线', '铝合金芯高导电率铝绞线', '钢芯高导电率铝绞线', '特高强度钢芯铝合金绞线', '扩径导线', '耐热导线', '碳纤维导线']的所有参数", + "映射规则": "| 资源识别规则 | 指标值 |\n|-------|-------|\n| 钢芯铝绞线 | 钢芯铝绞线 |\n| 铝包钢芯铝绞线 | 铝包钢芯铝绞线 |\n| 中强度铝合金绞线 | 中强度铝合金绞线 |\n| 铝合金芯铝绞线 | 铝合金芯铝绞线 |\n| 铝合金芯高导电率铝绞线 | 铝合金芯高导电率铝绞线 |\n| 钢芯高导电率铝绞线 | 钢芯高导电率铝绞线 |\n| 特高强度钢芯铝合金绞线 | 特高强度钢芯铝合金绞线 |\n| 扩径导线 | 扩径导线 |\n| 耐热导线 | 耐热导线 |\n| 碳纤维导线 | 碳纤维导线 |" + }, + "code": "" + }, + { + "指标名称": "设计风速", + "指标描述": { + "指标映射": "从工程属性集中获取['气象条件_设计风速#导则?']的属性", + "映射规则": "气象条件_设计风速#导则?" + }, + "code": "" + }, + { + "指标名称": "覆冰厚度", + "指标描述": { + "指标映射": "从工程属性集中获取['气象条件_覆冰厚度#导则?']的属性", + "映射规则": "气象条件_覆冰厚度#导则?" + }, + "code": "" + }, + { + "指标名称": "地形分布_平地", + "指标描述": { + "指标映射": "从工程属性集中获取['平地']的属性", + "映射规则": "平地" + }, + "code": "" + }, + { + "指标名称": "地形分布_丘陵", + "指标描述": { + "指标映射": "从工程属性集中获取['丘陵']的属性", + "映射规则": "丘陵" + }, + "code": "" + }, + { + "指标名称": "地形分布_河网", + "指标描述": { + "指标映射": "从工程属性集中获取['河网']的属性", + "映射规则": "河网" + }, + "code": "" + }, + { + "指标名称": "地形分布_泥沼", + "指标描述": { + "指标映射": "从工程属性集中获取['泥沼']的属性", + "映射规则": "泥沼" + }, + "code": "" + }, + { + "指标名称": "地形分布_山地", + "指标描述": { + "指标映射": "从工程属性集中获取['山地']的属性", + "映射规则": "山地" + }, + "code": "" + }, + { + "指标名称": "地形分布_高山", + "指标描述": { + "指标映射": "从工程属性集中获取['高山']的属性", + "映射规则": "高山" + }, + "code": "" + }, + { + "指标名称": "地形分布_沙漠", + "指标描述": { + "指标映射": "从工程属性集中获取['沙漠']的属性", + "映射规则": "沙漠" + }, + "code": "" + }, + { + "指标名称": "地形分布_峻岭", + "指标描述": { + "指标映射": "从工程属性集中获取['峻岭']的属性", + "映射规则": "峻岭" + }, + "code": "" + }, + { + "指标名称": "地质条件_普通土", + "指标描述": { + "指标映射": "从工程属性集中获取['普通土比例']的属性", + "映射规则": "普通土比例" + }, + "code": "" + }, + { + "指标名称": "地质条件_坚土", + "指标描述": { + "指标映射": "从工程属性集中获取['坚土比例']的属性", + "映射规则": "坚土比例" + }, + "code": "" + }, + { + "指标名称": "地质条件_松砂石", + "指标描述": { + "指标映射": "从工程属性集中获取['松砂石比例']的属性", + "映射规则": "松砂石比例" + }, + "code": "" + }, + { + "指标名称": "地质条件_水坑", + "指标描述": { + "指标映射": "从工程属性集中获取['水坑比例']的属性", + "映射规则": "水坑比例" + }, + "code": "" + }, + { + "指标名称": "地质条件_泥水坑", + "指标描述": { + "指标映射": "从工程属性集中获取['泥水坑比例']的属性", + "映射规则": "泥水坑比例" + }, + "code": "" + }, + { + "指标名称": "地质条件_流沙坑", + "指标描述": { + "指标映射": "从工程属性集中获取['流砂坑比例']的属性", + "映射规则": "流砂坑比例" + }, + "code": "" + }, + { + "指标名称": "地质条件_岩石爆破", + "指标描述": { + "指标映射": "从工程属性集中获取['岩石#爆破?比例']的属性", + "映射规则": "岩石#爆破?比例" + }, + "code": "" + }, + { + "指标名称": "地质条件_岩石人工", + "指标描述": { + "指标映射": "从工程属性集中获取['岩石#人凿?比例']的属性", + "映射规则": "岩石#人凿?比例" + }, + "code": "" + }, + { + "指标名称": "土石方总量", + "指标描述": { + "指标映射": "从工程属性集中获取['基础土石方量', '接地土石方量', '排水沟土石方量', '护坡挡土墙排洪沟土石方量']的属性", + "映射规则": "基础土石方量+接地土石方量+排水沟土石方量+护坡挡土墙排洪沟土石方量" + }, + "code": "" + }, + { + "指标名称": "土石方量_基坑", + "指标描述": { + "指标映射": "从工程属性集中获取['基坑土石方量']的属性", + "映射规则": "基坑土石方量" + }, + "code": "" + }, + { + "指标名称": "土石方量_接地", + "指标描述": { + "指标映射": "从工程属性集中获取['接地土石方量']的属性", + "映射规则": "接地土石方量" + }, + "code": "" + }, + { + "指标名称": "土石方量_基面", + "指标描述": { + "指标映射": "从工程属性集中获取['尖峰及施工基面土石方量']的属性", + "映射规则": "尖峰及施工基面土石方量" + }, + "code": "" + }, + { + "指标名称": "各类基础数量占总塔基数比例_台阶式", + "指标描述": { + "指标映射": "从【指标库】中获取['台阶式基础基数', '台阶式基础基数', '板式基础基数', '插入式基础基数', '掏挖基础基数', '岩石嵌固基础基数', '锚杆基础基数', '灌注桩基础基数', '人工挖孔桩基础基数', '其他基础基数']的属性", + "映射规则": "台阶式基础基数/(台阶式基础基数+板式基础基数+插入式基础基数+掏挖基础基数+岩石嵌固基础基数+锚杆基础基数+灌注桩基础基数+人工挖孔桩基础基数+其他基础基数)*100" + }, + "code": "" + }, + { + "指标名称": "各类基础数量占总塔基数比例_板式", + "指标描述": { + "指标映射": "从【指标库】中获取['板式基础基数', '台阶式基础基数', '板式基础基数', '插入式基础基数', '掏挖基础基数', '岩石嵌固基础基数', '锚杆基础基数', '灌注桩基础基数', '人工挖孔桩基础基数', '其他基础基数']的属性", + "映射规则": "板式基础基数/(台阶式基础基数+板式基础基数+插入式基础基数+掏挖基础基数+岩石嵌固基础基数+锚杆基础基数+灌注桩基础基数+人工挖孔桩基础基数+其他基础基数)*100" + }, + "code": "" + }, + { + "指标名称": "各类基础数量占总塔基数比例_插入式", + "指标描述": { + "指标映射": "从【指标库】中获取['插入式基础基数', '台阶式基础基数', '板式基础基数', '插入式基础基数', '掏挖基础基数', '岩石嵌固基础基数', '锚杆基础基数', '灌注桩基础基数', '人工挖孔桩基础基数', '其他基础基数']的属性", + "映射规则": "插入式基础基数/(台阶式基础基数+板式基础基数+插入式基础基数+掏挖基础基数+岩石嵌固基础基数+锚杆基础基数+灌注桩基础基数+人工挖孔桩基础基数+其他基础基数)*100" + }, + "code": "" + }, + { + "指标名称": "各类基础数量占总塔基数比例_掏挖", + "指标描述": { + "指标映射": "从【指标库】中获取['掏挖基础基数', '台阶式基础基数', '板式基础基数', '插入式基础基数', '掏挖基础基数', '岩石嵌固基础基数', '锚杆基础基数', '灌注桩基础基数', '人工挖孔桩基础基数', '其他基础基数']的属性", + "映射规则": "掏挖基础基数/(台阶式基础基数+板式基础基数+插入式基础基数+掏挖基础基数+岩石嵌固基础基数+锚杆基础基数+灌注桩基础基数+人工挖孔桩基础基数+其他基础基数)*100" + }, + "code": "" + }, + { + "指标名称": "各类基础数量占总塔基数比例_岩石嵌固", + "指标描述": { + "指标映射": "从【指标库】中获取['岩石嵌固基础基数', '台阶式基础基数', '板式基础基数', '插入式基础基数', '掏挖基础基数', '岩石嵌固基础基数', '锚杆基础基数', '灌注桩基础基数', '人工挖孔桩基础基数', '其他基础基数']的属性", + "映射规则": "岩石嵌固基础基数/(台阶式基础基数+板式基础基数+插入式基础基数+掏挖基础基数+岩石嵌固基础基数+锚杆基础基数+灌注桩基础基数+人工挖孔桩基础基数+其他基础基数)*100" + }, + "code": "" + }, + { + "指标名称": "各类基础数量占总塔基数比例_锚杆", + "指标描述": { + "指标映射": "从【指标库】中获取['锚杆基础基数', '台阶式基础基数', '板式基础基数', '插入式基础基数', '掏挖基础基数', '岩石嵌固基础基数', '锚杆基础基数', '灌注桩基础基数', '人工挖孔桩基础基数', '其他基础基数']的属性", + "映射规则": "锚杆基础基数/(台阶式基础基数+板式基础基数+插入式基础基数+掏挖基础基数+岩石嵌固基础基数+锚杆基础基数+灌注桩基础基数+人工挖孔桩基础基数+其他基础基数)*100" + }, + "code": "" + }, + { + "指标名称": "各类基础数量占总塔基数比例_灌注桩", + "指标描述": { + "指标映射": "从【指标库】中获取['灌注桩基础基数', '台阶式基础基数', '板式基础基数', '插入式基础基数', '掏挖基础基数', '岩石嵌固基础基数', '锚杆基础基数', '灌注桩基础基数', '人工挖孔桩基础基数', '其他基础基数']的属性", + "映射规则": "灌注桩基础基数/(台阶式基础基数+板式基础基数+插入式基础基数+掏挖基础基数+岩石嵌固基础基数+锚杆基础基数+灌注桩基础基数+人工挖孔桩基础基数+其他基础基数)*100" + }, + "code": "" + }, + { + "指标名称": "各类基础数量占总塔基数比例_人工挖孔桩", + "指标描述": { + "指标映射": "从【指标库】中获取['人工挖孔桩基础基数', '台阶式基础基数', '板式基础基数', '插入式基础基数', '掏挖基础基数', '岩石嵌固基础基数', '锚杆基础基数', '灌注桩基础基数', '人工挖孔桩基础基数', '其他基础基数']的属性", + "映射规则": "人工挖孔桩基础基数/(台阶式基础基数+板式基础基数+插入式基础基数+掏挖基础基数+岩石嵌固基础基数+锚杆基础基数+灌注桩基础基数+人工挖孔桩基础基数+其他基础基数)*100" + }, + "code": "" + }, + { + "指标名称": "各类基础数量占总塔基数比例_其他", + "指标描述": { + "指标映射": "从【指标库】中获取['其他基础基数', '台阶式基础基数', '板式基础基数', '插入式基础基数', '掏挖基础基数', '岩石嵌固基础基数', '锚杆基础基数', '灌注桩基础基数', '人工挖孔桩基础基数', '其他基础基数']的属性", + "映射规则": "其他基础基数/(台阶式基础基数+板式基础基数+插入式基础基数+掏挖基础基数+岩石嵌固基础基数+锚杆基础基数+灌注桩基础基数+人工挖孔桩基础基数+其他基础基数)*100" + }, + "code": "" + }, + { + "指标名称": "台阶式基础基数", + "指标描述": { + "指标映射": "从工程属性集中获取['阶梯式']的属性", + "映射规则": "阶梯式" + }, + "code": "" + }, + { + "指标名称": "板式基础基数", + "指标描述": { + "指标映射": "从工程属性集中获取['大板式']的属性", + "映射规则": "大板式" + }, + "code": "" + }, + { + "指标名称": "插入式基础基数", + "指标描述": { + "指标映射": "从工程属性集中获取['插入式']的属性", + "映射规则": "插入式" + }, + "code": "" + }, + { + "指标名称": "掏挖基础基数", + "指标描述": { + "指标映射": "从工程属性集中获取['掏挖式']的属性", + "映射规则": "掏挖式" + }, + "code": "" + }, + { + "指标名称": "岩石嵌固基础基数", + "指标描述": { + "指标映射": "从工程属性集中获取['岩石']的属性", + "映射规则": "岩石" + }, + "code": "" + }, + { + "指标名称": "锚杆基础基数", + "指标描述": { + "指标映射": "从工程属性集中获取['锚杆']的属性", + "映射规则": "锚杆" + }, + "code": "" + }, + { + "指标名称": "灌注桩基础基数", + "指标描述": { + "指标映射": "从工程属性集中获取['其中:灌注桩']的属性", + "映射规则": "其中:灌注桩" + }, + "code": "" + }, + { + "指标名称": "人工挖孔桩基础基数", + "指标描述": { + "指标映射": "从工程属性集中获取['人工挖孔']的属性", + "映射规则": "人工挖孔" + }, + "code": "" + }, + { + "指标名称": "其他基础基数", + "指标描述": { + "指标映射": "从工程属性集中获取['其他基础型式#预规?', '钢管桩', '预制', '桩基础']的属性", + "映射规则": "其他基础型式#预规?+钢管桩+预制+桩基础" + }, + "code": "" + }, + { + "指标名称": "基础混凝土总量", + "指标描述": { + "指标映射": "从工程属性集中获取['现浇混凝土用量', '预制混凝土用量']的属性", + "映射规则": "现浇混凝土用量+预制混凝土用量" + }, + "code": "" + }, + { + "指标名称": "灌注桩基础混凝土量", + "指标描述": { + "指标映射": "从工程属性集中获取['其中:灌注桩用量']的属性", + "映射规则": "其中:灌注桩用量" + }, + "code": "" + }, + { + "指标名称": "现浇基础混凝土量", + "指标描述": { + "指标映射": "从工程属性集中获取['其中:现浇基础现浇混凝土量']的属性", + "映射规则": "其中:现浇基础现浇混凝土量" + }, + "code": "" + }, + { + "指标名称": "挖孔基础混凝土量", + "指标描述": { + "指标映射": "从工程属性集中获取['其中:挖孔基础现浇混凝土量']的属性", + "映射规则": "其中:挖孔基础现浇混凝土量" + }, + "code": "" + }, + { + "指标名称": "基础护壁混凝土用量", + "指标描述": { + "指标映射": "从工程属性集中获取['其中:基础护壁用量']的属性", + "映射规则": "其中:基础护壁用量" + }, + "code": "" + }, + { + "指标名称": "预制混凝土用量", + "指标描述": { + "指标映射": "从工程属性集中获取['预制混凝土用量']的属性", + "映射规则": "预制混凝土用量" + }, + "code": "" + }, + { + "指标名称": "基础钢材量", + "指标描述": { + "指标映射": "从项目划分【架空输电线路本体工程/基础工程/基础砌筑】下所有子孙项目划分中查找名称属于['圆钢']的所有数量", + "映射规则": "圆钢" + }, + "code": "" + }, + { + "指标名称": "基础钢材价格", + "指标描述": { + "指标映射": "从项目划分【架空输电线路本体工程/基础工程/基础砌筑】下所有子孙项目划分中查找名称属于['圆钢']的所有单价", + "映射规则": "圆钢" + }, + "code": "" + }, + { + "指标名称": "本体费用合计", + "指标描述": { + "指标映射": "从【指标库】中获取['本体费用合计_元/10000']的属性", + "映射规则": "本体费用合计_元/10000" + }, + "code": "" + }, + { + "指标名称": "本体工程人工费", + "指标描述": { + "指标映射": "从【指标库】中获取['(本体工程人工费_调试_元+本体工程人工费_本体_元)', '本体工程人工费_调试_元', '本体工程人工费_本体_元']的属性", + "映射规则": "(本体工程人工费_调试_元+本体工程人工费_本体_元)/10000" + }, + "code": "" + }, + { + "指标名称": "本体工程机械费", + "指标描述": { + "指标映射": "从【指标库】中获取['(本体工程机械费_本体_元+本体工程机械费_调试_元)', '本体工程机械费_本体_元', '本体工程机械费_调试_元']的属性", + "映射规则": "(本体工程机械费_本体_元+本体工程机械费_调试_元)/10000" + }, + "code": "" + }, + { + "指标名称": "基础工程费用", + "指标描述": { + "指标映射": "从【指标库】中获取['基础工程费用_元/10000']的属性", + "映射规则": "基础工程费用_元/10000" + }, + "code": "" + }, + { + "指标名称": "杆塔工程费用", + "指标描述": { + "指标映射": "从【指标库】中获取['杆塔工程费用_元/10000']的属性", + "映射规则": "杆塔工程费用_元/10000" + }, + "code": "" + }, + { + "指标名称": "接地工程费用", + "指标描述": { + "指标映射": "从【指标库】中获取['接地工程费用_元/10000']的属性", + "映射规则": "接地工程费用_元/10000" + }, + "code": "" + }, + { + "指标名称": "架线工程费用", + "指标描述": { + "指标映射": "从【指标库】中获取['架线工程费用_元/10000']的属性", + "映射规则": "架线工程费用_元/10000" + }, + "code": "" + }, + { + "指标名称": "附件工程费用", + "指标描述": { + "指标映射": "从【指标库】中获取['附件工程费用_元/10000']的属性", + "映射规则": "附件工程费用_元/10000" + }, + "code": "" + }, + { + "指标名称": "辅助工程费用", + "指标描述": { + "指标映射": "从【指标库】中获取['(辅助工程费用_元+辅助工程费用_调试_元)', '辅助工程费用_元', '辅助工程费用_调试_元']的属性", + "映射规则": "(辅助工程费用_元+辅助工程费用_调试_元)/10000" + }, + "code": "" + }, + { + "指标名称": "辅助设施工程", + "指标描述": { + "指标映射": "从【指标库】中获取['辅助设施工程_元/10000']的属性", + "映射规则": "辅助设施工程_元/10000" + }, + "code": "" + }, + { + "指标名称": "其他费用合计", + "指标描述": { + "指标映射": "从【指标库】中获取['其他费用合计_元/10000']的属性", + "映射规则": "其他费用合计_元/10000" + }, + "code": "" + }, + { + "指标名称": "建场费合计", + "指标描述": { + "指标映射": "从【指标库】中获取['建场费合计_元/10000']的属性", + "映射规则": "建场费合计_元/10000" + }, + "code": "" + }, + { + "指标名称": "项目建设管理费合计", + "指标描述": { + "指标映射": "从【指标库】中获取['项目建设管理费合计_元/10000']的属性", + "映射规则": "项目建设管理费合计_元/10000" + }, + "code": "" + }, + { + "指标名称": "其中:工程监理费", + "指标描述": { + "指标映射": "从【指标库】中获取['其中:工程监理费_元/10000']的属性", + "映射规则": "其中:工程监理费_元/10000" + }, + "code": "" + }, + { + "指标名称": "项目建设技术服务费合计", + "指标描述": { + "指标映射": "从【指标库】中获取['项目建设技术服务费合计_元/10000']的属性", + "映射规则": "项目建设技术服务费合计_元/10000" + }, + "code": "" + }, + { + "指标名称": "其中:项目前期工作费", + "指标描述": { + "指标映射": "从【指标库】中获取['其中:项目前期工作费_元/10000']的属性", + "映射规则": "其中:项目前期工作费_元/10000" + }, + "code": "" + }, + { + "指标名称": "其中:勘察费", + "指标描述": { + "指标映射": "从【指标库】中获取['其中:勘察费_元/10000']的属性", + "映射规则": "其中:勘察费_元/10000" + }, + "code": "" + }, + { + "指标名称": "其中:设计费", + "指标描述": { + "指标映射": "从【指标库】中获取['其中:设计费_元/10000']的属性", + "映射规则": "其中:设计费_元/10000" + }, + "code": "" + }, + { + "指标名称": "其中:工程建设检测费", + "指标描述": { + "指标映射": "从【指标库】中获取['其中:工程建设检测费_元/10000']的属性", + "映射规则": "其中:工程建设检测费_元/10000" + }, + "code": "" + }, + { + "指标名称": "生产准备费", + "指标描述": { + "指标映射": "从【指标库】中获取['生产准备费_元/10000']的属性", + "映射规则": "生产准备费_元/10000" + }, + "code": "" + }, + { + "指标名称": "其中:安全文明施工费", + "指标描述": { + "指标映射": "从【指标库】中获取['(其中:安全文明施工费_线路_元+其中:安全文明施工费_调试_元)', '其中:安全文明施工费_线路_元', '其中:安全文明施工费_调试_元']的属性", + "映射规则": "(其中:安全文明施工费_线路_元+其中:安全文明施工费_调试_元)/10000" + }, + "code": "" + }, + { + "指标名称": "基本预备费", + "指标描述": { + "指标映射": "从【指标库】中获取['基本预备费_元/10000']的属性", + "映射规则": "基本预备费_元/10000" + }, + "code": "" + }, + { + "指标名称": "静态投资", + "指标描述": { + "指标映射": "从【指标库】中获取['静态投资_元/10000']的属性", + "映射规则": "静态投资_元/10000" + }, + "code": "" + }, + { + "指标名称": "建设期利息", + "指标描述": { + "指标映射": "从【指标库】中获取['建设期利息_元/10000']的属性", + "映射规则": "建设期利息_元/10000" + }, + "code": "" + }, + { + "指标名称": "动态投资", + "指标描述": { + "指标映射": "从【指标库】中获取['动态投资_元/10000']的属性", + "映射规则": "动态投资_元/10000" + }, + "code": "" + }, + { + "指标名称": "增值税抵扣税额", + "指标描述": { + "指标映射": "从【指标库】中获取['增值税抵扣税额_元/10000']的属性", + "映射规则": "增值税抵扣税额_元/10000" + }, + "code": "" + }, + { + "指标名称": "本体费用合计_元", + "指标描述": { + "指标映射": "从【工程费用】中获取['@工程费用.架空输电线路本体工程.合计费']的属性", + "映射规则": "@工程费用.架空输电线路本体工程.合计费" + }, + "code": "" + }, + { + "指标名称": "本体工程人工费_本体_元", + "指标描述": { + "指标映射": "从项目划分【架空输电线路本体工程】下所有子孙项目划分中查找名称属于['人工费']的所有费用", + "映射规则": "人工费" + }, + "code": "" + }, + { + "指标名称": "本体工程人工费_调试_元", + "指标描述": { + "指标映射": "从项目划分【架空输电线路本体工程】下所有子孙项目划分中查找名称属于['人工费']的所有费用", + "映射规则": "人工费" + }, + "code": "" + }, + { + "指标名称": "本体工程机械费_本体_元", + "指标描述": { + "指标映射": "从项目划分【架空输电线路本体工程】下所有子孙项目划分中查找名称属于['施工机械使用费']的所有费用", + "映射规则": "施工机械使用费" + }, + "code": "" + }, + { + "指标名称": "本体工程机械费_调试_元", + "指标描述": { + "指标映射": "从项目划分【架空输电线路本体工程】下所有子孙项目划分中查找名称属于['施工机械使用费']的所有费用", + "映射规则": "施工机械使用费" + }, + "code": "" + }, + { + "指标名称": "基础工程费用_元", + "指标描述": { + "指标映射": "从项目划分【架空输电线路本体工程/基础工程】下所有子孙项目划分中查找名称属于['合计']的所有费用", + "映射规则": "合计" + }, + "code": "" + }, + { + "指标名称": "杆塔工程费用_元", + "指标描述": { + "指标映射": "从项目划分【架空输电线路本体工程/杆塔工程】下所有子孙项目划分中查找名称属于['合计']的所有费用", + "映射规则": "合计" + }, + "code": "" + }, + { + "指标名称": "接地工程费用_元", + "指标描述": { + "指标映射": "从项目划分【架空输电线路本体工程/接地工程】下所有子孙项目划分中查找名称属于['合计']的所有费用", + "映射规则": "合计" + }, + "code": "" + }, + { + "指标名称": "架线工程费用_元", + "指标描述": { + "指标映射": "从项目划分【架空输电线路本体工程/架线工程】下所有子孙项目划分中查找名称属于['合计']的所有费用", + "映射规则": "合计" + }, + "code": "" + }, + { + "指标名称": "附件工程费用_元", + "指标描述": { + "指标映射": "从项目划分【架空输电线路本体工程/附件安装工程】下所有子孙项目划分中查找名称属于['合计']的所有费用", + "映射规则": "合计" + }, + "code": "" + }, + { + "指标名称": "辅助工程费用_元", + "指标描述": { + "指标映射": "从项目划分【架空输电线路本体工程/辅助工程】下所有子孙项目划分中查找名称属于['合计']的所有费用", + "映射规则": "合计" + }, + "code": "" + }, + { + "指标名称": "辅助工程费用_调试_元", + "指标描述": { + "指标映射": "从项目划分【架空输电线路本体工程/辅助工程】下所有子孙项目划分中查找名称属于['合计']的所有费用", + "映射规则": "合计" + }, + "code": "" + }, + { + "指标名称": "辅助设施工程_元", + "指标描述": { + "指标映射": "从【工程费用】中获取['@工程费用.辅助设施工程.合计费']的属性", + "映射规则": "@工程费用.辅助设施工程.合计费" + }, + "code": "" + }, + { + "指标名称": "其他费用合计_元", + "指标描述": { + "指标映射": "从【工程费用】中获取['@工程费用.其他费用.合计费']的属性", + "映射规则": "@工程费用.其他费用.合计费" + }, + "code": "" + }, + { + "指标名称": "建场费合计_元", + "指标描述": { + "指标映射": "从【工程费用】中获取['@其他费用.建设场地征用及清理费']的属性", + "映射规则": "@其他费用.建设场地征用及清理费" + }, + "code": "" + }, + { + "指标名称": "项目建设管理费合计_元", + "指标描述": { + "指标映射": "从【工程费用】中获取['@其他费用.项目建设管理费']的属性", + "映射规则": "@其他费用.项目建设管理费" + }, + "code": "" + }, + { + "指标名称": "其中:工程监理费_元", + "指标描述": { + "指标映射": "从【工程费用】中获取['@其他费用.工程监理费']的属性", + "映射规则": "@其他费用.工程监理费" + }, + "code": "" + }, + { + "指标名称": "项目建设技术服务费合计_元", + "指标描述": { + "指标映射": "从【工程费用】中获取['@其他费用.项目建设技术服务费']的属性", + "映射规则": "@其他费用.项目建设技术服务费" + }, + "code": "" + }, + { + "指标名称": "其中:项目前期工作费_元", + "指标描述": { + "指标映射": "从【工程费用】中获取['@其他费用.项目前期工作费']的属性", + "映射规则": "@其他费用.项目前期工作费" + }, + "code": "" + }, + { + "指标名称": "其中:勘察费_元", + "指标描述": { + "指标映射": "从【工程费用】中获取['@其他费用.勘察费']的属性", + "映射规则": "@其他费用.勘察费" + }, + "code": "" + }, + { + "指标名称": "其中:设计费_元", + "指标描述": { + "指标映射": "从【工程费用】中获取['@其他费用.设计费']的属性", + "映射规则": "@其他费用.设计费" + }, + "code": "" + }, + { + "指标名称": "其中:工程建设检测费_元", + "指标描述": { + "指标映射": "从【工程费用】中获取['@其他费用.工程建设检测费']的属性", + "映射规则": "@其他费用.工程建设检测费" + }, + "code": "" + }, + { + "指标名称": "生产准备费_元", + "指标描述": { + "指标映射": "从【工程费用】中获取['@其他费用.生产准备费']的属性", + "映射规则": "@其他费用.生产准备费" + }, + "code": "" + }, + { + "指标名称": "其中:安全文明施工费_线路_元", + "指标描述": { + "指标映射": "从项目划分【架空输电线路本体工程】下所有子孙项目划分中查找名称属于['安全文明施工费']的所有费用", + "映射规则": "安全文明施工费" + }, + "code": "" + }, + { + "指标名称": "其中:安全文明施工费_调试_元", + "指标描述": { + "指标映射": "从项目划分【架空输电线路本体工程】下所有子孙项目划分中查找名称属于['安全文明施工费']的所有费用", + "映射规则": "安全文明施工费" + }, + "code": "" + }, + { + "指标名称": "基本预备费_元", + "指标描述": { + "指标映射": "从【工程费用】中获取['@工程费用.基本预备费.合计费']的属性", + "映射规则": "@工程费用.基本预备费.合计费" + }, + "code": "" + }, + { + "指标名称": "静态投资_元", + "指标描述": { + "指标映射": "从【工程费用】中获取['@工程费用.工程静态投资(一~七项合计).合计费']的属性", + "映射规则": "@工程费用.工程静态投资(一~七项合计).合计费" + }, + "code": "" + }, + { + "指标名称": "建设期利息_元", + "指标描述": { + "指标映射": "从【工程费用】中获取['@工程费用.建设期贷款利息.合计费']的属性", + "映射规则": "@工程费用.建设期贷款利息.合计费" + }, + "code": "" + }, + { + "指标名称": "动态投资_元", + "指标描述": { + "指标映射": "从【工程费用】中获取['@工程费用.工程动态投资(一~八项合计).合计费']的属性", + "映射规则": "@工程费用.工程动态投资(一~八项合计).合计费" + }, + "code": "" + }, + { + "指标名称": "增值税抵扣税额_元", + "指标描述": { + "指标映射": "从【工程费用】中获取['@工程费用.其中:可抵扣增值税额.合计费']的属性", + "映射规则": "@工程费用.其中:可抵扣增值税额.合计费" + }, + "code": "" + } +] \ No newline at end of file