最新的多轮支持 和新的数据训练集
This commit is contained in:
parent
c30fb0b3e8
commit
b25317baef
|
|
@ -1,5 +1,7 @@
|
||||||
# constants.py
|
# constants.py
|
||||||
SIMILARITY_VALUE = 0.7
|
SIMILARITY_VALUE = 75
|
||||||
|
#
|
||||||
|
COMPANYNAME_SHA = "顺安电网建设有限公司"
|
||||||
#日期
|
#日期
|
||||||
DATE = "date"
|
DATE = "date"
|
||||||
#工程名称
|
#工程名称
|
||||||
|
|
|
||||||
361
api/main.py
361
api/main.py
|
|
@ -6,21 +6,22 @@ from pydantic import ValidationError
|
||||||
|
|
||||||
from intentRecognition import IntentRecognition
|
from intentRecognition import IntentRecognition
|
||||||
from slotRecognition import SlotRecognition
|
from slotRecognition import SlotRecognition
|
||||||
from fuzzywuzzy import process
|
from utils import CheckResult, load_standard_name, generate_project_prompt, standardize_company_and_project, \
|
||||||
from utils import CheckResult, StandardType, load_standard_name
|
load_standard_data, standardize_single_name, text_to_pinyin, multiple_standardize_single_name, \
|
||||||
from constants import PROJECT_NAME, PROJECT_DEPARTMENT, SIMILARITY_VALUE, IMPLEMENTATION_ORG
|
standardize_company_and_projectDepartment
|
||||||
|
|
||||||
|
from constants import PROJECT_NAME, PROJECT_DEPARTMENT, SIMILARITY_VALUE, IMPLEMENTATION_ORG, RISK_LEVEL
|
||||||
from langchain_openai import OpenAIEmbeddings
|
from langchain_openai import OpenAIEmbeddings
|
||||||
from config import *
|
from config import *
|
||||||
|
|
||||||
|
MODEL_ERNIE_PATH = R"../ernie/output/checkpoint-12750"
|
||||||
MODEL_ERNIE_PATH = R"../ernie/output/checkpoint-3540"
|
MODEL_UIE_PATH = R"../uie/output/checkpoint-12150"
|
||||||
MODEL_UIE_PATH = R"../uie/output/checkpoint-3190"
|
|
||||||
|
|
||||||
# 类别名称列表
|
# 类别名称列表
|
||||||
labels = [
|
labels = [
|
||||||
"天气查询", "互联网查询", "页面切换", "日计划数量查询", "周计划数量查询",
|
"天气查询", "互联网查询", "页面切换", "日计划数量查询", "周计划数量查询",
|
||||||
"日计划作业内容", "周计划作业内容", "施工人数", "作业考勤人数", "知识问答",
|
"日计划作业内容", "周计划作业内容", "施工人数", "作业考勤人数", "知识问答",
|
||||||
"通用对话"
|
"通用对话", "作业面查询","班组人数查询","班组数查询","作业面内容","班组详情"
|
||||||
]
|
]
|
||||||
|
|
||||||
# 标签映射
|
# 标签映射
|
||||||
|
|
@ -41,37 +42,30 @@ label_map = {
|
||||||
13: 'B-teamName', 26: 'I-teamName',
|
13: 'B-teamName', 26: 'I-teamName',
|
||||||
}
|
}
|
||||||
|
|
||||||
params = {'model': 'bge-large-zh-v1.5',
|
# # 初始化工具类
|
||||||
'openai_api_base': 'http://127.0.0.1:9997/v1',
|
|
||||||
'openai_api_key': 'EMPTY',
|
|
||||||
'openai_proxy': ''}
|
|
||||||
|
|
||||||
# 初始化工具类
|
|
||||||
intent_recognizer = IntentRecognition(MODEL_ERNIE_PATH, labels)
|
intent_recognizer = IntentRecognition(MODEL_ERNIE_PATH, labels)
|
||||||
|
|
||||||
# 初始化槽位识别工具类
|
# 初始化槽位识别工具类
|
||||||
slot_recognizer = SlotRecognition(MODEL_UIE_PATH, label_map)
|
slot_recognizer = SlotRecognition(MODEL_UIE_PATH, label_map)
|
||||||
# 设置Flask应用
|
# 设置Flask应用
|
||||||
|
|
||||||
#标准工程名
|
#标准公司名和项目名
|
||||||
|
standard_company_program = load_standard_data("./standard_data/standard_company_program.json")
|
||||||
|
|
||||||
|
# 标准工程名,标准工程名拼音和工程名映射,标准工程名拼音
|
||||||
standard_project_name_list = load_standard_name('./standard_data/standard_project.txt')
|
standard_project_name_list = load_standard_name('./standard_data/standard_project.txt')
|
||||||
#标准项目名
|
pinyin_to_standard_project_name_map = {text_to_pinyin(kw): kw for kw in standard_project_name_list}
|
||||||
standard_program_name_list = load_standard_name('./standard_data/standard_program.txt')
|
standard_project_name_pinyin_list = list(pinyin_to_standard_project_name_map.keys())
|
||||||
|
|
||||||
#标准公司名
|
#标准分公司名,标准分公司名拼音和分公司名映射,标公司名拼音
|
||||||
standard_company_name_list = load_standard_name('./standard_data/standard_company.txt')
|
standard_company_name_list = list(standard_company_program.keys())
|
||||||
|
pinyin_to_standard_company_name_map = {text_to_pinyin(kw): kw for kw in standard_company_name_list}
|
||||||
|
standard_company_name_pinyin_list = list(pinyin_to_standard_company_name_map.keys())
|
||||||
|
|
||||||
# 创建嵌入模型
|
print(f"标准化的工程名是:{standard_project_name_list}", flush=True)
|
||||||
embedding = OpenAIEmbeddings(**params)
|
print(f"pinyin标准化的工程名是 list:{standard_project_name_pinyin_list}", flush=True)
|
||||||
|
print(f"pinyin-工程民对应关系 map:{pinyin_to_standard_company_name_map}", flush=True)
|
||||||
|
|
||||||
# 获取标准项目部名称的嵌入向量
|
|
||||||
standard_program_embeddings = embedding.embed_documents(standard_program_name_list, chunk_size=500)
|
|
||||||
|
|
||||||
standard_project_embeddings = embedding.embed_documents(standard_project_name_list, chunk_size=500)
|
|
||||||
|
|
||||||
standard_company_embeddings = embedding.embed_documents(standard_company_name_list, chunk_size=500)
|
|
||||||
|
|
||||||
print(f":standard_project_name_list:{standard_project_name_list}")
|
|
||||||
app = Flask(__name__)
|
app = Flask(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -116,7 +110,6 @@ class LabelMessage(BaseModel):
|
||||||
class Message(BaseModel):
|
class Message(BaseModel):
|
||||||
role: str = Field(..., description="消息内容")
|
role: str = Field(..., description="消息内容")
|
||||||
content: str = Field(..., description="消息内容")
|
content: str = Field(..., description="消息内容")
|
||||||
# timestamp: str = Field(..., description="消息时间戳")
|
|
||||||
|
|
||||||
|
|
||||||
# 请求数据的结构
|
# 请求数据的结构
|
||||||
|
|
@ -199,6 +192,10 @@ def slot_reco():
|
||||||
def agent():
|
def agent():
|
||||||
try:
|
try:
|
||||||
data = request.get_json()
|
data = request.get_json()
|
||||||
|
except Exception as e:
|
||||||
|
print(f"body不是一个有效的json")
|
||||||
|
return jsonify({"error": str(e)}), 500 # 捕捉其他错误并返回
|
||||||
|
try:
|
||||||
# 使用 Pydantic 来验证数据结构
|
# 使用 Pydantic 来验证数据结构
|
||||||
request_data = RequestData(**data) # Pydantic 会验证数据结构
|
request_data = RequestData(**data) # Pydantic 会验证数据结构
|
||||||
messages = request_data.messages
|
messages = request_data.messages
|
||||||
|
|
@ -221,28 +218,34 @@ def agent():
|
||||||
# 再进行槽位抽取
|
# 再进行槽位抽取
|
||||||
entities = slot_recognizer.recognize(query)
|
entities = slot_recognizer.recognize(query)
|
||||||
|
|
||||||
print(f"第一轮意图识别后的label:{predicted_label}, id:{predicted_id},槽位抽取后的实体:{entities},message:{messages}")
|
print(
|
||||||
|
f"第一轮意图识别后的label:{predicted_label}, id:{predicted_id},槽位抽取后的实体:{entities},message:{messages}",flush=True)
|
||||||
# 如果是后续轮次(多轮对话),这里只做示例,可能需要根据具体需求进行处理
|
# 多轮
|
||||||
else:
|
else:
|
||||||
query = messages[0].content # 使用 Message 对象的 .content 属性
|
res = extract_multi_chat(messages)
|
||||||
# 先进行意图识别
|
predicted_label, predicted_probability, predicted_id = intent_recognizer.predict(res)
|
||||||
predicted_label, predicted_probability, predicted_id = intent_recognizer.predict(query)
|
#0:天气,1:互联网查询,9:知识问答,10:通用对话
|
||||||
entities = multi_slot_recognizer(predicted_id, messages)
|
if predicted_id in [0, 1, 9, 10]:
|
||||||
|
print(f"多轮意图识别后的label:{predicted_label}, id:{predicted_id},message:{messages}",
|
||||||
print(f"多轮意图识别后的label:{predicted_label}, id:{predicted_id},槽位抽取后的实体:{entities},message:{messages}")
|
flush=True)
|
||||||
|
return jsonify({
|
||||||
|
"code": 200, "msg": "成功",
|
||||||
|
"answer": {"int": predicted_id, "label": predicted_label, "probability": predicted_probability},
|
||||||
|
"finalQuery": res
|
||||||
|
})
|
||||||
|
entities = slot_recognizer.recognize(res)
|
||||||
|
print(
|
||||||
|
f"多轮意图识别后的label:{predicted_label}, id:{predicted_id},槽位抽取后的实体:{entities},message:{messages}",flush=True)
|
||||||
|
|
||||||
#必须槽位缺失检查
|
#必须槽位缺失检查
|
||||||
status, sk = check_lost(predicted_id, entities)
|
status, sk = check_lost(predicted_id, entities)
|
||||||
if status == CheckResult.NEEDS_MORE_ROUNDS:
|
if status == CheckResult.NEEDS_MORE_ROUNDS:
|
||||||
return jsonify({"code": 10001, "msg": "成功",
|
return jsonify({"code": 10001, "msg": "成功",
|
||||||
"answer": { "miss": sk},
|
"answer": {"miss": sk},
|
||||||
})
|
})
|
||||||
|
|
||||||
#工程名和项目名标准化
|
#工程名和项目名标准化
|
||||||
print(f"start to check_project_standard_slot")
|
|
||||||
result, information = check_project_standard_slot(predicted_id, entities)
|
result, information = check_project_standard_slot(predicted_id, entities)
|
||||||
print(f"end check_project_standard_slot,{result},{information}")
|
|
||||||
if result == CheckResult.NEEDS_MORE_ROUNDS:
|
if result == CheckResult.NEEDS_MORE_ROUNDS:
|
||||||
return jsonify({
|
return jsonify({
|
||||||
"code": 10001, "msg": "成功",
|
"code": 10001, "msg": "成功",
|
||||||
|
|
@ -250,8 +253,9 @@ def agent():
|
||||||
})
|
})
|
||||||
|
|
||||||
return jsonify({
|
return jsonify({
|
||||||
"code": 200,"msg": "成功",
|
"code": 200, "msg": "成功",
|
||||||
"answer": {"int": predicted_id, "label": predicted_label, "probability": predicted_probability, "slot": entities },
|
"answer": {"int": predicted_id, "label": predicted_label, "probability": predicted_probability,
|
||||||
|
"slot": entities},
|
||||||
})
|
})
|
||||||
|
|
||||||
except ValidationError as e:
|
except ValidationError as e:
|
||||||
|
|
@ -259,33 +263,91 @@ def agent():
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
return jsonify({"error": str(e)}), 500 # 捕捉其他错误并返回
|
return jsonify({"error": str(e)}), 500 # 捕捉其他错误并返回
|
||||||
|
|
||||||
|
def extract_multi_chat(messages):
|
||||||
def multi_slot_recognizer(intention_id, messages):
|
|
||||||
from openai import OpenAI
|
from openai import OpenAI
|
||||||
client = OpenAI(base_url = api_base_url, api_key = api_key)
|
client = OpenAI(base_url=api_base_url, api_key=api_key)
|
||||||
|
|
||||||
# prompt = f'''
|
# 格式化对话历史
|
||||||
# 根据用户的输入{messages},抽取出用户最近最想了解的一个问题,要求:保持客观真实,简单明了,不要多余解释和阐述,不需要输出如“用户想了解的问题”类似的字眼
|
chat_history = "\n".join([f"{msg.role}: {msg.content}" for msg in messages])
|
||||||
# '''
|
|
||||||
prompt = f'''根据以下对话记录,提取用户最近一次提问的核心意图,根据上下文的回答内容并且关注用户最后的问题,提取出的意图需表述为完整的问题句式:
|
prompt = f'''你是一个智能助手,需要从以下对话记录中提取用户最近一次提问的完整问题:
|
||||||
对话记录:{messages}'''
|
1. **仅关注用户的最后一个问题**,无论之前用户提问了什么,**不要受到之前用户问题的影响**。
|
||||||
|
2. **如果用户的最后一个问题包含指代词**(如“作业计划分别是什么”、“具体是哪2项”、“刚刚那个故事”、“明天呢”、“合肥中心变工程呢”等),请结合用户上一次的问题和**AI(助手)回答**,补充信息,使问题成为完整的句子。
|
||||||
|
3. **如果用户的最后一个问题包含“公司”这个字眼并且“公司”单独出现(如“公司今天有多少作业计划”)或者公司,工程,项目部等都不出现(如“今天有多少作业计划”),则不要参考对话历史进行补全,保持用户原始表达,不要替换为具体的公司名,工程名或项目部名等。**
|
||||||
|
4. **如果用户的最后一个问题本身是完整的**(即未使用上述2里的指代词),直接输出该问题,不要受前文影响。
|
||||||
|
5. **如果问题缺少上下文信息**(如工程、项目部和时间等),仅在**最近的 AI 回答**提供了明确的上下文时进行补全,否则保持用户的原始输入,不要添加错误的补全信息。
|
||||||
|
6. **如果用户的最新问题包含时间信息**(如“今天、明天、本周”),请确保其被保留,并且不改变时间表达方式。
|
||||||
|
- **如果用户的提问本身省略了时间信息,但最近 AI 回答包含时间信息,则补全时间**。
|
||||||
|
- **例如:用户问“具体是哪20项”时,最近 AI 回答是“今天送1分公司第二项目管理部有20项作业计划”,那么补全后的问题应为“今天送1分公司第二项目管理部具体是哪20项作业计划”**。
|
||||||
|
7. **不要改写问题的主体和语序**,仅在需要时补全信息,避免误修改用户原始表达。
|
||||||
|
8. 直接输出补全后的完整问题,不需要额外解释,也不需要输出“用户想了解的问题”这样的字眼。
|
||||||
|
|
||||||
|
**对话记录:**
|
||||||
|
{chat_history}
|
||||||
|
|
||||||
|
请提取并补全用户的最新问题:'''
|
||||||
|
|
||||||
|
# prompt = f'''你是一个智能助手,需要从以下对话记录中提取用户最近一次提问的完整问题:
|
||||||
|
# 1. **仅关注用户的最后一个问题**,无论之前用户提问了什么,**不要受到之前用户问题的影响**。
|
||||||
|
# 2. **如果用户的最后一个问题包含指代词**(如“作业计划分别是什么”、“具体是哪2项”、“刚刚那个故事”、“明天呢”、“合肥中心变工程呢”等),请结合用户上一次的问题和**AI(助手)回答**,补充信息,使问题成为完整的句子。
|
||||||
|
# 3. **如果用户的最后一个问题本身是完整的**(即未使用上述2里的指代词),直接输出该问题,不要受前文影响。
|
||||||
|
# - **如果用户的最后一个问题包含“公司”字眼并且“公司”单独出现(如“公司今天有多少作业计划”)**,则不要参考对话历史进行补全,保持用户原始表达。
|
||||||
|
# - **如果用户的最后一个问题里公司,工程,项目部等都不出现(如“今天有多少作业计划”),则不要参考对话历史进行补全,保持用户原始表达。
|
||||||
|
# 4. **如果问题缺少上下文信息**(如工程、项目部和时间等),仅在**最近的 AI 回答**提供了明确的上下文时进行补全,否则保持用户的原始输入,不要添加错误的补全信息。
|
||||||
|
# 5. **如果用户的最新问题包含时间信息**(如“今天、明天、本周”),请确保其被保留,并且不改变时间表达方式。
|
||||||
|
# - **如果用户的提问本身省略了时间信息,但最近 AI 回答包含时间信息,则补全时间**。
|
||||||
|
# - **例如:用户问“具体是哪20项”时,最近 AI 回答是“今天送1分公司第二项目管理部有20项作业计划”,那么补全后的问题应为“今天送1分公司第二项目管理部具体是哪20项作业计划”**。
|
||||||
|
# 6. **不要改写问题的主体和语序**,仅在需要时补全信息,避免误修改用户原始表达。
|
||||||
|
# 7. 直接输出补全后的完整问题,不需要额外解释,也不需要输出“用户想了解的问题”这样的字眼。
|
||||||
|
#
|
||||||
|
# **对话记录:**
|
||||||
|
# {chat_history}
|
||||||
|
#
|
||||||
|
# 请提取并补全用户的最新问题:'''
|
||||||
|
|
||||||
|
message = [
|
||||||
|
{"role": "system", "content": "你是一个智能助手,负责提取用户最近的问题,并自动补全缺失信息,使其成为完整的问题句子。"},
|
||||||
|
{"role": "user", "content": prompt}
|
||||||
|
]
|
||||||
|
|
||||||
message = [{"role": "system", "content": prompt}]
|
|
||||||
message.extend(messages)
|
|
||||||
# print(message)
|
|
||||||
response = client.chat.completions.create(
|
response = client.chat.completions.create(
|
||||||
messages=message,
|
messages=message,
|
||||||
model=model_name,
|
model=model_name,
|
||||||
max_tokens=1000,
|
max_tokens=100,
|
||||||
temperature=0.001,
|
temperature=0.3, # 降低随机性,提高确定性
|
||||||
stream=False
|
stream=False
|
||||||
)
|
)
|
||||||
res = response.choices[0].message.content
|
|
||||||
|
|
||||||
print(f"多轮意图后用户想要的问题是{res}")
|
res = response.choices[0].message.content.strip()
|
||||||
entries = slot_recognizer.recognize(res)
|
print(f"多轮意图后用户想要的问题是:{res}", flush=True)
|
||||||
|
return res
|
||||||
|
|
||||||
return entries
|
# def multi_slot_recognizer(intention_id, messages):
|
||||||
|
# from openai import OpenAI
|
||||||
|
# client = OpenAI(base_url=api_base_url, api_key=api_key)
|
||||||
|
#
|
||||||
|
# # prompt = f'''
|
||||||
|
# # 根据用户的输入{messages},抽取出用户最近最想了解的一个问题,要求:保持客观真实,简单明了,不要多余解释和阐述,不需要输出如“用户想了解的问题”类似的字眼
|
||||||
|
# # '''
|
||||||
|
# prompt = f'''根据以下对话记录,提取用户最近一次提问的核心意图,根据关键信息和上下文的回答内容并且关注用户最后的问题,提取出的意图需表述为完整的问题句式:
|
||||||
|
# 对话记录:{messages}'''
|
||||||
|
#
|
||||||
|
# message = [{"role": "system", "content": prompt}]
|
||||||
|
# message.extend(messages)
|
||||||
|
# # print(message)
|
||||||
|
# response = client.chat.completions.create(
|
||||||
|
# messages=message,
|
||||||
|
# model=model_name,
|
||||||
|
# max_tokens=1000,
|
||||||
|
# temperature=0.001,
|
||||||
|
# stream=False
|
||||||
|
# )
|
||||||
|
# res = response.choices[0].message.content
|
||||||
|
#
|
||||||
|
# print(f"多轮意图后用户想要的问题是{res}",flush=True)
|
||||||
|
# entries = slot_recognizer.recognize(res)
|
||||||
|
#
|
||||||
|
# return entries
|
||||||
|
|
||||||
def check_lost(int_res, slot):
|
def check_lost(int_res, slot):
|
||||||
#labels: ["天气查询","通用对话","页面切换","日计划数量查询","周计划数量查询","日计划作业内容","周计划作业内容","施工人数","作业考勤人数","知识问答"]
|
#labels: ["天气查询","通用对话","页面切换","日计划数量查询","周计划数量查询","日计划作业内容","周计划作业内容","施工人数","作业考勤人数","知识问答"]
|
||||||
|
|
@ -297,10 +359,16 @@ def check_lost(int_res, slot):
|
||||||
6: [['date']],
|
6: [['date']],
|
||||||
7: [['date']],
|
7: [['date']],
|
||||||
8: [['date']],
|
8: [['date']],
|
||||||
|
11: [['date']],
|
||||||
|
12: [['date']],
|
||||||
|
13: [['date']],
|
||||||
|
14: [['date']],
|
||||||
|
15: [['date']],
|
||||||
}
|
}
|
||||||
|
|
||||||
intention_mapping = {2: "页面切换", 3: "日计划数量查询", 4: "周计划数量查询", 5: "日计划作业内容",
|
intention_mapping = {2: "页面切换", 3: "日计划数量查询", 4: "周计划数量查询", 5: "日计划作业内容",
|
||||||
6: "周计划作业内容",7: "施工人数",8: "作业考勤人数"}
|
6: "周计划作业内容", 7: "施工人数", 8: "作业考勤人数", 11: "作业面查询",
|
||||||
|
12:"班组人数查询", 13:"班组数查询", 14:"作业面内容", 15:"班组详情"}
|
||||||
if not mapping.__contains__(int_res):
|
if not mapping.__contains__(int_res):
|
||||||
return 0, ""
|
return 0, ""
|
||||||
#提取的槽位信息
|
#提取的槽位信息
|
||||||
|
|
@ -325,90 +393,135 @@ def check_lost(int_res, slot):
|
||||||
return CheckResult.NO_MATCH, cur_k
|
return CheckResult.NO_MATCH, cur_k
|
||||||
#符合当前意图的的必须槽位,但是不在提取的槽位信息里
|
#符合当前意图的的必须槽位,但是不在提取的槽位信息里
|
||||||
left = [x for x in mapping[int_res][idx] if x not in cur_k]
|
left = [x for x in mapping[int_res][idx] if x not in cur_k]
|
||||||
print(f"符合当前意图的的必须槽位,但是不在提取的槽位信息里, {left}")
|
print(f"符合当前意图的的必须槽位,但是不在提取的槽位信息里, {left}",flush=True)
|
||||||
apologize_str = "非常抱歉,"
|
apologize_str = "非常抱歉,"
|
||||||
if int_res == 2:
|
if int_res == 2:
|
||||||
return CheckResult.NEEDS_MORE_ROUNDS, f"{apologize_str}请问你想查询哪个页面?"
|
return CheckResult.NEEDS_MORE_ROUNDS, f"{apologize_str}请问你想查询哪个页面?"
|
||||||
elif int_res in [3, 4, 5, 6, 7, 8]:
|
elif int_res in [3, 4, 5, 6, 7, 8, 11, 12, 13, 14, 15]:
|
||||||
return CheckResult.NEEDS_MORE_ROUNDS, f"{apologize_str}请问你想查询什么时间的{intention_mapping[int_res]}?"
|
return CheckResult.NEEDS_MORE_ROUNDS, f"{apologize_str}请问你想查询什么时间的{intention_mapping[int_res]}?"
|
||||||
|
|
||||||
|
|
||||||
#标准化工程名
|
#标准化工程名
|
||||||
def check_project_standard_slot(int_res, slot) -> tuple:
|
def check_project_standard_slot(int_res, slot) -> tuple:
|
||||||
intention_list = {3, 4, 5, 6, 7, 8}
|
intention_list = {3, 4, 5, 6, 7, 8, 11, 12, 13, 14, 15}
|
||||||
if int_res not in intention_list:
|
if int_res not in intention_list:
|
||||||
return CheckResult.NO_MATCH, ""
|
return CheckResult.NO_MATCH, ""
|
||||||
|
|
||||||
|
#项目名 当项目名存在时需要一定存在分公司(实施组织)名
|
||||||
|
if PROJECT_DEPARTMENT in slot:
|
||||||
|
if IMPLEMENTATION_ORG not in slot:
|
||||||
|
return CheckResult.NEEDS_MORE_ROUNDS, "请补充该项目部所属的分公司名称"
|
||||||
|
else:
|
||||||
|
standard_company, matched_projectDepartment = standardize_company_and_projectDepartment(slot[IMPLEMENTATION_ORG], slot[PROJECT_DEPARTMENT], standard_company_name_list, standard_company_program, pinyin_to_standard_company_name_map)
|
||||||
|
print(f"check_project_standard_slot : {slot[IMPLEMENTATION_ORG]}, {slot[PROJECT_DEPARTMENT]}")
|
||||||
|
# if not standard_company:
|
||||||
|
# return CheckResult.NEEDS_MORE_ROUNDS, f"未匹配到您说的分公司名:{slot[IMPLEMENTATION_ORG]},请提供更准确的分公司名"
|
||||||
|
# if not matched_projectDepartment:
|
||||||
|
# return CheckResult.NEEDS_MORE_ROUNDS, f"未匹配到您说的项目名:{slot[PROJECT_DEPARTMENT]},请提供更准确的项目名"
|
||||||
|
# if len(standard_company) > 1:
|
||||||
|
# prompt = generate_project_prompt(matched_projectDepartment)
|
||||||
|
# return CheckResult.NEEDS_MORE_ROUNDS, prompt
|
||||||
|
# if len(matched_projectDepartment) == 1:
|
||||||
|
# slot[IMPLEMENTATION_ORG] = standard_company[0]
|
||||||
|
# slot[PROJECT_DEPARTMENT] = matched_projectDepartment[0]
|
||||||
|
# elif len(matched_projectDepartment) > 1:
|
||||||
|
# prompt = generate_project_prompt(standard_company, original_name=slot[IMPLEMENTATION_ORG], type="分公司名")
|
||||||
|
# return CheckResult.NEEDS_MORE_ROUNDS, prompt
|
||||||
|
if not standard_company:
|
||||||
|
return CheckResult.NEEDS_MORE_ROUNDS, f"未匹配到您说的分公司名:{slot[IMPLEMENTATION_ORG]},请提供更准确的分公司名"
|
||||||
|
if not matched_projectDepartment:
|
||||||
|
return CheckResult.NEEDS_MORE_ROUNDS, f"未匹配到您说的项目名:{slot[PROJECT_DEPARTMENT]},请提供更准确的项目名"
|
||||||
|
if standard_company and len(matched_projectDepartment) == 1:
|
||||||
|
slot[IMPLEMENTATION_ORG] = standard_company
|
||||||
|
slot[PROJECT_DEPARTMENT] = matched_projectDepartment[0]
|
||||||
|
elif standard_company and len(matched_projectDepartment) > 1:
|
||||||
|
prompt = generate_project_prompt(matched_projectDepartment)
|
||||||
|
return CheckResult.NEEDS_MORE_ROUNDS, prompt
|
||||||
|
|
||||||
|
#工程名和分公司名标准化
|
||||||
for key, value in slot.items():
|
for key, value in slot.items():
|
||||||
if key == PROJECT_NAME:
|
if key == PROJECT_NAME:
|
||||||
# match_project, match_possibility = fuzzy_match(value, standard_project_name_list)
|
print(f"check_project_standard_slot original project : {slot[PROJECT_NAME]}")
|
||||||
match_project, match_possibility = fuzzy_match(value,standard_project_embeddings,standard_project_name_list)
|
match_results = multiple_standardize_single_name(value, standard_project_name_list, standard_project_name_pinyin_list, pinyin_to_standard_project_name_map,30,70)
|
||||||
print(f"fuzzy_match project result:{match_project}, {match_possibility}")
|
print(f"standardize_single_name 工程名 :result:{match_results}",flush=True)
|
||||||
if match_possibility >= SIMILARITY_VALUE:
|
if match_results and len(match_results) == 1:
|
||||||
slot[key] = match_project
|
slot[key] = match_results[0]
|
||||||
else:
|
else:
|
||||||
return CheckResult.NEEDS_MORE_ROUNDS, f"抱歉,您说的工程名是{match_project}吗"
|
prompt = generate_project_prompt(match_results, original_name=slot[PROJECT_NAME], type="工程名")
|
||||||
|
return CheckResult.NEEDS_MORE_ROUNDS, prompt
|
||||||
if key == PROJECT_DEPARTMENT:
|
|
||||||
# match_program, match_possibility = fuzzy_match(value, standard_program_name_list)
|
|
||||||
match_program, match_possibility = fuzzy_match(value,standard_program_embeddings, standard_program_name_list)
|
|
||||||
print(f"fuzzy_match program result:{match_program}, {match_possibility}")
|
|
||||||
if match_possibility >= SIMILARITY_VALUE:
|
|
||||||
slot[key] = match_program
|
|
||||||
else:
|
|
||||||
return CheckResult.NEEDS_MORE_ROUNDS, f"抱歉,您说的项目名是{match_program}吗"
|
|
||||||
|
|
||||||
if key == IMPLEMENTATION_ORG and slot[key] != "公司":
|
if key == IMPLEMENTATION_ORG and slot[key] != "公司":
|
||||||
match_company, match_possibility = fuzzy_match(value,standard_company_embeddings, standard_company_name_list)
|
print(f"check_project_standard_slot original company : {slot[IMPLEMENTATION_ORG]}")
|
||||||
print(f"fuzzy_match program result:{match_company}, {match_possibility}")
|
match_results = multiple_standardize_single_name(value, standard_company_name_list, standard_company_name_pinyin_list, pinyin_to_standard_company_name_map, lower_score=70, high_score=8, isArabicNumConv = True)
|
||||||
if match_possibility >= SIMILARITY_VALUE:
|
print(f"standardize_single_name 分公司名: result:{match_results}",flush=True)
|
||||||
slot[key] = match_company
|
if match_results and len(match_results) == 1:
|
||||||
|
slot[key] = match_results[0]
|
||||||
else:
|
else:
|
||||||
return CheckResult.NEEDS_MORE_ROUNDS, f"抱歉,您说的分公司名是{match_company}吗"
|
prompt = generate_project_prompt(match_results, original_name=slot[IMPLEMENTATION_ORG], type="分公司名")
|
||||||
|
return CheckResult.NEEDS_MORE_ROUNDS, prompt
|
||||||
|
if key == RISK_LEVEL:
|
||||||
|
if slot[RISK_LEVEL] not in["2级","3级","4级","5级"] and slot[RISK_LEVEL] not in["二级","三级","四级","五级"]:
|
||||||
|
return CheckResult.NEEDS_MORE_ROUNDS, "您查询的风险等级在系统中未找到,请确认风险等级后再次提问"
|
||||||
|
|
||||||
return CheckResult.NO_MATCH, ""
|
return CheckResult.NO_MATCH, ""
|
||||||
|
|
||||||
|
# test_cases = [
|
||||||
|
# ("安徽宏源电力建设有限公司", "第三项目管理部"), # 期望返回所有"第三项目管理部"
|
||||||
|
# ("安徽宏源电力建设有限公司", "第九项目部"), # 期望返回 "第九项目管理部"
|
||||||
|
# ("顺安电网公司", "第二项目部"), # 期望匹配"顺安电网建设有限公司"下的"第二项目管理部"
|
||||||
|
# ("送电一公司", "第三项目部"), # 期望返回"第三项目管理部"
|
||||||
|
# ("送电2公司", "第三项目部"), # 期望返回"第三项目管理部"
|
||||||
|
# ("消防分公司", "第七项目部"), # 期望返回"第七项目管理部
|
||||||
|
# ("建筑分公司", "第七项目部"), # 期望返回"第七项目管理部"
|
||||||
|
# ("建筑消防分公司", "第七项目部"), # 期望返回"第七项目管理部"
|
||||||
|
# ("建筑分公司消防分公司", "第七项目部") # 期望返回"第七项目管理部"
|
||||||
|
# ]
|
||||||
|
#
|
||||||
|
# for company, project in test_cases:
|
||||||
|
# # result = standardize_company_and_project(company, project,standard_company_program)
|
||||||
|
# result = standardize_company_and_projectDepartment(company, project,standard_company_name_list, standard_company_program, pinyin_to_standard_company_name_map)
|
||||||
|
# # result = multiple_standardize_single_name("company", standard_project_name_list, standard_project_name_pinyin_list, pinyin_to_standard_project_name_map,40,70)
|
||||||
|
# print(f"输入: {company}, {project} -> 输出: {result}")
|
||||||
|
#
|
||||||
|
# result = standardize_single_name("送电一公司", standard_company_name_list)
|
||||||
|
# print(f"输入: 送一分公司-> 输出: {result}")
|
||||||
|
#
|
||||||
|
# prompt = generate_project_prompt(result, "分公司名")
|
||||||
|
# print(f"prompt:{prompt}")
|
||||||
|
#
|
||||||
|
# result = standardize_single_name("合肥中心变", standard_project_name_list)
|
||||||
|
# print(f"输入: 合肥中心变-> 输出: {result}")
|
||||||
|
#
|
||||||
|
# prompt = generate_project_prompt(result, "工程名")
|
||||||
|
# print(f"prompt:{prompt}")
|
||||||
|
|
||||||
# def fuzzy_match(user_input, standard_name):
|
# result = standardize_single_name("合肥中心变", standard_project_name_list, 60, 75)
|
||||||
# result = process.extract(user_input, standard_name)
|
# print(f"输入: 合肥中心变-> 输出: {result}")
|
||||||
# return result[0][0], result[0][1]/100
|
#
|
||||||
|
# result = standardize_single_name("阜阳阜四变电站工程", standard_project_name_list, 60, 75)
|
||||||
|
# print(f"输入: 阜阳阜四变电站工程-> 输出: {result}")
|
||||||
|
#
|
||||||
|
# result = standardize_single_name("循环园变电站工程", standard_project_name_list, 60, 75)
|
||||||
|
# print(f"输入: 循环园变电站工程-> 输出: {result}")
|
||||||
|
#
|
||||||
|
# match_results = multiple_standardize_single_name("宋轶分公司", standard_company_name_list, standard_company_name_pinyin_list, pinyin_to_standard_company_name_map,75,80)
|
||||||
|
# print(f"standardize_pinyin_single_name 输入: 宋轶分公司-> 输出: {match_results}")
|
||||||
|
# #
|
||||||
|
# match_results = multiple_standardize_single_name("合肥中心变", standard_project_name_list, standard_project_name_pinyin_list, pinyin_to_standard_project_name_map,40,70)
|
||||||
|
# print(f"standardize_pinyin_single_name 输入: 合肥中心变-> 输出: {match_results}")
|
||||||
|
#
|
||||||
|
# match_results = multiple_standardize_single_name("淮南安丰", standard_project_name_list, standard_project_name_pinyin_list, pinyin_to_standard_project_name_map,40,70)
|
||||||
|
# print(f"standardize_pinyin_single_name 输入: 淮南安丰工程-> 输出: {match_results}")
|
||||||
|
#
|
||||||
|
# match_results = multiple_standardize_single_name("合州蚊度工程", standard_project_name_list, standard_project_name_pinyin_list, pinyin_to_standard_project_name_map,40,70)
|
||||||
|
# print(f"standardize_pinyin_single_name 输入: 合州站工程-> 输出: {match_results}")
|
||||||
|
#
|
||||||
|
# company, project = standardize_company_and_projectDepartment("宋轶分公司","第一项目部", standard_company_name_list, standard_company_program, pinyin_to_standard_company_name_map)
|
||||||
|
# print(f"company:{company}, project:{project}")
|
||||||
|
# company, project = standardize_company_and_projectDepartment("试验分公司","电缆班", standard_company_name_list, standard_company_program, pinyin_to_standard_company_name_map)
|
||||||
|
# print(f"company:{company}, project:{project}")
|
||||||
|
# company, project = standardize_company_and_projectDepartment("宏源电力公司","第三项目部(六安线路)", standard_company_name_list, standard_company_program, pinyin_to_standard_company_name_map)
|
||||||
|
# print(f"company:{company}, project:{project}")
|
||||||
|
|
||||||
def fuzzy_match(query, standard_embeddings, standard_name_list):
|
|
||||||
"""
|
|
||||||
模糊匹配查询与标准名称列表,返回最相似名称及其相似度。
|
|
||||||
|
|
||||||
:param query: 查询名称
|
|
||||||
:param standard_embeddings: 标准名称的嵌入向量列表
|
|
||||||
:param standard_name_list: 标准名称列表
|
|
||||||
:return: 最相似名称, 相似度(保留 2 位小数)
|
|
||||||
"""
|
|
||||||
from sklearn.metrics.pairwise import cosine_similarity
|
|
||||||
import numpy as np
|
|
||||||
try:
|
|
||||||
# 查询名称的嵌入向量
|
|
||||||
query_embedding = embedding.embed_query(query)
|
|
||||||
|
|
||||||
# 计算相似度
|
|
||||||
similarities = cosine_similarity([query_embedding], standard_embeddings)[0]
|
|
||||||
|
|
||||||
# 找到最相似的项目名称
|
|
||||||
most_similar_index = np.argmax(similarities)
|
|
||||||
most_similar_name = standard_name_list[most_similar_index]
|
|
||||||
similarity_score = similarities[most_similar_index]
|
|
||||||
|
|
||||||
# 打印日志
|
|
||||||
print(f"输入名称: {query}")
|
|
||||||
print(f"最相似的名称: {most_similar_name}")
|
|
||||||
print(f"相似度: {similarity_score:.4f}")
|
|
||||||
|
|
||||||
return most_similar_name, round(similarity_score, 2)
|
|
||||||
except Exception as e:
|
|
||||||
print(f"相似性判断错误: {e}")
|
|
||||||
return None, None
|
|
||||||
|
|
||||||
|
|
||||||
# match_program, match_possibility = fuzzy_match("第一项目部定西")
|
|
||||||
# print(f"fuzzy_match program result:{match_program}, {match_possibility}")
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
app.run(host='0.0.0.0', port=18074, debug=True)
|
app.run(host='0.0.0.0', port=18074, debug=True)
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,9 @@
|
||||||
import paddle
|
import paddle
|
||||||
from paddlenlp.transformers import ErnieForTokenClassification, ErnieTokenizer
|
from paddlenlp.transformers import ErnieForTokenClassification, ErnieTokenizer
|
||||||
|
|
||||||
|
from constants import SUBCONTRACTOR, CONSTRUCTION_UNIT, IMPLEMENTATION_ORG
|
||||||
|
|
||||||
|
|
||||||
class SlotRecognition:
|
class SlotRecognition:
|
||||||
def __init__(self, model_path: str, label_map: dict):
|
def __init__(self, model_path: str, label_map: dict):
|
||||||
"""
|
"""
|
||||||
|
|
@ -56,6 +59,18 @@ class SlotRecognition:
|
||||||
if current_entity:
|
if current_entity:
|
||||||
entities[current_label] = "".join(current_entity)
|
entities[current_label] = "".join(current_entity)
|
||||||
# 对所有实体进行替换:替换每个实体中的 '##' 为 ' '
|
# 对所有实体进行替换:替换每个实体中的 '##' 为 ' '
|
||||||
|
# for key, value in entities.items():
|
||||||
|
# entities[key] = value.replace('#', '')
|
||||||
|
updates = {}
|
||||||
for key, value in entities.items():
|
for key, value in entities.items():
|
||||||
|
#对所有实体进行替换:替换每个实体中的 '##' 为 ' '
|
||||||
entities[key] = value.replace('#', '')
|
entities[key] = value.replace('#', '')
|
||||||
return entities
|
#暂时不支持分包商和监管单位的查询
|
||||||
|
if key == SUBCONTRACTOR or key == CONSTRUCTION_UNIT:
|
||||||
|
updates[IMPLEMENTATION_ORG] = value # 统一映射到 IMPLEMENTATION_ORG
|
||||||
|
else:
|
||||||
|
updates[key] = value # 保留原 key
|
||||||
|
# 更新 entities
|
||||||
|
entities.clear()
|
||||||
|
entities.update(updates)
|
||||||
|
return entities
|
||||||
|
|
@ -1,199 +1,214 @@
|
||||||
杨柳220kV变电站220kV南坪间隔扩建工程
|
先锋-泉河π入安庆四变电站220kV线路工程(PROJ-2024-0834)
|
||||||
阜阳东坡110kV变电站新建工程
|
安徽滁州护桥220kV变电站2号主变扩建工程(PROJ-2024-0821)
|
||||||
杨柳圩110kV变电站110kV配电装置改造工程
|
金牛500kV变电站新建工程(PROJ-2024-0866)
|
||||||
阜阳太和城南110kV变电站新建工程
|
香涧-鹭岛500kV线路工程(淮河大跨越段)(PROJ-2024-0722)
|
||||||
安庆石化110kV变电站新建 工程
|
国网北京检修公司2024年±500kV延庆换流站直流主设备及辅助设备不停电检修维护(PROJ-2024-0841)
|
||||||
华南城220kV变电站新建工程
|
安徽宿州萧砀500千伏变电站新建工程(建筑部分)(PROJ-2024-0822)
|
||||||
马鞍山万济220kV变电站新建工程
|
蓼城-冯井π入尧塘变电站110kV线路工程(PROJ-2024-0897)
|
||||||
紫蓬500kV变电站间隔扩建工程
|
蚌埠潼河110kV变电站新建工程(PROJ-2024-0774)
|
||||||
安徽阜阳阜四500kV变电站新建工程
|
龙门500kV变电站间隔扩建工程(调试部分)(PROJ-2025-0043)
|
||||||
安徽合肥杜岗220kV开关站新建工程
|
包河10kV玉龙18网架结构化工程施工(PROJ-2024-0464)
|
||||||
庐北220kV变电站新建工程
|
松滋-安丰220kV线路工程(PROJ-2024-0438)
|
||||||
渝北±800千伏换流站工程电气安装A包
|
塔岗-西梁山T接杨柳圩变电站110kV架空线路工程(PROJ-2024-0886)
|
||||||
宿州城东220kV变电站新建工程
|
安庆武昌220kV变电站220kV江调间隔扩建工程(PROJ-2020-0465)
|
||||||
马鞍山金河口110kV变电站新建工程
|
灵泗-奎河220kV线路工程(PROJ-2024-0704)
|
||||||
安庆四500kV变电站新建工程
|
香涧-梨花220kV线路工程(PROJ-2024-0442)
|
||||||
合肥循环园220kV变电站新建工程
|
和襄高速机电工程总承包项目500kV-1100kV特高压电力线路迁建工程(PROJ-2024-1052)
|
||||||
马鞍山郑蒲220kV变电站新建工程
|
绿雪-莲塘220kV线路工程(PROJ-2024-0274)
|
||||||
国网安徽宣城供电公司500kV河沥变加装固定融冰装置
|
香涧-梨花π入固镇南牵引站220kV线路工程(PROJ-2024-0441)
|
||||||
滁州堰陈110千伏变电站新建工程
|
香涧-鹭岛500kV线路工程(一般线路西段)(PROJ-2024-0723)
|
||||||
安徽河沥500kV变电站3号主变扩建工程
|
换流站-金牛500kV线路工程(PROJ-2024-1249)
|
||||||
安徽合肥义兴220kV变电站新建工程
|
滁州堰陈110千伏变电站新建工程(PROJ-2024-0820)
|
||||||
宣城中港110kV变电站新建工程
|
安徽河沥500kV变电站3号主变扩建工程(PROJ-2024-0297)
|
||||||
安庆城南110kV变电站新建工程
|
显通-碱河π入凌云变电站220kV电缆线路工程(电缆敷设部分)(PROJ-2025-0038)
|
||||||
国网安徽安庆供电公司500kV双岭变电站加装固定融冰装置
|
安徽合肥包河区10kV王郢19开关网架结构优化工程施工(PROJ-2024-0461)
|
||||||
芜湖蛟矶220kV变电站新建工程
|
黄栗树-儒林π入堰陈变电站110kV线路工程(PROJ-2024-0900)
|
||||||
国网安徽马鞍山供电公司220kV恒兴变电站220kV配电装置改造
|
阜四-椿树220千伏线路工程(PROJ-2024-0705)
|
||||||
马鞍山横龙110kV变电站新建工程
|
国网安徽宣城供电公司500kV河沥变加装固定融冰装置(PROJ-2024-1061)
|
||||||
金牛500kV变电站新建工程
|
国网安徽马鞍山供电公司220kV恒兴变电站220kV配电装置改造(PROJ-2024-0271)
|
||||||
安庆双港220kV变电站新建工程
|
国网安徽马鞍山供电公司220kV恒兴变电站220kV配电装置改造(PROJ-2024-0271)
|
||||||
安庆银山220kV变电站新建工程
|
安徽阜阳颍上县110kV半岗-润河35kV线路工程(PROJ-2022-0097)
|
||||||
芜湖高村220kV变电站新建工程
|
合肥长临河-义兴220kV架空线路工程(PROJ-2022-0112)
|
||||||
滁州红桥220kV变电站新建工程
|
安徽合肥义兴220kV变电站新建工程(PROJ-2022-0168)
|
||||||
安徽合肥方兴II110kV变电站新建工程
|
安庆石化110kV变电站新建 工程(PROJ-2022-0459)
|
||||||
银联黄山园区220kV变电站工程
|
濉淮5379濉洪5380线147#-148#跨阜淮铁路迁改工程(PROJ-2023-0169)
|
||||||
陕北-安徽±800千伏特高压直流输电工程陶大庄村接地极工程
|
合肥循环园220kV变电站新建工程(PROJ-2023-0224)
|
||||||
松滋-安丰220kV线路工程
|
金上-湖北线路工程(川12标)(PROJ-2023-0152)
|
||||||
伯阳500千伏变电站220千伏间隔扩建工程
|
安徽淮北凌云220千伏变电站新建工程(PROJ-2023-0178)
|
||||||
道轩汇流站-伯阳 220kV 线路工程
|
阜四500千伏变电站新建工程(建筑部分)(PROJ-2023-0201)
|
||||||
香涧-梨花220kV线路工程
|
科学城-长岗(双回T接空港)改接塘稍变电站110kV架空线路工程(PROJ-2023-0060)
|
||||||
埇桥-萧砀Ⅰ回500千伏线路工程
|
蚌埠大唐滁州电厂220kV送出工程(PROJ-2023-0154)
|
||||||
埇桥-萧砀Ⅱ回500千伏线路工程
|
安徽沙河变至原鹿变500kV双回线路开断接入阜四变工程(PROJ-2023-0183)
|
||||||
石岗-施桥110kV线路工程
|
国网安徽电力营销服务计量用房(PROJ-2023-0216)
|
||||||
芦集-古沟π入潘集变电站220kV线路工程
|
显通-碱河π入凌云变电站220kV电缆线路工程(PROJ-2023-0237)
|
||||||
黄阳-仙河110kV线路工程
|
合肥二电厂-彭郢π入长临河变电站220kV线路工程(PROJ-2023-0254)
|
||||||
淮南芦集220千伏变电站220千伏配电装置改造工程
|
滁州红桥220kV变电站新建工程(PROJ-2023-0335)
|
||||||
伯阳-谯城500kV线路工程
|
南屏-蓬莱路π入派河变电站110kV线路工程(PROJ-2023-0363)
|
||||||
魏武-桐花π入祝集变电站110kV线路工程
|
安庆四-涓桥500kV线路工程(一般线路段)(PROJ-2023-0413)
|
||||||
耿皇-焦楼220kV线路工程
|
安徽合肥杜岗220kV开关站新建工程(PROJ-2023-0434)
|
||||||
蕴山-沙埂110kV线路工程
|
安徽合肥晶合220kV外部供电工程(合肥杜岗Ⅱ220kV输变电工程)(PROJ-2023-0438)
|
||||||
蚌埠孝仪220kV变电站新建工程(建筑安装部分)
|
新河-建阳、明都-建阳π入红桥变电站220kV线路工程(PROJ-2023-0440)
|
||||||
安徽六安春秋塘-山七π入汤池变电站110kV线路工程
|
宿州城东220kV变电站新建工程(PROJ-2023-0445)
|
||||||
亳州城北110kV变电站新建工程
|
世袭庄园二期居配工程(PROJ-2023-0281)
|
||||||
蚌埠潼河110kV变电站新建工程
|
安庆城南110kV变电站新建工程(PROJ-2023-0305)
|
||||||
沪宁合高铁安徽段500kV清同5737线等2处电力线路迁改工程
|
池州电厂二期-涓桥220kV线路工程(PROJ-2023-0325)
|
||||||
伯阳-涡阳π入真源变电站220kV线路工程
|
阜阳东坡110kV变电站新建工程(PROJ-2023-0336)
|
||||||
濉淮5379濉洪5380线147#-148#跨阜淮铁路迁改工程
|
孔店-龙门500kV线路增容改造工程(PROJ-2023-0405)
|
||||||
汤庄-平圩500kV线路工程
|
安庆四-涓桥500kV线路工程(长江大跨越段)(PROJ-2023-0412)
|
||||||
换流站-金牛500kV线路工程
|
合肥二电厂-长临河π入循环园变电站220kV线路工程(PROJ-2023-0255)
|
||||||
包河10kV玉龙18网架结构化工程施工
|
众兴-草庙乡牵引站220kV架空线路工程(PROJ-2023-0327)
|
||||||
淮南安丰220千伏变电站新建工程
|
杨柳220kV变电站220kV南坪间隔扩建工程(PROJ-2023-0389)
|
||||||
祝集220kV变电站新建工程
|
安徽合肥下塘220kV变电站新建工程(PROJ-2023-0448)
|
||||||
田家庵电厂秦集改接孝仪变电站220kV线路工程
|
茗南-熙湖T接城南变电站110kV架空线路工程(PROJ-2023-0287)
|
||||||
谯城500千伏变电站新建工程(建筑)
|
陂塘-草庙乡牵引站220kV架空线路工程(PROJ-2023-0326)
|
||||||
金牛500kV变电站新建工程(建筑)
|
祝集220kV变电站新建工程(PROJ-2023-0379)
|
||||||
陕北-安徽直流工程合州±800千伏换流站土建A包
|
藕池-漆园π入杨柳变电站220kV线路工程(PROJ-2023-0387)
|
||||||
锁库500kV变电站新建工程
|
伯阳-涡阳π入真源变电站220kV线路工程(PROJ-2023-0393)
|
||||||
安徽宿州萧砀500千伏变电站新建工程(建筑部分)
|
余桥-银山220kV线路工程(PROJ-2023-0423)
|
||||||
合肥中心变B包
|
安庆四500kV变电站新建工程(PROJ-2024-0862)
|
||||||
中心500kV变电站新建工程(A包)
|
安庆四500kV变电站新建工程(建筑)(PROJ-2023-0446)
|
||||||
国网北京检修公司2024年±500kV延庆换流站直流主设备及辅助设备不停电检修维护
|
安庆银山220kV变电站新建工程(PROJ-2023-0451)
|
||||||
香涧-鹭岛500kV线路工程(一般线路东段)
|
金牛-福渡500kV线路工程(巢湖、无为段)(PROJ-2023-0507)
|
||||||
香涧-鹭岛500kV线路工程(淮河大跨越段)
|
金牛-福渡500kV线路工程(庐江段)(PROJ-2023-0508)
|
||||||
安徽滁州清流-环漪220kV线路改造工程
|
宁芜铁扩能改造(安徽段)涉及500kV线路跨越宁芜铁路迁改工程(PROJ-2024-0009)
|
||||||
香涧-鹭岛500kV线路工程(一般线路西段)
|
肥西-中心500kV线路工程(电缆部分)(PROJ-2024-0015)
|
||||||
谢桥电厂-原鹿220kV线路工程
|
黄阳-仙河110kV线路工程(PROJ-2024-0047)
|
||||||
阜四-椿树220千伏线路工程
|
牛草山风电场-仙河T接黄阳变电站110kV线路 工程(PROJ-2024-0048)
|
||||||
寨西-苦竹溪T接金桥变电站110kV线路工程
|
田家庵电厂秦集改接孝仪变电站220kV线路工程(PROJ-2024-0050)
|
||||||
韦寨-范兴集π入阜四变电站220kV线路工程
|
官塘-燕山π入孝仪变电站220kV线路工程(PROJ-2024-0051)
|
||||||
金牛-福渡500kV线路工程(巢湖、无为段)
|
渝北±800千伏换流站工程电气安装A包(PROJ-2024-0057)
|
||||||
金牛-福渡500kV线路工程(庐江段)
|
谷岭220kV变电站220kV蕲城电厂、埇南间隔扩建工程(PROJ-2023-0466)
|
||||||
安徽马鞍山当涂-万济220kV线路工程
|
淮南至桐城高速公路淮南段500kV电力迁改工程(PROJ-2023-0467)
|
||||||
黄山巷联-水西220kV线路工程
|
金牛-紫蓬500kV线路工程(PROJ-2023-0503)
|
||||||
苍山-横龙110kV架空线路工程
|
金牛500kV变电站新建工程(建筑)(PROJ-2023-0506)
|
||||||
安徽马鞍山围屏-万济220kV线路工程
|
金牛500kV变电站新建工程(建筑)(PROJ-2023-0506)
|
||||||
甘肃-浙江±800千伏特高压直流输电线路工程(皖3标段)
|
灵泗500kV变电站新建工程(PROJ-2023-0544)
|
||||||
广德-敬亭π入桂花(广五)变220kV线路工程
|
国网安徽亳州供电公司运检营销综合用房(PROJ-2024-0002)
|
||||||
绿雪-莲塘220kV线路工程
|
沪宁合高铁安徽段500kV清同5737线等2处电力线路迁改工程(PROJ-2024-0003)
|
||||||
芜湖福渡-蛟矶220kV线路工程
|
肥西-繁昌Ⅰ、Ⅱ回500kV线路改造工程(PROJ-2024-0012)
|
||||||
塔岗-西梁山T接杨柳圩变电站110kV架空线路工程
|
肥西-中心500kV线路工程(架空部分)(PROJ-2024-0014)
|
||||||
芜湖江北-通江π入蛟矶变电站220kV线路工程
|
陶楼-下塘、陶楼-航锂(凯博)π入下塘变电站220kV电缆线路工程(PROJ-2024-0018)
|
||||||
含山-环峰T接横龙110kV架空线路工程
|
安徽阜阳阜四500kV变电站新建工程(PROJ-2024-0041)
|
||||||
安徽宣城莲塘-敬亭220kV线路改造工程
|
杨柳-南坪改接至双堆集牵引站220kV线路工程(PROJ-2024-0059)
|
||||||
月桥-火龙岗π入高村变电站220kV线路工程
|
南坪-双堆集牵引站220kV线路工程(PROJ-2024-0060)
|
||||||
太和-李腰π入城南变电站110kV架空线路工程
|
龙门500kV变电站间隔扩建工程(PROJ-2024-0063)
|
||||||
文昌宫-淮北西牵引站220kV线路工程
|
蚌埠孝仪220kV变电站新建工程(建筑安装部分)(PROJ-2024-0072)
|
||||||
杨柳四铺π入况楼变110kV电缆线路工程
|
蚌埠孝仪220kV变电站新建工程(建筑安装部分)(PROJ-2024-0072)
|
||||||
陕北-安徽±800kV特高压直流输电线路工程(皖2标)
|
游乐-南岗、游乐-湖光路T接方兴Ⅱ变电站110kV架空线路工程(PROJ-2024-0084)
|
||||||
安徽合肥晶合220kV外部供电工程(合肥杜岗Ⅱ220kV输变电工程)
|
游乐-南岗、游乐-湖光路T接方兴Ⅱ变电站110kV电缆线路工程(PROJ-2024-0085)
|
||||||
肥西-中心500kV线路工程(电缆部分)
|
合肥金牛-庐江π入庐江北变电站220KV线路工程(PROJ-2024-0088)
|
||||||
池州电厂二期-涓桥220kV线路工程
|
耿皇-焦楼220kV线路工程(PROJ-2024-0091)
|
||||||
陶楼-下塘、陶楼-航锂(凯博)π入下塘变电站220kV电缆线路工程
|
安徽合肥方兴II110kV变电站新建工程(PROJ-2024-0096)
|
||||||
显通-白杨(T接刘桥)、显通-溪河(T接刘桥)π入凌云变电站110kV架空线路工程
|
文昌宫-淮北西牵引站220kV线路工程(PROJ-2024-0106)
|
||||||
南屏-蓬莱路π入派河变电站110kV线路工程
|
国网安徽合肥供电公司2024年220kV板桥变电站一键顺控系统完善提升(PROJ-2024-0123)
|
||||||
茗南-熙湖T接城南变电站110kV架空线路工程
|
杨柳四铺π入况楼变110kV电缆线路工程(PROJ-2024-0126)
|
||||||
显通-碱河π入凌云变电站220kV电缆线路工程
|
华南城220kV变电站新建工程(PROJ-2024-0129)
|
||||||
灵泗-奎河220kV线路工程
|
寨西-苦竹溪T接金桥变电站110kV线路工程(PROJ-2024-0140)
|
||||||
合肥二电厂-长临河π入循环园变电站220kV线路工程
|
中心500kV变电站新建工程(A包)(PROJ-2024-0175)
|
||||||
安徽合肥铭传-华南城220kV线路工程
|
马鞍山郑蒲220kV变电站新建工程(PROJ-2024-0181)
|
||||||
孔店-龙门500kV线路增容改造工程
|
马鞍山金河口110kV变电站新建工程(PROJ-2024-0182)
|
||||||
游乐-南岗、游乐-湖光路T接方兴Ⅱ变电站110kV电缆线路工程
|
马鞍山横龙110kV变电站新建工程(PROJ-2024-0183)
|
||||||
桐城-独秀π入双港变电站220kV线路工程
|
显通-白杨(T接刘桥)、显通-溪河(T接刘桥)π入凌云变电站110kV架空线路工程(PROJ-2024-0201)
|
||||||
杨柳-南坪改接至双堆集牵引站220kV线路工程
|
夏湖-华都改接入真源变电站110kV线路工程(PROJ-2024-0207)
|
||||||
合肥二电厂-彭郢π入长临河变电站220kV线路工程
|
魏岗-古井π入祝集110kV线路工程(PROJ-2024-0215)
|
||||||
合肥长临河-义兴220kV架空线路工程
|
桐城-独秀π入双港变电站220kV线路工程(PROJ-2024-0216)
|
||||||
陂塘-草庙乡牵引站220kV架空线路工程
|
安徽马鞍山当涂-万济220kV线路工程(PROJ-2024-0221)
|
||||||
安徽官山-涓桥I、II回π入池州二变500千伏线路工程
|
安徽马鞍山围屏-万济220kV线路工程(PROJ-2024-0222)
|
||||||
南坪-双堆集牵引站220kV线路工程
|
霸王-厉阳T接金河口110kV线路工程(PROJ-2024-0224)
|
||||||
肥西-中心500kV线路工程(架空部分)
|
苍山-横龙110kV架空线路工程(PROJ-2024-0225)
|
||||||
先锋-泉河π入安庆四变电站220kV线路工程
|
亳州城北110kV变电站新建工程(PROJ-2024-0238)
|
||||||
况楼-杨柳220kV线路工程
|
银联黄山园区220kV变电站工程(PROJ-2024-0256)
|
||||||
安庆四-涓桥500kV线路工程(一般线路段)
|
芜湖潘坛220kV变电站新建工程(PROJ-2024-0257)
|
||||||
藕池-漆园π入杨柳变电站220kV线路工程
|
陕北~安徽±800千伏特高压直流输电工程受端换流站四通一平工程(PROJ-2024-0100)
|
||||||
金牛-紫蓬500kV线路工程
|
庐北220kV变电站新建工程(PROJ-2024-0113)
|
||||||
合肥金牛-庐江π入庐江北变电站220KV线路工程
|
国网北京检修公司2024年±500kV延庆换流站直流主设备年度检修维护(PROJ-2024-0124)
|
||||||
独秀-谭桥牵引站π入和平变电站220kV线路工程
|
况楼-杨柳220kV线路工程(PROJ-2024-0125)
|
||||||
龙门500kV变电站间隔扩建工程
|
谯城500千伏变电站新建工程(建筑)(PROJ-2024-0133)
|
||||||
安徽合肥下塘220kV变电站新建工程
|
安庆双港220kV变电站新建工程(PROJ-2024-0136)
|
||||||
芜湖潘坛220kV变电站新建工程
|
安徽合肥肥西-游乐π入华南城变220kV架空线路工程(PROJ-2024-0718)
|
||||||
安徽滁州护桥220kV变电站2号主变扩建工程
|
伯阳-谯城500kV线路工程(PROJ-2024-0143)
|
||||||
岩歙220kV变电站新建工程
|
安徽合肥铭传-华南城220kV线路工程(PROJ-2024-0146)
|
||||||
安徽淮北凌云220千伏变电站新建工程
|
安徽合肥肥西-游乐π入华南城变220kV架空线路工程(PROJ-2024-0147)
|
||||||
六安汤池 110kV 变电站新建工程
|
香涧-鹭岛500kV线路工程(淮河大跨越段)综合试桩(PROJ-2024-0150)
|
||||||
白莲-邵岗π入尧塘变电站35kV架空线路工程
|
合肥中心变B包(PROJ-2024-0176)
|
||||||
淮南至桐城高速公路淮南段500kV电力迁改工程
|
芦集-古沟π入潘集变电站220kV线路工程(PROJ-2024-0189)
|
||||||
国网安徽电力营销服务计量用房
|
陕北-安徽±800kV特高压直流输电线路工程(皖2标)(PROJ-2024-0203)
|
||||||
国网安徽亳州供电公司运检营销综合用房
|
魏武-桐花π入祝集变电站110kV线路工程(PROJ-2024-0214)
|
||||||
安庆四500kV变电站新建工程(建筑)
|
和平-邓村π入双港变电站220kV线路工程(PROJ-2024-0217)
|
||||||
安徽沙河变至原鹿变500kV双回线路开断接入阜四变工程
|
双港-独秀π入和平变电站220kV线路工程(PROJ-2024-0218)
|
||||||
黄栗树-儒林π入堰陈变电站110kV线路工程
|
独秀-谭桥牵引站π入和平变电站220kV线路工程(PROJ-2024-0219)
|
||||||
金上-湖北线路工程(川12标)
|
黄山巷联-水西220kV线路工程(PROJ-2024-0220)
|
||||||
安徽阜阳薛桥-花园220kV线路改造工程
|
含山-环峰T接横龙110kV架空线路工程(PROJ-2024-0227)
|
||||||
章塘-邰桥、石桥-邰桥π入万济变电站110kV线路工程
|
伯阳500千伏变电站220千伏间隔扩建工程(PROJ-2024-0239)
|
||||||
围屏-石桥π入万济变电站110kV线路工程
|
蕴山-沙埂110kV线路工程(PROJ-2024-0245)
|
||||||
安庆-龙山π入安庆四变电站220kV线路工程
|
淮南芦集220千伏变电站220千伏配电装置改造工程(PROJ-2024-0265)
|
||||||
夏湖-华都改接入真源变电站110kV线路工程
|
安徽宣城莲塘-敬亭220kV线路改造工程(PROJ-2024-0906)
|
||||||
蓼城-冯井π入尧塘变电站110kV线路工程
|
无人机智能巡检技术实验室项目(PROJ-2024-1213)
|
||||||
汤池-河棚35kV架空线路工程
|
安徽蚌埠濠州220kV变电站220千伏大唐凤阳红心镇光伏间隔扩建工程(电气安装)(PROJ-2024-0794)
|
||||||
埇桥-萧砀回500千伏线路工程
|
国网北京检修公司2024年±500kV延庆换流站阀冷系统设备驻站(PROJ-2024-0849)
|
||||||
安徽官山-涓桥、回π入池州二变500千伏线路工程
|
中心500kV变电站新建工程(A包)(调试部分)(PROJ-2025-0033)
|
||||||
众兴-草庙乡牵引站220kV架空线路工程
|
锁库500kV变电站新建工程(PROJ-2024-0275)
|
||||||
湖站1000千伏1号主变A相局放配合项目
|
祝集220kV变电站新建工程(调试部分)(PROJ-2024-1188)
|
||||||
肥西-繁昌Ⅰ、Ⅱ回500kV线路改造工程
|
淮南安丰220千伏变电站新建工程(PROJ-2024-0456)
|
||||||
宁芜铁扩能改造(安徽段)涉及500kV线路跨越宁芜铁路迁改工程
|
合肥轨道7号线10kV杆线迁改工程(PROJ-2021-0037)
|
||||||
S334峨山路东延伸(沿江高速至芜宣高速)新建工程二期500kV电力迁改工程
|
陕北-安徽±800千伏特高压直流输电工程陶大庄村接地极工程(PROJ-2024-0773)
|
||||||
芜湖抖音220kV线路涉500kV峨峰5914、峨廻5904线改造工程
|
安庆-龙山π入安庆四变电站220kV线路工程(PROJ-2024-0835)
|
||||||
包河10kV延安30与兴集18网架结构优化工程施工
|
阜阳太和城南110kV变电站新建工程(PROJ-2024-0301)
|
||||||
国网安徽马鞍山供电公司500kV峨廻5904线#92等拉线杆塔改造工程
|
安徽合肥方兴II110kV变电站新建工程(调试部分)(PROJ-2025-0016)
|
||||||
国网安徽合肥供电公司2024年500kV肥西变电站一键顺控系统完善提升
|
国网安徽马鞍山供电公司220kV恒兴变电站220kV配电装置改造(调试部分)(PROJ-2025-0053)
|
||||||
淮南芦集 220千伏变电站220千伏配电装置改造工程
|
国网安徽马鞍山供电公司220kV恒兴变电站220kV配电装置改造(调试部分)(PROJ-2025-0053)
|
||||||
国网安徽马鞍山供电公司220kV恒兴变电站220kV配电装置改造
|
安庆四500kV变电站新建工程(调试部分)(PROJ-2025-0044)
|
||||||
和襄高速机电工程总承包项目500kV-1100kV特高压电力线路迁建工程
|
章塘-邰桥、石桥-邰桥π入万济变电站110kV线路工程(PROJ-2024-0889)
|
||||||
阜四500千伏变电站新建工程(建筑部分)
|
谢桥电厂-原鹿220kV线路工程(PROJ-2024-0785)
|
||||||
蚌埠孝仪220kV变电站新建工程
|
六庆城际铁路穿±500kV宜华线改造工程(PROJ-2024-1247)
|
||||||
陕北~安徽±800千伏特高压直流输电工程受端换流站四通一平工程
|
安徽淮北凌云220千伏变电站新建工程(调试部分)(PROJ-2025-0004)
|
||||||
无人机智能巡检技术实验室项目
|
国网安徽安庆供电公司500kV双岭变电站加装固定融冰装置(调试部分)(PROJ-2025-0084)
|
||||||
国网安徽淮北供电公司500kV濉溪变电站1号主变5022电流互感器改造
|
国网安徽淮北供电公司500kV濉溪变电站1号主变5022电流互感器改造(PROJ-2024-1271)
|
||||||
况楼220kV变电站间隔扩建工程
|
马鞍山横龙110kV变电站新建工程(调试部分)(PROJ-2025-0086)
|
||||||
国网北京检修公司2024年±500kV延庆换流站阀冷系统设备驻站
|
甘肃-浙江±800千伏特高压直流输电线路工程(皖3标段)(PROJ-2024-1162)
|
||||||
安庆武昌220kV变电站220kV江调间隔扩建工程
|
六安汤池 110kV 变电站新建工程(PROJ-2024-0912)
|
||||||
香涧-梨花π入固镇南牵引站220kV线路工程
|
芜湖福渡-蛟矶220kV线路工程(PROJ-2024-1230)
|
||||||
安徽合肥杜岗Ⅱ220kV开关站新建工程
|
月桥-火龙岗π入高村变电站220kV线路工程(PROJ-2024-0923)
|
||||||
国网安徽合肥供电公司2024年220kV板桥变电站一键顺控系统完善提升
|
杨柳220kV变电站220kV南坪间隔扩建工程(调试部分)(PROJ-2025-0020)
|
||||||
科学城-长岗Ⅰ回π入塘稍变电站110kV架空线路工程
|
芜湖高村220kV变电站新建工程(PROJ-2024-0790)
|
||||||
牛草山风电场-仙河T接黄阳变电站110kV线路 工程
|
国网安徽合肥供电公司2024年500kV肥西变电站一键顺控系统完善提升(PROJ-2024-0772)
|
||||||
世袭庄园二期居配工程
|
安徽滁州清流-环漪220kV线路改造工程(PROJ-2024-0793)
|
||||||
谷岭220kV变电站220kV蕲城电厂、埇南间隔扩建工程
|
太和-李腰π入城南变电站110kV架空线路工程(PROJ-2024-0709)
|
||||||
官塘-燕山π入孝仪变电站220kV线路工程
|
金牛500kV变电站新建工程(调试部分)(PROJ-2025-0032)
|
||||||
甘肃-浙江线路工程施工包1(芜湖市无为市-芜湖市南陵县)
|
岩歙220kV变电站新建工程(PROJ-2024-0815)
|
||||||
新河-建阳、明都-建阳π入红桥变电站220kV线路工程
|
合州换流站-文都500千伏线路工程(PROJ-2024-1089)
|
||||||
霸王-厉阳T接金河口110kV线路工程
|
芜湖江北-通江π入蛟矶变电站220kV线路工程(PROJ-2024-1231)
|
||||||
双港-独秀π入和平变电站220kV线路工程
|
广德-敬亭π入桂花(广五)变220kV线路工程(PROJ-2024-0272)
|
||||||
程集-牛庄π入阜四变220千伏线路工程
|
白莲-邵岗π入尧塘变电站35kV架空线路工程(PROJ-2024-0899)
|
||||||
合州换流站-文都500千伏线路工程
|
程集-牛庄π入阜四变220千伏线路工程(PROJ-2024-0708)
|
||||||
安庆四-涓桥500kV线路工程(长江大跨越段)
|
安徽滁州护桥220kV变电站2号主变扩建工程(调试部分)(PROJ-2025-0041)
|
||||||
和平-邓村π入双港变电站220kV线路工程
|
安徽六安春秋塘-山七π入汤池变电站110kV线路工程(PROJ-2024-0932)
|
||||||
安徽合肥包河区10kV王郢19开关网架结构优化工程施工
|
安徽官山-涓桥I、II回π入池州二变500千伏线路工程(PROJ-2024-1060)
|
||||||
合肥二电厂-彭郢π入长临河变电站 220kV 线路工程
|
陕北-安徽直流工程合州±800千伏换流站土建A包(PROJ-2024-0312)
|
||||||
安徽合肥肥西-游乐π入华南城变220kV架空线路工程
|
石岗-施桥110kV线路工程(PROJ-2024-0276)
|
||||||
安徽阜阳颍上县110kV半岗-润河35kV线路工程
|
国网安徽宣城供电公司500kV河沥变加装固定融冰装置(调试部分)(PROJ-2025-0087)
|
||||||
游乐-南岗、游乐-湖光路T接方兴Ⅱ变电站110kV架空线路工程
|
香涧-鹭岛500kV线路工程(一般线路东段)(PROJ-2024-0725)
|
||||||
合肥轨道7号线10kV杆线迁改工程
|
滁州红桥220kV变电站新建工程(调试部分)(PROJ-2024-1191)
|
||||||
科学城-长岗(双回T接空港)改接塘稍变电站110kV架空线路工程
|
围屏-石桥π入万济变电站110kV线路工程(PROJ-2024-0888)
|
||||||
安徽蚌埠濠州220kV变电站220千伏大唐凤阳红心镇光伏间隔扩建工程(电气安装)
|
汤池-河棚35kV架空线路工程(PROJ-2024-0934)
|
||||||
余桥-银山220kV线路工程
|
汤庄-平圩500kV线路工程(PROJ-2024-1258)
|
||||||
六庆城际铁路穿±500kV宜华线改造工程
|
芜湖站1000千伏1号主变A相局放配合项目(PROJ-2025-0057)
|
||||||
魏岗-古井π入祝集110kV线路工程
|
韦寨-范兴集π入阜四变电站220kV线路工程(PROJ-2024-0707)
|
||||||
灵泗500kV变电站新建工程
|
埇桥-萧砀Ⅰ回500千伏线路工程(PROJ-2024-0924)
|
||||||
蚌埠大唐滁州电厂220kV送出工程
|
紫蓬500kV变电站间隔扩建工程(PROJ-2024-0868)
|
||||||
国网北京检修公司2024年±500kV延庆换流站直流主设备年度检修维护
|
安徽阜阳薛桥-花园220kV线路改造工程(PROJ-2024-1195)
|
||||||
|
国网安徽马鞍山供电公司220kV恒兴变电站220kV配电装置改造(电缆安装)(PROJ-2025-0037)
|
||||||
|
国网安徽马鞍山供电公司220kV恒兴变电站220kV配电装置改造(电缆安装)(PROJ-2025-0037)
|
||||||
|
包河10kV延安30与兴集18网架结构优化工程施工(PROJ-2024-0459)
|
||||||
|
国网安徽马鞍山供电公司500kV峨廻5904线#92等拉线杆塔改造工程(PROJ-2024-1241)
|
||||||
|
国网安徽安庆供电公司500kV双岭变电站加装固定融冰装置(PROJ-2024-1064)
|
||||||
|
况楼220kV变电站间隔扩建工程(PROJ-2024-0465)
|
||||||
|
芜湖抖音220kV线路涉500kV峨峰5914、峨廻5904线改造工程(PROJ-2024-0946)
|
||||||
|
杨柳圩110kV变电站110kV配电装置改造工程(PROJ-2024-1040)
|
||||||
|
马鞍山万济220kV变电站新建工程(PROJ-2024-0455)
|
||||||
|
马鞍山金河口110kV变电站新建工程(调试部分)(PROJ-2025-0011)
|
||||||
|
安徽河沥500kV变电站3号主变扩建工程(调试部分)(PROJ-2025-0085)
|
||||||
|
宣城中港110kV变电站新建工程(PROJ-2024-0816)
|
||||||
|
灵泗500kV变电站新建工程(调试部分)(PROJ-2024-1183)
|
||||||
|
芜湖蛟矶220kV变电站新建工程(PROJ-2024-1036)
|
||||||
|
埇桥-萧砀Ⅱ回500千伏线路工程(PROJ-2024-0925)
|
||||||
265
api/utils.py
265
api/utils.py
|
|
@ -1,19 +1,276 @@
|
||||||
from enum import Enum
|
from enum import Enum
|
||||||
def load_standard_name(file_path:str):
|
|
||||||
|
from rapidfuzz import process, fuzz
|
||||||
|
import re
|
||||||
|
import json
|
||||||
|
from pypinyin import lazy_pinyin
|
||||||
|
|
||||||
|
# 数字转换表(1-20,常见数字)
|
||||||
|
digit_to_chinese = {
|
||||||
|
"1": "一", "2": "二", "3": "三", "4": "四", "5": "五",
|
||||||
|
"6": "六", "7": "七", "8": "八", "9": "九", "10": "十",
|
||||||
|
"11": "十一", "12": "十二", "13": "十三", "14": "十四",
|
||||||
|
"15": "十五", "16": "十六", "17": "十七", "18": "十八",
|
||||||
|
"19": "十九", "20": "二十"
|
||||||
|
}
|
||||||
|
|
||||||
|
def arabic_to_chinese_number(text):
|
||||||
|
"""
|
||||||
|
将文中阿拉伯数字转换为中文数字
|
||||||
|
:param text: 输入文本
|
||||||
|
:return: 转换后的文本
|
||||||
|
"""
|
||||||
|
cn_to_arabic = {'一': '1', '二': '2', '三': '3', '四': '4', '五': '5',
|
||||||
|
'六': '6', '七': '7', '八': '8', '九': '9', '零': '0'}
|
||||||
|
arabic_to_cn = {v: k for k, v in cn_to_arabic.items()} # 反向映射
|
||||||
|
|
||||||
|
for num, cn in arabic_to_cn.items():
|
||||||
|
text = text.replace(num, cn)
|
||||||
|
|
||||||
|
return text
|
||||||
|
def text_to_pinyin(text):
|
||||||
|
"""将文本转换为拼音字符串"""
|
||||||
|
return ''.join(lazy_pinyin(text))
|
||||||
|
|
||||||
|
def load_standard_data(path):
|
||||||
|
with open(path, "r", encoding="utf-8") as f:
|
||||||
|
return json.load(f)
|
||||||
|
|
||||||
|
|
||||||
|
def extract_number(text):
|
||||||
|
"""
|
||||||
|
提取项目部中的数字(支持阿拉伯数字和中文数字),并转换为统一格式(中文数字)。
|
||||||
|
"""
|
||||||
|
match = re.search(r'(第?[一二三四五六七八九十百千零\d]+)', text)
|
||||||
|
if match:
|
||||||
|
num_str = match.group(1).replace("第", "")
|
||||||
|
if num_str.isdigit():
|
||||||
|
return digit_to_chinese.get(num_str, num_str) # 阿拉伯数字转中文
|
||||||
|
return num_str # 中文数字直接返回
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
def standardize_company_and_project(input_company, input_project, standard_data):
|
||||||
|
"""
|
||||||
|
将口语化的公司名和项目部名转换为标准化名称。
|
||||||
|
|
||||||
|
参数:
|
||||||
|
input_company (str): 用户输入的公司名(可能是口语化或不完整的名称)。
|
||||||
|
input_project (str): 用户输入的项目部名(可能是口语化或不完整的名称)。
|
||||||
|
standard_data (dict): 标准化的公司名和项目部名数据,格式为 {公司名: [项目部名1, 项目部名2, ...]}。
|
||||||
|
|
||||||
|
返回:
|
||||||
|
tuple: (标准化公司名, 匹配的项目部名列表)。如果无法匹配,返回 (None, None)。
|
||||||
|
"""
|
||||||
|
# **1. 标准化公司名**
|
||||||
|
company_match = process.extractOne(input_company, standard_data.keys(), scorer=fuzz.ratio)
|
||||||
|
if not company_match or company_match[1] < 65: # 相似度低于 70 可能匹配错误
|
||||||
|
return None, None
|
||||||
|
standard_company = company_match[0]
|
||||||
|
|
||||||
|
# **2. 先尝试直接匹配最相似的项目名**
|
||||||
|
project_match = process.extractOne(input_project, standard_data[standard_company], scorer=fuzz.ratio)
|
||||||
|
print(f"项目部名称最相似:{project_match[0]},{project_match[1]}", flush=True)
|
||||||
|
if project_match and project_match[1] >= 86:
|
||||||
|
return standard_company, [project_match[0]] # 直接返回匹配的项目名
|
||||||
|
|
||||||
|
# **3. 提取项目部的数字部分**
|
||||||
|
query_number = extract_number(input_project)
|
||||||
|
|
||||||
|
# **4. 过滤所有符合数字的项目部**
|
||||||
|
matched_projects = []
|
||||||
|
for project in standard_data[standard_company]:
|
||||||
|
project_number = extract_number(project)
|
||||||
|
if query_number and query_number == project_number:
|
||||||
|
matched_projects.append(project)
|
||||||
|
|
||||||
|
return standard_company, matched_projects
|
||||||
|
|
||||||
|
def standardize_company_and_projectDepartment(input_company, input_project, origianl_company_list , company_project_department_map, company_pinyin_to_original_map = None):
|
||||||
|
"""
|
||||||
|
将口语化的公司名和项目部名转换为标准化名称。
|
||||||
|
|
||||||
|
参数:
|
||||||
|
input_company (str): 用户输入的公司名(可能是口语化或不完整的名称)。
|
||||||
|
input_project (str): 用户输入的项目部名(可能是口语化或不完整的名称)。
|
||||||
|
company_project_department_map (dict): 标准化的公司名和项目部名数据,格式为 {公司名: [项目部名1, 项目部名2, ...]}。
|
||||||
|
pinyin_to_original_map:分公司拼音和分公司原始名的映射
|
||||||
|
|
||||||
|
返回:
|
||||||
|
tuple: (标准化公司名, 匹配的项目部名列表)。如果无法匹配,返回 (None, None)。
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
# **1. 标准化公司名**
|
||||||
|
best_company_match = multiple_standardize_single_name(input_company, origianl_company_list,list(company_pinyin_to_original_map.keys()),company_pinyin_to_original_map,60,85,True)
|
||||||
|
|
||||||
|
if not best_company_match:
|
||||||
|
return None, None
|
||||||
|
else:
|
||||||
|
standard_company = best_company_match[0]
|
||||||
|
|
||||||
|
# **2. 先尝试直接匹配最相似的项目名**
|
||||||
|
project_match = process.extract(input_project, company_project_department_map[standard_company], scorer=fuzz.token_sort_ratio, limit=len(company_project_department_map[standard_company]))
|
||||||
|
# project_match = process.extractOne(input_project, company_project_department_map[standard_company], scorer=fuzz.ratio)
|
||||||
|
print(f"项目部名称最相似:{project_match[0]},{project_match[1]}", flush=True)
|
||||||
|
if project_match and project_match[1] >= 86:
|
||||||
|
return standard_company, [project_match[0]] # 直接返回匹配的项目名
|
||||||
|
|
||||||
|
# **3. 提取项目部的数字部分**
|
||||||
|
query_number = extract_number(input_project)
|
||||||
|
|
||||||
|
# **4. 过滤所有符合数字的项目部**
|
||||||
|
matched_projects = []
|
||||||
|
for project in company_project_department_map[standard_company]:
|
||||||
|
project_number = extract_number(project)
|
||||||
|
if query_number and query_number == project_number:
|
||||||
|
matched_projects.append(project)
|
||||||
|
|
||||||
|
return standard_company, matched_projects
|
||||||
|
except Exception as e:
|
||||||
|
print(f"standardize_company_and_projectDepartment:{e}", flush=True)
|
||||||
|
return None,None
|
||||||
|
|
||||||
|
#弃用
|
||||||
|
def standardize_single_name(input_name, name_list, lower_score=70, high_score=85):
|
||||||
|
"""
|
||||||
|
将输入的名称(可能是口语化或不完整的名称)转换为标准化名称。
|
||||||
|
|
||||||
|
参数:
|
||||||
|
input_name (str): 用户输入的名称(可能是口语化或不完整的名称)。
|
||||||
|
name_list (list): 标准化的名称列表。
|
||||||
|
lower_score (int): 匹配的最低相似度阈值,默认值为 70。
|
||||||
|
high_score (int): 匹配的高置信度阈值,默认值为 85。
|
||||||
|
|
||||||
|
返回:
|
||||||
|
list: 匹配的标准化名称列表。如果未找到匹配项,返回 None。
|
||||||
|
"""
|
||||||
|
match_results = process.extract(input_name, name_list, scorer=fuzz.token_sort_ratio, limit=len(name_list))
|
||||||
|
|
||||||
|
# 找到所有相似度 > 80 的匹配项
|
||||||
|
high_confidence_matches = [(match[0], match[1]) for match in match_results if match[1] > lower_score]
|
||||||
|
print(f"standardize_single_name, high_confidence_matches:{high_confidence_matches}", flush=True)
|
||||||
|
if not high_confidence_matches:
|
||||||
|
return None # 没有找到匹配项
|
||||||
|
# 返回匹配结果
|
||||||
|
|
||||||
|
best_match = max(high_confidence_matches, key=lambda x: x[1], default=None)
|
||||||
|
|
||||||
|
print(f"best_match: {best_match}", flush=True)
|
||||||
|
if best_match and best_match[1] >= high_score:
|
||||||
|
return [best_match[0]] # 直接返回最高相似度的单个匹配项
|
||||||
|
|
||||||
|
return [match[0] for match in high_confidence_matches]
|
||||||
|
|
||||||
|
|
||||||
|
def multiple_standardize_single_name(origin_input_name, origin_name_list, pinyin_name_list = None, pinyin_to_original_map = None, lower_score=70, high_score=85, isArabicNumConv = False):
|
||||||
|
"""
|
||||||
|
使用拼音 + rapidfuzz 进行关键词模糊匹配,并返回原始的标准名
|
||||||
|
:param input_name: 口语化的名称(中文)
|
||||||
|
:param name_list: 关键词列表(中文)
|
||||||
|
:pinyin_name_list: 关键词列表(拼音)
|
||||||
|
:param pinyin_to_original_map: 拼音到原始标准名的映射
|
||||||
|
:param lower_score: 低匹配分数阈值(默认70)
|
||||||
|
:param high_score: 高匹配分数阈值(默认85)
|
||||||
|
:return: 最匹配的原始关键词,或 None
|
||||||
|
"""
|
||||||
|
#First round, 原始标准名的匹配性查找,能找到直接返回
|
||||||
|
if isArabicNumConv:
|
||||||
|
origin_input_name = arabic_to_chinese_number(origin_input_name)
|
||||||
|
|
||||||
|
match_results = process.extract(origin_input_name, origin_name_list, scorer=fuzz.token_sort_ratio, limit=len(origin_name_list))
|
||||||
|
|
||||||
|
# 找到所有相似度 > 80 的匹配项
|
||||||
|
original_high_confidence_matches = [(match[0], match[1]) for match in match_results if match[1] >= lower_score]
|
||||||
|
print(f"standardize_pinyin_single_name 原始名匹配, high_confidence_matches:{original_high_confidence_matches[:3]}", flush=True)
|
||||||
|
|
||||||
|
combined_low_confidence_matches = []
|
||||||
|
if original_high_confidence_matches:
|
||||||
|
origin_best_match = max(original_high_confidence_matches, key=lambda x: x[1], default=None)
|
||||||
|
|
||||||
|
# 直接返回最高相似度的单个匹配项
|
||||||
|
# print(f"原始名匹配: {origin_best_match}", flush=True)
|
||||||
|
if origin_best_match and origin_best_match[1] >= high_score:
|
||||||
|
return [origin_best_match[0]]
|
||||||
|
|
||||||
|
else:
|
||||||
|
combined_low_confidence_matches = [match[0] for match in original_high_confidence_matches[:3]]
|
||||||
|
else:
|
||||||
|
if not pinyin_name_list or not pinyin_to_original_map:
|
||||||
|
return None #
|
||||||
|
|
||||||
|
#第二轮, 拼音名的匹配性查找,能找到直接返回
|
||||||
|
pinyin_input_name = text_to_pinyin(origin_input_name)
|
||||||
|
match_results = process.extract(pinyin_input_name, pinyin_name_list, scorer=fuzz.ratio, limit=len(pinyin_name_list))
|
||||||
|
|
||||||
|
# 筛选出匹配分数 > lower_score 的结果
|
||||||
|
pinyin_high_confidence_matches = [(match[0], match[1]) for match in match_results if match[1] >= lower_score]
|
||||||
|
print(f"standardize_pinyin_single_name 拼音匹配, input_name:{pinyin_input_name}, high_confidence_matches:{pinyin_high_confidence_matches[:3]}", flush=True)
|
||||||
|
|
||||||
|
if not pinyin_high_confidence_matches:
|
||||||
|
return combined_low_confidence_matches # 没有找到匹配项
|
||||||
|
|
||||||
|
# 选择最高相似度的匹配项
|
||||||
|
pinyin_best_match = max(pinyin_high_confidence_matches, key=lambda x: x[1], default=None)
|
||||||
|
|
||||||
|
if pinyin_best_match and pinyin_best_match[1] >= high_score:
|
||||||
|
return [pinyin_to_original_map[pinyin_best_match[0]]] # 直接返回最高相似度的原始工程名
|
||||||
|
|
||||||
|
combined_low_confidence_matches.extend(
|
||||||
|
[pinyin_to_original_map[match[0]] for match in pinyin_high_confidence_matches[:3]]
|
||||||
|
)
|
||||||
|
# 返回所有匹配项对应的原始名,最多返回最低匹配项的前5个
|
||||||
|
return list(dict.fromkeys(combined_low_confidence_matches))
|
||||||
|
|
||||||
|
def generate_project_prompt(matched_projects, original_name = "", type="项目部名"):
|
||||||
|
"""
|
||||||
|
生成提示信息,用于让用户确认匹配的项目名或分公司名或项目名。
|
||||||
|
|
||||||
|
参数:
|
||||||
|
matched_projects (list): 匹配的项目或分公司名称列表。
|
||||||
|
type (str): 提示信息的类型(例如 "项目名" 或 "分公司名"),默认值为 "项目名"。
|
||||||
|
|
||||||
|
返回:
|
||||||
|
str: 生成的提示信息。如果未找到匹配项,返回提示用户提供更准确信息的字符串。
|
||||||
|
"""
|
||||||
|
if not matched_projects:
|
||||||
|
return f"未找到匹配的{type}:{original_name},请提供更准确的{type}信息。"
|
||||||
|
|
||||||
|
prompt = f"您说的{type}可能是:"
|
||||||
|
for idx, project in enumerate(matched_projects, start=1):
|
||||||
|
prompt += f"第{idx}个: {project},"
|
||||||
|
|
||||||
|
prompt += "请确认您要选择哪一个?"
|
||||||
|
return prompt
|
||||||
|
|
||||||
|
|
||||||
|
def load_standard_name(file_path: str):
|
||||||
|
"""
|
||||||
|
从指定文件中加载标准化的名称列表。
|
||||||
|
|
||||||
|
参数:
|
||||||
|
file_path (str): 文件路径,文件应包含标准化的名称列表,每行一个名称。
|
||||||
|
|
||||||
|
返回:
|
||||||
|
list: 从文件中读取的标准化名称列表。
|
||||||
|
|
||||||
|
异常:
|
||||||
|
FileNotFoundError: 如果文件不存在,抛出此异常。
|
||||||
|
Exception: 如果读取文件时发生其他错误,抛出此异常。
|
||||||
|
"""
|
||||||
try:
|
try:
|
||||||
with open(file_path, 'r', encoding='utf-8') as file:
|
with open(file_path, 'r', encoding='utf-8') as file:
|
||||||
lines = [line.strip() for line in file if line.strip()]
|
lines = [line.strip() for line in file if line.strip()]
|
||||||
return lines
|
return lines
|
||||||
except FileNotFoundError:
|
except FileNotFoundError:
|
||||||
print(f"错误:文件 {file_path} 不存在")
|
print(f"错误:文件 {file_path} 不存在", flush=True)
|
||||||
raise FileNotFoundError(f"错误:文件 {file_path} 不存在")
|
raise FileNotFoundError(f"错误:文件 {file_path} 不存在")
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"读取文件时发生错误:{e}")
|
print(f"读取文件时发生错误:{e}", flush=True)
|
||||||
raise Exception(f"错误:文件 {file_path} 不存在")
|
raise Exception(f"错误:文件 {file_path} 不存在")
|
||||||
|
|
||||||
|
|
||||||
class CheckResult(Enum):
|
class CheckResult(Enum):
|
||||||
NO_MATCH = 0 # 不符合检查条件
|
NO_MATCH = 0 # 不符合检查条件
|
||||||
MATCH_FOUND = 1 # 匹配到了值
|
MATCH_FOUND = 1 # 匹配到了值
|
||||||
NEEDS_MORE_ROUNDS = 2 # 需要多轮
|
NEEDS_MORE_ROUNDS = 2 # 需要多轮
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,9 @@
|
||||||
model_path: E:\workingSpace\PycharmProjects\ernie\models\ernie-3.0-tiny-base-v2-zh #模型地址
|
model_path: ../models/ernie-3.0-tiny-base-v2-zh #模型地址
|
||||||
train: E:\workingSpace\PycharmProjects\ernie\ernie\data\train.json # 训练集路径
|
train: ./data/train.json # 训练集路径
|
||||||
val: E:\workingSpace\PycharmProjects\ernie\ernie\data\val.json # 验证集路径
|
val: ./data/val.json # 验证集路径
|
||||||
test: E:\workingSpace\PycharmProjects\ernie\ernie\data\test.json # (可选) 测试集路径
|
test: ./data/test.json # (可选) 测试集路径
|
||||||
|
|
||||||
# 类别信息
|
# 类别信息
|
||||||
nc: 12 # 目标类别数
|
nc: 13 # 目标类别数
|
||||||
labels: ["天气查询","页面切换","日计划数量查询","周计划数量查询","日计划作业内容","周计划作业内容","施工人数","作业考勤人数","知识问答","通用对话"] # 类别名称
|
labels: ["天气查询","互联网查询","页面切换","日计划数量查询","周计划数量查询","日计划作业内容","周计划作业内容",
|
||||||
|
"施工人数","作业考勤人数","知识问答","通用对话","作业面查询","班组人数查询","班组数查询","作业面内容","班组详情"] # 类别名称
|
||||||
|
|
|
||||||
|
|
@ -11,24 +11,30 @@ if not os.path.exists(directory):
|
||||||
# 基础数据定义
|
# 基础数据定义
|
||||||
BASE_DATA = {
|
BASE_DATA = {
|
||||||
# 实施组织
|
# 实施组织
|
||||||
"implementation_organizations": ["送电一分公司", "送电二分公司", "变电分公司", "消防分公司"],
|
"implementation_organizations": ["宏源电力建设公司(变电)", "送一分公司", "变电分公司", "消防分公司", "安徽宏源电力建设有限公司(线路)", "检修试验分公司"],
|
||||||
# 工程性质
|
# 工程性质
|
||||||
"project_types": ["基建", "技改大修", "用户工程", "小型基建"],
|
"project_types": ["基建", "技改大修", "用户工程", "小型基建"],
|
||||||
# 工程名
|
# 工程名
|
||||||
"project_names": [
|
"project_names": [
|
||||||
|
"中心变",
|
||||||
"1号工程",
|
"1号工程",
|
||||||
"淮南芦集改造工程(线路部分)",
|
"国网供电公司220kV恒兴变电站220kV配电装置改造(调试部分)",
|
||||||
"第十号工程(变电部分)",
|
"安徽蚌埠濠州220kV变电站220千伏大唐凤阳红心镇光伏间隔扩建工程(电气安装)"
|
||||||
"合肥二电厂220kV线路工程",
|
"滁州堰陈110千伏变电站新建工程",
|
||||||
|
"安徽蚌埠濠州220kV变电站220千伏大唐凤阳红心镇光伏间隔扩建工程(电气安装)(PROJ-2024-0794)",
|
||||||
|
"金牛500kV变电站新建工程(建筑)(PROJ-2023-0506)",
|
||||||
|
"谷岭220kV变电站220kV蕲城电厂、埇南间隔扩建工程(PROJ-2023-0466)",
|
||||||
|
"渝北±800千伏换流站工程电气安装A包(PROJ-2024-0057)",
|
||||||
"九号工程",
|
"九号工程",
|
||||||
"阜四500千伏变电站新建工程(建筑部分)",
|
"合州变电站",
|
||||||
"涓桥500kV线路工程(长江大跨越段)"
|
"合州换流站"
|
||||||
],
|
],
|
||||||
# 建管单位
|
# 建管单位
|
||||||
"construction_units": ["国网安徽省电力有限公司建设分公司", "国网安徽省电力有限公司马鞍山供电公司",
|
"construction_units": ["国网安徽省电力有限公司建设分公司", "国网安徽省电力有限公司马鞍山供电公司",
|
||||||
"中铁二局集团电务工程有限公司"],
|
"中铁二局集团电务工程有限公司"],
|
||||||
# 项目部名称
|
# 项目部名称
|
||||||
"project_departments": ["第9项目管理部", "金上第十一项目部", "第八项目管理部", "肥东9号项目部","金上第一项目部管理部 (池州黄山)","第一项目部管理部 (肥东)"],
|
"project_departments": ["调试一队", "第9项目管理部", "金上第十一项目部", "第八项目管理部(合肥)", "肥东9号项目部",
|
||||||
|
"金上第一项目部管理部(池州黄山)", "第一项目部管理部(肥东)", "调试四队"],
|
||||||
# 项目经理
|
# 项目经理
|
||||||
"project_managers": ["陈少平项目经理", "范文立项目经理", "何东洋项目经理"],
|
"project_managers": ["陈少平项目经理", "范文立项目经理", "何东洋项目经理"],
|
||||||
# 分包单位
|
# 分包单位
|
||||||
|
|
@ -42,7 +48,8 @@ BASE_DATA = {
|
||||||
# 8+2工况
|
# 8+2工况
|
||||||
"operatings": ["8+2工况", "8加2工况"],
|
"operatings": ["8+2工况", "8加2工况"],
|
||||||
# 页面切换
|
# 页面切换
|
||||||
"pages": ["风险管控", "日计划", "周风险", "日计划统计报表", "日计划推送","生产管控中心","考勤统计详情","今日作业计划","周风险统计报表","周风险推送"]
|
"pages": ["风险管控", "日计划", "周风险", "日计划统计报表", "日计划推送", "生产管控中心", "考勤统计详情",
|
||||||
|
"今日作业计划", "周风险统计报表", "周风险推送"]
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -62,63 +69,102 @@ TEMPLATE_CONFIG = {
|
||||||
("{date}工程性质为{project_type}的有多少条作业计划?", ["date", "project_type"]),
|
("{date}工程性质为{project_type}的有多少条作业计划?", ["date", "project_type"]),
|
||||||
("公司工程性质为{project_type}{date}有多少作业计划?", ["project_type", "date"]),
|
("公司工程性质为{project_type}{date}有多少作业计划?", ["project_type", "date"]),
|
||||||
("工程性质为{project_type}{date}有多少项作业计划?", ["project_type", "date"]),
|
("工程性质为{project_type}{date}有多少项作业计划?", ["project_type", "date"]),
|
||||||
("查询{project_name}在{date}的作业计划数量", ["project_name", "date"]),
|
("查询{project_name}在{date}的作业计划数量", ["project_name", "date"]),
|
||||||
("{date}{project_type}类作业计划有多少?", ["date", "project_type"]),
|
("{date}{project_type}类作业计划有多少?", ["date", "project_type"]),
|
||||||
("{project_type}类{date}作业计划有多少?", ["project_type", "date"]),
|
("{project_type}类{date}作业计划有多少?", ["project_type", "date"]),
|
||||||
("{construction_unit}在{date}有多少作业计划?", ["construction_unit", "date"]),
|
("{construction_unit}在{date}有多少作业计划?", ["construction_unit", "date"]),
|
||||||
("{construction_unit}在{date}有多少项作业计划?", ["construction_unit", "date"]),
|
("{construction_unit}在{date}有多少项作业计划?", ["construction_unit", "date"]),
|
||||||
("{date}{construction_unit}有多少作业计划?", ["date", "construction_unit"]),
|
("{date}{construction_unit}有多少作业计划?", ["date", "construction_unit"]),
|
||||||
("{date}公司有多少项作业计划?", ["date"]),
|
("{date}公司有多少项作业计划?", ["date"]),
|
||||||
("{date}有多少条作业计划?", ["date"]),
|
("{date}有多少条作业计划?", ["date"]),
|
||||||
("公司{date}有多少作业计划?", ["date"]),
|
("公司{date}有多少作业计划?", ["date"]),
|
||||||
("{date}属于{operating}有多少项作业计划?", ["date", "operating"]),
|
("{date}{operating}有多少项作业计划?", ["date", "operating"]),
|
||||||
("{date}公司属于{operating}有多少项作业计划?", ["date", "operating"]),
|
("{date}公司{operating}有多少项作业计划?", ["date", "operating"]),
|
||||||
("{date}{implementation_organization}{project_department}有多少项作业计划?",
|
("{date}{implementation_organization}{project_department}有多少项作业计划?",
|
||||||
["date", "implementation_organization", "project_department"]),
|
["date", "implementation_organization", "project_department"]),
|
||||||
("{implementation_organization}{project_department}{date}有多少条作业计划?",
|
("{date}{project_department}{implementation_organization}有多少项作业计划?",
|
||||||
["implementation_organization", "project_department", "date"]),
|
["date", "project_department", "implementation_organization"]),
|
||||||
("{date}{implementation_organization}有多少项作业计划?", ["date", "implementation_organization"]),
|
("{implementation_organization}{project_department}{date}有多少条作业计划?",
|
||||||
("{date}公司{project_department}有多少作业计划?", ["date", "project_department"]),
|
["implementation_organization", "project_department", "date"]),
|
||||||
("{date}{project_department}有多少项作业计划?", ["date", "project_department"]),
|
("{date}{implementation_organization}有多少项作业计划?", ["date", "implementation_organization"]),
|
||||||
("公司{project_department}{date}有多少项{risk_level}风险作业计划?", ["project_department", "date", "risk_level"]),
|
("{date}公司{project_department}有多少作业计划?", ["date", "project_department"]),
|
||||||
("{project_department}{date}有多少项{risk_level}风险作业计划?", ["project_department", "date", "risk_level"]),
|
("{date}{project_department}{implementation_organization}有多少作业计划?",
|
||||||
("{project_department}{date}有多少{risk_level}风险作业计划?", ["project_department", "date", "risk_level"]),
|
["date", "project_department", "implementation_organization"]),
|
||||||
|
("{date}{project_department}有多少项作业计划?", ["date", "project_department"]),
|
||||||
|
("公司{project_department}{date}有多少项{risk_level}风险作业计划?",
|
||||||
|
["project_department", "date", "risk_level"]),
|
||||||
|
("{project_department}{date}有多少项{risk_level}风险作业计划?",
|
||||||
|
["project_department", "date", "risk_level"]),
|
||||||
|
("{project_department}{date}有多少{risk_level}风险作业计划?", ["project_department", "date", "risk_level"]),
|
||||||
|
|
||||||
("{date}{project_manager}有多少项作业计划?", ["date", "project_manager"]),
|
("{date}{project_manager}作业计划是多少?", ["date", "project_manager"]),
|
||||||
("{date}{subcontractor}有多少条作业计划?", ["date", "subcontractor"]),
|
("{date}{subcontractor}有多少条作业计划?", ["date", "subcontractor"]),
|
||||||
("{date}{team_leader}有多少作业计划?", ["date", "team_leader"]),
|
("{date}{team_leader}有多少作业计划?", ["date", "team_leader"]),
|
||||||
("{date}风险等级为{risk_level}的作业计划有多少?", ["date", "risk_level"]),
|
("{date}风险等级为{risk_level}的作业计划有多少?", ["date", "risk_level"]),
|
||||||
("{date}公司{project_department}有多少{risk_level}风险作业计划?", ["date", "project_department", "risk_level"]),
|
("{date}公司{project_department}有多少{risk_level}风险作业计划?",
|
||||||
|
["date", "project_department", "risk_level"]),
|
||||||
("{date}{project_department}有多少{risk_level}风险作业计划?", ["date", "project_department", "risk_level"]),
|
("{date}{project_department}有多少{risk_level}风险作业计划?", ["date", "project_department", "risk_level"]),
|
||||||
("{date}{project_type}类风险等级为{risk_level}的作业计划有多少?", ["date", "project_type", "risk_level"]),
|
("{date}{project_type}类风险等级为{risk_level}的作业计划有多少?", ["date", "project_type", "risk_level"]),
|
||||||
("{date}{construction_unit}有多少{risk_level}风险作业计划?", ["date", "construction_unit", "risk_level"]),
|
("{date}{construction_unit}有多少{risk_level}风险作业计划?", ["date", "construction_unit", "risk_level"]),
|
||||||
|
|
||||||
("{date}{project_type}类{construction_unit}负责的作业计划有多少?",
|
("{date}存在{risk_level}风险的有多少", ["date", "risk_level"]),
|
||||||
["date", "project_type", "construction_unit"]),
|
("{implementation_organization}{date}{risk_level}风险的有多少", ["implementation_organization","date", "risk_level"]),
|
||||||
("{date}{project_type}类{implementation_organization}组织实施的作业计划有多少?",
|
("{implementation_organization}{date}存在{risk_level}风险的有多少", ["implementation_organization","date", "risk_level"]),
|
||||||
["date", "project_type", "implementation_organization"]),
|
|
||||||
("{date}{project_department}管理的{project_type}类作业计划有多少?",
|
|
||||||
["date", "project_department", "project_type"]),
|
|
||||||
("{date}{subcontractor}承包的{project_type}类作业计划有多少?", ["date", "subcontractor", "project_type"]),
|
|
||||||
("{date}{project_manager}负责的{project_type}类作业计划有多少?",
|
|
||||||
["date", "project_manager", "project_type"]),
|
|
||||||
("{date}{team_leader}带领的{project_type}类作业计划有多少?", ["date", "team_leader", "project_type"]),
|
|
||||||
("{date}{project_name}由{project_manager}作业计划有多少?", ["date", "project_name", "project_manager"]),
|
|
||||||
("{date}{project_name}中,风险等级为{risk_level}的作业计划有多少?", ["date", "project_name", "risk_level"]),
|
|
||||||
("{date}{project_manager}作业计划有多少?", ["date", "project_manager"]),
|
|
||||||
("{project_manager}在{date}作业计划有多少?", ["project_manager", "date"]),
|
|
||||||
|
|
||||||
("{date}{implementation_organization}{project_manager}的作业计划数量",
|
("{date}{project_type}类{construction_unit}负责的作业计划有多少?",
|
||||||
["date", "implementation_organization", "project_manager"]),
|
["date", "project_type", "construction_unit"]),
|
||||||
("{implementation_organization}{project_manager}在{date}的作业计划数量",
|
("{date}{project_type}类{implementation_organization}组织实施的作业计划有多少?",
|
||||||
["implementation_organization", "project_manager", "date"]),
|
["date", "project_type", "implementation_organization"]),
|
||||||
|
("{date}{project_department}管理的{project_type}类作业计划有多少?",
|
||||||
|
["date", "project_department", "project_type"]),
|
||||||
|
("{date}{subcontractor}承包的{project_type}类作业计划有多少?", ["date", "subcontractor", "project_type"]),
|
||||||
|
("{date}{project_manager}负责的{project_type}类作业计划有多少?",
|
||||||
|
["date", "project_manager", "project_type"]),
|
||||||
|
("{date}{team_leader}带领的{project_type}类作业计划有多少?", ["date", "team_leader", "project_type"]),
|
||||||
|
("{date}{project_name}由{project_manager}作业计划有多少?", ["date", "project_name", "project_manager"]),
|
||||||
|
("{date}{project_name}中,风险等级为{risk_level}的作业计划有多少?", ["date", "project_name", "risk_level"]),
|
||||||
|
("{date}{project_manager}作业计划有多少?", ["date", "project_manager"]),
|
||||||
|
("{project_manager}在{date}作业计划有多少?", ["project_manager", "date"]),
|
||||||
|
|
||||||
# 班组
|
("{date}{implementation_organization}{project_manager}的作业计划数量",
|
||||||
("{date}{team_name}有多少项作业计划?", ["date", "team_name"]),
|
["date", "implementation_organization", "project_manager"]),
|
||||||
("{team_name}{date}有多少作业计划?", ["team_name", "date"]),
|
("{implementation_organization}{project_manager}在{date}的作业计划数量",
|
||||||
("{team_name}{date}有多少条作业计划?", ["team_name", "date"]),
|
["implementation_organization", "project_manager", "date"]),
|
||||||
("{team_name}{date}作业计划数量", ["team_name", "date"]),
|
|
||||||
("{date}{team_name}作业计划数量", ["date", "team_name"])
|
# 班组
|
||||||
|
("{date}{team_name}有多少项作业计划?", ["date", "team_name"]),
|
||||||
|
("{team_name}{date}有多少作业计划?", ["team_name", "date"]),
|
||||||
|
("{team_name}{date}有多少条作业计划?", ["team_name", "date"]),
|
||||||
|
("{team_name}{date}作业计划数量", ["team_name", "date"]),
|
||||||
|
("{date}{team_name}作业计划数量", ["date", "team_name"]),
|
||||||
|
#作业
|
||||||
|
("{date}{implementation_organization}{project_department}有多少作业?",
|
||||||
|
["date", "implementation_organization", "project_department"]),
|
||||||
|
("{implementation_organization}{project_department}{date}有多少条作业?",
|
||||||
|
["implementation_organization", "project_department", "date"]),
|
||||||
|
("{date}{project_department}{implementation_organization}有多少作业?",
|
||||||
|
["date", "project_department", "implementation_organization"]),
|
||||||
|
("{project_department}{implementation_organization}{date}有多少条作业?",
|
||||||
|
["project_department", "implementation_organization", "date"]),
|
||||||
|
|
||||||
|
("{date}{implementation_organization}有多少项作业?", ["date", "implementation_organization"]),
|
||||||
|
("{date}公司{project_department}有多少作业?", ["date", "project_department"]),
|
||||||
|
("{date}{project_department}有多少项作业?", ["date", "project_department"]),
|
||||||
|
#有多少
|
||||||
|
("{date}{implementation_organization}{project_department}有多少?",
|
||||||
|
["date", "implementation_organization", "project_department"]),
|
||||||
|
("{project_department}{implementation_organization}{date}有多少?",
|
||||||
|
["project_department", "implementation_organization", "date"]),
|
||||||
|
("{date}{implementation_organization}有多少?", ["date", "implementation_organization"]),
|
||||||
|
("{date}公司{project_department}有多少?", ["date", "project_department"]),
|
||||||
|
("{date}{project_department}有多少?", ["date", "project_department"]),
|
||||||
|
("{date}{project_name}有多少", ["date", "project_name"]),
|
||||||
|
("{project_name}{date}有多少", ["project_name", "date"]),
|
||||||
|
("{date}公司{project_name}有多少?", ["date", "project_name"]),
|
||||||
|
("{date}工程性质是{project_type}有多少", ["project_type", "date"]),
|
||||||
|
("工程性质是{project_type}{date}有多少", ["project_type", "date"]),
|
||||||
|
("{date}存在{operating}的有多少", ["date", "operating"]),
|
||||||
|
("{date}{operating}的有多少", ["date", "operating"]),
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
@ -138,7 +184,9 @@ TEMPLATE_CONFIG = {
|
||||||
("{date}{construction_unit}作业计划有多少?", ["date", "construction_unit"]),
|
("{date}{construction_unit}作业计划有多少?", ["date", "construction_unit"]),
|
||||||
("{date}{implementation_organization}作业计划有多少?", ["date", "implementation_organization"]),
|
("{date}{implementation_organization}作业计划有多少?", ["date", "implementation_organization"]),
|
||||||
("{date}{implementation_organization}{project_department}作业计划有多少?",
|
("{date}{implementation_organization}{project_department}作业计划有多少?",
|
||||||
["date", "implementation_organization","project_department"]),
|
["date", "implementation_organization", "project_department"]),
|
||||||
|
("{date}{project_department}{implementation_organization}作业计划有多少?",
|
||||||
|
["date", "project_department", "implementation_organization"]),
|
||||||
("{date}{project_department}作业计划有多少?", ["date", "project_department"]),
|
("{date}{project_department}作业计划有多少?", ["date", "project_department"]),
|
||||||
("{date}{project_manager}作业计划有多少?", ["date", "project_manager"]),
|
("{date}{project_manager}作业计划有多少?", ["date", "project_manager"]),
|
||||||
("{date}{subcontractor}作业计划有多少?", ["date", "subcontractor"]),
|
("{date}{subcontractor}作业计划有多少?", ["date", "subcontractor"]),
|
||||||
|
|
@ -152,6 +200,9 @@ TEMPLATE_CONFIG = {
|
||||||
("{date}有多少项{risk_level}风险作业计划?", ["date", "risk_level"]),
|
("{date}有多少项{risk_level}风险作业计划?", ["date", "risk_level"]),
|
||||||
("{date}有多少{risk_level}风险作业计划?", ["date", "risk_level"]),
|
("{date}有多少{risk_level}风险作业计划?", ["date", "risk_level"]),
|
||||||
|
|
||||||
|
("{date}存在{risk_level}风险的作业计划有多少?", ["date", "risk_level"]),
|
||||||
|
("{date}{risk_level}风险作业计划有多少", ["date", "risk_level"]),
|
||||||
|
|
||||||
# 🎯 date + construction_unit + risk_level
|
# 🎯 date + construction_unit + risk_level
|
||||||
("{construction_unit}{date}有多少项{risk_level}风险作业计划", ["construction_unit", "date", "risk_level"]),
|
("{construction_unit}{date}有多少项{risk_level}风险作业计划", ["construction_unit", "date", "risk_level"]),
|
||||||
|
|
||||||
|
|
@ -176,34 +227,54 @@ TEMPLATE_CONFIG = {
|
||||||
("{team_name}{date}有多少作业计划?", ["team_name", "date"]),
|
("{team_name}{date}有多少作业计划?", ["team_name", "date"]),
|
||||||
("{team_name}{date}作业计划数量", ["team_name", "date"]),
|
("{team_name}{date}作业计划数量", ["team_name", "date"]),
|
||||||
("{date}{team_name}的作业计划数量", ["date", "team_name"]),
|
("{date}{team_name}的作业计划数量", ["date", "team_name"]),
|
||||||
|
#有多少
|
||||||
|
("{date}{implementation_organization}{project_department}有多少?",
|
||||||
|
["date", "implementation_organization", "project_department"]),
|
||||||
|
("{implementation_organization}{project_department}{date}有多少?",
|
||||||
|
["implementation_organization", "project_department", "date"]),
|
||||||
|
("{date}{project_department}{implementation_organization}有多少项作业计划?",
|
||||||
|
["date", "project_department", "implementation_organization"]),
|
||||||
|
("{date}{implementation_organization}有多少?", ["date", "implementation_organization"]),
|
||||||
|
("{date}公司{project_department}有多少?", ["date", "project_department"]),
|
||||||
|
("{date}{project_department}有多少?", ["date", "project_department"]),
|
||||||
|
("{date}{project_name}有多少", ["date", "project_name"]),
|
||||||
|
("{project_name}{date}有多少", ["project_name", "date"]),
|
||||||
|
("{date}公司{project_name}有多少?", ["date", "project_name"]),
|
||||||
|
("{date}工程性质是{project_type}有多少", ["project_type", "date"]),
|
||||||
|
("工程性质是{project_type}{date}有多少", ["project_type", "date"])
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"日计划作业内容": {
|
"日计划作业内容": {
|
||||||
"date": ["今日", "昨日", "2024年5月24日", "5月24日", "今天", "昨天"],
|
"date": ["今日", "昨日", "2024年5月24日", "5月24日", "今天", "昨天"],
|
||||||
"templates": [
|
"templates": [
|
||||||
("{date}{project_name}作业内容是什么?", ["date", "project_name"]),
|
("{date}{project_name}作业内容是什么?", ["date", "project_name"]),
|
||||||
("{project_name}在{date}作业内容是什么", ["project_name", "date"]),
|
("{project_name}在{date}的作业有哪些", ["project_name", "date"]),
|
||||||
("{date}{project_type}类作业内容是什么?", ["date", "project_type"]),
|
("{date}{project_type}类作业有哪些?", ["date", "project_type"]),
|
||||||
("{project_type}类{date}作业内容是什么?", ["project_type", "date"]),
|
("{project_type}类{date}具体作业内容是什么?", ["project_type", "date"]),
|
||||||
("{date}工程性质为{project_type}的作业内容是什么?", ["date", "project_type"]),
|
("{date}工程性质为{project_type}的作业内容是什么?", ["date", "project_type"]),
|
||||||
("工程性质为{project_type}的{date}作业内容是什么?", ["project_type", "date"]),
|
("工程性质为{project_type}的{date}作业计划分别是什么?", ["project_type", "date"]),
|
||||||
|
("工程性质为{project_type}的{date}4项作业计划分别是什么?", ["project_type", "date"]),
|
||||||
("{construction_unit}在{date}作业内容是什么?", ["construction_unit", "date"]),
|
("{construction_unit}在{date}作业内容是什么?", ["construction_unit", "date"]),
|
||||||
# 1. 查询特定日期和项目的作业安排
|
# 1. 查询特定日期和项目的作业安排
|
||||||
("{date}{project_name}作业内容是什么?", ["date", "project_name"]),
|
("{date}{project_name}作业是什么?", ["date", "project_name"]),
|
||||||
("{date}属于{operating}作业内容是什么?", ["date", "operating"]),
|
("{date}属于{operating}作业内容是什么?", ["date", "operating"]),
|
||||||
|
("{date}存在{operating}作业是什么?", ["date", "operating"]),
|
||||||
# 3. 查询特定日期和项目类型的工程计划
|
# 3. 查询特定日期和项目类型的工程计划
|
||||||
("{date}{project_type}类计划作业内容是什么?", ["date", "project_type"]),
|
("{date}{project_type}类作业有哪些?", ["date", "project_type"]),
|
||||||
|
|
||||||
("{date}{construction_unit}{risk_level}风险的作业内容是什么?", ["date", "construction_unit", "risk_level"]),
|
("{date}{construction_unit}{risk_level}风险的作业内容是什么?", ["date", "construction_unit", "risk_level"]),
|
||||||
|
|
||||||
("{date}{implementation_organization}{risk_level}风险的作业内容是什么?",
|
("{date}{implementation_organization}{risk_level}风险的作业是什么?",
|
||||||
["date", "implementation_organization", "risk_level"]),
|
["date", "implementation_organization", "risk_level"]),
|
||||||
|
|
||||||
# 5. 查询特定日期和项目经理的任务安排
|
# 5. 查询特定日期和项目经理的任务安排
|
||||||
("{project_manager}在{date}作业内容是什么?", ["project_manager", "date"]),
|
("{project_manager}在{date}作业内容是什么?", ["project_manager", "date"]),
|
||||||
|
("{project_manager}在{date}作业计划分别是什么?", ["project_manager", "date"]),
|
||||||
|
("{project_manager}在{date}4项作业计划分别是什么?", ["project_manager", "date"]),
|
||||||
|
|
||||||
# 6. 查询特定日期和风险等级的任务
|
# 6. 查询特定日期和风险等级的任务
|
||||||
("{date}风险等级为{risk_level}的作业内容是什么?", ["date", "risk_level"]),
|
("{date}风险等级为{risk_level}的作业计划有哪些?", ["date", "risk_level"]),
|
||||||
|
("{date}风险等级为{risk_level}四项作业计划分别有哪些?", ["date", "risk_level"]),
|
||||||
|
|
||||||
# 7. 查询特定日期和实施单位的任务内容
|
# 7. 查询特定日期和实施单位的任务内容
|
||||||
("{implementation_organization}在{date}作业内容是什么?", ["implementation_organization", "date"]),
|
("{implementation_organization}在{date}作业内容是什么?", ["implementation_organization", "date"]),
|
||||||
|
|
@ -215,15 +286,17 @@ TEMPLATE_CONFIG = {
|
||||||
("{date}的{project_type}类风险等级为{risk_level}的作业内容是什么?", ["date", "project_type", "risk_level"]),
|
("{date}的{project_type}类风险等级为{risk_level}的作业内容是什么?", ["date", "project_type", "risk_level"]),
|
||||||
|
|
||||||
# 10. 查询特定日期和风险等级的任务安排
|
# 10. 查询特定日期和风险等级的任务安排
|
||||||
("{date}风险等级为{risk_level}的作业内容是什么?", ["date", "risk_level"]),
|
("{date}风险等级为{risk_level}2项作业计划分别是什么?", ["date", "risk_level"]),
|
||||||
|
|
||||||
("{date}{risk_level}的作业内容是什么?", ["date", "risk_level"]),
|
("{date}{risk_level}的作业内容是什么?", ["date", "risk_level"]),
|
||||||
|
|
||||||
# 11. 查询特定日期和施工单位的任务进展
|
# 11. 查询特定日期和施工单位的任务进展
|
||||||
("{construction_unit}在{date}作业内容是什么?", ["construction_unit", "date"]),
|
("{construction_unit}{date}的作业计划是什么?", ["construction_unit", "date"]),
|
||||||
|
("{construction_unit}{date}作业有哪些", ["construction_unit", "date"]),
|
||||||
|
|
||||||
# 12. 查询特定日期和项目经理完成的任务
|
# 12. 查询特定日期和项目经理完成的任务
|
||||||
("{project_manager}在{date}作业内容是什么?", ["project_manager", "date"]),
|
("{project_manager}在{date}作业内容是什么?", ["project_manager", "date"]),
|
||||||
|
("{project_manager}在{date}三项作业计划分别是什么?", ["project_manager", "date"]),
|
||||||
|
|
||||||
# 13. 查询特定日期和项目经理的高风险任务
|
# 13. 查询特定日期和项目经理的高风险任务
|
||||||
("{project_manager}在{date}的风险等级为{risk_level}的作业内容是什么?",
|
("{project_manager}在{date}的风险等级为{risk_level}的作业内容是什么?",
|
||||||
|
|
@ -231,32 +304,57 @@ TEMPLATE_CONFIG = {
|
||||||
|
|
||||||
# 15. 查询特定日期和所有任务安排
|
# 15. 查询特定日期和所有任务安排
|
||||||
("{date}作业内容是什么?", ["date"]),
|
("{date}作业内容是什么?", ["date"]),
|
||||||
|
("{date}作业计划有哪些?", ["date"]),
|
||||||
|
("{date}作业计划是什么?", ["date"]),
|
||||||
|
("{date}三项作业计划分别是什么?", ["date"]),
|
||||||
|
("{date}作业是什么?", ["date"]),
|
||||||
|
("{date}作业有哪些?", ["date"]),
|
||||||
|
|
||||||
|
("{date}{implementation_organization}{project_department}作业内容是什么?",
|
||||||
|
["date", "implementation_organization", "project_department"]),
|
||||||
|
("{implementation_organization}{project_department}{date}作业计划有哪些?",
|
||||||
|
["implementation_organization", "project_department", "date"]),
|
||||||
|
("{implementation_organization}{project_department}{date}作业计划是什么?",
|
||||||
|
["implementation_organization", "project_department", "date"]),
|
||||||
|
("{implementation_organization}{project_department}{date}作业是什么?",
|
||||||
|
["implementation_organization", "project_department", "date"]),
|
||||||
|
("{implementation_organization}{project_department}{date}两项作业计划分别是什么?",
|
||||||
|
["implementation_organization", "project_department", "date"]),
|
||||||
|
("{project_department}{implementation_organization}{date}作业计划是什么?",
|
||||||
|
["project_department", "implementation_organization", "date"]),
|
||||||
|
("{date}{project_department}{implementation_organization}作业是什么?",
|
||||||
|
["date", "project_department", "implementation_organization"]),
|
||||||
|
("{date}{project_department}{implementation_organization}两项作业计划分别是什么?",
|
||||||
|
["date", "project_department", "implementation_organization"]),
|
||||||
|
|
||||||
# 16. 查询特定日期和项目进度
|
# 16. 查询特定日期和项目进度
|
||||||
("{date}{project_name}作业内容是什么?", ["date", "project_name"]),
|
("{date}{project_name}作业内容是什么?", ["date", "project_name"]),
|
||||||
# 班组
|
# 班组
|
||||||
("{date}{team_name}作业内容是什么?", ["date", "team_name"]),
|
("{date}{team_name}作业是什么?", ["date", "team_name"]),
|
||||||
("{team_name}{date}作业内容", ["team_name", "date"]),
|
("{team_name}{date}作业内容", ["team_name", "date"])
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"周计划作业内容": {
|
"周计划作业内容": {
|
||||||
"date": ["本周", "上周", "上一周", "下周", "下一周", "最近一周", "本周内", "这一周"],
|
"date": ["本周", "上周", "上一周", "下周", "下一周", "最近一周", "本周内", "这一周"],
|
||||||
"templates": [
|
"templates": [
|
||||||
("工程性质为{project_type}在{date}作业内容是什么?", ["project_type", "date"]),
|
("工程性质为{project_type}在{date}作业是什么?", ["project_type", "date"]),
|
||||||
("{date}工程性质为{project_type}作业内容是什么?", ["date", "project_type"]),
|
("{date}工程性质为{project_type}作业内容是什么?", ["date", "project_type"]),
|
||||||
|
|
||||||
("{date}{construction_unit}作业内容是什么?", ["date", "construction_unit"]),
|
("{date}{construction_unit}作业有哪些?", ["date", "construction_unit"]),
|
||||||
|
|
||||||
("{implementation_organization}在{date}作业内容是什么?", ["implementation_organization", "date"]),
|
("{implementation_organization}{date}的作业有哪些?", ["implementation_organization", "date"]),
|
||||||
|
|
||||||
|
("{implementation_organization}{project_department}{date}2项作业计划分别是什么?",
|
||||||
|
["implementation_organization", "project_department", "date"]),
|
||||||
|
|
||||||
# 4. 查询某项目在指定周的所有作业计划
|
# 4. 查询某项目在指定周的所有作业计划
|
||||||
("{project_name}在{date}作业内容是什么?", ["project_name", "date"]),
|
("{project_name}在{date}有哪些作业?", ["project_name", "date"]),
|
||||||
|
|
||||||
# 5. 查询指定周的所有项目类型作业内容
|
# 5. 查询指定周的所有项目类型作业内容
|
||||||
("{date}{project_type}类作业内容是什么?", ["date", "project_type"]),
|
("{date}{project_type}类作业内容是什么?", ["date", "project_type"]),
|
||||||
|
|
||||||
# 6. 查询某施工单位在指定周的作业任务
|
# 6. 查询某施工单位在指定周的作业任务
|
||||||
("{construction_unit}在{date}作业内容是什么?", ["construction_unit", "date"]),
|
("{construction_unit}在{date}作业计划分别是什么?", ["construction_unit", "date"]),
|
||||||
|
|
||||||
# 7. 查询某项目经理在指定周负责的作业内容
|
# 7. 查询某项目经理在指定周负责的作业内容
|
||||||
("{project_manager}在{date}作业内容是什么?", ["project_manager", "date"]),
|
("{project_manager}在{date}作业内容是什么?", ["project_manager", "date"]),
|
||||||
|
|
@ -270,19 +368,23 @@ TEMPLATE_CONFIG = {
|
||||||
|
|
||||||
# 10. 查询某风险等级在指定周的作业内容
|
# 10. 查询某风险等级在指定周的作业内容
|
||||||
("{date}风险等级为{risk_level}的作业内容是什么?", ["date", "risk_level"]),
|
("{date}风险等级为{risk_level}的作业内容是什么?", ["date", "risk_level"]),
|
||||||
("{date}{risk_level}风险的作业内容是什么?", ["date", "risk_level"]),
|
("{date}{risk_level}风险的作业计划分别是什么?", ["date", "risk_level"]),
|
||||||
|
("{date}{risk_level}有哪些作业", ["date", "risk_level"]),
|
||||||
|
|
||||||
# 11. 查询某施工单位在指定周的作业进展
|
# 11. 查询某施工单位在指定周的作业进展
|
||||||
("{construction_unit}在{date}作业内容是什么?", ["construction_unit", "date"]),
|
("{construction_unit}在{date}作业内容是什么?", ["construction_unit", "date"]),
|
||||||
|
("{construction_unit}在{date}有哪些作业?", ["construction_unit", "date"]),
|
||||||
|
|
||||||
# 13. 查询某团队在指定周的作业安排
|
# 13. 查询某团队在指定周的作业安排
|
||||||
("{team_leader}领导的团队在{date}作业内容是什么?", ["team_leader", "date"]),
|
("{team_leader}领导的团队在{date}的作业有哪些?", ["team_leader", "date"]),
|
||||||
|
|
||||||
# 15. 查询某项目部门在指定周的作业安排
|
# 15. 查询某项目部门在指定周的作业安排
|
||||||
("{project_department}在{date}作业内容是什么?", ["project_department", "date"]),
|
("{project_department}在{date}作业内容是什么?", ["project_department", "date"]),
|
||||||
|
|
||||||
("{date}{team_name}作业内容是什么", ["date", "team_name"]),
|
("{date}{team_name}作业内容是什么", ["date", "team_name"]),
|
||||||
("{team_name}{date}作业内容", ["team_name", "date"]),
|
("{team_name}{date}2项作业计划分别有哪些", ["team_name", "date"]),
|
||||||
|
("{team_name}{date}2项作业计划分别是什么", ["team_name", "date"]),
|
||||||
|
("{team_name}{date}有哪些作业", ["team_name", "date"]),
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"施工人数": {
|
"施工人数": {
|
||||||
|
|
@ -290,8 +392,11 @@ TEMPLATE_CONFIG = {
|
||||||
"templates": [
|
"templates": [
|
||||||
("{date}{project_name}施工人员有多少?", ["date", "project_name"]),
|
("{date}{project_name}施工人员有多少?", ["date", "project_name"]),
|
||||||
("{date}{project_name}施工人数是多少?", ["date", "project_name"]),
|
("{date}{project_name}施工人数是多少?", ["date", "project_name"]),
|
||||||
|
("{date}{project_name}现场有多少施工人员?", ["date", "project_name"]),
|
||||||
|
("{date}{project_name}现场施工人数是多少?", ["date", "project_name"]),
|
||||||
|
|
||||||
("{construction_unit}在{date}的施工人数是多少?", ["construction_unit", "date"]),
|
("{construction_unit}{date}的施工人数是多少?", ["construction_unit", "date"]),
|
||||||
|
("{construction_unit}{date}现场施工人数是多少?", ["construction_unit", "date"]),
|
||||||
# 2. 统计某施工单位在指定日期的施工总人数
|
# 2. 统计某施工单位在指定日期的施工总人数
|
||||||
("统计{construction_unit}在{date}的施工人数是多少?", ["construction_unit", "date"]),
|
("统计{construction_unit}在{date}的施工人数是多少?", ["construction_unit", "date"]),
|
||||||
("{date}属于{operating}的施工人数是多少?", ["date", "operating"]),
|
("{date}属于{operating}的施工人数是多少?", ["date", "operating"]),
|
||||||
|
|
@ -299,21 +404,30 @@ TEMPLATE_CONFIG = {
|
||||||
# 4. 查询某项目类型在指定日期的施工人员需求
|
# 4. 查询某项目类型在指定日期的施工人员需求
|
||||||
("{date}{project_type}类有多少施工人员?", ["date", "project_type"]),
|
("{date}{project_type}类有多少施工人员?", ["date", "project_type"]),
|
||||||
("{date}工程性质为{project_type}有多少施工人员?", ["date", "project_type"]),
|
("{date}工程性质为{project_type}有多少施工人员?", ["date", "project_type"]),
|
||||||
|
("{date}工程性质为{project_type}有多少现场施工人员?", ["date", "project_type"]),
|
||||||
("{date}工程性质为{project_type}的施工人数是多少?", ["date", "project_type"]),
|
("{date}工程性质为{project_type}的施工人数是多少?", ["date", "project_type"]),
|
||||||
("工程性质为{project_type}{date}的施工人数是多少?", ["project_type", "date"]),
|
("工程性质为{project_type}{date}的施工人数是多少?", ["project_type", "date"]),
|
||||||
|
("工程性质为{project_type}{date}的现场施工人数是多少?", ["project_type", "date"]),
|
||||||
("工程性质为{project_type}{date}有多少施工人员?", ["project_type", "date"]),
|
("工程性质为{project_type}{date}有多少施工人员?", ["project_type", "date"]),
|
||||||
# 5. 统计某施工单位在指定日期的各项目施工人数
|
# 5. 统计某施工单位在指定日期的各项目施工人数
|
||||||
("{construction_unit}在{date}的施工人数是多少?", ["construction_unit", "date"]),
|
("{construction_unit}在{date}的施工人数是多少?", ["construction_unit", "date"]),
|
||||||
# 8. 统计某项目经理管理的项目在指定日期的施工总人数
|
# 8. 统计某项目经理管理的项目在指定日期的施工总人数
|
||||||
("{project_manager}负责的项目在{date}的施工人数是多少?", ["project_manager", "date"]),
|
("{project_manager}负责的项目在{date}的施工人数是多少?", ["project_manager", "date"]),
|
||||||
("{date}{project_manager}负责的项目的施工人数是多少?", ["date", "project_manager"]),
|
("{date}{project_manager}负责的项目的现场施工人数是多少?", ["date", "project_manager"]),
|
||||||
|
|
||||||
# 9. 查询某分包商在指定日期的施工人员投入
|
# 9. 查询某分包商在指定日期的施工人员投入
|
||||||
("{subcontractor}{date}的施工人员有多少?", ["subcontractor", "date"]),
|
("{subcontractor}{date}施工人员有多少?", ["subcontractor", "date"]),
|
||||||
("{subcontractor}{date}的施工人数是多少?", ["subcontractor", "date"]),
|
("{subcontractor}{date}的施工人数是多少?", ["subcontractor", "date"]),
|
||||||
("{date}{subcontractor}的施工人员有多少?", ["date", "subcontractor"]),
|
("{date}{subcontractor}的施工人员有多少?", ["date", "subcontractor"]),
|
||||||
("{date}{subcontractor}的施工人数是多少?", ["date", "subcontractor"]),
|
("{date}{subcontractor}的施工人数是多少?", ["date", "subcontractor"]),
|
||||||
|
|
||||||
|
("{implementation_organization}{date}现场施工人员有多少?", ["implementation_organization", "date"]),
|
||||||
|
("{implementation_organization}{date}现场有多少施工人员?", ["implementation_organization", "date"]),
|
||||||
|
("{implementation_organization}{date}的现场施工人数是多少?", ["implementation_organization", "date"]),
|
||||||
|
("{date}{implementation_organization}现场有多少施工人员?", ["date", "implementation_organization"]),
|
||||||
|
("{date}{implementation_organization}现场施工人数是多少?", ["date", "implementation_organization"]),
|
||||||
|
|
||||||
|
|
||||||
("{team_leader}{date}的施工人员有多少?", ["team_leader", "date"]),
|
("{team_leader}{date}的施工人员有多少?", ["team_leader", "date"]),
|
||||||
("{team_leader}{date}的施工人数是多少?", ["team_leader", "date"]),
|
("{team_leader}{date}的施工人数是多少?", ["team_leader", "date"]),
|
||||||
("{date}{team_leader}的施工人员有多少?", ["date", "team_leader"]),
|
("{date}{team_leader}的施工人员有多少?", ["date", "team_leader"]),
|
||||||
|
|
@ -340,10 +454,29 @@ TEMPLATE_CONFIG = {
|
||||||
["construction_unit", "date", "risk_level"]),
|
["construction_unit", "date", "risk_level"]),
|
||||||
|
|
||||||
("{date}{team_name}施工人数是多少", ["date", "team_name"]),
|
("{date}{team_name}施工人数是多少", ["date", "team_name"]),
|
||||||
("{date}{team_name}施工人数", ["date", "team_name"]),
|
("{date}{team_name}施工人数是什么", ["date", "team_name"]),
|
||||||
("{team_name}{date}施工人数是多少", ["team_name", "date"]),
|
("{team_name}{date}施工人数有多少", ["team_name", "date"]),
|
||||||
("{team_name}{date}施工人数", ["team_name", "date"]),
|
("{team_name}{date}施工人数是什么", ["team_name", "date"]),
|
||||||
|
|
||||||
|
#
|
||||||
|
("{date}{implementation_organization}{project_department}作业人数是多少?",
|
||||||
|
["date", "implementation_organization", "project_department"]),
|
||||||
|
("{implementation_organization}{project_department}{date}作业人员有多少?",
|
||||||
|
["implementation_organization", "project_department", "date"]),
|
||||||
|
("{implementation_organization}{project_department}{date}作业人数是多少?",
|
||||||
|
["implementation_organization", "project_department", "date"]),
|
||||||
|
("{date}{implementation_organization}{project_department}有多少作业人员?",
|
||||||
|
["date", "implementation_organization", "project_department"]),
|
||||||
|
("{implementation_organization}{project_department}{date}作业人数是多少?",
|
||||||
|
["implementation_organization", "project_department", "date"]),
|
||||||
|
("{project_department}{implementation_organization}{date}有多少作业人员?",
|
||||||
|
["project_department", "implementation_organization", "date"]),
|
||||||
|
("{date}{project_department}{implementation_organization}有多少作业人数?",
|
||||||
|
["date", "project_department", "implementation_organization"]),
|
||||||
|
("{date}{project_department}{implementation_organization}作业人员有多少?",
|
||||||
|
["date", "project_department", "implementation_organization"]),
|
||||||
|
("{project_department}{implementation_organization}{date}作业人员是多少",
|
||||||
|
["project_department", "implementation_organization", "date"]),
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"作业考勤人数": {
|
"作业考勤人数": {
|
||||||
|
|
@ -353,7 +486,13 @@ TEMPLATE_CONFIG = {
|
||||||
("{project_name}{date}作业考勤人数是多少", ["project_name", "date"]),
|
("{project_name}{date}作业考勤人数是多少", ["project_name", "date"]),
|
||||||
("查询{subcontractor}{date}的出勤记录", ["subcontractor", "date"]),
|
("查询{subcontractor}{date}的出勤记录", ["subcontractor", "date"]),
|
||||||
("查询{subcontractor}{date}的作业考勤人数是多少", ["subcontractor", "date"]),
|
("查询{subcontractor}{date}的作业考勤人数是多少", ["subcontractor", "date"]),
|
||||||
("{date}属于{operating}的作业考勤人数是多少?", ["date", "operating"]),
|
#出勤人
|
||||||
|
("{date}{project_name}出勤人数是多少", ["date", "project_name"]),
|
||||||
|
("{project_name}{date}出勤人数是多少", ["project_name", "date"]),
|
||||||
|
("查询{subcontractor}{date}的出勤记录", ["subcontractor", "date"]),
|
||||||
|
("查询{subcontractor}{date}的作业出勤人数是多少", ["subcontractor", "date"]),
|
||||||
|
|
||||||
|
("{date}{operating}的作业考勤人数是多少?", ["date", "operating"]),
|
||||||
("{team_leader}{date}的作业考勤人数是多少", ["team_leader", "date"]),
|
("{team_leader}{date}的作业考勤人数是多少", ["team_leader", "date"]),
|
||||||
# 4. 统计某施工单位在指定日期的考勤人数
|
# 4. 统计某施工单位在指定日期的考勤人数
|
||||||
("统计{construction_unit}{date}的考勤人数", ["construction_unit", "date"]),
|
("统计{construction_unit}{date}的考勤人数", ["construction_unit", "date"]),
|
||||||
|
|
@ -369,9 +508,12 @@ TEMPLATE_CONFIG = {
|
||||||
|
|
||||||
# 10. 统计某项目在指定周的出勤总人数
|
# 10. 统计某项目在指定周的出勤总人数
|
||||||
("{project_name}{date}的出勤人数是多少?", ["project_name", "date"]),
|
("{project_name}{date}的出勤人数是多少?", ["project_name", "date"]),
|
||||||
|
("{project_name}{date}的考勤率是多少?", ["project_name", "date"]),
|
||||||
|
("{project_name}{date}的考勤率", ["project_name", "date"]),
|
||||||
|
|
||||||
# 11. 查询某分包商在指定周的出勤情况
|
# 11. 查询某分包商在指定周的出勤情况
|
||||||
("{subcontractor}在{date}的出勤情况如何?", ["subcontractor", "date"]),
|
("{subcontractor}在{date}的出勤情况如何?", ["subcontractor", "date"]),
|
||||||
|
("{subcontractor}在{date}的出勤情况怎么样?", ["subcontractor", "date"]),
|
||||||
|
|
||||||
("{date}{team_name}考勤人数是多少", ["date", "team_name"]),
|
("{date}{team_name}考勤人数是多少", ["date", "team_name"]),
|
||||||
("{team_name}{date}考勤人数", ["team_name", "date"]),
|
("{team_name}{date}考勤人数", ["team_name", "date"]),
|
||||||
|
|
@ -399,7 +541,203 @@ TEMPLATE_CONFIG = {
|
||||||
("加载{page}", ["page"]),
|
("加载{page}", ["page"]),
|
||||||
("加载{page}页面", ["page"]),
|
("加载{page}页面", ["page"]),
|
||||||
]
|
]
|
||||||
}
|
},
|
||||||
|
"作业面查询": {
|
||||||
|
"date": ["今日", "昨日", "2024年5月24日", "5月24日", "今天", "昨天"],
|
||||||
|
"templates": [
|
||||||
|
("{date}{project_name}有多少作业面?", ["date", "project_name"]),
|
||||||
|
|
||||||
|
("{date}{construction_unit}作业面有多少?", ["date", "construction_unit"]),
|
||||||
|
("{date}{implementation_organization}作业面是多少?", ["date", "implementation_organization"]),
|
||||||
|
("{date}{implementation_organization}{project_department}有多少作业面?",
|
||||||
|
["date", "implementation_organization", "project_department"]),
|
||||||
|
("{date}{project_department}有多少作业面?", ["date", "project_department"]),
|
||||||
|
("{date}{project_manager}作业面是多少?", ["date", "project_manager"]),
|
||||||
|
("{date}{subcontractor}有多少作业面?", ["date", "subcontractor"]),
|
||||||
|
("{date}{team_leader}作业面是多少?", ["date", "team_leader"]),
|
||||||
|
("{date}{project_name}有多少作业面?", ["date", "project_name"]),
|
||||||
|
("{project_name}{date}有多少项作业面?", ["project_name", "date"]),
|
||||||
|
("{date}公司{project_name}有多少作业面?", ["date", "project_name"]),
|
||||||
|
("工程性质是{project_type}{date}有多少作业面?", ["project_type", "date"]),
|
||||||
|
("工程性质是{project_type}{date}有多少项作业面?", ["project_type", "date"]),
|
||||||
|
("工程性质是{project_type}{date}有多少条作业面?", ["project_type", "date"]),
|
||||||
|
("{date}风险等级为{risk_level}的作业面有多少?", ["date", "risk_level"]),
|
||||||
|
("公司{date}工程性质为{project_type}作业面有多少?", ["date", "project_type"]),
|
||||||
|
("{date}工程性质为{project_type}作业面有多少?", ["date", "project_type"]),
|
||||||
|
("公司工程性质为{project_type}{date}作业面有多少?", ["project_type", "date"]),
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"班组人数查询": {
|
||||||
|
"date": ["今日", "昨日", "2024年5月24日", "5月24日", "今天", "昨天"],
|
||||||
|
"templates": [
|
||||||
|
("{date}{project_name}班组人员有多少?", ["date", "project_name"]),
|
||||||
|
("{date}{project_name}班组人数是多少?", ["date", "project_name"]),
|
||||||
|
("{date}{project_name}现场有多少班组人员?", ["date", "project_name"]),
|
||||||
|
("{date}{project_name}现场班组人数是多少?", ["date", "project_name"]),
|
||||||
|
|
||||||
|
("{construction_unit}{date}的班组人数是多少?", ["construction_unit", "date"]),
|
||||||
|
("{construction_unit}{date}现场班组人数是多少?", ["construction_unit", "date"]),
|
||||||
|
# 2. 统计某施工单位在指定日期的班组总人数
|
||||||
|
("统计{construction_unit}在{date}的班组人数是多少?", ["construction_unit", "date"]),
|
||||||
|
("{date}属于{operating}的班组人数是多少?", ["date", "operating"]),
|
||||||
|
|
||||||
|
# 4. 查询某项目类型在指定日期的班组工人员需求
|
||||||
|
("{date}{project_type}类有多少班组人员?", ["date", "project_type"]),
|
||||||
|
("{date}工程性质为{project_type}有多少班组人员?", ["date", "project_type"]),
|
||||||
|
("{date}工程性质为{project_type}有多少现场班组人员?", ["date", "project_type"]),
|
||||||
|
("{date}工程性质为{project_type}的班组人数是多少?", ["date", "project_type"]),
|
||||||
|
("工程性质为{project_type}{date}有多少班组人员?", ["project_type", "date"]),
|
||||||
|
("工程性质为{project_type}{date}的现场班组人数是多少?", ["project_type", "date"]),
|
||||||
|
("工程性质为{project_type}{date}有多少班组人员?", ["project_type", "date"]),
|
||||||
|
("工程性质为{project_type}{date}的现场班组人数是多少?", ["project_type", "date"]),
|
||||||
|
# 5. 统计班组工单位在指定日期的各项目人数
|
||||||
|
("工程性质为{project_type}{date}的现场班组人数是多少?", ["project_type", "date"]),
|
||||||
|
("{construction_unit}在{date}的班组人数是多少?", ["construction_unit", "date"]),
|
||||||
|
("工程性质为{project_type}{date}的现场班组人数是多少?", ["project_type", "date"]),
|
||||||
|
# 8. 统计某项目经理管理的项目在指定日期的总人数
|
||||||
|
("工程性质为{project_type}{date}的现场班组人数是多少?", ["project_type", "date"]),
|
||||||
|
("{project_manager}负责的项目在{date}的班组人数是多少?", ["project_manager", "date"]),
|
||||||
|
("{date}{project_manager}负责的项目的现场班组人数是多少?", ["date", "project_manager"]),
|
||||||
|
#
|
||||||
|
("{date}{implementation_organization}{project_department}班组人数是多少?",
|
||||||
|
["date", "implementation_organization", "project_department"]),
|
||||||
|
("{implementation_organization}{project_department}{date}班组人员有多少?",
|
||||||
|
["implementation_organization", "project_department", "date"]),
|
||||||
|
("{implementation_organization}{project_department}{date}班组人数是多少?",
|
||||||
|
["implementation_organization", "project_department", "date"])
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"班组数查询": {
|
||||||
|
"date": ["今日", "昨日", "2024年5月24日", "5月24日", "今天", "昨天"],
|
||||||
|
"templates": [
|
||||||
|
("{date}{project_name}现场有多少班组?", ["date", "project_name"]),
|
||||||
|
("{date}{project_name}现场有多少个班组?", ["date", "project_name"]),
|
||||||
|
("{date}{project_name}现场班组有多少个?", ["date", "project_name"]),
|
||||||
|
("{date}{project_name}班组数是多少?", ["date", "project_name"]),
|
||||||
|
("{date}{project_name}班组数是什么?", ["date", "project_name"]),
|
||||||
|
("{date}{project_name}班组是多少?", ["date", "project_name"]),
|
||||||
|
("{date}{project_name}班组有多少个?", ["date", "project_name"]),
|
||||||
|
("{date}{construction_unit}班组数有多少?", ["date", "construction_unit"]),
|
||||||
|
("{date}{implementation_organization}现场班组数是多少?", ["date", "implementation_organization"]),
|
||||||
|
("{date}{implementation_organization}{project_department}有多少班组?",
|
||||||
|
["date", "implementation_organization", "project_department"]),
|
||||||
|
("{date}{project_department}现场有多少个班组?", ["date", "project_department"]),
|
||||||
|
("{date}{project_manager}现场班组数是多少?", ["date", "project_manager"]),
|
||||||
|
("{date}{subcontractor}现场有多少班组?", ["date", "subcontractor"]),
|
||||||
|
("{date}{team_leader}班组数是多少?", ["date", "team_leader"]),
|
||||||
|
("{date}{team_leader}班组有多少?", ["date", "team_leader"]),
|
||||||
|
("{date}{project_name}有多少班组?", ["date", "project_name"]),
|
||||||
|
("{project_name}{date}有多少个班组?", ["project_name", "date"]),
|
||||||
|
("{date}公司{project_name}有多少班组?", ["date", "project_name"]),
|
||||||
|
("工程性质是{project_type}{date}有多少班组?", ["project_type", "date"]),
|
||||||
|
("工程性质是{project_type}{date}有多少班组?", ["project_type", "date"]),
|
||||||
|
("工程性质是{project_type}{date}有多少班组?", ["project_type", "date"]),
|
||||||
|
("{date}风险等级为{risk_level}的班组有多少?", ["date", "risk_level"]),
|
||||||
|
("公司{date}工程性质为{project_type}班组有多少个?", ["date", "project_type"]),
|
||||||
|
("{date}工程性质为{project_type}现场班组有多少?", ["date", "project_type"]),
|
||||||
|
("公司工程性质为{project_type}{date}有多少班组?", ["project_type", "date"]),
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"作业面内容": {
|
||||||
|
"date": ["今日", "昨日", "2024年5月24日", "5月24日", "今天", "昨天"],
|
||||||
|
"templates": [
|
||||||
|
("{date}{project_name}作业面是什么?", ["date", "project_name"]),
|
||||||
|
("{project_name}在{date}的作业面有哪些", ["project_name", "date"]),
|
||||||
|
("{date}{project_type}类作业面有哪些?", ["date", "project_type"]),
|
||||||
|
("{project_type}类{date}具体作业面内容是什么?", ["project_type", "date"]),
|
||||||
|
("{date}工程性质为{project_type}的作业面内容是什么?", ["date", "project_type"]),
|
||||||
|
("工程性质为{project_type}的{date}作业面分别是什么?", ["project_type", "date"]),
|
||||||
|
("工程性质为{project_type}的{date}4项作业面分别是什么?", ["project_type", "date"]),
|
||||||
|
("{construction_unit}在{date}作业面内容是什么?", ["construction_unit", "date"]),
|
||||||
|
# 1. 查询特定日期和项目的作业安排
|
||||||
|
("{date}{project_name}作业面是什么?", ["date", "project_name"]),
|
||||||
|
("{date}属于{operating}作业面内容是什么?", ["date", "operating"]),
|
||||||
|
("{date}存在{operating}作业面是什么?", ["date", "operating"]),
|
||||||
|
# 3. 查询特定日期和项目类型的工程计划
|
||||||
|
("{date}{project_type}类具体作业面有哪些?", ["date", "project_type"]),
|
||||||
|
|
||||||
|
("{date}{construction_unit}{risk_level}风险的作业面内容是什么?", ["date", "construction_unit", "risk_level"]),
|
||||||
|
|
||||||
|
("{date}{implementation_organization}{risk_level}风险的作业面是什么?",
|
||||||
|
["date", "implementation_organization", "risk_level"]),
|
||||||
|
|
||||||
|
# 5. 查询特定日期和项目经理的任务安排
|
||||||
|
("{project_manager}在{date}作业面内容是什么?", ["project_manager", "date"]),
|
||||||
|
("{project_manager}在{date}作业面分别是什么?", ["project_manager", "date"]),
|
||||||
|
("{project_manager}在{date}4项作业面分别是什么?", ["project_manager", "date"]),
|
||||||
|
|
||||||
|
# 6. 查询特定日期和风险等级的任务
|
||||||
|
("{date}风险等级为{risk_level}的作业面有哪些?", ["date", "risk_level"]),
|
||||||
|
("{date}风险等级为{risk_level}四项作业面具体分别有哪些?", ["date", "risk_level"]),
|
||||||
|
|
||||||
|
|
||||||
|
# 10. 查询特定日期和风险等级的任务安排
|
||||||
|
("{date}风险等级为{risk_level}2项作业面分别是什么?", ["date", "risk_level"]),
|
||||||
|
|
||||||
|
("{date}{risk_level}的作业面具体内容是什么?", ["date", "risk_level"]),
|
||||||
|
|
||||||
|
# 11. 查询特定日期和施工单位的任务进展
|
||||||
|
("{construction_unit}{date}的作业面是什么?", ["construction_unit", "date"]),
|
||||||
|
("{construction_unit}{date}作业面具体内容有哪些", ["construction_unit", "date"]),
|
||||||
|
|
||||||
|
# 12. 查询特定日期和项目经理完成的任务
|
||||||
|
("{project_manager}在{date}三项作业面分别是什么?", ["project_manager", "date"]),
|
||||||
|
|
||||||
|
# 13. 查询特定日期和项目经理的高风险任务
|
||||||
|
("{project_manager}在{date}的风险等级为{risk_level}的作业面内容是什么?",
|
||||||
|
["project_manager", "date", "risk_level"]),
|
||||||
|
|
||||||
|
# 15. 查询特定日期和所有任务安排
|
||||||
|
("{date}作业面内容是什么?", ["date"]),
|
||||||
|
("{date}作业面有哪些?", ["date"]),
|
||||||
|
("{date}作业面是什么?", ["date"]),
|
||||||
|
|
||||||
|
("{date}{implementation_organization}{project_department}具体作业面内容是什么?",
|
||||||
|
["date", "implementation_organization", "project_department"]),
|
||||||
|
("{implementation_organization}{project_department}{date}具体作业面有哪些?",
|
||||||
|
["implementation_organization", "project_department", "date"]),
|
||||||
|
("{implementation_organization}{project_department}{date}作业面是什么?",
|
||||||
|
["implementation_organization", "project_department", "date"]),
|
||||||
|
("{implementation_organization}{project_department}{date}两项作业面分别是什么?",
|
||||||
|
["implementation_organization", "project_department", "date"]),
|
||||||
|
("{project_department}{implementation_organization}{date}具体作业面是什么?",
|
||||||
|
["project_department", "implementation_organization", "date"]),
|
||||||
|
("{date}{project_department}{implementation_organization}两项作业面分别是什么?",
|
||||||
|
["date", "project_department", "implementation_organization"]),
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"班组详情": {
|
||||||
|
"date": ["今日", "昨日", "2024年5月24日", "5月24日", "今天", "昨天"],
|
||||||
|
"templates": [
|
||||||
|
("{date}{project_name}现场具体有哪些班组?", ["date", "project_name"]),
|
||||||
|
("{date}{project_name}现场班组详情是什么?", ["date", "project_name"]),
|
||||||
|
("{date}{project_name}现场班组情况", ["date", "project_name"]),
|
||||||
|
("{date}{project_name}具体班组情况是什么?", ["date", "project_name"]),
|
||||||
|
("{date}{project_name}具体班组详情是什么?", ["date", "project_name"]),
|
||||||
|
("{date}{project_name}班组详细情况是什么?", ["date", "project_name"]),
|
||||||
|
("{date}{project_name}班组详情", ["date", "project_name"]),
|
||||||
|
("{date}{construction_unit}具体有哪些班组", ["date", "construction_unit"]),
|
||||||
|
("{date}{implementation_organization}班组有哪些?", ["date", "implementation_organization"]),
|
||||||
|
("{date}{implementation_organization}{project_department}现场具体有哪些班组?",
|
||||||
|
["date", "implementation_organization", "project_department"]),
|
||||||
|
("{date}{project_department}现场班组详情是什么?", ["date", "project_department"]),
|
||||||
|
("{date}{project_manager}现场班组情况?", ["date", "project_manager"]),
|
||||||
|
("{date}{subcontractor}具体班组情况是什么?", ["date", "subcontractor"]),
|
||||||
|
("{date}{team_leader}具体班组详情是什么?", ["date", "team_leader"]),
|
||||||
|
("{date}{team_leader}班组详细情况是什么?", ["date", "team_leader"]),
|
||||||
|
("{date}{project_name}班组详情?", ["date", "project_name"]),
|
||||||
|
("{project_name}{date}具体有哪些班组?", ["project_name", "date"]),
|
||||||
|
("{date}公司{project_name}班组有哪些?", ["date", "project_name"]),
|
||||||
|
("工程性质是{project_type}{date}现场具体有哪些班组?", ["project_type", "date"]),
|
||||||
|
("工程性质是{project_type}{date}现场班组详情是什么?", ["project_type", "date"]),
|
||||||
|
("工程性质是{project_type}{date}现场班组情况?", ["project_type", "date"]),
|
||||||
|
("{date}风险等级为{risk_level}具体班组情况是什么?", ["date", "risk_level"]),
|
||||||
|
("公司{date}工程性质为{project_type}具体班组详情是什么?", ["date", "project_type"]),
|
||||||
|
("{date}工程性质为{project_type}班组详情?", ["date", "project_type"]),
|
||||||
|
("公司工程性质为{project_type}{date}具体有哪些班组?", ["project_type", "date"]),
|
||||||
|
("公司工程性质为{project_type}{date}班组有哪些?", ["project_type", "date"]),
|
||||||
|
]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,9 @@ def merge_json_files(file_list, output_file):
|
||||||
json.dump(merged_data, f, ensure_ascii=False, indent=4)
|
json.dump(merged_data, f, ensure_ascii=False, indent=4)
|
||||||
|
|
||||||
# 文件列表
|
# 文件列表
|
||||||
files = ['互联网查询.json','天气查询.json','知识问答.json','作业考勤人数.json', '周计划作业内容.json', '周计划数量查询.json','施工人数.json','日计划作业内容.json','日计划数量查询.json','页面切换.json','通用对话.json']
|
files = ['互联网查询.json','天气查询.json','知识问答.json','作业考勤人数.json', '周计划作业内容.json',
|
||||||
|
'周计划数量查询.json','施工人数.json','日计划作业内容.json','日计划数量查询.json',
|
||||||
|
'页面切换.json','通用对话.json','作业面查询.json','班组人数查询.json','班组数查询.json','作业面内容.json','班组详情.json']
|
||||||
output_file = 'output/merged_data.json'
|
output_file = 'output/merged_data.json'
|
||||||
|
|
||||||
# 执行合并
|
# 执行合并
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue