From ed0d840aeef5987332643264fb3631a700ba1401 Mon Sep 17 00:00:00 2001 From: whm <973418690@qq.com> Date: Fri, 6 Mar 2026 17:49:43 +0800 Subject: [PATCH] =?UTF-8?q?1.=E4=BF=AE=E6=94=B9=E5=B7=A5=E5=86=B5=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=EF=BC=8C=E9=80=82=E5=BA=94=E6=96=B0=E6=97=A7=E5=B7=A5?= =?UTF-8?q?=E5=86=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/utils/construction_monitor.py | 87 +--------- app/utils/get_operating_mode.py | 209 ++---------------------- app/utils/operating_mode_config.py | 246 +++++++++++++++++++++++++++++ 3 files changed, 266 insertions(+), 276 deletions(-) create mode 100644 app/utils/operating_mode_config.py diff --git a/app/utils/construction_monitor.py b/app/utils/construction_monitor.py index da1edb1..16c066d 100644 --- a/app/utils/construction_monitor.py +++ b/app/utils/construction_monitor.py @@ -5,91 +5,16 @@ import copy # 注意:根据实际项目路径调整导入,若本地测试可注释掉 from ..core.logging_config import get_logger import json + +from .operating_mode_config import BASE_PERIODS + logger = get_logger(__name__) + class ConstructionMonitorUtils: def __init__(self): - # 原始工况周期映射表(保持不变) - self.base_periods = { - "路基或预压土填筑,连续填筑":1, - "路基或预压土填筑,两次填筑间隔时间较长":7, - "预压土或路基填筑完成,第1~3个月":7, - "预压土或路基填筑完成,第4~6个月":14, - "仰拱(底板)施工完成后,第1个月": 7, - "预压土或路基填筑完成,6个月以后":30, - "仰拱(底板)施工完成后,第2至3个月": 14, - "仰拱(底板)施工完成后,3个月以后": 30, - "仰拱(底板)施工完成后,第1个月": 7, # 原:仰拱(底板)施工完成后,第1个月 - "仰拱(底板)施工完成后,第2至3个月": 14, # 原:仰拱(底板)施工完成后,第2至3个月 - "仰拱(底板)施工完成后,3个月以后": 30, # 原:仰拱(底板)施工完成后,3个月以后 - "无砟轨道铺设后,第1至3个月": 30, # 原:无砟轨道铺设后,第1至3个月 - "无砟轨道铺设后,4至12个月": 90, # 原:无砟轨道铺设后,4至12个月 - "无砟轨道铺设后,12个月以后": 180, # 原:无砟轨道铺设后,12个月以后 - "墩台施工到一定高度": 30, # 无格式差异,保留原样 - "墩台混凝土施工": 30, # 无格式差异,保留原样 - "预制梁桥,架梁前": 30, # 原:预制梁桥,架梁前 - "预制梁桥,预制梁架设前": 1, # 原:预制梁桥,预制梁架设前 - "预制梁桥,预制梁架设后": 7, # 原:预制梁桥,预制梁架设后 - "桥位施工桥梁,制梁前": 30, # 原:桥位施工桥梁,制梁前 - "桥位施工桥梁,上部结构施工中": 1, # 原:桥位施工桥梁,上部结构施工中 - # "架桥机(运梁车)通过": 7, # 无格式差异,保留原样 - "桥梁主体工程完工后,第1至3个月": 7, # 原:桥梁主体工程完工后,第1至3个月 - "桥梁主体工程完工后,第4至6个月": 14, # 原:桥梁主体工程完工后,第4至6个月 - "桥梁主体工程完工后,6个月以后": 30, # 原:桥梁主体工程完工后,6个月以后 '' - "轨道铺设期间,前": 30, - "轨道铺设期间,后": 14, - "轨道铺设完成后,第1个月": 14, - "轨道铺设完成后,2至3个月": 30, - "轨道铺设完成后,4至12个月": 90, - "轨道铺设完成后,12个月以后": 180, - "铺路或堆载,一般情况": 1, - "填筑或堆载,一般情况": 1, - "铺路或堆载,沉降量突变情况": 1, - "填筑或堆载,两次填筑间隔时间较长情况":3, - "铺路或堆载,两次铺路间隔时间较长情况": 3, - "堆载预压或路基填筑完成,第1至3个月":7, # 原:堆载预压或路基铺路完成,第1至3个月 - "堆载预压或路基填筑完成,第4至6个月": 14, # 原:堆载预压或路基铺路完成,第4至6个月 - "堆载预压或路基填筑完成,6个月以后": 30, # 原:堆载预压或路基铺路完成,6个月以后 - "架桥机(运梁车) 首次通过前": 1, # 原:架桥机(运梁车)首次通过前(仅加空格) - "架桥机(运梁车) 首次通过后,前3天": 1, # 原:架桥机(运梁车)首次通过后,前3天 - "架桥机(运梁车) 首次通过后": 7, # 原:架桥机(运梁车)首次通过后(仅加空格) - "轨道板(道床)铺设后,第1个月": 14, # 原:轨道板(道床)铺设后,第1个月 - "轨道板(道床)铺设后,第2至3个月": 30, # 原:轨道板(道床)铺设后,第2至3个月 - "轨道板(道床)铺设后,3个月以后": 90, - "架桥机(运梁车)首次通过前": 1, - "架桥机(运梁车)首次通过后,前3天": 1, - "架桥机(运梁车)首次通过后": 7, - "轨道板铺设前": 14, - "轨道板(道床)铺设后,第1至3个月": 14, - "轨道板(道床)铺设后,第4至6个月": 30, - "轨道板(道床)铺设后,6个月以后": 90, - "站场填方路基段填筑完成至静态验收": 14, - "桥墩(台)地面处拆模后": 30, - "敦身混凝土施工": 30, - # "预制梁桥,架梁前": 30, - # "预制梁桥,预制梁架设前": 1, - "预制梁桥预制梁架设后": 7, - "现浇梁,浇筑前": 30, - "现浇梁上部结构施工中": 1, - "架桥机(运梁车)通过": 2, - "桥梁主体工程完工后,第1至3个月": 7, - # "桥梁主体工程完工后,第4至6个月": 14, - "侨梁主体工程完工后,6个月以后": 30, - "轨道铺设,前": 30, - "轨道铺设,后": 14, - # "轨道铺设完成后,第1个月": 14, - # "轨道铺设完成后,2至3个月": 30, - # "轨道铺设完成后,4至12个月": 90, - # "轨道铺设完成后,12个月以后": 180, - # "仰拱(底板)施工完成后,第1个月": 7, - # "仰拱(底板)施工完成后,第2至3个月": 14, - # "仰拱(底板)施工完成后,3个月以后": 30, - # "轨道板铺设前": 14, - # "无砟轨道铺设后,第1至3个月": 30, - # "无砟轨道铺设后,4至12个月": 90, - # "无砟轨道铺设后,12个月以后": 180, - "特殊地段隧道施工完成后至静态验收": 14 - } + # 使用公共配置的工况周期映射表 + self.base_periods = BASE_PERIODS.copy() # 构建中英文括号+逗号兼容映射表 self.compatible_periods = self._build_compatible_brackets_map() diff --git a/app/utils/get_operating_mode.py b/app/utils/get_operating_mode.py index 3224b96..a23f215 100644 --- a/app/utils/get_operating_mode.py +++ b/app/utils/get_operating_mode.py @@ -1,5 +1,14 @@ from datetime import datetime, date +from .operating_mode_config import ( + BASE_PERIODS, + OLD_TO_NEW_MAP, + CONDITION_GROUP, + TRANSITION_RULES, + WINTER_BREAK_LABELS, +) + + class OperatingModePredictor: """ 工况预测类(处理二维倒序数据,返回一维列表,仅保留各内嵌列表最新记录) @@ -16,15 +25,15 @@ class OperatingModePredictor: def __init__(self): """初始化类,加载核心配置""" # 1. 基础工况配置(最终返回的规范名称,含所有新旧工况) - self.base_periods = self._load_base_periods() + self.base_periods = BASE_PERIODS.copy() # 2. 旧→新等效映射(优先返回新工况) - self.old_to_new_map = self._load_old_to_new_map() + self.old_to_new_map = OLD_TO_NEW_MAP.copy() # 3. 工况分组(同义工况归为同一分组,复用切换规则) - self.condition_group = self._load_condition_group() + self.condition_group = CONDITION_GROUP.copy() # 4. 切换触发规则(沿用原逻辑,触发天数+目标工况) - self.transition_rules = self._load_transition_rules() + self.transition_rules = TRANSITION_RULES.copy() # 5. 冬休标识 - self.winter_break_labels = {"冬休"} + self.winter_break_labels = WINTER_BREAK_LABELS.copy() # 辅助映射:标准化名称→base_periods中的规范名称(用于最终返回) self.std_to_canonical = { @@ -55,196 +64,6 @@ class OperatingModePredictor: std_name = std_name.replace(old, new) return std_name - def _load_base_periods(self): - """加载基础工况配置(最终返回的规范名称,无多余数字)""" - return { - # 路基工况(新工况优先) - "路基或预压土填筑,连续填筑": 1, - "路基或预压土填筑,两次填筑间隔时间较长": 7, - "预压土或路基填筑完成,第1~3个月": 7, - "预压土或路基填筑完成,第4~6个月": 14, - "预压土或路基填筑完成,6个月以后": 30, - "架桥机(运梁车)首次通过前": 1, - "架桥机(运梁车)首次通过后,前3天": 1, - "架桥机(运梁车)首次通过后": 7, - "轨道板(道床)铺设后,第1至3个月": 14, - "轨道板(道床)铺设后,第4至6个月": 30, - "轨道板(道床)铺设后,6个月以后": 90, - - # 路基旧工况(保留,无等效则返回) - "填筑或堆载,一般情况": 1, - "填筑或堆载,两次填筑间隔时间较长情况": 7, - "堆载预压或路基填筑完成,6个月以后": 30, - "轨道板(道床)铺设后,第1个月": 14, - "轨道板(道床)铺设后,第2至3个月": 30, - "轨道板(道床)铺设后,3个月以后": 90, - - # 桥梁工况(新工况优先) - "桥墩(台)地面处拆模后": 30, - "敦身混凝土施工": 30, - "预制梁桥,预制梁架设前": 1, - "预制梁桥,预制梁架设后": 7, - "现浇梁,浇筑前": 30, - "现浇梁上部结构施工中": 1, - "架桥机(运梁车)通过": 2, - "桥梁主体工程完工后,第1至3个月": 7, - "桥梁主体工程完工后,第4至6个月": 14, - "桥梁主体工程完工后,6个月以后": 30, - "轨道铺设,前": 30, - "轨道铺设,后": 14, - "轨道铺设完成后,第1个月": 14, - "轨道铺设完成后,2至3个月": 30, - "轨道铺设完成后,4至12个月": 90, - "轨道铺设完成后,12个月以后": 180, - - # 桥梁旧工况(保留,无等效则返回) - "墩台施工到一定高度": 30, - "墩台混凝土施工": 30, - "预制梁桥,架梁前": 30, - "桥位施工桥梁,制梁前": 30, - "桥位施工桥梁,上部结构施工中": 1, - "桥梁主体工程完工后,第1至3个月": 7, - "轨道铺设期间,前": 30, - "轨道铺设期间,后": 14, - - # 隧道工况 - "仰拱(底板)施工完成后,第1个月": 7, - "仰拱(底板)施工完成后,第2至3个月": 14, - "仰拱(底板)施工完成后,3个月以后": 30, - "无砟轨道铺设后,第1至3个月": 30, - "无砟轨道铺设后,4至12个月": 90, - "无砟轨道铺设后,12个月以后": 180, - - # 特殊工况 - "冬休": 0 - } - - def _load_old_to_new_map(self): - """加载旧→新等效映射(优先返回新工况)""" - return { - # 路基等效 - "填筑或堆载,一般情况": "路基或预压土填筑,连续填筑", - "填筑或堆载,两次填筑间隔时间较长情况": "路基或预压土填筑,两次填筑间隔时间较长", - "预压土或路基填筑完成。第1~3个月": "预压土或路基填筑完成,第1~3个月", - "堆载预压或路基填筑完成,6个月以后": "预压土或路基填筑完成,6个月以后", - "轨道板(道床)铺设后,第1个月": "轨道板(道床)铺设后,第1至3个月", - "轨道板(道床)铺设后,第2至3个月": "轨道板(道床)铺设后,第4至6个月", - "轨道板(道床)铺设后,3个月以后": "轨道板(道床)铺设后,6个月以后", - - # 桥梁等效 - "墩台施工到一定高度": "桥墩(台)地面处拆模后", - "墩台混凝土施工": "敦身混凝土施工", - "桥位施工桥梁,制梁前": "现浇梁,浇筑前", - "桥位施工桥梁,上部结构施工中": "现浇梁上部结构施工中", - "桥梁主体工程完工后,第1至3个月": "桥梁主体工程完工后,第1至3个月", - "轨道铺设期间,前": "轨道铺设,前", - "轨道铺设期间,后": "轨道铺设,后" - } - - def _load_condition_group(self): - """加载工况分组(同义工况归为同一分组)""" - group_map = { - # 路基分组 - "路基或预压土填筑,连续填筑": "DZ_CONTINUE", - "路基或预压土填筑,两次填筑间隔时间较长": "DZ_INTERVAL", - "预压土或路基填筑完成,第1~3个月": "DZ_FINISH_1_3", - "预压土或路基填筑完成,第4~6个月": "DZ_FINISH_4_6", - "预压土或路基填筑完成,6个月以后": "DZ_FINISH_AFTER_6", - "架桥机(运梁车)首次通过前": "JQJ_FIRST_BEFORE", - "架桥机(运梁车)首次通过后,前3天": "JQJ_FIRST_AFTER_3D", - "架桥机(运梁车)首次通过后": "JQJ_FIRST_AFTER", - "轨道板(道床)铺设后,第1至3个月": "GDB_FINISH_1_3", - "轨道板(道床)铺设后,第4至6个月": "GDB_FINISH_4_6", - "轨道板(道床)铺设后,6个月以后": "GDB_FINISH_AFTER_6", - - # 路基旧工况分组(复用新工况分组) - "填筑或堆载,一般情况": "DZ_CONTINUE", - "填筑或堆载,两次填筑间隔时间较长情况": "DZ_INTERVAL", - "堆载预压或路基填筑完成,6个月以后": "DZ_FINISH_AFTER_6", - "轨道板(道床)铺设后,第1个月": "GDB_FINISH_1_3", - "轨道板(道床)铺设后,第2至3个月": "GDB_FINISH_4_6", - "轨道板(道床)铺设后,3个月以后": "GDB_FINISH_AFTER_6", - - # 桥梁分组 - "桥墩(台)地面处拆模后": "STATIC", - "敦身混凝土施工": "STATIC", - "预制梁桥,架梁前": "STATIC", - "预制梁桥,预制梁架设前": "YZLQ_BEFORE_JS", - "预制梁桥,预制梁架设后": "YZLQ_AFTER_JS", - "现浇梁,浇筑前": "STATIC", - "现浇梁上部结构施工中": "STATIC", - "架桥机(运梁车)通过": "STATIC", - "桥梁主体工程完工后,第1至3个月": "QL_ZHUTI_1_3", - "桥梁主体工程完工后,第4至6个月": "QL_ZHUTI_4_6", - "桥梁主体工程完工后,6个月以后": "QL_ZHUTI_AFTER_6", - "轨道铺设,前": "STATIC", - "轨道铺设,后": "STATIC", - "轨道铺设完成后,第1个月": "GD_FINISH_1", - "轨道铺设完成后,2至3个月": "GD_FINISH_2_3", - "轨道铺设完成后,4至12个月": "GD_FINISH_4_12", - "轨道铺设完成后,12个月以后": "GD_FINISH_AFTER_12", - - # 桥梁旧工况分组(复用新工况分组) - "墩台施工到一定高度": "STATIC", - "墩台混凝土施工": "STATIC", - "桥位施工桥梁,制梁前": "STATIC", - "桥位施工桥梁,上部结构施工中": "STATIC", - "桥梁主体工程完工后,第1至3个月": "QL_ZHUTI_1_3", - "轨道铺设期间,前": "STATIC", - "轨道铺设期间,后": "STATIC", - - # 隧道分组 - "仰拱(底板)施工完成后,第1个月": "YG_DIBAN_1", - "仰拱(底板)施工完成后,第2至3个月": "YG_DIBAN_2_3", - "仰拱(底板)施工完成后,3个月以后": "YG_DIBAN_AFTER_3", - "无砟轨道铺设后,第1至3个月": "WZGD_1_3", - "无砟轨道铺设后,4至12个月": "WZGD_4_12", - "无砟轨道铺设后,12个月以后": "WZGD_AFTER_12", - - # 特殊工况 - "冬休": "STATIC" - } - return group_map - - def _load_transition_rules(self): - """加载切换触发规则(沿用原逻辑,以base_periods为准)""" - return { - # 路基切换规则 - "DZ_FINISH_1_3": {"trigger_days": 90, "next": ["预压土或路基填筑完成,第4~6个月"]}, - "DZ_FINISH_4_6": {"trigger_days": 90, "next": ["预压土或路基填筑完成,6个月以后"]}, - "DZ_FINISH_AFTER_6": {"trigger_days": None, "next": None}, - "JQJ_FIRST_BEFORE": {"trigger_days": 1, "next": ["架桥机(运梁车)首次通过后,前3天"]}, - "JQJ_FIRST_AFTER_3D": {"trigger_days": 3, "next": ["架桥机(运梁车)首次通过后"]}, - "JQJ_FIRST_AFTER": {"trigger_days": None, "next": None}, - "GDB_FINISH_1_3": {"trigger_days": 30, "next": ["轨道板(道床)铺设后,第4至6个月"]}, - "GDB_FINISH_4_6": {"trigger_days": 30, "next": ["轨道板(道床)铺设后,6个月以后"]}, - "GDB_FINISH_AFTER_6": {"trigger_days": None, "next": None}, - - # 桥梁切换规则 - "YZLQ_BEFORE_JS": {"trigger_days": 1, "next": ["架桥机(运梁车)通过"]}, - "YZLQ_AFTER_JS": {"trigger_days": 7, "next": ["桥梁主体工程完工后,第1至3个月"]}, - "QL_ZHUTI_1_3": {"trigger_days": 90, "next": ["桥梁主体工程完工后,第4至6个月"]}, - "QL_ZHUTI_4_6": {"trigger_days": 90, "next": ["桥梁主体工程完工后,6个月以后"]}, - "QL_ZHUTI_AFTER_6": {"trigger_days": None, "next": None}, - "GD_FINISH_1": {"trigger_days": 30, "next": ["轨道铺设完成后,2至3个月"]}, - "GD_FINISH_2_3": {"trigger_days": 60, "next": ["轨道铺设完成后,4至12个月"]}, - "GD_FINISH_4_12": {"trigger_days": 240, "next": ["轨道铺设完成后,12个月以后"]}, - "GD_FINISH_AFTER_12": {"trigger_days": None, "next": None}, - - # 隧道切换规则 - "YG_DIBAN_1": {"trigger_days": 30, "next": ["仰拱(底板)施工完成后,第2至3个月"]}, - "YG_DIBAN_2_3": {"trigger_days": 60, "next": ["仰拱(底板)施工完成后,3个月以后"]}, - "YG_DIBAN_AFTER_3": {"trigger_days": None, "next": None}, - "WZGD_1_3": {"trigger_days": 90, "next": ["无砟轨道铺设后,4至12个月"]}, - "WZGD_4_12": {"trigger_days": 240, "next": ["无砟轨道铺设后,12个月以后"]}, - "WZGD_AFTER_12": {"trigger_days": None, "next": None}, - - # 静态分组(无切换) - "DZ_CONTINUE": {"trigger_days": None, "next": None}, - "DZ_INTERVAL": {"trigger_days": None, "next": None}, - "STATIC": {"trigger_days": None, "next": None} - } - def _parse_to_date(self, time_str): """解析时间字符串为date对象(仅保留年月日)""" if not time_str: diff --git a/app/utils/operating_mode_config.py b/app/utils/operating_mode_config.py new file mode 100644 index 0000000..9d18742 --- /dev/null +++ b/app/utils/operating_mode_config.py @@ -0,0 +1,246 @@ +# -*- coding: utf-8 -*- +""" +工况公共配置模块 +供 get_operating_mode.py(工况预测)和 construction_monitor.py(施工监测)共用 +""" + +# ==================== 基础工况周期(天) ==================== +# 含新旧工况及兼容变体,键为工况名称,值为测量间隔天数 +BASE_PERIODS = { + # 路基工况(新工况) + "路基或预压土填筑,连续填筑": 1, + "路基或预压土填筑,两次填筑间隔时间较长": 7, + "预压土或路基填筑完成,第1~3个月": 7, + "预压土或路基填筑完成,第4~6个月": 14, + "预压土或路基填筑完成,6个月以后": 30, + "架桥机(运梁车)首次通过前": 1, + "架桥机(运梁车)首次通过后,前3天": 1, + "架桥机(运梁车)首次通过后": 7, + "轨道板(道床)铺设后,第1至3个月": 14, + "轨道板(道床)铺设后,第4至6个月": 30, + "轨道板(道床)铺设后,6个月以后": 90, + + # 路基旧工况 + "填筑或堆载,一般情况": 1, + "填筑或堆载,两次填筑间隔时间较长情况": 7, + "堆载预压或路基填筑完成,第1至3个月": 7, + "堆载预压或路基填筑完成,第4至6个月": 14, + "堆载预压或路基填筑完成,6个月以后": 30, + "轨道板(道床)铺设后,第1个月": 14, + "轨道板(道床)铺设后,第2至3个月": 30, + "轨道板(道床)铺设后,3个月以后": 90, + + # 路基兼容变体(铺路/填筑同义) + "铺路或堆载,一般情况": 1, + "铺路或堆载,沉降量突变情况": 1, + "铺路或堆载,两次铺路间隔时间较长情况": 3, + + # 桥梁工况(新工况) + "桥墩(台)地面处拆模后": 30, + "墩身混凝土施工": 30, + "预制梁桥,预制梁架设前": 1, + "预制梁桥,预制梁架设后": 7, + "现浇梁,浇筑前": 30, + "现浇梁上部结构施工中": 1, + "架桥机(运梁车)通过": 2, + "桥梁主体工程完工后,第1至3个月": 7, + "桥梁主体工程完工后,第4至6个月": 14, + "桥梁主体工程完工后,6个月以后": 30, + "轨道铺设,前": 30, + "轨道铺设,后": 14, + "轨道铺设完成后,第1个月": 14, + "轨道铺设完成后,2至3个月": 30, + "轨道铺设完成后,4至12个月": 90, + "轨道铺设完成后,12个月以后": 180, + + # 桥梁旧工况 + "墩台施工到一定高度": 30, + "墩台混凝土施工": 30, + "预制梁桥,架梁前": 30, + "桥位施工桥梁,制梁前": 30, + "桥位施工桥梁,上部结构施工中": 1, + "桥梁主体工程完工后,第1至3个月": 7, + "桥梁主体工程完工后,第4至6个月": 14, + "桥梁主体工程完工后,6个月以后": 30, + "轨道铺设期间,前": 30, + "轨道铺设期间,后": 14, + + # 桥梁兼容变体 + "架桥机(运梁车) 首次通过前": 1, + "架桥机(运梁车) 首次通过后,前3天": 1, + "架桥机(运梁车) 首次通过后": 7, + "预制梁桥预制梁架设后": 7, + + # 隧道工况 + "仰拱(底板)施工完成后,第1个月": 7, + "仰拱(底板)施工完成后,第2至3个月": 14, + "仰拱(底板)施工完成后,3个月以后": 30, + "无砟轨道铺设后,第1至3个月": 30, + "无砟轨道铺设后,4至12个月": 90, + "无砟轨道铺设后,12个月以后": 180, + + # 隧道兼容变体(中文括号) + "仰拱(底板)施工完成后,第1个月": 7, + "仰拱(底板)施工完成后,第2至3个月": 14, + "仰拱(底板)施工完成后,3个月以后": 30, + + # 其他特殊工况 + "轨道板铺设前": 14, + "站场填方路基段填筑完成至静态验收": 14, + "特殊地段隧道施工完成后至静态验收": 14, + "冬休": 0, +} + +# ==================== 旧→新等效映射(工况预测用) ==================== +OLD_TO_NEW_MAP = { + # 路基等效 + "填筑或堆载,一般情况": "路基或预压土填筑,连续填筑", + "填筑或堆载,两次填筑间隔时间较长情况": "路基或预压土填筑,两次填筑间隔时间较长", + "堆载预压或路基填筑完成,第1至3个月": "预压土或路基填筑完成,第1~3个月", + "堆载预压或路基填筑完成,第4至6个月": "预压土或路基填筑完成,第4~6个月", + "堆载预压或路基填筑完成,6个月以后": "预压土或路基填筑完成,6个月以后", + "轨道板(道床)铺设后,第1个月": "轨道板(道床)铺设后,第1至3个月", + "轨道板(道床)铺设后,第2至3个月": "轨道板(道床)铺设后,第4至6个月", + "轨道板(道床)铺设后,3个月以后": "轨道板(道床)铺设后,6个月以后", + "铺路或堆载,一般情况": "路基或预压土填筑,连续填筑", + "铺路或堆载,沉降量突变情况": "路基或预压土填筑,连续填筑", + "铺路或堆载,两次铺路间隔时间较长情况": "路基或预压土填筑,两次填筑间隔时间较长", + + # 桥梁等效 + "墩台施工到一定高度": "桥墩(台)地面处拆模后", + "墩台混凝土施工": "墩身混凝土施工", + "桥位施工桥梁,制梁前": "现浇梁,浇筑前", + "桥位施工桥梁,上部结构施工中": "现浇梁上部结构施工中", + "桥梁主体工程完工后,第1至3个月": "桥梁主体工程完工后,第1至3个月", + "桥梁主体工程完工后,第4至6个月": "桥梁主体工程完工后,第4至6个月", + "桥梁主体工程完工后,6个月以后": "桥梁主体工程完工后,6个月以后", + "轨道铺设期间,前": "轨道铺设,前", + "轨道铺设期间,后": "轨道铺设,后", + "预制梁桥预制梁架设后": "预制梁桥,预制梁架设后", + "架桥机(运梁车) 首次通过前": "架桥机(运梁车)首次通过前", + "架桥机(运梁车) 首次通过后,前3天": "架桥机(运梁车)首次通过后,前3天", + "架桥机(运梁车) 首次通过后": "架桥机(运梁车)首次通过后", +} + +# ==================== 工况分组(工况预测用) ==================== +CONDITION_GROUP = { + # 路基分组 + "路基或预压土填筑,连续填筑": "DZ_CONTINUE", + "路基或预压土填筑,两次填筑间隔时间较长": "DZ_INTERVAL", + "预压土或路基填筑完成,第1~3个月": "DZ_FINISH_1_3", + "预压土或路基填筑完成,第4~6个月": "DZ_FINISH_4_6", + "预压土或路基填筑完成,6个月以后": "DZ_FINISH_AFTER_6", + "架桥机(运梁车)首次通过前": "JQJ_FIRST_BEFORE", + "架桥机(运梁车)首次通过后,前3天": "JQJ_FIRST_AFTER_3D", + "架桥机(运梁车)首次通过后": "JQJ_FIRST_AFTER", + "轨道板(道床)铺设后,第1至3个月": "GDB_FINISH_1_3", + "轨道板(道床)铺设后,第4至6个月": "GDB_FINISH_4_6", + "轨道板(道床)铺设后,6个月以后": "GDB_FINISH_AFTER_6", + + # 路基旧工况分组 + "填筑或堆载,一般情况": "DZ_CONTINUE", + "填筑或堆载,两次填筑间隔时间较长情况": "DZ_INTERVAL", + "堆载预压或路基填筑完成,第1至3个月": "DZ_FINISH_1_3", + "堆载预压或路基填筑完成,第4至6个月": "DZ_FINISH_4_6", + "堆载预压或路基填筑完成,6个月以后": "DZ_FINISH_AFTER_6", + "轨道板(道床)铺设后,第1个月": "GDB_FINISH_1_3", + "轨道板(道床)铺设后,第2至3个月": "GDB_FINISH_4_6", + "轨道板(道床)铺设后,3个月以后": "GDB_FINISH_AFTER_6", + "铺路或堆载,一般情况": "DZ_CONTINUE", + "铺路或堆载,沉降量突变情况": "DZ_CONTINUE", + "铺路或堆载,两次铺路间隔时间较长情况": "DZ_INTERVAL", + + # 桥梁分组 + "桥墩(台)地面处拆模后": "STATIC", + "墩身混凝土施工": "STATIC", + "预制梁桥,架梁前": "STATIC", + "预制梁桥,预制梁架设前": "YZLQ_BEFORE_JS", + "预制梁桥,预制梁架设后": "YZLQ_AFTER_JS", + "现浇梁,浇筑前": "STATIC", + "现浇梁上部结构施工中": "STATIC", + "架桥机(运梁车)通过": "STATIC", + "桥梁主体工程完工后,第1至3个月": "QL_ZHUTI_1_3", + "桥梁主体工程完工后,第4至6个月": "QL_ZHUTI_4_6", + "桥梁主体工程完工后,6个月以后": "QL_ZHUTI_AFTER_6", + "轨道铺设,前": "STATIC", + "轨道铺设,后": "STATIC", + "轨道铺设完成后,第1个月": "GD_FINISH_1", + "轨道铺设完成后,2至3个月": "GD_FINISH_2_3", + "轨道铺设完成后,4至12个月": "GD_FINISH_4_12", + "轨道铺设完成后,12个月以后": "GD_FINISH_AFTER_12", + + # 桥梁旧工况分组 + "墩台施工到一定高度": "STATIC", + "墩台混凝土施工": "STATIC", + "桥位施工桥梁,制梁前": "STATIC", + "桥位施工桥梁,上部结构施工中": "STATIC", + "桥梁主体工程完工后,第1至3个月": "QL_ZHUTI_1_3", + "桥梁主体工程完工后,第4至6个月": "QL_ZHUTI_4_6", + "桥梁主体工程完工后,6个月以后": "QL_ZHUTI_AFTER_6", + "轨道铺设期间,前": "STATIC", + "轨道铺设期间,后": "STATIC", + "预制梁桥预制梁架设后": "YZLQ_AFTER_JS", + "架桥机(运梁车) 首次通过前": "JQJ_FIRST_BEFORE", + "架桥机(运梁车) 首次通过后,前3天": "JQJ_FIRST_AFTER_3D", + "架桥机(运梁车) 首次通过后": "JQJ_FIRST_AFTER", + + # 隧道分组 + "仰拱(底板)施工完成后,第1个月": "YG_DIBAN_1", + "仰拱(底板)施工完成后,第2至3个月": "YG_DIBAN_2_3", + "仰拱(底板)施工完成后,3个月以后": "YG_DIBAN_AFTER_3", + "无砟轨道铺设后,第1至3个月": "WZGD_1_3", + "无砟轨道铺设后,4至12个月": "WZGD_4_12", + "无砟轨道铺设后,12个月以后": "WZGD_AFTER_12", + "仰拱(底板)施工完成后,第1个月": "YG_DIBAN_1", + "仰拱(底板)施工完成后,第2至3个月": "YG_DIBAN_2_3", + "仰拱(底板)施工完成后,3个月以后": "YG_DIBAN_AFTER_3", + + # 其他特殊工况分组 + "轨道板铺设前": "STATIC", + "站场填方路基段填筑完成至静态验收": "STATIC", + "特殊地段隧道施工完成后至静态验收": "STATIC", + + # 特殊工况 + "冬休": "STATIC", +} + +# ==================== 切换触发规则(工况预测用) ==================== +TRANSITION_RULES = { + # 路基切换规则 + "DZ_FINISH_1_3": {"trigger_days": 90, "next": ["预压土或路基填筑完成,第4~6个月"]}, + "DZ_FINISH_4_6": {"trigger_days": 90, "next": ["预压土或路基填筑完成,6个月以后"]}, + "DZ_FINISH_AFTER_6": {"trigger_days": None, "next": None}, + "JQJ_FIRST_BEFORE": {"trigger_days": 1, "next": ["架桥机(运梁车)首次通过后,前3天"]}, + "JQJ_FIRST_AFTER_3D": {"trigger_days": 3, "next": ["架桥机(运梁车)首次通过后"]}, + "JQJ_FIRST_AFTER": {"trigger_days": None, "next": None}, + "GDB_FINISH_1_3": {"trigger_days": 30, "next": ["轨道板(道床)铺设后,第4至6个月"]}, + "GDB_FINISH_4_6": {"trigger_days": 30, "next": ["轨道板(道床)铺设后,6个月以后"]}, + "GDB_FINISH_AFTER_6": {"trigger_days": None, "next": None}, + + # 桥梁切换规则 + "YZLQ_BEFORE_JS": {"trigger_days": 1, "next": ["架桥机(运梁车)通过"]}, + "YZLQ_AFTER_JS": {"trigger_days": 7, "next": ["桥梁主体工程完工后,第1至3个月"]}, + "QL_ZHUTI_1_3": {"trigger_days": 90, "next": ["桥梁主体工程完工后,第4至6个月"]}, + "QL_ZHUTI_4_6": {"trigger_days": 90, "next": ["桥梁主体工程完工后,6个月以后"]}, + "QL_ZHUTI_AFTER_6": {"trigger_days": None, "next": None}, + "GD_FINISH_1": {"trigger_days": 30, "next": ["轨道铺设完成后,2至3个月"]}, + "GD_FINISH_2_3": {"trigger_days": 60, "next": ["轨道铺设完成后,4至12个月"]}, + "GD_FINISH_4_12": {"trigger_days": 240, "next": ["轨道铺设完成后,12个月以后"]}, + "GD_FINISH_AFTER_12": {"trigger_days": None, "next": None}, + + # 隧道切换规则 + "YG_DIBAN_1": {"trigger_days": 30, "next": ["仰拱(底板)施工完成后,第2至3个月"]}, + "YG_DIBAN_2_3": {"trigger_days": 60, "next": ["仰拱(底板)施工完成后,3个月以后"]}, + "YG_DIBAN_AFTER_3": {"trigger_days": None, "next": None}, + "WZGD_1_3": {"trigger_days": 90, "next": ["无砟轨道铺设后,4至12个月"]}, + "WZGD_4_12": {"trigger_days": 240, "next": ["无砟轨道铺设后,12个月以后"]}, + "WZGD_AFTER_12": {"trigger_days": None, "next": None}, + + # 静态分组(无切换) + "DZ_CONTINUE": {"trigger_days": None, "next": None}, + "DZ_INTERVAL": {"trigger_days": None, "next": None}, + "STATIC": {"trigger_days": None, "next": None}, +} + +# ==================== 冬休标识 ==================== +WINTER_BREAK_LABELS = {"冬休"}