import json def parse_template(estimate_packet: str): tpl = json.loads(estimate_packet) return tpl["template"] def build_template(rows): result = [] step_map = {} for r in rows: step = step_map.setdefault(r.step_id, { "stepId": r.step_id, "stepName": r.step_name, "properties": {} }) prop = step["properties"].setdefault(r.option_key_id, { "keyId": r.option_key_id, "name": r.option_key_name, "values": [] }) prop["values"].append({ "valueId": r.option_id, "valueText": r.option_name }) for step in step_map.values(): step["properties"] = list(step["properties"].values()) result.append(step) return result