feat(investigations): refine report authoring and replay flushing
This commit is contained in:
@@ -171,9 +171,20 @@ class ValveClosureInput(ScenarioInput):
|
||||
|
||||
|
||||
class FlushingInput(ScenarioInput):
|
||||
drainage_node_id: Id
|
||||
drainage_node_id: Id = Field(description="已核实的冲洗排放节点;清洁水来源、流向及污染水处置须在方案中说明")
|
||||
flushing_flow_m3h: float = Field(gt=0, allow_inf_nan=False, description="明确的冲洗流量,m³/h;提供流量来源与估算依据")
|
||||
closed_valves: list[Id] = Field(default_factory=list, max_length=20)
|
||||
closed_valves: list[Id] = Field(default_factory=list, max_length=20,
|
||||
description="本次冲洗情景中保持关闭的完整阀门清单,用于隔离用户或约束流向")
|
||||
opened_valves: list[Id] = Field(default_factory=list, max_length=20,
|
||||
description="本次冲洗情景中明确打开的阀门,如清洁水进水和导流阀;不表示现场已开阀或恢复用户供水。未列阀门沿用当前模型状态,不继承上次独立模拟")
|
||||
|
||||
@model_validator(mode="after")
|
||||
def distinct_valve_states(self):
|
||||
if any(len(values) != len(set(values)) for values in (self.closed_valves, self.opened_valves)):
|
||||
raise ValueError("flushing valve lists must contain distinct IDs")
|
||||
if set(self.closed_valves) & set(self.opened_valves):
|
||||
raise ValueError("a flushing valve cannot be both opened and closed")
|
||||
return self
|
||||
|
||||
|
||||
NonnegativeValue = Annotated[float, Field(ge=0, allow_inf_nan=False)]
|
||||
|
||||
Reference in New Issue
Block a user